Imported Upstream version 3.7.3 upstream/3.7.3
authorAnas Nashif <anas.nashif@intel.com>
Thu, 20 Dec 2012 12:29:00 +0000 (04:29 -0800)
committerAnas Nashif <anas.nashif@intel.com>
Thu, 20 Dec 2012 12:29:00 +0000 (04:29 -0800)
120 files changed:
AUTHORS
ChangeLog
ChangeLog.pre-2.18 [deleted file]
INSTALL
Makefile.am
Makefile.in
NEWS
PKG-INFO
README
aclocal.m4
configure
configure.ac
examples/Makefile.in
gi/Makefile.am
gi/Makefile.in
gi/__init__.py
gi/_glib/Makefile.am
gi/_glib/Makefile.in
gi/_glib/__init__.py
gi/_glib/glibmodule.c
gi/_glib/option.py
gi/_glib/pygiochannel.c [deleted file]
gi/_glib/pygiochannel.h [deleted file]
gi/_glib/pyglib.c
gi/_glib/pyglib.h
gi/_glib/pygmaincontext.c [deleted file]
gi/_glib/pygmaincontext.h [deleted file]
gi/_glib/pygmainloop.c [deleted file]
gi/_glib/pygmainloop.h [deleted file]
gi/_glib/pygsource.c
gi/_glib/pygsource.h
gi/_gobject/Makefile.am
gi/_gobject/Makefile.in
gi/_gobject/__init__.py
gi/_gobject/constants.py
gi/_gobject/gobjectmodule.c
gi/_gobject/propertyhelper.py
gi/_gobject/pygobject.c
gi/_gobject/pygtype.c
gi/_gobject/signalhelper.py
gi/gimodule.c
gi/importer.py
gi/module.py
gi/overrides/GIMarshallingTests.py
gi/overrides/GLib.py
gi/overrides/GObject.py [new file with mode: 0644]
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-boxed.c
gi/pygi-cache.c
gi/pygi-callbacks.c [deleted file]
gi/pygi-callbacks.h [deleted file]
gi/pygi-ccallback.c
gi/pygi-closure.c
gi/pygi-foreign-cairo.c
gi/pygi-foreign-gvariant.c [deleted file]
gi/pygi-foreign.c
gi/pygi-info.c
gi/pygi-invoke-state-struct.h
gi/pygi-invoke.c
gi/pygi-marshal-cleanup.c
gi/pygi-marshal-cleanup.h
gi/pygi-marshal-from-py.c
gi/pygi-marshal-to-py.c
gi/pygi-private.h
gi/pygi-property.c
gi/pygi-property.h
gi/pygi-repository.c
gi/pygi-signal-closure.c
gi/pygi-source.c [new file with mode: 0644]
gi/pygi-source.h [moved from gi/pygi-foreign-gvariant.h with 64% similarity]
gi/pygi-type.c
gi/pygi-type.h
gi/pygi.h
gi/pygobject-external.h
gi/pygtkcompat.py
gi/repository/Makefile.in
gi/types.py
ltmain.sh
m4/libtool.m4
m4/python.m4
pygi-convert.sh [new file with mode: 0755]
pygtkcompat/Makefile.am [new file with mode: 0644]
pygtkcompat/Makefile.in [new file with mode: 0644]
pygtkcompat/__init__.py [new file with mode: 0644]
pygtkcompat/pygtkcompat.py [new file with mode: 0644]
tests/Makefile.am
tests/Makefile.in
tests/compat_test_pygtk.py [moved from tests/test_pygtkcompat.py with 85% similarity]
tests/org.gnome.test.gschema.xml
tests/runtests.py
tests/test_atoms.py
tests/test_everything.py
tests/test_gdbus.py
tests/test_gi.py
tests/test_glib.py
tests/test_gobject.py
tests/test_gtype.py [new file with mode: 0644]
tests/test_interface.py
tests/test_internal_api.py [new file with mode: 0644]
tests/test_iochannel.py [new file with mode: 0644]
tests/test_mainloop.py
tests/test_option.py
tests/test_overrides.py
tests/test_overrides_gio.py
tests/test_overrides_glib.py
tests/test_overrides_gtk.py
tests/test_properties.py
tests/test_signal.py
tests/test_source.py
tests/test_subprocess.py
tests/test_thread.py
tests/test_uris.py [deleted file]
tests/testhelpermodule.c

diff --git a/AUTHORS b/AUTHORS
index 4a37fe3..76b1091 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -1,8 +1,11 @@
-Original Authors
+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>
+Current Maintainers:
+Ignacio Casal Quinteiro <icq@gnome.org>
+Martin Pitt <martinpitt@gnome.org>
+Paolo Borelli <pborelli@gnome.org>
+Sebastian Pölsterl <sebp@k-d-w.org>
+Simon Feltman <s.feltman@gmail.com>
+Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
index 3abad55..ab16367 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
+commit 061b23d14386c0e54d2c3af113554231bbe85f16
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Dec 17 23:18:31 2012 +0100
+
+    release 3.7.3
+
+ NEWS | 19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+
+commit a242f02823a63c9dca5d0b1ce84b031221053690
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Dec 17 23:11:29 2012 +0100
+
+    Add (failing) tests for callbacks with out arguments
+
+    Most of these fail and need marshalling fixes.
+
+ tests/test_gi.py | 36 ++++++++++++++++++++++++++++++++++++
+ 1 file changed, 36 insertions(+)
+
+commit 449b1ef0d94450c1e457770a093abd6d6c9e6291
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Dec 17 22:50:59 2012 +0100
+
+    Add tests for internal API
+
+    These cover functions like pygobject_new(), pyg_value_from_pyobject()
+    and
+    pyg_value_as_pyobject() that are wrapped by testhelpermodule.c. With
+    that these
+    functions can be tested in isolation without the whole GI stack
+    around them.
+
+ tests/Makefile.am          |  1 +
+ tests/test_internal_api.py | 73
+ ++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 74 insertions(+)
+
+commit e44312139426f51e576ef9e880819542cc224383
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Dec 17 18:02:15 2012 +0100
+
+    Add support for caller-allocated GArray out arguments
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=690041
+
+ gi/pygi-cache.c  |  2 +-
+ gi/pygi-invoke.c | 57
+ ++++++++++++++++++++++++++++++--------------------------
+ tests/test_gi.py |  5 +++--
+ 3 files changed, 35 insertions(+), 29 deletions(-)
+
+commit f262320ac22b48a9d007c425633f3ca426b7fb4a
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Dec 17 16:18:24 2012 +0100
+
+    Add (failing) test for caller-allocated GArray return value
+
+    Call new GIMarshallingTests.garray_utf8_full_out_caller_allocated()
+    function
+    which reproduces https://bugzilla.gnome.org/show_bug.cgi?id=690041.
+
+    The test is failing and causing a segfault right now, so disable it
+    until this
+    actually works.
+
+ tests/test_gi.py | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+commit 1cb4c30c3cf19690210010d39b6272965f489c58
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Dec 17 15:56:44 2012 +0100
+
+    GLib overrides: Avoid calling deprecated GLib.unix_signal_add_full()
+
+    glib 2.35.x fixed the API to be GLib.unix_signal_add(). Call the
+    modern API if
+    available, but fall back to GLib.unix_signal_add_full() until we
+    depend on glib
+    2.36.
+
+ gi/overrides/GLib.py | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+commit 945263a89c3adee61f95d4211cf13b254ad6d51f
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Nov 30 14:17:18 2012 +0100
+
+    Re-support calling GLib.io_add_watch with an fd or Python file
+
+    This does not strictly adhere to the GLib API, but it's very
+    convenient and
+    unlike the other modes, does not change the number or order of
+    arguments. So
+    let's keep support for this and drop the deprecation warning.
+
+ gi/overrides/GLib.py | 9 +++------
+ 1 file changed, 3 insertions(+), 6 deletions(-)
+
+commit 263b9f97e748746e1d26847a82a4d6e53a42798a
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Nov 30 09:04:20 2012 +0100
+
+    Robustify test_glib.TestGLib.test_io_add_watch_pyfile
+
+    Use a longer timeout to avoid races on slow architectures, and cut
+    the main
+    loop as soon as we received all expected events.
+
+ tests/test_glib.py | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+commit 8e4e822cb273db4eb7e6e40f4739eeebee00798a
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Nov 30 08:44:56 2012 +0100
+
+    test_overrides_gtk: Ignore GVFS warnings from FileChooserDialog
+
+    Do not cause GVFS warnings from Gtk.FileChooserDialog (which may
+    concern
+    unavailable monitor backends in the test environment) to fail
+    the tests.
+
+ tests/test_overrides_gtk.py | 12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+commit d47283936b4c0b5e8b6ede8886c4badbf6d6e694
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Thu Nov 29 16:45:49 2012 +0100
+
+    pygtkcompat: Work around IndexError on large flags
+
+    On 32 bit systems pygtkcompat currently fails with
+
+      File "pygtkcompat/pygtkcompat.py", line 74, in _install_enums
+        name = flag.value_names[-1].replace(modname + '_', '')
+    IndexError: cannot fit 'int' into an index-sized integer
+
+    on 32 bit systems as some flags in Gdk are too large to fit into a
+    32 bit
+    "long". Work around this crash until this gets fixed properly
+    (marked as
+    FIXME).
+
+ pygtkcompat/pygtkcompat.py | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+commit 3fa31b1a7936c556e76bd8a42030567c6a867e0d
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Thu Nov 29 14:11:29 2012 +0100
+
+    Fix pyg_value_from_pyobject() range check for uint
+
+    We cannot use PYGLIB_PyLong_AsLong() for the range check, as on 32
+    bit machines
+    this overflows large uints. Use PyLong_AsLongLong() separately to
+    check for
+    negative values, and PyLong_AsUnsignedLong() for the actual
+    conversion.
+
+ gi/_gobject/pygtype.c | 12 ++++++++----
+ 1 file changed, 8 insertions(+), 4 deletions(-)
+
+commit 05d767a602571805e80099f1db47ad4164575c53
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Thu Nov 29 13:30:56 2012 +0100
+
+    Fix tests to work with g-i 1.34.2
+
+    Do not try to call GIMarshallingTests API which isn't present
+    when running
+    against g-i 1.34.2. This can be dropped when the g-i dependency gets
+    bumped to
+    1.35.x.
+
+ tests/test_gi.py | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+commit a107c928ef85b4e3b9075a408774b74879586029
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Thu Nov 29 13:13:14 2012 +0100
+
+    Fix wrong refcount for GVariant property defaults
+
+    Drop the bogus DECREF for the GVariant default argument, as we need
+    to keep it
+    around in the class. Otherwise the refcount drops to zero, and
+    the next
+    garbage collection run causes segfaults.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=689267
+
+ gi/_gobject/gobjectmodule.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+commit 9b7dd1318cf540d5f8d03655da03534ed72707ec
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Thu Nov 29 11:44:22 2012 +0100
+
+    test_gi: Fix TestFilename failure under C locale
+
+ tests/test_gi.py | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 37ab227555ba8628b4fa99aa286bd046208745ed
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Thu Nov 29 11:16:26 2012 +0100
+
+    Fix array arguments on 32 bit
+
+    In _pygi_argument_from_object() we never put the actual element
+    GType into the
+    constructed array. The array contains GIArguments, or bytes in the
+    case of
+    passing a string as an array.
+
+    This happened to work on 64 bit machines where GIArgument and char*
+    have the
+    same size, but not on 32 bit machines
+    (test_gi.TestPropertiesObject.test_strv
+    fails there).
+
+ gi/pygi-argument.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+commit 7bd852fc82f92dac8723e18b61a56ed1b1a1b81c
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Thu Nov 29 10:20:27 2012 +0100
+
+    test_gi: Disable failing check in test_module_name()
+
+    When calling this under some conditions, such as
+
+      TEST_NAMES='test_thread test_gi.TestOverrides'
+
+    then the module name of GObject.InitiallyUnowned comes out as
+    "importlib._bootstrap" instead of "gi.repository.GObject". To be
+    investigated.
+    Add a couple of other tests to ensure that it is not broken in
+    general.
+
+ tests/test_gi.py | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+commit 94a6cc93a104b22dcee2ac73cae36b83a4b5d9c1
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Thu Nov 29 09:40:32 2012 +0100
+
+    test_gdbus: Drop failure if timeout=0 works differently
+
+    In some test environments we do not actually get a timeout exceptions
+    with
+    timeout=0, but a different error message. So only ensure that we
+    get the right
+    kind of error.
+
+ tests/test_gdbus.py | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+commit c3b2f5fee573aa03a8a9563efbbbc1bc4fa25da7
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Thu Nov 29 09:29:05 2012 +0100
+
+    test_glib: Drop some assumptions about XDG dirs
+
+    Some directories do not exist in minimal test environments, and this
+    is not
+    important for testing that calling these GLib functions works.
+
+ tests/test_glib.py | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+commit e45c690bc83b6d513887649de88965a9752e316d
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Nov 28 12:20:31 2012 +0100
+
+    Add backwards compatible API for GLib.unix_signal_add_full()
+
+    This was renamed to GLib.unix_signal_add() in
+    http://git.gnome.org/browse/glib/commit/?id=fca30c3e165
+
+    Provide a backwards compatible shim with a deprecation message.
+
+ gi/overrides/GLib.py | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+commit 00b9ea32d766ae486249f402d9dee511fd9f53a9
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Nov 26 08:11:36 2012 +0100
+
+    Drop MININT64/MAXUINT64 workaround
+
+    g-i 1.34.2 properly handles 64 bit constants now, so bug 685022 has
+    been fixed
+    properly now. Drop the workaround in the overrides to manually
+    set these
+    constants.
+
+ gi/overrides/GLib.py | 7 -------
+ 1 file changed, 7 deletions(-)
+
+commit d16604f64d25d18409270d7537fc993113b65c19
+Author: Simonas Kazlauskas <simonas@kazlauskas.me>
+Date:   Fri Nov 23 19:57:56 2012 +0200
+
+    Fix maximum and minimum ranges of TYPE_(U)INT64 properties
+
+    In corner case where properties use values 2 ** 62 < ±x < 2 ** 63 for
+    TYPE_INT64 and 2 ** 63 < x < 2 ** 64 for TYPE_UINT64 they will raise
+    warnings even tough values are valid.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=688949
+
+ gi/_gobject/propertyhelper.py |  6 +++---
+ tests/test_properties.py      | 11 ++++-------
+ 2 files changed, 7 insertions(+), 10 deletions(-)
+
+commit 93e9e309d8ba54884881cfca203e8bc355c2727e
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Nov 21 12:58:07 2012 +0100
+
+    Test virtual methods with in and out arguments
+
+    ... and both caller and callee out argument allocation.
+
+    This came up in https://bugzilla.gnome.org/show_bug.cgi?id=688783
+
+ tests/test_gi.py | 13 +++++++++++++
+ 1 file changed, 13 insertions(+)
+
+commit 25a9cfb043448efbab9168ef66f852cc34b9909b
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Nov 20 07:00:44 2012 +0100
+
+    Ship pygi-convert.sh in tarballs
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=688697
+
+ Makefile.am | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 4a8d31e6f56a3f1360bdb880ffd9a6eb139c02d8
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Nov 19 15:25:38 2012 +0100
+
+    Post-release version bump to 3.7.3
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit d0ed62afbc4cada0bf6abc4f8754e5a8d73036e4
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Nov 19 15:13:28 2012 +0100
+
+    release 3.7.2
+
+ NEWS | 47 +++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 47 insertions(+)
+
+commit 29dc7425dd7584411b52ef07b50f929ed119a000
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Nov 19 14:37:02 2012 +0100
+
+    Fix distcheck
+
+    Commit e617f76e forgot to rename the file in EXTRA_DIST
+
+ tests/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 567aae6e7c56bb89f53fcfccb1b0bc732f85b847
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Nov 19 14:34:13 2012 +0100
+
+    tests: Fix unicode vs. str issues in Python 2
+
+    Some of the tests assumed a system default encoding of UTF-8, which
+    is not true
+    in Python 2 unless pygtkcompat is imported. Commit e617f76 uncovered
+    this.
+
+ tests/test_gi.py        |  8 ++++----
+ tests/test_iochannel.py | 16 +++++++++-------
+ 2 files changed, 13 insertions(+), 11 deletions(-)
+
+commit 509e5ac1a6dd8504e89c33c559fe4f72156a1ddf
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Nov 19 14:20:56 2012 +0100
+
+    tests: Fix previous commit to fail properly on test failures
+
+ tests/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit e617f76e5b0c301c3ae92e1091aa86792de4d8e8
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Nov 19 14:09:14 2012 +0100
+
+    tests: Run pygtkcompat tests separately
+
+    pygtkcompat changes the global namespace, in particular patching
+    Gdk and Gtk
+    overrides. Run the tests in a separate process so that the main
+    tests are not
+    potentially affected by the pygtkcompat test.
+
+    runtests.py runs all tests/test_*.py by default, so rename to
+    compat_test_pygtk.py and run that explicitly after successfully
+    running the
+    main tests.
+
+    See https://bugzilla.gnome.org/show_bug.cgi?id=688219
+
+ tests/Makefile.am          |   3 +
+ tests/compat_test_pygtk.py | 147
+ +++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_pygtkcompat.py  | 147
+ ---------------------------------------------
+ 3 files changed, 150 insertions(+), 147 deletions(-)
+
+commit 8180b8092f99b7c9f0dee1742418efdbd23ab330
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date:   Thu Nov 15 02:51:52 2012 -0800
+
+    Move pygtkcompat into sibling package of gi
+
+    Move the pygtkcompat module out of the gi package and into
+    a sibling package as follows:
+
+    pygobject/
+      gi/
+      pygtkcompat/
+
+    This allows for pygtkcompat to grow without affecting the gi package.
+    Add deprecation message to gi/pygtkcompat.py
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=688219
+
+ Makefile.am                |   2 +-
+ configure.ac               |   1 +
+ gi/pygtkcompat.py          | 524
+ +++------------------------------------------
+ pygtkcompat/Makefile.am    |  15 ++
+ pygtkcompat/__init__.py    |  20 ++
+ pygtkcompat/pygtkcompat.py | 501
+ +++++++++++++++++++++++++++++++++++++++++++
+ tests/test_pygtkcompat.py  |   6 +-
+ 7 files changed, 565 insertions(+), 504 deletions(-)
+
+commit f736694d09e9d0fca4769d9f1f34ec34e6354d87
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Nov 19 13:59:20 2012 +0100
+
+    Bump g-i dependency to >= 1.34.2
+
+    We need this for updated GLib annotations and new test API.
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit f6c994c76cd8010460b76bf455e1a341348d735b
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Nov 19 10:39:26 2012 +0100
+
+    test_gi: Fix failing tests with g-i 1.34.x
+
+    Skip tests which require g-i test API from 1.35.x when building
+    with g-i
+    1.34.x.
+
+ tests/test_gi.py | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+commit 8ce0d028fe79e2ce52cfecbb682afba6651a7a70
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Nov 14 11:57:21 2012 +0100
+
+    test_gi: Add tests for type "filename"
+
+ tests/test_gi.py | 30 ++++++++++++++++++++++++++++++
+ 1 file changed, 30 insertions(+)
+
+commit 3408a151e49d9520f54ad9bc04f620c7777125ec
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Nov 14 11:09:33 2012 +0100
+
+    Drop foreign GVariant registration/support
+
+    This is dead code. We have tests for GVariant in and out method
+    arguments,
+    callback arguments and return values, properties, etc to ensure that
+    this stays
+    working.
+
+ gi/Makefile.am             |  2 --
+ gi/pygi-foreign-gvariant.c | 63
+ ----------------------------------------------
+ gi/pygi-foreign-gvariant.h | 41 ------------------------------
+ gi/pygi-foreign.c          |  8 +-----
+ 4 files changed, 1 insertion(+), 113 deletions(-)
+
+commit 47c46d847bb69ebc139d5e0b6c609da6f27201f2
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Nov 14 10:33:24 2012 +0100
+
+    test_properties.py: Fix PEP-8 errors
+
+ tests/test_properties.py | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+commit 78f49e6253500bfa382ce6c07412613d8f7f9d7f
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Nov 14 10:14:36 2012 +0100
+
+    Add support for GVariant properties defined in Python
+
+ gi/_gobject/gobjectmodule.c   | 13 +++++++
+ gi/_gobject/propertyhelper.py | 11 ++++--
+ tests/test_properties.py      | 81
+ +++++++++++++++++++++++++++++++++++++------
+ 3 files changed, 91 insertions(+), 14 deletions(-)
+
+commit f3b77f4304be20b7422c262b973f3eeb540c4bf6
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Nov 14 09:33:43 2012 +0100
+
+    pyg_value_from_pyobject(): Simplify GVariant type check
+
+    Use pyg_type_from_object_strict() instead of the much more expensive
+    and local
+    pyg_get_gvariant_type().
+
+ gi/_gobject/pygtype.c | 23 +----------------------
+ 1 file changed, 1 insertion(+), 22 deletions(-)
+
+commit 0c0fb8ef88a2c61cf95cd1cb96f6d5f296cad5fc
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Nov 14 09:27:42 2012 +0100
+
+    test_everything: Add test for callback returning wrong type
+
+    This covers the "expected a GVariant, got something else" check in
+    pyg_value_from_pyobject().
+
+ tests/test_everything.py | 16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+commit 84db7109dfbaf443758a5a4871ee385686d2703d
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Nov 14 08:42:53 2012 +0100
+
+    Add type checking to GVariant argument assignment
+
+ gi/pygi-argument.c | 7 ++++++-
+ tests/test_gi.py   | 5 ++---
+ 2 files changed, 8 insertions(+), 4 deletions(-)
+
+commit e944caf5ff53143a98dd4a5578530996358013ec
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Nov 14 08:22:35 2012 +0100
+
+    Add support for GVariant properties defined in C
+
+    Note that trying to assign a non-GVariant value to a GVariant property
+    currently crashes.
+
+ gi/pygi-property.c |  6 +++++-
+ tests/test_gi.py   | 21 +++++++++++++++++++++
+ 2 files changed, 26 insertions(+), 1 deletion(-)
+
+commit 614cc9594cb34d92a6d4b00773427d4fb023c65e
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Nov 14 07:09:58 2012 +0100
+
+    test_unknown.py: Check property interface
+
+    NB that the property implementation in test-unknown.c does not
+    actually do
+    anything, we just want to assert that the properties are properly
+    registered.
+
+ tests/test_unknown.py | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+commit 9d7771affcf788d251cced65da56fc2773a278b3
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Nov 14 07:01:24 2012 +0100
+
+    Fix previous commit for Python 2
+
+ gi/pygi-foreign-cairo.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 997d4e70b2793039d916acf8921087576622152e
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Nov 14 06:57:04 2012 +0100
+
+    pygi-foreign-cairo.c: Use official py3cairo API
+
+    Do not clobber py3cairo's Pycairo_CAPI global variable, and use
+    import_cairo()
+    instead of our own code.
+
+ gi/pygi-foreign-cairo.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit cec5d1a55347b81c1ae4ddc47ea2b4fbf964d239
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Nov 14 06:47:23 2012 +0100
+
+    Drop dead code from pygi-callbacks.[hc]
+
+    _pygi_create_callback() and _pygi_scan_for_callbacks() are not
+    used anywhere.
+    _pygi_destroy_notify_create() fits better in pygi-marshal-from-py.c,
+    so move it
+    there, and drop pygi-callbacks.[hc] completely.
+
+ gi/Makefile.am            |   2 -
+ gi/pygi-callbacks.c       | 217
+ ----------------------------------------------
+ gi/pygi-callbacks.h       |  48 ----------
+ gi/pygi-marshal-from-py.c |  44 ++++++++++
+ gi/pygi-private.h         |   1 -
+ 5 files changed, 44 insertions(+), 268 deletions(-)
+
+commit 55070cc9c98993ccda7ebcb05783fad182b2eb11
+Author: Carlos Garnacho <carlos@lanedo.com>
+Date:   Tue Nov 13 18:24:28 2012 +0100
+
+    Fix marshalling of arrays of struct pointers to Python
+
+    Fill in the pointer to the struct, not the pointer to the
+    array position. This makes the GdkAtom** argument in
+    gtk_clipboard_wait_for_targets() work.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=678620
+
+ gi/pygi-marshal-to-py.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+commit fc021516552b1720bacc4afe6b7a610c413194c4
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Nov 14 06:27:17 2012 +0100
+
+    test_atoms.py: Add test for out array
+
+    This reproduces https://bugzilla.gnome.org/show_bug.cgi?id=678620
+
+ tests/test_atoms.py | 19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+
+commit e2790d22610aae773635d4caef2458082a307283
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Nov 13 16:38:36 2012 +0100
+
+    Fix Gdk.Atom str()/repr() fallback
+
+    Fix regression in commit 6713618: If an atom does not have a name,
+    do not
+    recursively call our own str()/repr() methods, but just print
+    "Gdk.Atom<atom_id>".
+
+ gi/overrides/Gdk.py | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+commit 9879fd41a7d8d72f8db9cadf5b1ee29fc4d5d6bf
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Nov 13 13:16:14 2012 +0100
+
+    test_gi: Stop using GLib.bytes.unref_to_array()
+
+    This method isn't safe for GI, and should be (skip)ed. Use get_data()
+    instead
+    which is safe and works fine.
+
+    See https://bugzilla.gnome.org/show_bug.cgi?id=688242
+
+ tests/test_gi.py | 6 ------
+ 1 file changed, 6 deletions(-)
+
+commit 671361841de797ef62b59d1d7568fc3d431898c7
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Nov 13 12:56:11 2012 +0100
+
+    Fix Gdk.Atom to have a proper str() and repr()
+
+    Gdk.Atom is not proper GType'd class, so we cannot override the
+    whole class.
+    Just override its __str__() and __repr__() methods so that printing
+    atoms shows
+    something sensible. For nameless/invalid atoms, fall back to the old
+    <void at 0xdeadbeef> output to help with debugging.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=678620
+
+ gi/overrides/Gdk.py | 21 +++++++++++++++++++++
+ tests/test_atoms.py | 12 ++++++++++++
+ 2 files changed, 33 insertions(+)
+
+commit 56e62858e9c2bdde3186f5cf4e83be94fb4e5306
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date:   Tue Nov 13 02:53:34 2012 -0800
+
+    Make sure g_value_set_boxed does not cause a buffer overrun with
+    GStrvs
+
+    Add NULL terminator to gchar** passed to g_value_set_boxed to
+    make sure it does not overrun memory in pygi_set_property_value_real.
+    Add MALLOC_CHECK_=3 to "make check" which prints an error and aborts
+    in these cases.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=688232
+
+ gi/pygi-property.c | 8 ++++++--
+ tests/Makefile.am  | 1 +
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+commit ca11ec124fdd3fb2b67efdeb3ac93aaeb8b3fd83
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Nov 12 08:35:28 2012 +0100
+
+    types.py: Fix PEP-8 violation
+
+ gi/types.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit df589458358d7e7bf178dff4e6ad937a70f806e3
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date:   Sun Nov 11 22:26:19 2012 -0800
+
+    Fix leaks with GValues holding boxed and object types
+
+    Expose read access to PyGIBoxed.free_on_dealloc.
+    Add GObject.Value.__del__ override and call unset() to
+    correctly free reference counts.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=688137
+
+ gi/overrides/GObject.py |  9 +++++++++
+ gi/pygi-boxed.c         | 12 ++++++++++++
+ tests/test_gi.py        |  2 --
+ 3 files changed, 21 insertions(+), 2 deletions(-)
+
+commit c01c95b9fb3d726385efac945f6d1270ae65d109
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date:   Sun Nov 11 19:46:15 2012 -0800
+
+    Add expectantly failing unittests for GValue boxed/object leaks
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=688137
+
+ tests/test_gi.py | 80
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 80 insertions(+)
+
+commit 13629f5a9c9a7022f3521a3616d9ce8fa4a6161b
+Author: Simon Feltman <s.feltman@gmail.com>
+Date:   Thu Aug 16 15:09:08 2012 -0700
+
+    Add doc strings showing method signatures for gi methods
+
+    Add signature based doc string to all methods pulled in from
+    introspection. For example: Gtk.SpinButton.get_icon_area.__doc__
+    get_icon_area(self, icon_pos:Gtk.EntryIconPosition) ->
+    icon_area:cairo.RectangleInt
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=681967
+
+ gi/overrides/GIMarshallingTests.py |   1 +
+ gi/pygi-info.c                     | 103
+ +++++++++++++++++++++++++++++++++----
+ gi/pygi-type.c                     |  60 +++++++++++++++++++++
+ gi/pygi-type.h                     |   1 +
+ gi/types.py                        |  92
+ ++++++++++++++++++++++++++-------
+ tests/test_gi.py                   |  30 +++++++++++
+ 6 files changed, 259 insertions(+), 28 deletions(-)
+
+commit 7b7277f3cc099280f8e2d6cf6693490290fedc24
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date:   Fri Nov 9 19:17:03 2012 -0800
+
+    Set Property instance doc string and blurb to getter doc string
+
+    Assign Property getter __doc__ strings or explicit blurb parameters
+    to the Property instances __doc__ attribute. This clobbers the
+    default Property classes lengthy and unhelpful doc string in the case
+    of instances.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=688025
+
+ gi/_gobject/propertyhelper.py | 10 +++++++---
+ tests/test_properties.py      | 14 ++++++++++----
+ 2 files changed, 17 insertions(+), 7 deletions(-)
+
+commit c5343d329ebb452d97afac30e4120ebab8477556
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Nov 12 07:47:02 2012 +0100
+
+    tests: Fix for Python 2
+
+    Add quirks for Python 2's string handling, and disable the
+    Everything.test_array_gint8_in() as there seems to be no way of
+    creating a byte
+    array in Python 2.
+
+ tests/test_everything.py | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+commit 964f33ca3a74bfb7d850f136d0844ac1551d36e9
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Sat Nov 10 15:52:15 2012 +0100
+
+    test_everything: Add tests for more Regress data and container types
+
+    Add more tests for Regress' data and container type test API.
+
+    This detects a number of bugs, which have been marked as expected
+    failure, or
+    disabled completely for the cases where they cause crashes:
+
+     * unsigned enums with values >= 0x80000000 do not work
+     * nested ghashes in return values do not work
+     * array length arguments in callbacks are passed instead of
+     suppressed
+
+ tests/test_everything.py | 156
+ ++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 154 insertions(+), 2 deletions(-)
+
+commit 476e29d1ba3eda92cc021710017bce4ec252e5b5
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Nov 9 18:45:22 2012 +0100
+
+    test_everything: Add tests for Regress type tests
+
+    Add tests for all the data type handling tests of g-i's Regress
+    module.
+
+ tests/test_everything.py | 183
+ +++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 183 insertions(+)
+
+commit 0d7974396e8379b518403983d9d13629066680d7
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Nov 9 18:44:50 2012 +0100
+
+    Add GObject.G_MINSSIZE
+
+ gi/_gobject/gobjectmodule.c | 1 +
+ gi/overrides/GObject.py     | 2 +-
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+
+commit b800a6903300dbe9435ed8eb3677eb9c0536ec31
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Nov 9 16:02:00 2012 +0100
+
+    Fix marshalling of GByteArrays
+
+    In _pygi_marshal_from_py_array(), set the array length after copying
+    the data
+    in the GI_TYPE_TAG_UINT8 case (which applies for GByteArrays),
+    otherwise it
+    will always come out as zero length.
+
+    Enable the TestGByteArray.test_bytearray_none_in() test case as that
+    works now.
+
+ gi/pygi-marshal-from-py.c | 1 +
+ tests/test_gi.py          | 3 +--
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit fa568949c46dd4b537357f1af74d1f675294b760
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Nov 9 15:23:37 2012 +0100
+
+    Fix marshalling of ssize_t to smaller ints
+
+    Add missing marshalling cases for (u)int8 and (u)int16. This fixes the
+    TestArray.test_array_in test, so drop the expected failure.
+
+ gi/pygi-marshal-from-py.c | 30 +++++++++++++++++++++++++++++-
+ tests/test_gi.py          |  2 --
+ 2 files changed, 29 insertions(+), 3 deletions(-)
+
+commit 5a5940a0a0704be8e222d4cad6cedda1ad3e0f71
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Nov 9 09:37:00 2012 +0100
+
+    test_gi: Enable GByteArray constructor tests
+
+    GByteArray annotations have been fixed in GLib now, enable the
+    test case.
+
+    Drop the redundant disabled_test_bytearray_none_in_from_bytes()
+    test, as this
+    is the same as disabled_test_bytearray_none_in().
+
+ tests/test_gi.py | 16 ++++------------
+ 1 file changed, 4 insertions(+), 12 deletions(-)
+
+commit e2c545896ab08b1f1885b502a8472db83f193d08
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Nov 9 09:11:38 2012 +0100
+
+    test_gi: Enable GBytes test cases
+
+    GBytes annotations are fixed in GLib now, enable the test case and
+    add more
+    for g_bytes_new_take() and g_bytes_{compare,equal}().
+
+    Please note that calling unref_to_array() on a GBytes object that
+    we created
+    ourselves currently causes a double free crash, so disable that part
+    for now.
+
+ tests/test_gi.py | 30 +++++++++++++++++++++++++-----
+ 1 file changed, 25 insertions(+), 5 deletions(-)
+
+commit 1ba4e201f86ffa28c645d7c9eea99cf31080ea43
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Nov 9 08:26:29 2012 +0100
+
+    test_gi: Add missing data type tests from GIMarshallingTests
+
+    Add tests for types time_t, GBytes, GByteArray, and various variants
+    of passing
+    around GValues, flags, enums, arrays, and boxed structs. This tests
+    API which
+    is provided by GIMarshallingTests, but which we did not cover yet.
+
+    This detects a number of bugs in annotations and our
+    marshalling. These have
+    been marked as expected failure, or disabled completely for the
+    cases where
+    they cause crashes.
+
+ tests/test_gi.py | 152
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 152 insertions(+)
+
+commit 0456d9c892b76ed79134230a4a8610a23c602964
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Nov 9 06:44:46 2012 +0100
+
+    autogen.sh: Only enable code coverage if lcov is installed
+
+    Otherwise we break minimal build environments.
+
+ autogen.sh | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+commit 76a3acebf73f930c541d0f30249f67d254f948ab
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Nov 9 06:41:58 2012 +0100
+
+    Lower autoconf dependency to 2.68 again
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit f1a5f1b92d577c542d4258e63e595d4da9acd484
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Thu Nov 8 14:54:30 2012 +0100
+
+    Add support for lcov code coverage
+
+    Use gnome-common's new code coverage flags. Default to enabling
+    code coverage
+    in autogen.sh (but not for dist).
+
+    To use this, run "make check-code-coverage" after building.
+
+ .gitignore   | 1 +
+ Makefile.am  | 2 ++
+ autogen.sh   | 2 +-
+ configure.ac | 6 ++++++
+ 4 files changed, 10 insertions(+), 1 deletion(-)
+
+commit e46af4aba220cfaf4b84a9be847f3363da556993
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Nov 7 17:14:22 2012 +0100
+
+    Update documentation files
+
+    Update AUTHORS to have the current maintainers.
+
+    Update HACKING to drop Tomeu's GNOME login (this should be set in
+    ~/.ssh/config)
+
+    Update INSTALL to current upstream version.
+
+ AUTHORS |  13 ++-
+ HACKING |   4 +-
+ INSTALL | 380
+ +++++++++++++++++++++++++++++++++++++++++++---------------------
+ 3 files changed, 267 insertions(+), 130 deletions(-)
+
+commit 06f5ed0ebabce34eca6bc6de80221cba6453feec
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Nov 7 17:08:11 2012 +0100
+
+    Quiesce automake output
+
+    Use $(AM_V_GEN) with custom $(LINK) commands, and avoid error
+    messages about
+    existing symlinks on rebuilds.
+
+ gi/Makefile.am          | 2 +-
+ gi/_glib/Makefile.am    | 2 +-
+ gi/_gobject/Makefile.am | 2 +-
+ tests/Makefile.am       | 6 +++---
+ 4 files changed, 6 insertions(+), 6 deletions(-)
+
+commit 37270de8ead0b281a1824ff204a4aa9686a7225b
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Nov 7 16:50:07 2012 +0100
+
+    Drop unused variable, fail builds on those
+
+    Build with -Werror=unused-variable, as these could hide programming
+    errors or
+    incomplete refactoring, and are not platform dependent.
+
+    Drop unused variable in pyg_type_add_interfaces().
+
+ configure.ac                | 1 +
+ gi/_gobject/gobjectmodule.c | 1 -
+ 2 files changed, 1 insertion(+), 1 deletion(-)
+
+commit 495fd98555e0c89724bb8fa9478dc096c5d61e22
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Nov 7 16:37:04 2012 +0100
+
+    configure.ac: Drop maintainer mode, modernize libtool declarations
+
+    Use all arguments of AC_INIT.
+
+    AM_MAINTAINER_MODE is discouraged now, drop it.
+
+    Use LT_PREREQ and LT_INIT for libtool initialization instead of
+    the older
+    declarations.
+
+    See https://live.gnome.org/GnomeGoals/ModernAutotools
+
+ configure.ac | 19 ++++++-------------
+ 1 file changed, 6 insertions(+), 13 deletions(-)
+
+commit 059d0cb879fe5a7b0296ec21f3bfcb64c8596cb0
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Nov 7 16:21:13 2012 +0100
+
+    autoupdate configure.ac
+
+    Result of "autoupdate", with slight manual beautification.
+
+    See https://live.gnome.org/GnomeGoals/ModernAutotools
+
+ configure.ac | 21 +++++++++------------
+ 1 file changed, 9 insertions(+), 12 deletions(-)
+
+commit a932446e6648ecd98c9038298b18c6fbd36c01aa
+Author: Jose Rostagno <joserostagno@vijona.com.ar>
+Date:   Mon Nov 5 14:26:05 2012 -0300
+
+    pygi-convert: remove deprecated GLib → GObject conversions
+
+    Using these functions from the GObject module is deprecated now,
+    they should be
+    used from GLib.
+
+ pygi-convert.sh | 5 -----
+ 1 file changed, 5 deletions(-)
+
+commit 21076d4b8f3ec8e253ca236fa3b20b07fde237fe
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date:   Wed Nov 7 03:49:24 2012 -0800
+
+    Use hasattr when testing for __info__ when finding vfuncs
+
+    Change gi.types.find_vfunc_info_in_interface to use hasattr
+    when finding vfuncs. Using '__info__' in __dict__ was skipping
+    overridden interfaces which don't directly contain the __info__.
+
+ gi/types.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 1b5c9b3d1499b3bc59afb297672abc671e175546
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Nov 7 12:05:24 2012 +0100
+
+    tests: Ensure that the fatal mask is always reset
+
+    On test case failures the fatal mask might be left in a wrong state,
+    so ensure
+    with "finally" that it is reset on failed tests as well, to avoid
+    hiding other
+    failures.
+
+ tests/test_gi.py            | 11 ++++++-----
+ tests/test_overrides_gtk.py | 33 +++++++++++++++++++--------------
+ tests/test_pygtkcompat.py   |  6 ++++--
+ tests/test_signal.py        |  6 ++++--
+ 4 files changed, 33 insertions(+), 23 deletions(-)
+
+commit 463f660cd6bb78ae7f2ea7c70c0491e6b4744942
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date:   Tue Nov 6 21:34:06 2012 -0800
+
+    Replace GObject notify methods with introspection and python
+
+    Replace static context managers for freeze_notify and
+    handler_block with python context managers. Remove notify,
+    freeze_notify, thaw_notify static methods as the introspection
+    versions work fine.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672727
+
+ gi/_gobject/pygobject.c | 173
+ ++----------------------------------------------
+ gi/overrides/GObject.py |  61 +++++++++++++++--
+ tests/test_gobject.py   |  26 ++++++--
+ tests/test_signal.py    |  13 +++-
+ 4 files changed, 91 insertions(+), 182 deletions(-)
+
+commit 3fcd987272a779e5ee9173a2c3a043b4b7475842
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date:   Tue Oct 23 13:56:32 2012 -0700
+
+    Add support for overriding GObject.Object
+
+    Shift pygi module mechanics so the introspection generated 'Object'
+    class becomes derived from the static GObject class. Add initial
+    GObject.Object override which sets all static methods back essentially
+    leapfrogging the introspection methods. This sets the stage for having
+    the ability to remove static methods piecemeal in favor of
+    introspection/python in future commits.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=672727
+
+ gi/module.py             | 30 +++++++++++---------
+ gi/overrides/GObject.py  | 74
+ ++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygobject-external.h  | 10 +------
+ gi/types.py              |  7 +++++
+ tests/test_gobject.py    | 31 ++++++++++++++++----
+ tests/testhelpermodule.c |  2 +-
+ 6 files changed, 126 insertions(+), 28 deletions(-)
+
+commit 4da6f93d86b104941c5533c3da5edb4a00ec62e9
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Nov 6 13:55:21 2012 +0100
+
+    Bump glib dependency to >= 2.34.2
+
+    We need 2.34.2 or 2.35.2 as we now depend on the GIOChannel annotation
+    fixes.
+
+ README       | 2 +-
+ configure.ac | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 85c8dd7a9bc81fb5df5abc6d8a95f966955ec775
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Nov 6 11:28:42 2012 +0100
+
+    Update README
+
+    Point to python-hackers-list instead of the old pygtk list, update
+    required
+    versions, and point to wiki page and IRC.
+
+ README | 19 ++++++++++---------
+ 1 file changed, 10 insertions(+), 9 deletions(-)
+
+commit 6d8b29ba56fb085948a155c75af36dcea9c71da8
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Nov 6 11:21:32 2012 +0100
+
+    Add --with-python configure option
+
+    This behaves like setting $PYTHON, but also works in build systems
+    like jhbuild
+    which do not support setting environment variables.
+
+    Update README accordingly.
+
+ README       | 15 +++++++++------
+ configure.ac | 43 ++++++++++++++++++++++++++++++++++---------
+ 2 files changed, 43 insertions(+), 15 deletions(-)
+
+commit 4e5556a5238a3b86da9a0e40fd0e23004ed6af75
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Nov 6 10:39:27 2012 +0100
+
+    python.m4: Add python3.3, do not prefer unversioned "python"
+
+    Add python 3.3 to the search list.
+
+    http://www.python.org/dev/peps/pep-0394/ broke the well-defined
+    meaning of
+    "python", so use that as last fallback if more specific versions do
+    not exist.
+
+ configure.ac | 2 +-
+ m4/python.m4 | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit e71c046ed8f5b06e6b7383ddc0fc18f06de6abee
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Nov 6 09:48:50 2012 +0100
+
+    m4: Update py-compile to current upstream version
+
+    Update py-compile to current versions from automake 1.11.6.
+
+ m4/py-compile | 81
+ +++++++++++++++++++++++++++++++++++------------------------
+ 1 file changed, 48 insertions(+), 33 deletions(-)
+
+commit 8406b39f4e9ff98e0d59e880dde3ddb5e5131726
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Nov 6 09:57:00 2012 +0100
+
+    m4: Update introspection.m4 to current upstream version
+
+ m4/introspection.m4 | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+commit 4ffa61b7c39cf038440dc9acfe8d214c9b77c3a6
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Nov 6 09:53:15 2012 +0100
+
+    option.py: Fix PEP-8 error
+
+ gi/_glib/option.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 2cbb54e79c23b96486d4a2bfa170460df5bd6c84
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date:   Mon Nov 5 18:27:56 2012 -0800
+
+    Remove DynamicGLibModule and DynamicGObjectModule
+
+    Move final bits of _glib static binding imports directly into
+    the GLib override. Change _glib/option use the .so directly
+    rather than the staged variables in _glib/__init__.py.
+    Remove DynamicGLibModule and DynamicGObjectModule and update
+    unittest.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=687488
+
+ gi/_glib/__init__.py | 11 ----------
+ gi/_glib/option.py   | 16 +++++++-------
+ gi/importer.py       | 12 ++---------
+ gi/module.py         | 60
+ ----------------------------------------------------
+ gi/overrides/GLib.py | 14 ++++++++++++
+ tests/test_gi.py     |  9 ++------
+ 6 files changed, 26 insertions(+), 96 deletions(-)
+
+commit 901c1b6e3722a9cd999e4948297e2c460f101d20
+Author: Daniel Drake <dsd@laptop.org>
+Date:   Thu Nov 1 14:46:22 2012 +0000
+
+    Fix property lookup in class hierarchy
+
+    Commit 4bfe7972546413f46f5c36737ff03bb5612c1921 introduced a bug where
+    a Python subclass of a gi-provided base class overrides a property
+    from the
+    base class.
+
+    The new behaviour in the above commit causes pygobject to seek
+    the property
+    in the base class and try to read it from there (resulting in
+    confusion)
+    rather than noticing that the property is overridden and present
+    in the
+    Python object instance.
+
+    To provide a nicer solution here, we can exploit the fact that
+    g_object_class_find_property() will traverse the hierarchy in order to
+    find the right GParamSpec, and the returned GParamSpec can tell
+    us exactly
+    which GType introduces the property. The strategy is:
+
+     1. Find pspec with g_object_class_find_property()
+     2. Find the class that owns that property (pspec->owner_type)
+     3. See if girepository owns that class.
+     3a. If yes, get property from there.
+     3b. If not, get property "directly"
+
+    And the same for property setting.
+
+    Now that _pygi_lookup_property_from_g_type is always passed the
+    type that
+    implements the property, it no longer has to go recursing through
+    parent
+    classes, which was the original cause of confusion.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=686942
+
+ gi/_gobject/pygobject.c  |  92 +++++++++++++++++++++++----------
+ gi/pygi-property.c       | 130
+ ++++++++++++++++++++++-------------------------
+ gi/pygi-property.h       |   4 +-
+ gi/pygi.h                |  12 ++---
+ tests/test_properties.py |  30 +++++++++++
+ 5 files changed, 164 insertions(+), 104 deletions(-)
+
+commit efcb0f9fda65e24ae98438d61487d06db9eac1b1
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Sat Nov 3 16:14:01 2012 +0100
+
+    Move property and signal creation into _class_init()
+
+    We must not add class interfaces after g_type_class_ref() has been
+    called the
+    first time. Move signal and property creation from pyg_type_register()
+    into
+    pyg_object_class_init(), and drop the hack of registering interfaces
+    twice.
+
+    This changed class initialization order now exposes GLib's warning
+    about
+    unknown signals, so adjust
+    test_signal.TestGSignalsError.test_invalid_name() to
+    not abort on that.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=686149
+
+ gi/_gobject/gobjectmodule.c | 177
+ ++++++++++++++++++--------------------------
+ tests/test_signal.py        |   6 +-
+ 2 files changed, 75 insertions(+), 108 deletions(-)
+
+commit 655a5002ffaa088b775adbc59e5125444f7bc1ca
+Author: Jose Rostagno <joserostagno@vijona.com.ar>
+Date:   Sat Nov 3 13:21:52 2012 -0300
+
+    Remove unused macro definitions
+
+    PYGLIB_*_VERSION are not used anywhere any more, remove those.
+    (dropped in commit 8d52bceb1)
+
+ gi/_glib/glibmodule.c | 5 -----
+ 1 file changed, 5 deletions(-)
+
+commit fa054fd15b8874760bee97d9af168a2969e6ece4
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Nov 5 14:38:07 2012 +0100
+
+    testhelpermodule.c: Drop obsolete g_thread_init()
+
+    We already require a new enough glib version as we dropped
+    g_thread_init() in
+    the main code a long time ago. But for formality's sake, bump glib
+    requirement
+    to >= 2.32.
+
+ configure.ac             | 4 ++--
+ tests/testhelpermodule.c | 1 -
+ 2 files changed, 2 insertions(+), 3 deletions(-)
+
+commit 2e57530a27a44e94927d487cf2f2d9e543777654
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Nov 5 14:37:11 2012 +0100
+
+    pygi-source.c: Drop dead code
+
+ gi/pygi-source.c | 2 --
+ 1 file changed, 2 deletions(-)
+
+commit 2a24c9ccd59bff719fa817a0ec5c959f6da03e1c
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date:   Sun Nov 4 22:22:53 2012 -0800
+
+    Move TYPE constants from _gobject to GObject
+
+    Clear out TYPE constants from _gobject/__init__.py and move them
+    into the
+    GObject overrides. Disperse class imports among modules that use
+    them instead
+    of using _gobject/__init__.py as a staging area (e.g. GInterface).
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=687487
+
+ gi/_gobject/__init__.py  | 30 ------------------------------
+ gi/_gobject/constants.py |  2 +-
+ gi/module.py             | 38 +++++++++++++++++++++++++-------------
+ gi/overrides/__init__.py |  9 ++++++---
+ gi/types.py              | 10 ++++++----
+ 5 files changed, 38 insertions(+), 51 deletions(-)
+
+commit c2aa6f0d0ed4c4e60f081b106dc7a65513963fce
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Nov 5 13:10:05 2012 +0100
+
+    Move G_MIN/MAX constants into GObject overrides
+
+    These really ought to come from GLib's typelib, but are not right
+    now so we
+    need to keep the static bindings for those. But drop them from
+    gi/_gobject/ and
+    move them into the overrides where they belong.
+
+ gi/_gobject/__init__.py       | 17 -----------------
+ gi/_gobject/constants.py      | 21 ---------------------
+ gi/_gobject/propertyhelper.py |  2 +-
+ gi/overrides/GObject.py       |  9 +++++++++
+ tests/test_gi.py              | 32 ++++++++++++++++----------------
+ 5 files changed, 26 insertions(+), 55 deletions(-)
+
+commit 12b84727edc36f686a7031b5c4c6bf662838908d
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Nov 5 11:04:54 2012 +0100
+
+    Replace static OPTION_* constants with GI
+
+    Drop static definitions of GLib.OPTION_* constants and use the ones
+    from GI
+    instead.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=686765
+
+ gi/_glib/__init__.py    | 13 -------------
+ gi/_glib/glibmodule.c   | 32 --------------------------------
+ gi/_glib/option.py      | 46
+ ++++++++++++++++++++++++----------------------
+ gi/overrides/GLib.py    | 13 +++++++++++++
+ gi/overrides/GObject.py |  2 +-
+ 5 files changed, 38 insertions(+), 68 deletions(-)
+
+commit 7372e3c9ecb8e836894c32975eab8c4107ba0b28
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Nov 5 10:14:52 2012 +0100
+
+    tests: Do not use deprecated assertRaisesRegexp()
+
+    Use assertRaisesRegex() instead and provide 2.7 compatibility in
+    tests/runtests.py.
+
+ tests/runtests.py    | 3 +++
+ tests/test_signal.py | 8 ++++----
+ 2 files changed, 7 insertions(+), 4 deletions(-)
+
+commit da2106902eb3dabebdff1674743cb3040566a745
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date:   Sun Nov 4 02:57:29 2012 -0800
+
+    Move gobject static functions and constants to gi
+
+    Replace the following functions with gi and overrides:
+    type_children, type_interfaces, signal_list_ids, signal_list_names,
+    signal_lookup, signal_name, type_parent. Assign SIGNAL_* and
+    PARAM_* from gi SignalFlags and ParamFlags respectively.
+    Move module level assignments of a number of static functions to
+    the GObject.py overrides file.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=687487
+
+ docs/reference/pygobject-functions.xml |  25 ---
+ gi/_gobject/__init__.py                |  72 +--------
+ gi/_gobject/gobjectmodule.c            | 272
+ ---------------------------------
+ gi/overrides/GObject.py                | 208 ++++++++++++++++++++++++-
+ gi/overrides/__init__.py               |   5 +-
+ tests/test_signal.py                   |  11 +-
+ 6 files changed, 215 insertions(+), 378 deletions(-)
+
+commit f4acd6a9d14248d459708f61fd01f6d4735f087d
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date:   Sun Nov 4 02:52:19 2012 -0800
+
+    Make unitests for gobject functions moving to gi more strict
+
+    Add expected failure test for invalid SystemError's coming from
+    signal_lookup and signal_list_ids. Remove excessive type_name
+    tests and type_from_name tests.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=687487
+
+ tests/test_gtype.py  | 53
+ ----------------------------------------------------
+ tests/test_signal.py | 40 ++++++++++++++++++++++++---------------
+ 2 files changed, 25 insertions(+), 68 deletions(-)
+
+commit 3267808318b284814e52f2803b17af56fca648ad
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Sat Nov 3 14:17:25 2012 +0100
+
+    [API change] Remove static filename_from_utf8() binding
+
+    Replace static GLib.filename_from_utf8() with GI. The old static
+    binding always
+    tried to convert the result to an Unicode object, which will fail
+    if the result
+    is not UTF-8 encoded (which is the whole point of this function
+    really!), so
+    return bytes now.
+
+    Although the static binding was rather useless before, this is
+    technically an
+    API break.
+
+ docs/reference/pyglib-functions.xml | 32 --------------------------------
+ gi/_glib/__init__.py                |  1 -
+ gi/_glib/glibmodule.c               | 26 --------------------------
+ gi/_gobject/__init__.py             |  1 -
+ gi/overrides/GLib.py                |  8 ++++++++
+ gi/overrides/GObject.py             |  3 ++-
+ tests/test_glib.py                  |  8 ++++++++
+ 7 files changed, 18 insertions(+), 61 deletions(-)
+
+commit 8d52bceb1e0aa0dc79cf77f36dda9f953f170459
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Sat Nov 3 13:14:15 2012 +0100
+
+    Drop static glib_version and pyglib_version constants
+
+    Use the GLib version from GI instead, and the already existing
+    gi.version_info.
+
+ docs/reference/pyglib-constants.xml    | 50
+ ----------------------------------
+ docs/reference/pygobject-constants.xml | 19 -------------
+ gi/_glib/__init__.py                   |  2 --
+ gi/_glib/glibmodule.c                  | 21 --------------
+ gi/_gobject/__init__.py                |  1 -
+ gi/overrides/GLib.py                   |  8 +++++-
+ gi/overrides/GObject.py                |  3 +-
+ tests/test_glib.py                     | 12 ++++++++
+ 8 files changed, 21 insertions(+), 95 deletions(-)
+
+commit 9f96325e75f7c5f88789ea3f74a068e73cfde1a2
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Sat Nov 3 12:12:44 2012 +0100
+
+    Drop static G_MININT8 and related constants
+
+    Use the introspected constants from GLib instead.
+
+ gi/_gobject/__init__.py     | 12 ------------
+ gi/_gobject/constants.py    | 12 ------------
+ gi/_gobject/gobjectmodule.c | 18 +-----------------
+ gi/overrides/GObject.py     | 17 +++++++++++++++++
+ tests/test_gobject.py       |  4 ++++
+ 5 files changed, 22 insertions(+), 41 deletions(-)
+
+commit 3354c4eda0f098d1a8f744264ef9a2565a38b50d
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Sat Nov 3 11:58:40 2012 +0100
+
+    test_gobject: Add test case for min/max int constants
+
+    Related to https://bugzilla.gnome.org/show_bug.cgi?id=685022
+
+ tests/test_gobject.py | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+commit d70cb32789e057fe5a16e61a0cce77d9c54a3ee1
+Author: Jose Rostagno <joserostagno@vijona.com.ar>
+Date:   Sat Oct 27 15:37:32 2012 -0300
+
+    Use g_object_info_find_signal()
+
+    Replace our custom code with a call to the corresponding
+    gobject-instrospection
+    function.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=687371
+
+ gi/pygi-signal-closure.c | 21 ++++-----------------
+ 1 file changed, 4 insertions(+), 17 deletions(-)
+
+commit ae6d0aada9587cd4dca168375527b80785b604a0
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Sat Nov 3 11:23:06 2012 +0100
+
+    GLib overrides: code cleanup
+
+    Factorize the logic to handle zero or multiple user_data arguments
+    into
+    user_data_varargs_shim(), and put code that handles deprecated API
+    into the
+    corresponding "then" branches, to improve readability.
+
+ gi/overrides/GLib.py | 87
+ ++++++++++++++++++++++++++++------------------------
+ 1 file changed, 47 insertions(+), 40 deletions(-)
+
+commit d7f095b01e7208273703c880f4f0dfcc1a152a9a
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Sat Nov 3 09:33:08 2012 +0100
+
+    Restore actual GLib API after previous fix
+
+    Re-fix the acceptance of priority as first argument for idle_add(),
+    io_add_watch() and timeout_add(), as that is the real GLib API. Ensure
+    that
+    this keeps supporting the backwards compatible API with supplying
+    multiple user
+    data arguments.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=687047
+
+ gi/overrides/GLib.py    | 117
+ +++++++++++++++++++++++++-----------------------
+ tests/test_iochannel.py |  74 +++++++++++++++++++++++++++---
+ tests/test_source.py    |  30 +++++++++++++
+ 3 files changed, 158 insertions(+), 63 deletions(-)
+
+commit 648b653d85bf3bc28dc59c6d309f15d388076af9
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date:   Fri Nov 2 21:01:38 2012 -0700
+
+    Add unittests for module level type and signal functions
+
+    Add tests for the following methods: signal_list_ids,
+    signal_name, signal_lookup, signal_query, type_children,
+    type_from_name, type_name, type_is_a, and type_interfaces.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=687487
+
+ tests/Makefile.am    |   1 +
+ tests/test_gtype.py  | 106
+ +++++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_signal.py |  43 +++++++++++++++++++++
+ 3 files changed, 150 insertions(+)
+
+commit 80db2a50feab9898d7c5f88ea27aadc3dfb5bec3
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date:   Tue Oct 30 18:33:44 2012 -0700
+
+    Fix GLib override incompatibilities with old static API
+
+    Change idle_add, timeout_add, timeout_add_seconds, and
+    io_add_watch to accept *args and **kwargs as arguments
+    to the callback functions instead of only accepting a single
+    user_data arg. This ensures the new overridden introspection
+    methods are backwards compatible with the static versions
+    they replaced.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=687047
+
+ gi/overrides/GLib.py    | 98
+ ++++++++++++++++++++++++++++---------------------
+ tests/test_iochannel.py | 37 +++++++++++++++++--
+ 2 files changed, 90 insertions(+), 45 deletions(-)
+
+commit 9c6399bbf75c312b1ef4933d079712ea5b05a935
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date:   Tue Oct 30 12:01:44 2012 -0700
+
+    Fix IOChannel unittests for python 2.7
+
+    Use __future__ unicode_literals to minimize difference
+    between python 2.7 and 3. Comparisons need to encode arguments as
+    'UTF-8' for testing readline operations.
+    Add backwards compatible "next" to support the python 2.7 iteration.
+    Change isinstance(channel, file) to hasattr(channel, 'fileno') to
+    support all python versions (and duck typing).
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=687047
+
+ gi/overrides/GLib.py    | 4 +++-
+ tests/test_iochannel.py | 1 +
+ 2 files changed, 4 insertions(+), 1 deletion(-)
+
+commit 0f94a0a4ebd2bbfd06d8f9a2bb2b17dabf7678ef
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Oct 29 23:00:31 2012 +0100
+
+    Allow calling io_add_watch with a file object
+
+    The old static bindings allowed that, so we need to allow it to
+    maintain
+    backwards compatibility. Deprecate this mode as well, so that we
+    can get rid of
+    it at some point.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=687047
+
+ gi/overrides/GLib.py |  7 +++++++
+ tests/test_glib.py   | 26 ++++++++++++++++++++++++++
+ 2 files changed, 33 insertions(+)
+
+commit 3ba67fd41944309077eb81c4c03397519ed29dc4
+Author: John Ralls <jralls@ceridwen.us>
+Date:   Mon Oct 29 14:57:22 2012 -0700
+
+    Fix duplicate symbols error on OSX
+
+ gi/pygi-source.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 5a367aa067e369f2b1e713199614e3426fecc10e
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Sun Oct 28 17:42:34 2012 +0100
+
+    Drop removed markup-escape-text() from reference documentation
+
+ docs/reference/pyglib-functions.xml | 36
+ ------------------------------------
+ 1 file changed, 36 deletions(-)
+
+commit 057b3d3791e6f1947004f2482c0ae40529de03ae
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Sun Oct 28 17:41:03 2012 +0100
+
+    Drop some dead code from gi/_glib/glibmodule.c
+
+ gi/_glib/glibmodule.c | 45 ---------------------------------------------
+ 1 file changed, 45 deletions(-)
+
+commit 7b12803bce3418bb487127f497f022c973f35888
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Sun Oct 28 17:37:29 2012 +0100
+
+    Remove static get_current_time() binding
+
+    Use GLib.get_real_time() through GI instead. Deprecate the function,
+    as
+    GLib.get_real_time() should be called directly.
+
+ docs/reference/pyglib-functions.xml | 26 --------------------------
+ gi/_glib/__init__.py                |  1 -
+ gi/_glib/glibmodule.c               | 11 -----------
+ gi/_glib/pyglib.c                   | 16 ----------------
+ gi/_glib/pyglib.h                   |  1 -
+ gi/_gobject/__init__.py             |  1 -
+ gi/overrides/GLib.py                |  8 ++++++++
+ gi/overrides/GObject.py             |  2 +-
+ tests/test_glib.py                  |  6 +++++-
+ 9 files changed, 14 insertions(+), 58 deletions(-)
+
+commit b3dfb780b3a74f6933e3afcd2ba512b36dfbe514
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Sun Oct 28 17:23:23 2012 +0100
+
+    Add more tests for GLib.spawn_async()
+
+    Check spawn_async() with getting stdin/out/err pipes and specifying
+    envp.
+
+ tests/test_subprocess.py | 29 +++++++++++++++++++++++++++++
+ 1 file changed, 29 insertions(+)
+
+commit 70d78eee4a04dcaefea4615fe351e33fa717dffa
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Sun Oct 28 14:15:05 2012 +0100
+
+    Remove static child_add_watch() binding
+
+    Use the GLib API through GI instead, and provide override to keep
+    backwards
+    compatible API. Also allow using the actual GLib API, and deprecate
+    the old
+    static API of calling without a priority as first argument.
+
+ docs/reference/pyglib-functions.xml | 61 ---------------------------
+ gi/_glib/__init__.py                |  1 -
+ gi/_glib/glibmodule.c               | 72 -------------------------------
+ gi/_gobject/__init__.py             |  1 -
+ gi/overrides/GLib.py                | 46 ++++++++++++++++++++
+ gi/overrides/GObject.py             |  2 +-
+ tests/test_mainloop.py              |  2 +-
+ tests/test_subprocess.py            | 84
+ ++++++++++++++++++++++++++++++++++---
+ 8 files changed, 127 insertions(+), 142 deletions(-)
+
+commit 4b16427714b850e33c6020d8de1833bae19a3b87
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Sun Oct 28 13:44:23 2012 +0100
+
+    test_subprocess: Cover more child_watch_add() cases
+
+    Verify that priority is set correctly, and also test calling without
+    userdata.
+
+ tests/test_subprocess.py | 24 +++++++++++++++++++-----
+ 1 file changed, 19 insertions(+), 5 deletions(-)
+
+commit 83ff5938612d37d52f112867a472777dd6786d69
+Author: Colin Walters <walters@verbum.org>
+Date:   Sat Oct 27 12:22:53 2012 -0400
+
+    gi/__init__.py: Pacify pep8 style checker
+
+    It was complaining about finding only 1 blank line.  Regression
+    likely introduced by f976d05b.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=686991
+
+ gi/__init__.py | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit f976d05b04f26e733d19988e68989e340eb3a29e
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Oct 26 10:39:28 2012 +0200
+
+    Use a custom deprecation warning to make them visible by default
+
+    DeprecationWarning is not shown by default, and is thus rather
+    useless for
+    developers. Use a custom PyGIDeprecationWarning class and derive
+    it from
+    RuntimeWarning to make it visible.
+
+ gi/__init__.py           | 5 +++++
+ gi/overrides/GLib.py     | 5 +++--
+ gi/overrides/Gtk.py      | 5 +++--
+ gi/overrides/__init__.py | 4 ++--
+ gi/pygtkcompat.py        | 4 ++--
+ tests/Makefile.am        | 2 +-
+ tests/test_glib.py       | 5 +++--
+ tests/test_gobject.py    | 3 ++-
+ tests/test_iochannel.py  | 5 +++--
+ tests/test_source.py     | 3 ++-
+ 10 files changed, 26 insertions(+), 15 deletions(-)
+
+commit 366f5d2d3902c6293d0031e0b7dc5d6641a05ac7
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Oct 26 09:26:17 2012 +0200
+
+    Remove static io_add_watch() binding
+
+    Use the GLib API through GI instead, and provide override to keep
+    backwards
+    compatible API. Also allow using the actual GLib API, and deprecate
+    all other
+    variants:
+     - calling with an fd as first argument instead of an IOChannel
+     - calling without a priority as second argument
+
+ docs/reference/pyglib-functions.xml | 106
+ ------------------------------------
+ gi/_glib/__init__.py                |   1 -
+ gi/_glib/glibmodule.c               |  98
+ ---------------------------------
+ gi/_gobject/__init__.py             |   1 -
+ gi/overrides/GLib.py                |  51 ++++++++++++++---
+ gi/overrides/GObject.py             |   3 +-
+ tests/test_glib.py                  |  15 ++++-
+ tests/test_iochannel.py             |  70 +++++++++++++++++++++++-
+ 8 files changed, 126 insertions(+), 219 deletions(-)
+
+commit 284de1eb5c37a3f6caa7d846dbd439f1eac410a2
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Oct 26 08:48:35 2012 +0200
+
+    Add tests for GLib.io_add_watch()
+
+ tests/test_glib.py | 36 ++++++++++++++++++++++++++++++++++++
+ 1 file changed, 36 insertions(+)
+
+commit 15e717ce2c2a26c02c913f79bc7cf6876d943e92
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Thu Oct 25 15:55:46 2012 +0200
+
+    Remove static GIOChannel bindings
+
+    Use the GLib API through GI instead, and provide overrides to keep
+    backwards
+    compatible API, including its bugs.
+
+    We still need to keep a static wrapper around
+    g_io_channel_read_chars() until
+    we teach PyGObject to correctly handle caller allocated out array
+    arguments.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=686795
+
+ gi/_glib/Makefile.am    |   2 -
+ gi/_glib/__init__.py    |   1 -
+ gi/_glib/glibmodule.c   |   2 -
+ gi/_glib/pygiochannel.c | 748
+ ------------------------------------------------
+ gi/_glib/pygiochannel.h |  29 --
+ gi/_gobject/__init__.py |   1 -
+ gi/gimodule.c           |  72 +++++
+ gi/overrides/GLib.py    |  95 +++++-
+ 8 files changed, 161 insertions(+), 789 deletions(-)
+
+commit 0bfa6b44b808d9f8f55199216c29c1aec96c7719
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Thu Oct 25 12:59:46 2012 +0200
+
+    test_iochannel.py: Fix data type of IOFlags
+
+    ~GLib.IOFlags.NONBLOCK yields an int instead of a GLib.IOFlags,
+    so ensure that
+    the result is of type GLib.IOFlags again.
+
+ tests/test_iochannel.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 25d12afd06863ce223a161ba1317bfe5503bca5c
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Thu Oct 25 08:24:31 2012 +0200
+
+    Add environment variable to disable pep8 checks
+
+    pep8 takes quite long for "make check". Skip it if $SKIP_PEP8 is
+    set, which
+    makes the test/fix turnaround time faster.
+
+ tests/Makefile.am | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+commit e9624ed1d38c777de2b430e3b0fbae2acbf34956
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date:   Wed Oct 24 04:31:26 2012 -0700
+
+    [API add] Add get_introspection_module for getting un-overridden
+    modules
+
+    Add gi.module.get_introspection_module to explicitly get a
+    wrapped module pulled in through introspection without static
+    and python override handling. This API is intended for python
+    overrides to use rather than having them access
+    gi.importer.modules['<name>']._introspection_module directly.
+    Replace aforementioned usage in all overrides.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=686828
+
+ gi/module.py                       | 38
+ +++++++++++++++++++++++++++++++++++---
+ gi/overrides/GIMarshallingTests.py |  4 ++--
+ gi/overrides/GLib.py               |  4 ++--
+ gi/overrides/Gdk.py                |  6 +++---
+ gi/overrides/Gio.py                |  4 ++--
+ gi/overrides/Gtk.py                |  5 +++--
+ gi/overrides/Pango.py              |  4 ++--
+ tests/test_overrides.py            | 29 +++++++++++++++++++++++++++++
+ 8 files changed, 78 insertions(+), 16 deletions(-)
+
+commit e6e047ef9b8575c852b3cdc3f5d4dfbb548cc648
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Oct 24 15:16:13 2012 +0200
+
+    test_option: Use public API
+
+    Use GLib.option, not gi._glib.option.
+
+ tests/test_option.py | 42 ++++++++++++++++++++----------------------
+ 1 file changed, 20 insertions(+), 22 deletions(-)
+
+commit 6a586af41b8740c4ba590591d1068d80071ff2dc
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Oct 24 14:12:05 2012 +0200
+
+    Drop static SPAWN_* constants
+
+    Use the introspected constants instead, which are identical. Add
+    backwards
+    compatible aliases.
+
+    These constants are covered by tests/test_subprocess.py.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=686765
+
+ docs/reference/pyglib-constants.xml    | 68
+ ----------------------------------
+ docs/reference/pyglib-functions.xml    | 26 ++++++-------
+ docs/reference/pygobject-constants.xml | 67
+ ---------------------------------
+ gi/_glib/__init__.py                   |  7 ----
+ gi/_glib/glibmodule.c                  | 15 --------
+ gi/_gobject/__init__.py                |  7 ----
+ gi/overrides/GLib.py                   |  6 +++
+ gi/overrides/GObject.py                |  6 ++-
+ tests/test_subprocess.py               |  6 ++-
+ 9 files changed, 29 insertions(+), 179 deletions(-)
+
+commit 0137a7af7bf69421e0c8e94120a1f8cff01fbeea
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Oct 24 13:59:31 2012 +0200
+
+    Drop static IO_* constants
+
+    Use the introspected constants instead, which are identical. Add
+    backwards
+    compatible aliases.
+
+    These constants are covered by tests/test_iochannel.py.
+
+ docs/reference/pyglib-constants.xml | 52
+ -------------------------------------
+ gi/_glib/__init__.py                | 19 --------------
+ gi/_glib/glibmodule.c               | 32 -----------------------
+ gi/_gobject/__init__.py             | 18 -------------
+ gi/overrides/GLib.py                | 18 ++++++++++++-
+ gi/overrides/GObject.py             |  8 +++++-
+ tests/test_iochannel.py             |  1 +
+ tests/test_source.py                |  2 +-
+ 8 files changed, 26 insertions(+), 124 deletions(-)
+
+commit 0e1a6ccee45ae2239da1c44de1866596343165ba
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Oct 24 12:50:50 2012 +0200
+
+    Fix various bugs in GLib.IOChannel
+
+    - Fix segfault when using an IOChannel as an iterator: PyIter_Next()
+    returns
+      NULL on the last element, instead of raising a StopIteration.
+
+    - The default encoding of a stream is 'UTF-8', not NULL. NULL means
+    that the
+      stream is being used in binary mode; in that case, we should not
+      attempt to
+      do any automagic conversion to an Unicode object. As this special
+      case is
+      inconsistent and has never worked anyway, and the current buggy
+      implementation breaks binary streams, just drop it without
+      replacement.
+      (Introduced in commit de9eae4dfcce8)
+
+    These bugs were uncovered by the previously committed tests.
+
+ gi/_glib/pygiochannel.c | 25 +++++--------------------
+ 1 file changed, 5 insertions(+), 20 deletions(-)
+
+commit a98c37937a4f7cb81a0b02c023d12097f386a22c
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Oct 24 12:49:04 2012 +0200
+
+    Add tests for GLib.IOChannel
+
+    This did not have any code coverage at all. The tests uncover a
+    range of bugs,
+    which will be fixed in the next commit.
+
+ tests/Makefile.am       |   1 +
+ tests/test_iochannel.py | 262
+ ++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 263 insertions(+)
+
+commit 1b27432abf6004553e9476d5ffeb2bf603534419
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Oct 24 08:50:37 2012 +0200
+
+    Remove static idle_add/timeout_add bindings
+
+    Use the GLib functions through GI instead. Add overrides to ensure
+    that default
+    arguments continue to work as before, and that callbacks are called
+    without an
+    userdata argument if it wasn't specified.
+
+ docs/reference/pyglib-functions.xml | 165
+ ------------------------------------
+ gi/_glib/__init__.py                |   3 -
+ gi/_glib/glibmodule.c               | 139 ------------------------------
+ gi/_gobject/__init__.py             |   3 -
+ gi/overrides/GLib.py                |  31 +++++++
+ gi/overrides/GObject.py             |   3 +-
+ tests/test_source.py                |  19 +++++
+ 7 files changed, 52 insertions(+), 311 deletions(-)
+
+commit 2357f4a0237feabcf6886f2a448aa3f42f6781b9
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Oct 24 09:14:57 2012 +0200
+
+    Add tests for priority argument of idle_add/timeout_add
+
+    There is a potential to treat the priority as user data in a call like
+    "GLib.idle_add(cb, GLib.PRIORITY_HIGH)". The current static bindings
+    force
+    using a keyword argument for the priority (but silently ignore it
+    if you
+    specify both userdata and priority as a positional argument).
+
+    Test the correct handling of priority as well.
+
+ tests/test_source.py | 63
+ ++++++++++++++++++++++++++++++++++++++++++++++++----
+ 1 file changed, 59 insertions(+), 4 deletions(-)
+
+commit dceb4d60e210cb1531ad81935733a3f0be0c8edb
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Oct 24 08:40:50 2012 +0200
+
+    Drop old ChangeLog.pre-2.18
+
+    This is ancient by now, quite sizable, and the complete history can
+    always be
+    seen in the git log.
+
+ ChangeLog.pre-2.18 | 3608
+ ----------------------------------------------------
+ Makefile.am        |    1 -
+ 2 files changed, 3609 deletions(-)
+
+commit 127ef91f1563caa346bc2ac2adb064487a84e6a0
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Oct 24 08:39:05 2012 +0200
+
+    Fix PEP-8 whitespace in previous commit
+
+ tests/test_source.py | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+commit 0bc0b55be0dae7528c2fc7439d672ad4e417335d
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Oct 24 08:33:49 2012 +0200
+
+    Add tests for idle_add()/timeout_add with and without user data
+
+    This is implicitly spread over various test cases, but let's test
+    it explicitly
+    to ensure that the behaviour stays consistent when moving this to GI.
+
+ tests/test_source.py | 35 +++++++++++++++++++++++++++++++++++
+ 1 file changed, 35 insertions(+)
+
+commit d0a0332feb7946f4bb6b43211d6fe3ae67e7dba5
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Oct 24 08:05:43 2012 +0200
+
+    tests: consitent naming style
+
+    Stop mixing camel case and underline naming, use the latter
+    consistently
+    in all tests.
+
+ tests/test_gobject.py     | 64
+ +++++++++++++++++++++++------------------------
+ tests/test_interface.py   |  4 +--
+ tests/test_option.py      | 14 +++++------
+ tests/test_pygtkcompat.py | 32 ++++++++++++------------
+ tests/test_signal.py      | 10 ++++----
+ tests/test_source.py      | 23 ++++++++---------
+ tests/test_subprocess.py  |  2 +-
+ tests/test_thread.py      |  2 +-
+ tests/test_unknown.py     |  2 +-
+ 9 files changed, 76 insertions(+), 77 deletions(-)
+
+commit 4b460e2eb18b8340fe99252063fdb08b0c222968
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Wed Oct 24 07:28:10 2012 +0200
+
+    Work around wrong 64 bit constants in GLib Gir
+
+    GLib's gir currently has wrong constants for MININT64 and MAXUINT64;
+    explicitly
+    set them in an override, until this gets fixed properly.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=685022
+
+ gi/overrides/GLib.py | 8 ++++++++
+ tests/test_gi.py     | 9 +++++++++
+ 2 files changed, 17 insertions(+)
+
+commit f30efd2619911c89ca873fac6bec06a1b60fab82
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Oct 23 13:32:14 2012 +0200
+
+    Mark GLib.Source.get_current_time() as deprecated
+
+    This method has been deprecated in GLib long ago. We have a workaround
+    implementation using GLib.get_real_time(), but eventually this should
+    go away.
+
+ gi/overrides/GLib.py | 5 ++++-
+ tests/test_source.py | 8 +++++++-
+ 2 files changed, 11 insertions(+), 2 deletions(-)
+
+commit 483c86267f2623eaa88d6a9e685c96ec3ba4f121
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Oct 23 08:56:19 2012 +0200
+
+    Mark GLib API that is exposed in GObject as deprecated
+
+    A lot of API in GObject really belongs into GLib and is just there for
+    historical/backwards compatible reasons. Mark these methods as
+    deprecated so
+    that at some point we can drop them.
+
+ gi/overrides/GObject.py  |  3 ++-
+ gi/overrides/__init__.py | 13 +++++++++++++
+ tests/test_gobject.py    | 24 ++++++++++++++----------
+ 3 files changed, 29 insertions(+), 11 deletions(-)
+
+commit 191cf45af44850fc29f2392ae2f0042aed6d13a9
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Oct 19 09:55:05 2012 +0200
+
+    Remove static MainLoop, MainContext, and some GSource bindings
+
+    glib's MainLoop and MainContext are fully introspectable these days,
+    so remove
+    our static bindings. This reduces our code, as well enables GLib
+    API which
+    hasn't been available through the static bindings before.
+
+    This also requires dropping our custom static types for GLib Source,
+    Timeout,
+    and Idle. The latter two work fine with introspection and just
+    need tiny
+    overrides for a backwards compatible API. g_source_new() is not
+    introspectable,
+    though, so we need to keep our static wrappers for that. Move
+    them from
+    gi/_glib/pygsource.c to gi/pygi-source.c, so that it can use the
+    GI API.
+
+    Note that gi/_glib/pygsource.[hc] is still required for the static
+    PollFD type
+    which is used by the static IOChannel binding. Once the latter
+    goes away,
+    PollFD can be dropped as well.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=686443
+
+ docs/Makefile.am                      |   6 +-
+ docs/reference/pyglib-classes.xml     |   2 -
+ docs/reference/pyglib-constants.xml   |  53 ---
+ docs/reference/pyglib-functions.xml   |  58 ---
+ docs/reference/pyglib-maincontext.xml | 152 --------
+ docs/reference/pyglib-mainloop.xml    | 202 -----------
+ gi/Makefile.am                        |   2 +
+ gi/_glib/Makefile.am                  |   4 -
+ gi/_glib/__init__.py                  |  12 -
+ gi/_glib/glibmodule.c                 |  45 +--
+ gi/_glib/pyglib.c                     |  15 -
+ gi/_glib/pyglib.h                     |   1 -
+ gi/_glib/pygmaincontext.c             | 126 -------
+ gi/_glib/pygmaincontext.h             |  40 ---
+ gi/_glib/pygmainloop.c                | 362 -------------------
+ gi/_glib/pygmainloop.h                |  36 --
+ gi/_glib/pygsource.c                  | 640
+ ----------------------------------
+ gi/_glib/pygsource.h                  |   3 -
+ gi/_gobject/__init__.py               |  13 -
+ gi/gimodule.c                         |   9 +
+ gi/overrides/GLib.py                  | 116 +++++-
+ gi/overrides/GObject.py               |  10 +-
+ gi/pygi-private.h                     |   1 +
+ gi/pygi-source.c                      | 247 +++++++++++++
+ gi/pygi-source.h                      |  31 ++
+ tests/test_glib.py                    |  22 +-
+ tests/test_gobject.py                 |   2 +
+ tests/test_source.py                  |   3 -
+ 28 files changed, 437 insertions(+), 1776 deletions(-)
+
+commit 326218a20681c1f2234a6eea1ed800382be57626
+Author: Simon Feltman <s.feltman@gmail.com>
+Date:   Wed Sep 19 15:37:14 2012 -0700
+
+    Deprecate void pointer fields as general PyObject storage.
+
+    Complete deprecation of gpointer struct fields as general
+    PyObject storage. Only int types are now allowed.
+    Assignment of anything other than an int or None raises
+    a TypeError stating the error and  associated bug URL.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=683599
+
+ gi/pygi-argument.c          | 25 ++++++++++++++++-----
+ gi/pygi-info.c              | 28 ++++--------------------
+ tests/test_everything.py    | 53
+ +++++++++++++++++++++++++--------------------
+ tests/test_overrides_gtk.py | 41 -----------------------------------
+ 4 files changed, 54 insertions(+), 93 deletions(-)
+
+commit 3dba328010a4ffd9259700ffec95871c7341d491
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Oct 23 11:59:08 2012 +0200
+
+    Add some MainLoop, MainContext, and Source test cases
+
+    These cover the remaining static API and behaviour, so that we
+    have good
+    regression tests for converting them to GI.
+
+    See https://bugzilla.gnome.org/show_bug.cgi?id=686443
+
+ tests/test_glib.py     | 21 +++++++++++++++++++++
+ tests/test_gobject.py  | 11 +++++++++++
+ tests/test_mainloop.py | 16 ++++++++++++++++
+ tests/test_source.py   | 44 ++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 92 insertions(+)
+
+commit 7635340271df0a135873459e6a2a365fd4b187a2
+Author: Steve Frécinaux <code@istique.net>
+Date:   Wed Feb 9 18:37:33 2011 +0100
+
+    [API change] 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.
+
+    These methods were marked as deprecated for 3.4 and throwing a
+    warning, so
+    let's remove them for good now.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=641944
+
+    Co-Authored-By: Martin Pitt <martinpitt@gnome.org>
+
+ docs/reference/pygobject.xml | 63
+ --------------------------------------------
+ gi/_gobject/pygobject.c      | 44 -------------------------------
+ 2 files changed, 107 deletions(-)
+
+commit cfec113e3b3eabf8db834f48b2f16792d1e841a3
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Oct 23 08:17:40 2012 +0200
+
+    Add test for GLib.get_current_time()
+
+    This adds a plausibility test, as well as ensuring the documented
+    return type.
+    This will be useful if/once we drop the static _glib binding.
+
+ tests/test_glib.py | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+commit fb473b31054744e5ab59e9d4ed3b74571e27d3ff
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Oct 23 07:48:52 2012 +0200
+
+    Drop unnecessary static _glib bindings
+
+    Drop static pyglib bindings which have straightforward and working
+    GLib GI
+    bindings. Add tests for all dropped functions to ensure they keep
+    working.
+
+ docs/reference/pyglib-constants.xml |  59 -------
+ docs/reference/pyglib-functions.xml | 270 ------------------------------
+ gi/_glib/__init__.py                |  24 ---
+ gi/_glib/glibmodule.c               | 319
+ ------------------------------------
+ gi/_gobject/__init__.py             |   9 -
+ gi/overrides/GLib.py                |  16 ++
+ gi/overrides/GObject.py             |  32 ++++
+ gi/overrides/Makefile.am            |   1 +
+ tests/Makefile.am                   |   1 -
+ tests/test_glib.py                  |  46 ++++++
+ tests/test_gobject.py               |   4 +
+ tests/test_uris.py                  |  16 --
+ 12 files changed, 99 insertions(+), 698 deletions(-)
+
+commit 126a10f765af3d3a6f08ce5db7ed9f3ef647848f
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Oct 23 06:12:08 2012 +0200
+
+    Fix OverflowError in source_remove()
+
+    GSource IDs are unsigned, so we must use 'I' for parsing then, not
+    'i'.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=684526
+
+ gi/_glib/glibmodule.c |  2 +-
+ tests/test_source.py  | 13 ++++++++++++-
+ 2 files changed, 13 insertions(+), 2 deletions(-)
+
+commit 15f7442bd0c45db25073e3d8494094f1c284ffa4
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Oct 22 13:38:23 2012 +0200
+
+    Fix TestSource.testSources() test case
+
+    PyGObject has established the assumption that the destruction of
+    a GLib.Source
+    Python object does not destroy the actual GSource, as shown in
+    TestSource.setup_timeout(), TestTimeout.test504337(), and
+    https://bugzilla.gnome.org/show_bug.cgi?id=504337.
+
+    So we need to explicitly destroy our MySource and Idle objects
+    after using
+    them, as their callbacks always return True and we do not want them
+    to spill
+    over into other tests.
+
+    Also fix the assertions to actually verify that MySources' callback
+    was callied
+    (pos > 0, not pos >= 0), and use the unittest comparison API instead
+    of a
+    simple assert statement.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=686627
+
+ tests/test_source.py | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+commit b984a5fe0d065818a153f259db4dbde79534f084
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Oct 22 17:38:56 2012 +0200
+
+    configure.ac: post-release bump to 3.7.2
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit ce0825f58c3eba6084143e430605ffb597622369
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Oct 22 17:37:17 2012 +0200
+
+    release 3.7.1
+
+ NEWS | 42 ++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 42 insertions(+)
+
+commit a93763337ba7f952d787c42f45bfbb3ff02cc80d
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Oct 22 17:33:12 2012 +0200
+
+    Bump version to 3.7.1
+
+    Let's follow the real GNOME versioning from now on.
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 3fb13cc05a281970c3a624c2dd152996031b482c
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Oct 22 11:36:49 2012 +0200
+
+    test_mainloop code cleanup
+
+    Ensure that sys.excepthook is always restored, even if the test
+    fails. Use the
+    assert{True,False,Equal} unittest API instead of simple asserts for
+    more useful
+    failure messages.
+
+ tests/test_mainloop.py | 19 ++++++++++---------
+ 1 file changed, 10 insertions(+), 9 deletions(-)
+
+commit 31061f20083aa60919f6763a12addbf2b052cab7
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date:   Sun Oct 21 18:55:24 2012 -0700
+
+    Change install_properties to not use getattr on classes
+
+    The usage of getattr for accessing a classes __gproperties__
+    variable can be problematic due to the potential of it returning
+    the parent classes variable when it does not exist on the sub-class.
+    Similar to the fix for
+    https://bugzilla.gnome.org/show_bug.cgi?id=686496,
+    cls.__dict__.get is used to ensure this does not happen.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=686559
+
+ gi/_gobject/propertyhelper.py | 2 +-
+ tests/test_properties.py      | 6 ++++--
+ 2 files changed, 5 insertions(+), 3 deletions(-)
+
+commit 438d3e68f19e2af5d027e18842ab05e0421d088d
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date:   Sat Oct 20 19:56:04 2012 -0700
+
+    Move property install function into propertyhelper.py
+
+    Move _install_properties() into gi/_gobject/propertyhelper.py
+    and add unittests.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=686559
+
+ gi/_gobject/__init__.py       | 45 +++----------------------------
+ gi/_gobject/propertyhelper.py | 45 +++++++++++++++++++++++++++++++
+ tests/test_properties.py      | 63
+ +++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 111 insertions(+), 42 deletions(-)
+
+commit 695a9077aa8f40357e050f090caa5e2b8c5c9593
+Author: Simon Feltman <s.feltman@gmail.com>
+Date:   Sat Oct 20 03:11:07 2012 -0700
+
+    Fix Signal decorator to not use base class gsignals dict
+
+    Fix install_signals to not use the parent classes __gsignals__
+    dict if one does not exist on the given class.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=686496
+
+ gi/_gobject/signalhelper.py |  2 +-
+ tests/test_signal.py        | 43
+ +++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 44 insertions(+), 1 deletion(-)
+
+commit 1ff04e846d50b948df6fa3260c548ef4f4779c58
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Oct 19 09:05:01 2012 +0200
+
+    tests: Consistently use GLib.MainLoop
+
+    ... instead of mixing GObject.MainLoop and GLib.MainLoop.
+
+ tests/test_everything.py |  4 ++--
+ tests/test_gdbus.py      | 11 +++++------
+ 2 files changed, 7 insertions(+), 8 deletions(-)
+
+commit ff7e7401b4cf50532fef70263f7559ea513b8333
+Author: Kalev Lember <kalevlember@gmail.com>
+Date:   Wed Oct 17 18:27:14 2012 +0200
+
+    Install the .egg-info files into correct multilib directory
+
+    This makes sure the .egg-info files end up in the same python
+    top level
+    directory as the rest of the gi .py files.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=686315
+
+ Makefile.am | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 91e4cb2063d4e83fb1f6586a4396471d64f234f4
+Author: Simon Feltman <s.feltman@gmail.com>
+Date:   Mon Oct 15 04:03:50 2012 -0700
+
+    Fix leaked vfunc return values
+
+    Simple fix to dec ref returned values from closures wrapping
+    python functions.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=686140
+
+ gi/pygi-closure.c |  1 +
+ tests/test_gi.py  | 21 +++++++++++++++++++--
+ 2 files changed, 20 insertions(+), 2 deletions(-)
+
+commit 75e373b99c3cb66dd60b13c803e5f7eec77cc415
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Oct 15 07:42:05 2012 +0200
+
+    Skip Regress tests with --disable-cairo
+
+    We need cairo to build g-i's Regress library, gir, and typelib. Update
+    configure.ac to only require cairo if --disable-cairo was not
+    given. With
+    --disable-cairo, skip building the Regress library and skip all
+    tests which use
+    it.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=685094
+
+ configure.ac             |  5 ++---
+ tests/Makefile.am        | 45
+ +++++++++++++++++++++++++++------------------
+ tests/test_everything.py | 15 +++++++++++----
+ tests/test_overrides.py  |  7 ++++++-
+ 4 files changed, 46 insertions(+), 26 deletions(-)
+
+commit a2ab72aa39824579d1767d1fdba7e1031341f86c
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Oct 12 11:05:24 2012 +0200
+
+    _pygi_marshal_from_py_uint64: Re-fix check of negative values
+
+    Fix regression from commit 1bfcd5d94 (exposed by several test cases)
+    when using
+    Python 2.x.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=685000
+
+ gi/pygi-marshal-from-py.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 22c22124b787ae67638aff89796d7ce14900ea8e
+Author: Simon Feltman <s.feltman@gmail.com>
+Date:   Mon Oct 8 05:54:30 2012 -0700
+
+    Fix leak with python callables as closure argument.
+
+    The fix adds an extra args_data list to the PyGIInvokeState
+    structure. This list is used to track dynamically generated
+    closures that wrap python callables. This allows the ffi closure
+    and python callable to be freed when call scope has finished.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=685598
+
+ gi/pygi-cache.c               |   1 +
+ gi/pygi-closure.c             |  41 +++++++++----
+ gi/pygi-invoke-state-struct.h |   4 ++
+ gi/pygi-invoke.c              |   7 +++
+ gi/pygi-marshal-cleanup.c     |  14 +++++
+ gi/pygi-marshal-cleanup.h     |   4 ++
+ gi/pygi-marshal-from-py.c     |  57 ++++++++++++++----
+ tests/test_everything.py      | 137
+ +++++++++++++++++++++++++++++++-----------
+ 8 files changed, 206 insertions(+), 59 deletions(-)
+
+commit c0bc69906df2db64560f7c054277ad1956aab57f
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Thu Oct 11 17:49:30 2012 +0200
+
+    Gio overrides: Handle setting GSettings enum keys
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=685947
+
+ gi/overrides/Gio.py         | 9 ++++++++-
+ tests/test_overrides_gio.py | 3 +++
+ 2 files changed, 11 insertions(+), 1 deletion(-)
+
+commit bbbb7c9ed047a22ac3c43f2b0331d3b5ea32e812
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Thu Oct 11 17:20:38 2012 +0200
+
+    tests: Check reading GSettings enums in Gio overrides
+
+    Also split test_override() into several smaller test cases.
+
+ tests/org.gnome.test.gschema.xml |  9 +++++++++
+ tests/test_overrides_gio.py      | 14 +++++++++-----
+ 2 files changed, 18 insertions(+), 5 deletions(-)
+
+commit 8a2e96cd4e33b6c119a368d73a9d5504576cdccb
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Thu Oct 11 16:08:11 2012 +0200
+
+    Fix unsigned values in GArray/GList/GSList/GHash
+
+    _pygi_hash_pointer_to_arg() needs to handle unsigned integers as well.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=685860
+
+ gi/pygi-argument.c |  9 +++++++++
+ tests/test_gi.py   | 12 ++++++++++++
+ 2 files changed, 21 insertions(+)
+
+commit d394acbb58b38e6f52ee71e8e663a892676ab9e4
+Author: Colin Walters <walters@verbum.org>
+Date:   Thu Oct 4 20:13:55 2012 -0400
+
+    build: Fix srcdir != builddir
+
+ Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 1bfcd5d94b71edc9f03c8b3e87952a8bc8097586
+Author: Alban Browaeys <prahal@yahoo.com>
+Date:   Thu Sep 27 22:44:22 2012 +0200
+
+    _pygi_marshal_from_py_uint64(): Use correct data type in py2.7 check
+
+    Casting an unsigned to signed and checking if positive was not
+    good. Check the
+    unsigned 64 is below G_MAXUINT64 instead.
+
+    Side issue in https://bugzilla.gnome.org/show_bug.cgi?id=685000
+
+ gi/pygi-marshal-from-py.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit f0870336b9fc7797895f206e0d3ef17a19efe253
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Tue Oct 2 05:30:16 2012 -0700
+
+    Install an .egg-info file
+
+    This will help easy_install and pip to figure out that PyGObject
+    is already installed.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=680138
+
+ Makefile.am | 13 ++++++++-----
+ 1 file changed, 8 insertions(+), 5 deletions(-)
+
+commit 4c9318d97aa34051a0460e8db2ed0f963126b7f5
+Author: Johan Dahlin <johan@gnome.org>
+Date:   Thu Oct 4 09:42:41 2012 +0200
+
+    PyGProps_getattro(): Fix GObjectClass leak
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=685218
+
+ gi/_gobject/pygobject.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+commit 2aa61520eb4f293ce94d54605d7642a39e18e03d
+Author: Olivier Crête <olivier.crete@collabora.com>
+Date:   Mon Sep 17 15:16:32 2012 -0400
+
+    pygobject.c: Don't leak GObjectClass reference
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=684062
+
+ gi/_gobject/pygobject.c | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+commit 43d356d03d4c83e9de3c56f98a70d387b46f17af
+Author: Alban Browaeys <prahal@yahoo.com>
+Date:   Sat Sep 29 01:17:14 2012 +0200
+
+    Fix memory leak in _pygi_argument_to_array()
+
+    Length arg and type info need to be unref'ed.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=685082
+
+ gi/pygi-argument.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit 34270a109d2af20391c80e88874ee7303eaf5c09
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Sep 28 07:42:51 2012 +0200
+
+    Fix error messages for out of range numbers
+
+    PyErr_Format() does not understand %lli and %li, it needs to be %lld
+    and %ld.
+    So we cannot use those and G_GINT64_FORMAT.
+
+    Also remove the "if (long_ < G_MININT64 || long_ > G_MAXINT64)"
+    check, as long_
+    is a gint64 which can't possibly overflow its own data type. It
+    would also have
+    an unprintable error message.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=684314
+
+ gi/pygi-marshal-from-py.c | 21 ++++++++-------------
+ 1 file changed, 8 insertions(+), 13 deletions(-)
+
+commit 7f1422bf929976722edd6144beb0b4c96d74391b
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Fri Sep 28 06:59:38 2012 +0200
+
+    Kill dbus-daemon after running tests
+
+    dbus-launch does not kill the spawned dbus-daemon by itself (see
+    https://bugs.freedesktop.org/show_bug.cgi?id=39196), so do that
+    after running
+    our tests. Take care to preserve the exit code.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=685009
+
+ tests/Makefile.am | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+commit bfd9c8fac1ea240b29fbcd4185dc1702539c1e96
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Thu Sep 27 08:18:34 2012 +0200
+
+    GVariant overrides: Support empty tuple arrays
+
+    Implement the "empty value" branch in _create_tuple(), so that
+    _create_array()
+    can call it for parsing the element type for an empty array.
+
+    This fixes creating variants such as GLib.Variant('a(ii)', []).
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=684928
+
+ gi/overrides/GLib.py         | 30 +++++++++++++++++++++++-------
+ tests/test_overrides_glib.py | 31 +++++++++++++++++++++++++++++++
+ 2 files changed, 54 insertions(+), 7 deletions(-)
+
+commit 75d452ea5b179c3585adcf95356b4316c9180768
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Thu Sep 27 06:50:12 2012 +0200
+
+    TestGVariant: Split creation test case into several smaller ones
+
+ tests/test_overrides_glib.py | 20 ++++++--------------
+ 1 file changed, 6 insertions(+), 14 deletions(-)
+
+commit 4a20bcb3f97614044d351f8e436a81d332db55ba
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Sep 25 09:10:10 2012 +0200
+
+    Fix unused variables and results
+
+    This gets rid of all warnings except the deprecated symbol ones.
+
+ gi/_glib/pygiochannel.c | 9 +++------
+ gi/pygi-argument.c      | 4 +---
+ gi/pygi-callbacks.c     | 4 ----
+ gi/pygi-ccallback.c     | 1 -
+ gi/pygi-repository.c    | 3 +--
+ 5 files changed, 5 insertions(+), 16 deletions(-)
+
+commit 5285f14fee93d2729d4422c40a945adc2be69c14
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Tue Sep 25 08:56:20 2012 +0200
+
+    tests: Fix wrong return type in test_int64_callback()
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=684700
+
+ tests/testhelpermodule.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit e14ebab6099d082466ec11ca21d44de0d6017216
+Author: Giovanni Campagna <gcampagna@src.gnome.org>
+Date:   Wed Sep 19 00:10:57 2012 +0200
+
+    Fix GValue marshalling of long and unsigned long
+
+    long can be equivalent to int64 or int32, depending on the
+    architecture,
+    and GI conflates this distinction in the typelib, but GType does
+    not, and
+    warns if the wrong accessor is used.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=684331
+
+ gi/pygi-argument.c | 25 +++++++++++++++++++++----
+ 1 file changed, 21 insertions(+), 4 deletions(-)
+
+commit 50571dd27d1f7c6bed8c5aaa518b504c9f4c4ab6
+Author: Simon Feltman <s.feltman@gmail.com>
+Date:   Wed Sep 19 19:07:00 2012 -0700
+
+    Clean up deprecation message for assigning gpointers to objects.
+
+    The previous deprecation message was worded as if the deprecation
+    had already occurred and it has not.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=683599
+
+ gi/pygi-info.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 4bfe7972546413f46f5c36737ff03bb5612c1921
+Author: Olivier Crête <olivier.crete@collabora.com>
+Date:   Tue Sep 18 08:52:02 2012 +0200
+
+    pygi-property: Lookup property in base classes of non-introspected
+    types
+
+    Look for introspection data in the base classes of non-introspected
+    gtypes.
+    This is necessary to look up introspection data for plugins.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=684058
+
+ gi/pygi-property.c       | 28 ++++++++++++++--------------
+ tests/test_everything.py | 12 ++++++++++++
+ 2 files changed, 26 insertions(+), 14 deletions(-)
+
+commit 7aa94cc861082147b9c382b930f3257f0a842c84
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Sep 24 09:41:10 2012 +0200
+
+    post-release bump to 3.4.1
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit fcceed3adb8d78baba68861a1408627321b2c1ef
+Author: Martin Pitt <martinpitt@gnome.org>
+Date:   Mon Sep 24 09:35:33 2012 +0200
+
+    release 3.4.0
+
+ NEWS         | 3 +++
+ configure.ac | 4 ++--
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+
 commit 645a9d9d4712f8f0d1b63899b309bbc97eb1f216
 Author: Martin Pitt <martinpitt@gnome.org>
 Date:   Mon Sep 24 09:27:47 2012 +0200
@@ -6,7 +2865,7 @@ Date:   Mon Sep 24 09:27:47 2012 +0200
 
     To ensure we have all the Regress test APIs that we use.
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit b6f4ef327fbeaa10fd74571c3df540311834d6ae
@@ -15,7 +2874,7 @@ Date:   Mon Sep 17 22:52:49 2012 +0200
 
     post-release bump to 3.3.93
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 7e154cf01cf0ce7a8b52c45ba4db755f73b45d1d
@@ -24,7 +2883,7 @@ Date:   Mon Sep 17 22:48:13 2012 +0200
 
     release 3.3.92
 
- NEWS |   12 ++++++++++++
+ NEWS | 12 ++++++++++++
  1 file changed, 12 insertions(+)
 
 commit adbe30dc72b4d88bb31055f6ee33fddf32638af9
@@ -39,8 +2898,8 @@ Date:   Mon Sep 17 22:32:55 2012 +0200
 
     Update HACKING to point this out, too.
 
- HACKING     |    2 +-
- Makefile.am |   22 ++++++++++++++++------
+ HACKING     |  2 +-
+ Makefile.am | 22 ++++++++++++++++------
  2 files changed, 17 insertions(+), 7 deletions(-)
 
 commit be4a0682bdd189ee908ab1961001f759a80e133c
@@ -55,8 +2914,8 @@ Date:   Sun Sep 16 17:27:25 2012 -0700
 
     https://bugzilla.gnome.org/show_bug.cgi?id=675581
 
- gi/pygi-info.c   |    8 ++++++++
- tests/test_gi.py |   12 ++++++++++++
+ gi/pygi-info.c   |  8 ++++++++
+ tests/test_gi.py | 12 ++++++++++++
  2 files changed, 20 insertions(+)
 
 commit 3ada408434860d0c8eee6c6a869b5a3d801cfbc8
@@ -72,7 +2931,7 @@ Date:   Thu Sep 13 20:53:22 2012 -0700
 
     https://bugzilla.gnome.org/show_bug.cgi?id=683599
 
- gi/pygi-info.c |    8 ++++++++
+ gi/pygi-info.c | 8 ++++++++
  1 file changed, 8 insertions(+)
 
 commit a047f61f26d9c78b82d22948199313e5a389e918
@@ -87,7 +2946,7 @@ Date:   Mon Sep 17 09:41:24 2012 +0200
 
     See https://bugzilla.gnome.org/show_bug.cgi?id=684058
 
- tests/test_properties.py |   12 ++++++++++++
+ tests/test_properties.py | 12 ++++++++++++
  1 file changed, 12 insertions(+)
 
 commit 3e6a4000cbc4b0cb503fcd89b50202ed0b70d3a7
@@ -100,8 +2959,8 @@ Date:   Mon Sep 17 09:31:05 2012 +0200
     some test
     cases to better describe what they do.
 
- tests/test_properties.py |   78
- +++++++++++++++++++++++-----------------------
+ tests/test_properties.py | 78
+ ++++++++++++++++++++++++------------------------
  1 file changed, 39 insertions(+), 39 deletions(-)
 
 commit 4069c3d8547f35437e0cee175a5912febe25326d
@@ -110,7 +2969,7 @@ Date:   Wed Sep 12 06:51:24 2012 +0200
 
     test_everything: Ensure TestSignals callback does get called
 
- tests/test_everything.py |    3 +++
+ tests/test_everything.py | 3 +++
  1 file changed, 3 insertions(+)
 
 commit 4e4c87e3868948743e0446abe2ba0cf5626374c4
@@ -127,9 +2986,9 @@ Date:   Fri Sep 7 17:17:09 2012 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=683596
 
- gi/pygi-argument.c       |    8 +++++--
- tests/test_everything.py |   52
- ++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-argument.c       |  8 ++++++--
+ tests/test_everything.py | 52
+ ++++++++++++++++++++++++++++++++++++++++++++++++
  2 files changed, 58 insertions(+), 2 deletions(-)
 
 commit e474ce243ea7a58358af344ccadb1418f4d2c8eb
@@ -141,7 +3000,7 @@ Date:   Tue Sep 11 12:32:10 2012 +0200
     Signed-off-By: Martin Pitt <martinpitt@gnome.org>
     Signed-off-By: Paolo Borelli <pborelli@gnome.org>
 
- pygobject.doap |    7 +++++++
+ pygobject.doap | 7 +++++++
  1 file changed, 7 insertions(+)
 
 commit ee1fc78258f10e8a7872ee3da6c9ad6e7984706e
@@ -156,7 +3015,7 @@ Date:   Tue Sep 11 10:17:50 2012 +0200
     read, and we
     really do not want global single-letter variables like "f" and "l".
 
- tests/test_signal.py |   38 ++++++++++++++++----------------------
+ tests/test_signal.py | 38 ++++++++++++++++----------------------
  1 file changed, 16 insertions(+), 22 deletions(-)
 
 commit 3688cf6efe7161585b943cfaafcfd4610b7ad768
@@ -167,8 +3026,8 @@ Date:   Tue Sep 11 10:11:58 2012 +0200
 
     Use underscore style method/test case names consistently.
 
- tests/test_signal.py |   88
- +++++++++++++++++++++++++-------------------------
+ tests/test_signal.py | 88
+ ++++++++++++++++++++++++++--------------------------
  1 file changed, 44 insertions(+), 44 deletions(-)
 
 commit 4559247553b792db956f69c9674c12344d719c82
@@ -184,8 +3043,8 @@ Date:   Tue Sep 11 09:43:14 2012 +0200
     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 +++++++++++++++++
+ tests/test_signal.py     | 41 +++++++++++++++++++++++++++++++++++++++++
+ tests/testhelpermodule.c | 17 +++++++++++++++++
  2 files changed, 58 insertions(+)
 
 commit fddb01b0b71b68d154d130cf40fd5f38647b1a4d
@@ -198,8 +3057,8 @@ Date:   Tue Sep 11 09:31:18 2012 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=683596
     but this works already.
 
- tests/test_signal.py     |   13 +++++++++++++
- tests/testhelpermodule.c |   36 ++++++++++++++++++++++++++++++++++++
+ tests/test_signal.py     | 13 +++++++++++++
+ tests/testhelpermodule.c | 36 ++++++++++++++++++++++++++++++++++++
  2 files changed, 49 insertions(+)
 
 commit 4f77c7798563ea436ff5b6306a987f03de50b211
@@ -217,8 +3076,8 @@ Date:   Fri Sep 7 02:32:15 2012 -0700
 
     https://bugzilla.gnome.org/show_bug.cgi?id=683150
 
- gi/pygi-argument.c |    8 +-------
- gi/pygi-info.c     |   14 +++++++++++++-
+ gi/pygi-argument.c |  8 +-------
+ gi/pygi-info.c     | 14 +++++++++++++-
  2 files changed, 14 insertions(+), 8 deletions(-)
 
 commit 15046b5a11f6c58a3e5a9c50cf0ce7f31f2cd55f
@@ -227,8 +3086,8 @@ 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 ++++++++++++++
+ tests/test_signal.py     | 12 ++++++++++++
+ tests/testhelpermodule.c | 14 ++++++++++++++
  2 files changed, 26 insertions(+)
 
 commit 822d9e07a95f706a40f64335765293542787da90
@@ -239,7 +3098,7 @@ Date:   Mon Sep 10 16:29:32 2012 +0200
 
     See https://bugzilla.gnome.org/show_bug.cgi?id=683596
 
- tests/test_gi.py |    9 +++++++++
+ tests/test_gi.py | 9 +++++++++
  1 file changed, 9 insertions(+)
 
 commit 2d83e52233812618493af4b165615e8741ba41c8
@@ -250,7 +3109,7 @@ Date:   Wed Sep 5 08:54:53 2012 +0200
 
     To ensure we have all the Regress test APIs that we use.
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 6a4f4dc9a3d21c3ac8a0aa51432fb8952b4e1ebf
@@ -261,7 +3120,7 @@ Date:   Wed Aug 8 12:57:41 2012 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=683379
 
- pygobject-3.0-uninstalled.pc.in |    6 +++---
+ pygobject-3.0-uninstalled.pc.in | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit d8f1398dbc7fa7803639c542a607f24f18614ad6
@@ -270,7 +3129,7 @@ Date:   Mon Sep 3 22:16:47 2012 +0200
 
     post-release bump to 3.3.92
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit ea992324b8197b2d04ff2849b9ab46f8a04b4ed7
@@ -279,7 +3138,7 @@ Date:   Mon Sep 3 22:04:01 2012 +0200
 
     release 3.3.91
 
- NEWS |   32 ++++++++++++++++++++++++++++++++
+ NEWS | 32 ++++++++++++++++++++++++++++++++
  1 file changed, 32 insertions(+)
 
 commit 1e1f5b2f2f15547c1f2cbc948d2b764bd0a37c44
@@ -290,7 +3149,7 @@ Date:   Mon Sep 3 21:57:00 2012 +0200
 
     Regression from commit 77844c5 which did not work with Python 2.
 
- tests/test_everything.py |   12 +++++++-----
+ tests/test_everything.py | 12 +++++++-----
  1 file changed, 7 insertions(+), 5 deletions(-)
 
 commit 41bb687c058e08b05108b4b2f081cd83d4f93da8
@@ -305,7 +3164,7 @@ Date:   Mon Sep 3 21:16:01 2012 +0200
     for all
     tests to succeed, but that hasn't been released yet.
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 77844c571ad0badc189428b93de9f2572051b67e
@@ -319,8 +3178,8 @@ Date:   Mon Sep 3 17:58:38 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639972
 
- gi/pygi-struct.c         |    7 +++++++
- tests/test_everything.py |   13 +++++++++++++
+ gi/pygi-struct.c         |  7 +++++++
+ tests/test_everything.py | 13 +++++++++++++
  2 files changed, 20 insertions(+)
 
 commit 0d099bdb3f4bbd962e5e60b583673d9e6f5673cc
@@ -335,8 +3194,8 @@ Date:   Mon Sep 3 16:47:22 2012 +0200
 
     Co-Authored-By: Martin Pitt <martinpitt@gnome.org>
 
- gi/pygi-argument.c   |   10 +++++++++-
- tests/test_signal.py |   14 ++++++++++++++
+ gi/pygi-argument.c   | 10 +++++++++-
+ tests/test_signal.py | 14 ++++++++++++++
  2 files changed, 23 insertions(+), 1 deletion(-)
 
 commit 69fb92c22b3f3d1d5e8c3e14134eee3242fdc5fc
@@ -347,8 +3206,8 @@ Date:   Mon Sep 3 16:06:49 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=683265
 
- tests/test_signal.py     |    6 ++++++
- tests/testhelpermodule.c |   12 ++++++++++++
+ tests/test_signal.py     |  6 ++++++
+ tests/testhelpermodule.c | 12 ++++++++++++
  2 files changed, 18 insertions(+)
 
 commit a7c524219987fbf37e455a91e4c78d2b9b4db12d
@@ -372,12 +3231,12 @@ Date:   Tue Mar 20 04:33:50 2012 -0700
 
     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 +++++++++++++++++++++++++++++++++--
+ 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
@@ -393,8 +3252,8 @@ Date:   Mon Sep 3 15:32:12 2012 +0200
     Also improve test case for
     Gtk.TreeView.insert_column_with_attributes().
 
- gi/pygtkcompat.py           |    6 ------
- tests/test_overrides_gtk.py |   16 ++++++++--------
+ gi/pygtkcompat.py           |  6 ------
+ tests/test_overrides_gtk.py | 16 ++++++++--------
  2 files changed, 8 insertions(+), 14 deletions(-)
 
 commit 542cf22c9de9b2094868c4e879b0f24b15c4c012
@@ -407,8 +3266,8 @@ Date:   Mon Sep 3 13:06:22 2012 +0200
 
     Co-Authored-By: Martin Pitt <martinpitt@gnome.org>
 
- gi/overrides/Gtk.py         |    7 +++++++
- tests/test_overrides_gtk.py |   38 ++++++++++++++++++++++++++++++++++++++
+ gi/overrides/Gtk.py         |  7 +++++++
+ tests/test_overrides_gtk.py | 38 ++++++++++++++++++++++++++++++++++++++
  2 files changed, 45 insertions(+)
 
 commit 1c73e845361e471b1c3a3f17e40e6a6cfa740877
@@ -417,7 +3276,7 @@ Date:   Mon Sep 3 11:09:55 2012 +0200
 
     .gitignore: Add missing built files
 
- .gitignore |    9 +++++++--
+ .gitignore | 9 +++++++--
  1 file changed, 7 insertions(+), 2 deletions(-)
 
 commit 96431f393036a688666dcf67911bf12b9824b264
@@ -428,7 +3287,7 @@ Date:   Mon Sep 3 11:07:32 2012 +0200
 
     Spotted by distcheck.
 
- tests/Makefile.am |    6 +++++-
+ tests/Makefile.am | 6 +++++-
  1 file changed, 5 insertions(+), 1 deletion(-)
 
 commit dc2c6e6f60d2757462cbceef6176b0b3013904d3
@@ -447,8 +3306,8 @@ Date:   Mon Sep 3 10:18:45 2012 +0200
     otherwise
     we fail to import the built libraries.
 
- tests/runtests-windows.py |   10 +++++++---
- tests/runtests.py         |   13 ++++++++-----
+ tests/runtests-windows.py | 10 +++++++---
+ tests/runtests.py         | 13 ++++++++-----
  2 files changed, 15 insertions(+), 8 deletions(-)
 
 commit 2d8f48f4ff56bb75985136452b50b75895258608
@@ -487,7 +3346,7 @@ Date:   Mon Sep 3 07:17:57 2012 +0200
     Emit a critical if we fail to allocate a Python array of the
     requested size.
 
- gi/pygi-argument.c |   47 ++++++++++++++++-------------------------------
+ gi/pygi-argument.c | 47 ++++++++++++++++-------------------------------
  1 file changed, 16 insertions(+), 31 deletions(-)
 
 commit 65bfbc624bc9da6e18ff2945b14099ab8eeb7601
@@ -501,7 +3360,7 @@ Date:   Wed Aug 29 21:24:17 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=682979
 
- gi/pygi-argument.c |    4 ++++
+ gi/pygi-argument.c | 4 ++++
  1 file changed, 4 insertions(+)
 
 commit 21b1d17d2ada2edf4063a4262b3436c279da3dc2
@@ -516,8 +3375,8 @@ Date:   Sat Sep 1 03:40:31 2012 -0700
 
     https://bugzilla.gnome.org/show_bug.cgi?id=683150
 
- gi/pygi-argument.c      |    8 +++++++-
- tests/test_overrides.py |   41 +++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-argument.c      |  8 +++++++-
+ tests/test_overrides.py | 41 +++++++++++++++++++++++++++++++++++++++++
  2 files changed, 48 insertions(+), 1 deletion(-)
 
 commit 6123e6f5001ca5eaea18123d8a53525abab31a45
@@ -543,12 +3402,12 @@ Date:   Thu Aug 23 06:44:27 2012 +0200
 
     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 +-
+ 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
@@ -574,12 +3433,12 @@ Date:   Tue Aug 21 07:54:09 2012 +0200
     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 ++++++
+ 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
@@ -598,12 +3457,12 @@ Date:   Thu Aug 23 06:03:09 2012 +0200
 
     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 ---
+ 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
@@ -623,8 +3482,8 @@ Date:   Sun Aug 19 02:30:39 2012 -0700
 
     https://bugzilla.gnome.org/show_bug.cgi?id=682323
 
- gi/_gobject/pygenum.c  |   29 ++++++++++++++++-------------
- gi/_gobject/pygflags.c |   21 +++++++++------------
+ gi/_gobject/pygenum.c  | 29 ++++++++++++++++-------------
+ gi/_gobject/pygflags.c | 21 +++++++++------------
  2 files changed, 25 insertions(+), 25 deletions(-)
 
 commit dd31b67e821f92b5f1c2ee0382cac5edd477cd11
@@ -638,8 +3497,8 @@ Date:   Wed Aug 22 10:45:39 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=682436
 
- gi/overrides/Gio.py     |   10 ++++++++++
- tests/test_overrides.py |   11 +++++++++++
+ gi/overrides/Gio.py     | 10 ++++++++++
+ tests/test_overrides.py | 11 +++++++++++
  2 files changed, 21 insertions(+)
 
 commit 836902801373e386d370c44e7487aac3432f19f6
@@ -648,7 +3507,7 @@ Date:   Mon Aug 20 23:37:40 2012 +0200
 
     post-release bump to 3.3.91
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 6a629e23ff7b0d6f532184017577c7427d577e28
@@ -657,8 +3516,8 @@ Date:   Mon Aug 20 23:05:49 2012 +0200
 
     release 3.3.90
 
- NEWS         |   13 +++++++++++++
- configure.ac |    2 +-
+ NEWS         | 13 +++++++++++++
+ configure.ac |  2 +-
  2 files changed, 14 insertions(+), 1 deletion(-)
 
 commit 5cd18c9bd59a60b930ced0b35d728c12bb3291c7
@@ -671,8 +3530,8 @@ Date:   Mon Aug 20 22:54:52 2012 +0200
 
     Co-Authored-By: Martin Pitt <martinpitt@gnome.org>
 
- gi/pygi-marshal-to-py.c |   16 ++++++++++++----
- tests/test_gi.py        |   14 ++++++++++++++
+ gi/pygi-marshal-to-py.c | 16 ++++++++++++----
+ tests/test_gi.py        | 14 ++++++++++++++
  2 files changed, 26 insertions(+), 4 deletions(-)
 
 commit 16462de3f025f14706ec23fa9b3653feb66ad57f
@@ -685,7 +3544,7 @@ Date:   Mon Aug 20 15:24:10 2012 +0200
     pyflakes/pep8
     exist, but fail.
 
- tests/Makefile.am |    4 ++--
+ tests/Makefile.am | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 1bee194274bcda9ba5f6751fa921218a92c8ac72
@@ -705,8 +3564,8 @@ Date:   Thu Aug 16 16:05:52 2012 -0700
 
     https://bugzilla.gnome.org/show_bug.cgi?id=682051
 
- gi/module.py            |    7 +++++--
- gi/pygobject-external.h |    2 +-
+ gi/module.py            | 7 +++++--
+ gi/pygobject-external.h | 2 +-
  2 files changed, 6 insertions(+), 3 deletions(-)
 
 commit 1e056e4f4a19fd1139187467677c2592c2722290
@@ -720,7 +3579,7 @@ Date:   Mon Aug 20 11:52:08 2012 +0200
     work without
     these tools.
 
- tests/Makefile.am |    4 ++--
+ tests/Makefile.am | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit c219fa6da89a7d55c5c111751684aae6876a9fe3
@@ -729,9 +3588,9 @@ 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 +--
+ 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
@@ -740,8 +3599,8 @@ Date:   Mon Aug 20 11:38:50 2012 +0200
 
     test_overrides.py: Fix PEP8 whitespacing
 
- tests/test_overrides.py |   48
- ++++++++++++++++++++++++-----------------------
+ tests/test_overrides.py | 48
+ +++++++++++++++++++++++++-----------------------
  1 file changed, 25 insertions(+), 23 deletions(-)
 
 commit 631a9cd05cbc7dc3d0f743a84b948ef7d93c0ed4
@@ -756,7 +3615,7 @@ Date:   Mon Aug 20 11:36:19 2012 +0200
     as the
     opening bracket, not the indentation level of the whole statement.
 
- tests/Makefile.am |    2 +-
+ tests/Makefile.am | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 266d37719bb54e6f04d23ff21bcceb9514e20ff2
@@ -773,12 +3632,12 @@ Date:   Mon Aug 20 11:27:52 2012 +0200
     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 +-
+ 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
@@ -794,14 +3653,14 @@ Date:   Mon Aug 20 11:19:27 2012 +0200
     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 +++++++++++++++++++++++-------
+ 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
@@ -810,7 +3669,7 @@ Date:   Wed Aug 15 13:16:11 2012 +0200
 
     Add unit test for the TreeModelSort override
 
- tests/test_overrides.py |    7 +++++++
+ tests/test_overrides.py | 7 +++++++
  1 file changed, 7 insertions(+)
 
 commit 9f027daa5737107b5959964b699c0089aec8ab1e
@@ -826,7 +3685,7 @@ Date:   Thu Aug 9 03:33:06 2012 -0700
 
     https://bugzilla.gnome.org/show_bug.cgi?id=681477
 
- gi/overrides/Gtk.py |    8 ++++++++
+ gi/overrides/Gtk.py | 8 ++++++++
  1 file changed, 8 insertions(+)
 
 commit c8424c2bb19356679e250e73542682dd5f4c74a5
@@ -839,7 +3698,7 @@ Date:   Fri Aug 10 09:38:24 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=681596
 
- pygi-convert.sh |    5 +++++
+ pygi-convert.sh | 5 +++++
  1 file changed, 5 insertions(+)
 
 commit 54d829b34a0d32d852db370f61cc7f25c149f373
@@ -852,7 +3711,7 @@ Date:   Mon Aug 6 16:19:28 2012 +0200
     minor
     changes
 
- HACKING |   26 ++++++++++----------------
+ HACKING | 26 ++++++++++----------------
  1 file changed, 10 insertions(+), 16 deletions(-)
 
 commit 0788880c6cf4070d3db09896c165fe470d2ec186
@@ -861,7 +3720,7 @@ Date:   Mon Aug 6 16:00:39 2012 +0200
 
     Post-release version bump to 3.3.6
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 664403d953c3e07077d0db90bfae3b51c7f1767c
@@ -870,7 +3729,7 @@ Date:   Mon Aug 6 15:52:22 2012 +0200
 
     release 3.3.5
 
- NEWS |   29 +++++++++++++++++++++++++++++
+ NEWS | 29 +++++++++++++++++++++++++++++
  1 file changed, 29 insertions(+)
 
 commit b748753a2a9af018001213e2e58c48d6c8bfadbd
@@ -879,7 +3738,7 @@ Date:   Mon Aug 6 15:44:32 2012 +0200
 
     Update HACKING file to mention "make release-news"
 
- HACKING |    7 +++----
+ HACKING | 7 +++----
  1 file changed, 3 insertions(+), 4 deletions(-)
 
 commit 587a0c33901383b891f8eb77351c17f06af20b4f
@@ -890,7 +3749,7 @@ Date:   Mon Aug 6 15:38:23 2012 +0200
 
     These variables are assigned but never actually used
 
- gi/pygi-closure.c |    8 --------
+ gi/pygi-closure.c | 8 --------
  1 file changed, 8 deletions(-)
 
 commit dbc6df6aad7197fcf8721ade429baadd749f7069
@@ -905,8 +3764,8 @@ Date:   Fri Aug 3 07:13:55 2012 +0200
     fail on
     those.
 
- tests/test_overrides.py   |    4 ++++
- tests/test_pygtkcompat.py |    6 ++++++
+ tests/test_overrides.py   | 4 ++++
+ tests/test_pygtkcompat.py | 6 ++++++
  2 files changed, 10 insertions(+)
 
 commit 770e6abfd5bc5dad7d5f56a18f1ef63f9754ada9
@@ -927,9 +3786,9 @@ Date:   Fri Aug 3 06:45:48 2012 +0200
     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
- ++++++++++++++++++++++++++-------------------
+ gi/pygi-marshal-from-py.c | 48 ++++++++++++++++++++++++-----------------
+ gi/pygi-marshal-to-py.c   | 54
+ +++++++++++++++++++++++++++--------------------
  2 files changed, 60 insertions(+), 42 deletions(-)
 
 commit b5cd13f47309ec26727b7574e33595a357602468
@@ -938,7 +3797,7 @@ 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 +++---
+ gi/pygi-marshal-from-py.c | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit 526bf43691cb6ed908589312b1693a6389eba00c
@@ -950,7 +3809,7 @@ Date:   Tue Jul 31 17:14:37 2012 +0200
     Avoid saying "<unknown module>.int", just skip the module name
     completely if we do not have one.
 
- gi/pygi-marshal-from-py.c |   20 ++++++++++++--------
+ gi/pygi-marshal-from-py.c | 20 ++++++++++++--------
  1 file changed, 12 insertions(+), 8 deletions(-)
 
 commit 8fb18c62d9c7faff38df3886cb4289b618c81b85
@@ -965,10 +3824,10 @@ Date:   Tue Jul 31 13:13:21 2012 +0200
     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 ++++++++++++++++++++----------
+ 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
@@ -977,7 +3836,7 @@ Date:   Tue Jul 31 09:02:24 2012 -0400
 
     pygi-argument: Fix -Wformat warning on 32 bit builds
 
- gi/pygi-argument.c |    4 ++--
+ gi/pygi-argument.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 7563bb9f8ed5740f52ddf0ca59daf7839853505b
@@ -990,7 +3849,7 @@ Date:   Tue Jul 31 11:14:36 2012 +0200
     type. Fixes
     check after commit 121b14028.
 
- tests/test_gi.py |   32 ++++++++++++++++++++------------
+ tests/test_gi.py | 32 ++++++++++++++++++++------------
  1 file changed, 20 insertions(+), 12 deletions(-)
 
 commit 5c5b066854cc0b3b7702f31d212aa3f511c62127
@@ -1003,7 +3862,7 @@ Date:   Tue Jul 31 10:30:22 2012 +0200
     in commit
     dea24f8e12 much more insistently.
 
- configure.ac |    1 +
+ configure.ac | 1 +
  1 file changed, 1 insertion(+)
 
 commit 6e84a3052667fdc88c2081e20cc6dc3257ec9d6c
@@ -1024,7 +3883,7 @@ Date:   Mon Jul 30 02:00:16 2012 -0700
 
     https://bugzilla.gnome.org/show_bug.cgi?id=680814
 
- gi/pygtkcompat.py |   10 +++++++++-
+ gi/pygtkcompat.py | 10 +++++++++-
  1 file changed, 9 insertions(+), 1 deletion(-)
 
 commit dea24f8e1221516b2d8ea578e55124b0409d6a76
@@ -1037,7 +3896,7 @@ Date:   Mon Jul 30 22:17:44 2012 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=680878
 
- gi/pygi-marshal-from-py.c |   18 +++++++++---------
+ gi/pygi-marshal-from-py.c | 18 +++++++++---------
  1 file changed, 9 insertions(+), 9 deletions(-)
 
 commit b630038d9a1c8cb7e5914c77fbacbed646c154d1
@@ -1050,7 +3909,7 @@ Date:   Mon Jul 30 22:30:07 2012 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=680879
 
- gi/pygi-marshal-from-py.c |    8 ++++----
+ gi/pygi-marshal-from-py.c | 8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit a8338a991bbe919f0e2d9b92f7b71f89ccd2c875
@@ -1063,7 +3922,7 @@ Date:   Mon Jul 30 12:53:36 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=680320
 
- tests/test_overrides.py |   20 ++++++++++++++++++--
+ tests/test_overrides.py | 20 ++++++++++++++++++--
  1 file changed, 18 insertions(+), 2 deletions(-)
 
 commit 121b1402860407fe46f7501e42447bf3607872ec
@@ -1088,9 +3947,9 @@ Date:   Tue Jul 31 00:37:55 2012 +0200
 
     instead.
 
- gi/pygi-marshal-from-py.c |   41 +++++++++++++++++++++++++-------
- tests/test_gi.py          |   57
- ++++++++++++++++++++++++++++++++++++++++++++-
+ gi/pygi-marshal-from-py.c | 41 ++++++++++++++++++++++++++--------
+ tests/test_gi.py          | 57
+ ++++++++++++++++++++++++++++++++++++++++++++++-
  2 files changed, 88 insertions(+), 10 deletions(-)
 
 commit 8f31e85db1392eb7222593fc0d05144c2bca06a3
@@ -1106,8 +3965,8 @@ Date:   Sun Jul 29 23:36:25 2012 -0700
 
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/pygi-closure.c       |   10 +++++++---
- tests/test_overrides.py |    9 +++++++++
+ gi/pygi-closure.c       | 10 +++++++---
+ tests/test_overrides.py |  9 +++++++++
  2 files changed, 16 insertions(+), 3 deletions(-)
 
 commit 94e5d58e7794de91d3291e0e51c42070da4fc92b
@@ -1118,7 +3977,7 @@ Date:   Mon Jul 30 11:58:24 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=679415
 
- tests/test_overrides.py |   19 +++++++++++++++++++
+ tests/test_overrides.py | 19 +++++++++++++++++++
  1 file changed, 19 insertions(+)
 
 commit aae4e77482c02e21154ab02b159f380f5f0f74be
@@ -1132,14 +3991,14 @@ Date:   Fri Jul 27 23:06:39 2012 +0200
     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 ++--
+ 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
@@ -1150,8 +4009,8 @@ Date:   Fri Jul 27 23:01:08 2012 +0200
 
     Add missing includes which caused -Wmissing-prototypes warnings.
 
- gi/_gobject/pygenum.c      |    2 ++
- gi/_gobject/pyginterface.c |    2 ++
+ gi/_gobject/pygenum.c      | 2 ++
+ gi/_gobject/pyginterface.c | 2 ++
  2 files changed, 4 insertions(+)
 
 commit 97b5184c6650964ae8a7616353f5ce8e3ca19af3
@@ -1166,7 +4025,7 @@ Date:   Fri Jul 27 22:59:21 2012 +0200
     currently
     breaks on building g-i's regress.c.
 
- configure.ac |    5 +++++
+ configure.ac | 5 +++++
  1 file changed, 5 insertions(+)
 
 commit c2ee8c550199de59dd220561ed028ec6fb8e1daf
@@ -1177,8 +4036,8 @@ Date:   Fri Jul 27 22:08:47 2012 +0200
 
     Add missing includes which caused -Wmissing-prototypes warnings.
 
- gi/_glib/pygiochannel.c |    2 ++
- gi/_glib/pygspawn.c     |    2 ++
+ gi/_glib/pygiochannel.c | 2 ++
+ gi/_glib/pygspawn.c     | 2 ++
  2 files changed, 4 insertions(+)
 
 commit 8bc98fc6665ebab763ee92361929139a0ebe66b5
@@ -1194,7 +4053,7 @@ Date:   Fri Jul 27 20:52:00 2012 +0200
     pygi-info.c:1277:43: warning: pointer of type 'void *' used in
     arithmetic [-Werror=pointer-arith]
 
- gi/pygi-info.c |    4 ++--
+ gi/pygi-info.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit d0a561057b727ebcc1fd06fa6a3b48f2a1f8338e
@@ -1206,7 +4065,7 @@ Date:   Fri Jul 27 20:50:30 2012 +0200
     Drop unused pyglib_gil_state_ensure_py23() and
     pyglib_gil_state_release_py23().
 
- gi/_glib/pyglib.c |   18 ------------------
+ gi/_glib/pyglib.c | 18 ------------------
  1 file changed, 18 deletions(-)
 
 commit a46d165d906d0ac7613f4d946542423e979f39d5
@@ -1223,8 +4082,8 @@ Date:   Fri Jul 20 10:37:04 2012 -0300
     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 ++++++
+ gi/overrides/Gtk.py     | 7 +++++++
+ tests/test_overrides.py | 6 ++++++
  2 files changed, 13 insertions(+)
 
 commit 4df676e10a5ea595a0d491af10268f557dd722d7
@@ -1240,17 +4099,17 @@ Date:   Tue Jul 24 13:49:15 2012 +0200
 
     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 -
+ 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
@@ -1266,8 +4125,8 @@ Date:   Fri Jul 20 19:55:46 2012 -0700
 
     https://bugzilla.gnome.org/show_bug.cgi?id=680353
 
- gi/overrides/Gtk.py     |    5 ++++-
- tests/test_overrides.py |    4 ++++
+ gi/overrides/Gtk.py     | 5 ++++-
+ tests/test_overrides.py | 4 ++++
  2 files changed, 8 insertions(+), 1 deletion(-)
 
 commit affc7faa3fa7250e2e8c2c65e6860906f6fbc4fb
@@ -1285,9 +4144,9 @@ Date:   Fri Jul 20 21:34:33 2012 -0700
 
     https://bugzilla.gnome.org/show_bug.cgi?id=679939
 
- gi/_gobject/propertyhelper.py |  117
- +++++++++++++++++++----------------------
- tests/test_properties.py      |   55 ++++++++++++++-----
+ gi/_gobject/propertyhelper.py | 117
+ +++++++++++++++++++-----------------------
+ tests/test_properties.py      |  55 +++++++++++++++-----
  2 files changed, 96 insertions(+), 76 deletions(-)
 
 commit 6fddba5bc5ea02938677a89ffeb0cfc53229b894
@@ -1300,7 +4159,7 @@ Date:   Thu Jul 19 12:11:34 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=680259
 
- pygi-convert.sh |    1 +
+ pygi-convert.sh | 1 +
  1 file changed, 1 insertion(+)
 
 commit d58c3553062fd8704a81a8233b4a1563a6611718
@@ -1313,7 +4172,7 @@ Date:   Thu Jul 19 12:04:03 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=680257
 
- pygi-convert.sh |    1 +
+ pygi-convert.sh | 1 +
  1 file changed, 1 insertion(+)
 
 commit a3aae2e152c0b955037b7b85e16d14d00881d870
@@ -1334,8 +4193,8 @@ Date:   Thu Jul 19 15:48:20 2012 +0200
 
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/__init__.py   |   16 ++++++++++++++++
- tests/test_gi.py |   16 ++++++++++++++++
+ gi/__init__.py   | 16 ++++++++++++++++
+ tests/test_gi.py | 16 ++++++++++++++++
  2 files changed, 32 insertions(+)
 
 commit a2d9b71d84f0fcb7aaf5ce483ffee3b3a1ccaca1
@@ -1351,7 +4210,7 @@ Date:   Mon Jul 16 17:14:46 2012 -0300
     Signed-off-by: Manuel Quiñones <manuq@laptop.org>
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- pygi-convert.sh |    3 +++
+ pygi-convert.sh | 3 +++
  1 file changed, 3 insertions(+)
 
 commit 0b08c01414ac73a4604acd9a846e7af09574929f
@@ -1367,7 +4226,7 @@ Date:   Tue Jul 17 09:05:27 2012 -0300
     Signed-off-by: Manuel Kaufmann <humitos@gmail.com>
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- pygi-convert.sh |    2 ++
+ pygi-convert.sh | 2 ++
  1 file changed, 2 insertions(+)
 
 commit 975855d0fff7f2042fe1f0e843f96b9a37cc6b79
@@ -1376,7 +4235,7 @@ Date:   Mon Jul 16 17:35:38 2012 +0200
 
     configure.ac: post-release bump to 3.3.5
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 126842b7227fcc1381dc158acdc5a96d0a465515
@@ -1385,7 +4244,7 @@ Date:   Mon Jul 16 17:33:08 2012 +0200
 
     release 3.3.4
 
- NEWS |   28 ++++++++++++++++++++++++++++
+ NEWS | 28 ++++++++++++++++++++++++++++
  1 file changed, 28 insertions(+)
 
 commit 079b73b3eb9083bd53e06d095f9dccc02acf2a6e
@@ -1394,7 +4253,7 @@ Date:   Mon Jul 16 17:29:22 2012 +0200
 
     test_gi: Fix for Python 2
 
- tests/test_gi.py |    7 +++++--
+ tests/test_gi.py | 7 +++++--
  1 file changed, 5 insertions(+), 2 deletions(-)
 
 commit 30935fe31bfe201bbfdb7734f09fdd2bbaf80e08
@@ -1408,7 +4267,7 @@ Date:   Mon Jul 16 16:35:33 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=679999
 
- pygi-convert.sh |    1 -
+ pygi-convert.sh | 1 -
  1 file changed, 1 deletion(-)
 
 commit c0607d970fc59528ca27d518282cf2871b92e909
@@ -1425,8 +4284,8 @@ Date:   Mon Jul 16 16:00:40 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=679804
 
- gi/module.py     |    3 ++-
- tests/test_gi.py |   15 +++++++++++++++
+ gi/module.py     |  3 ++-
+ tests/test_gi.py | 15 +++++++++++++++
  2 files changed, 17 insertions(+), 1 deletion(-)
 
 commit 3235f1a397c334de5a7570f5ceed4da709fe1714
@@ -1445,8 +4304,8 @@ Date:   Mon Jul 16 15:53:31 2012 +0200
 
     Prerequisite for https://bugzilla.gnome.org/show_bug.cgi?id=679804
 
- gi/module.py     |    7 +++++--
- tests/test_gi.py |   14 ++++++++++++++
+ gi/module.py     |  7 +++++--
+ tests/test_gi.py | 14 ++++++++++++++
  2 files changed, 19 insertions(+), 2 deletions(-)
 
 commit f6cc039e014448a553d626aac4020ee69717edab
@@ -1459,8 +4318,8 @@ Date:   Mon Jul 16 15:38:05 2012 +0200
     need to decode
     it to get a proper __path__ attribute.
 
- gi/module.py     |   17 +++++++++++++++++
- tests/test_gi.py |   10 ++++++++++
+ gi/module.py     | 17 +++++++++++++++++
+ tests/test_gi.py | 10 ++++++++++
  2 files changed, 27 insertions(+)
 
 commit 858048f7cec78129aa914e2341ab80aac0e95cc5
@@ -1471,7 +4330,7 @@ Date:   Mon Jul 16 15:02:10 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=680004
 
- pygi-convert.sh |    2 +-
+ pygi-convert.sh | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit a31fabdc12f1da301c8df0af319ca3f4181671ee
@@ -1499,14 +4358,14 @@ Date:   Thu Jul 12 09:19:42 2012 +0200
 
     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 ++++++
+ 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
@@ -1519,7 +4378,7 @@ Date:   Wed Jul 11 22:05:41 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=679775
 
- pygi-convert.sh |    3 +++
+ pygi-convert.sh | 3 +++
  1 file changed, 3 insertions(+)
 
 commit e3a63eefa5fb2abeabd210790e12642e577363c8
@@ -1532,7 +4391,7 @@ Date:   Wed Jul 11 13:18:16 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=679760
 
- pygi-convert.sh |    5 +++++
+ pygi-convert.sh | 5 +++++
  1 file changed, 5 insertions(+)
 
 commit b4bef457c2d0ca6899e06a021f1f06252a37e326
@@ -1547,7 +4406,7 @@ Date:   Wed Jul 11 08:21:27 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=678914
 
- gi/pygi-cache.c |    2 ++
+ gi/pygi-cache.c | 2 ++
  1 file changed, 2 insertions(+)
 
 commit 41287d8a439c656e4ac60361fddec643c713234c
@@ -1561,7 +4420,7 @@ Date:   Wed Jul 11 11:13:38 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=679754
 
- pygi-convert.sh |    6 ++++++
+ pygi-convert.sh | 6 ++++++
  1 file changed, 6 insertions(+)
 
 commit 5403149b900d1b73cbc78767dc43be2eb344c836
@@ -1577,11 +4436,11 @@ Date:   Tue Jul 10 19:07:32 2012 -0700
 
     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 +++++---
+ 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
@@ -1594,8 +4453,8 @@ Date:   Wed Jul 4 08:46:30 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=679199
 
- gi/overrides/Gtk.py     |    3 +++
- tests/test_overrides.py |    4 ++++
+ gi/overrides/Gtk.py     | 3 +++
+ tests/test_overrides.py | 4 ++++
  2 files changed, 7 insertions(+)
 
 commit e1e849d1a9af77c29ee35971db8d439bac60d573
@@ -1612,8 +4471,8 @@ Date:   Wed Jul 4 08:35:16 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=679336
 
- gi/overrides/GLib.py    |    6 +++++-
- tests/test_overrides.py |    5 +++++
+ gi/overrides/GLib.py    | 6 +++++-
+ tests/test_overrides.py | 5 +++++
  2 files changed, 10 insertions(+), 1 deletion(-)
 
 commit af20d7c929b9c1888454b52932a308d346e1c12b
@@ -1624,7 +4483,7 @@ Date:   Thu Jun 28 06:51:22 2012 +0200
 
     Thanks to Dieter Verfaillie for pointing  this out.
 
- m4/python.m4 |    3 +--
+ m4/python.m4 | 3 +--
  1 file changed, 1 insertion(+), 2 deletions(-)
 
 commit a96a26234e2aaa157837d26094864e3ad9b63edf
@@ -1643,7 +4502,7 @@ Date:   Mon Jun 25 09:05:59 2012 -0700
 
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/overrides/Gtk.py |    5 ++++-
+ gi/overrides/Gtk.py | 5 ++++-
  1 file changed, 4 insertions(+), 1 deletion(-)
 
 commit afa12faf339efb4f7780168e884ecf49b630644a
@@ -1652,7 +4511,7 @@ Date:   Mon Jun 25 16:36:31 2012 +0200
 
     configure.ac: Post-release bump to 3.3.4.
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 198066effc0ca44ccb897e9f0738ab627e8b3275
@@ -1661,8 +4520,8 @@ Date:   Mon Jun 25 16:35:49 2012 +0200
 
     release 3.3.3.1
 
- NEWS         |    3 +++
- configure.ac |    2 +-
+ NEWS         | 3 +++
+ configure.ac | 2 +-
  2 files changed, 4 insertions(+), 1 deletion(-)
 
 commit cb70ae0aa52ab7624b2b8c30297d8a52a7db7f44
@@ -1675,9 +4534,9 @@ Date:   Mon Jun 25 16:32:45 2012 +0200
     keywords. This broke
     existing API such as Gtk.ShadowType.IN.
 
- gi/module.py     |    2 +-
- gi/pygi-info.c   |    7 +++++++
- tests/test_gi.py |    3 +++
+ gi/module.py     | 2 +-
+ gi/pygi-info.c   | 7 +++++++
+ tests/test_gi.py | 3 +++
  3 files changed, 11 insertions(+), 1 deletion(-)
 
 commit f2524a982b0b8ba7cdbb77003372416af0b7a978
@@ -1686,7 +4545,7 @@ Date:   Mon Jun 25 15:39:50 2012 +0200
 
     configure.ac: Post-release version bump to 3.3.4
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit fe56faa346c8e8f9fd5915602424778d458a776d
@@ -1695,7 +4554,7 @@ Date:   Mon Jun 25 15:36:37 2012 +0200
 
     release 3.3.3
 
- NEWS |   15 +++++++++++++++
+ NEWS | 15 +++++++++++++++
  1 file changed, 15 insertions(+)
 
 commit 299a2fd726f0aceaf67b1cec7a0ef8b21ff7bcbc
@@ -1706,7 +4565,7 @@ Date:   Mon Jun 25 15:35:19 2012 +0200
 
     This is being used by "make dist".
 
- Makefile.am |   15 +++++++++++++++
+ Makefile.am | 15 +++++++++++++++
  1 file changed, 15 insertions(+)
 
 commit 760118e4ed73de2f022706ef897fcc848e90c005
@@ -1715,7 +4574,7 @@ Date:   Mon Jun 25 15:31:14 2012 +0200
 
     Remove obsolete ChangeLog and release-tag make targets
 
- Makefile.am |   23 -----------------------
+ Makefile.am | 23 -----------------------
  1 file changed, 23 deletions(-)
 
 commit e92278692bb51679d6e957c2ac36db64498a7c73
@@ -1738,7 +4597,7 @@ Date:   Fri Jun 15 16:11:21 2012 +0200
     Signed-off-by: Benjamin Berg <benzea@sugarlabs.org>
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/_gobject/pygobject.c |   27 ++++++++++++++++++++++-----
+ gi/_gobject/pygobject.c | 27 ++++++++++++++++++++++-----
  1 file changed, 22 insertions(+), 5 deletions(-)
 
 commit de4aa426002eeb09a060f8fd70bd6cb25a17766a
@@ -1755,8 +4614,8 @@ Date:   Mon Jun 25 15:06:47 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=678510
 
- gi/overrides/Gtk.py     |    8 +++++++-
- tests/test_overrides.py |   36 ++++++++++++++++++++++++++++++++++++
+ gi/overrides/Gtk.py     |  8 +++++++-
+ tests/test_overrides.py | 36 ++++++++++++++++++++++++++++++++++++
  2 files changed, 43 insertions(+), 1 deletion(-)
 
 commit 16280d6985f2cf4db9cf062e857650e620fd9da8
@@ -1783,8 +4642,8 @@ Date:   Mon Jun 25 09:40:38 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=676746
 
- gi/pygi-info.c   |   38 +++++++++++++++++++++++++++++++++++++-
- tests/test_gi.py |   17 +++++++++++++++++
+ gi/pygi-info.c   | 38 +++++++++++++++++++++++++++++++++++++-
+ tests/test_gi.py | 17 +++++++++++++++++
  2 files changed, 54 insertions(+), 1 deletion(-)
 
 commit 3864d7a3b7def035ee2daf22ba717371c8d261de
@@ -1801,7 +4660,7 @@ Date:   Fri Jun 22 13:13:37 2012 +0200
     line that
     contains the opening bracket.
 
- tests/Makefile.am |    2 +-
+ tests/Makefile.am | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit fb436dd6d3b40b3f2a8ba6f402e2987752ad1902
@@ -1812,34 +4671,34 @@ Date:   Fri Jun 22 13:08:34 2012 +0200
 
     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 ++--
+ 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
@@ -1850,8 +4709,8 @@ Date:   Fri Jun 22 12:36:54 2012 +0200
 
     Spotted by current pep8 checker.
 
- gi/overrides/GLib.py     |    2 +-
- gi/overrides/__init__.py |    2 +-
+ gi/overrides/GLib.py     | 2 +-
+ gi/overrides/__init__.py | 2 +-
  2 files changed, 2 insertions(+), 2 deletions(-)
 
 commit 50e45a624e6301e65c150e137aad6d092f203f3f
@@ -1862,11 +4721,11 @@ Date:   Fri Jun 22 12:30:10 2012 +0200
 
     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 +++--------
+ 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
@@ -1877,13 +4736,13 @@ Date:   Fri Jun 22 12:24:32 2012 +0200
 
     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 +--
+ 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
@@ -1896,9 +4755,9 @@ Date:   Wed Jun 20 12:23:12 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=678119
 
- gi/_glib/glibmodule.c |   10 ++++++++--
- tests/Makefile.am     |    1 +
- tests/test_glib.py    |   15 +++++++++++++++
+ gi/_glib/glibmodule.c | 10 ++++++++--
+ tests/Makefile.am     |  1 +
+ tests/test_glib.py    | 15 +++++++++++++++
  3 files changed, 24 insertions(+), 2 deletions(-)
 
 commit 73531fd7820bd1922347bd856298d68205a27877
@@ -1915,8 +4774,7 @@ Date:   Wed Jun 20 11:16:39 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=641944
 
- gi/_gobject/pygobject.c |   44
- ++++++++++++++++++++++++++++++++++++++++++++
+ gi/_gobject/pygobject.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 44 insertions(+)
 
 commit a0daa843801658929ffee5bcb9eb67d955dc7921
@@ -1929,8 +4787,8 @@ Date:   Mon Jun 18 15:09:34 2012 +0200
 
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/overrides/GLib.py    |    4 ++--
- tests/test_overrides.py |    1 +
+ gi/overrides/GLib.py    | 4 ++--
+ tests/test_overrides.py | 1 +
  2 files changed, 3 insertions(+), 2 deletions(-)
 
 commit fb39ba934180e1e48fd15774e69d1cecf47a4c84
@@ -1939,7 +4797,7 @@ Date:   Tue Jun 5 19:11:38 2012 +0200
 
     configure.ac: Post-release bump to 3.3.3
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 7f0995e7fa865ebde7490d0570a7135a2f962cdf
@@ -1948,7 +4806,7 @@ Date:   Tue Jun 5 19:09:12 2012 +0200
 
     Release 3.3.2
 
- NEWS |   44 ++++++++++++++++++++++++++++++++++++++++++++
+ NEWS | 44 ++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 44 insertions(+)
 
 commit 8209c1ae1632c77768699481e574d5d378956e71
@@ -1959,7 +4817,7 @@ Date:   Tue Jun 5 19:04:49 2012 +0200
 
     Actually list changes since the previous release, not since 3.1.92.
 
- Makefile.am |    2 +-
+ Makefile.am | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit b21f66d2a399b8c9a36a1758107b7bdff0ec8eaa
@@ -1980,9 +4838,9 @@ Date:   Wed May 9 19:04:01 2012 +0200
 
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/pygi-foreign-cairo.c  |   85
- ++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_everything.py |    8 +++++
+ gi/pygi-foreign-cairo.c  | 85
+ ++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_everything.py |  8 +++++
  2 files changed, 93 insertions(+)
 
 commit 635a7d1b48d99ddd1ea123797c493b18b0cdfd45
@@ -2007,8 +4865,8 @@ Date:   Wed May 23 01:51:46 2012 +0200
     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 +++++++++++++++++++
+ gi/pygi-argument.c | 10 +++++++---
+ tests/test_gi.py   | 19 +++++++++++++++++++
  2 files changed, 26 insertions(+), 3 deletions(-)
 
 commit 2305dcd7e8841f87dc2fc683390df78453a5dc2a
@@ -2024,7 +4882,7 @@ Date:   Sat May 12 14:08:51 2012 +0200
 
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/overrides/Gtk.py |    9 +++++++++
+ gi/overrides/Gtk.py | 9 +++++++++
  1 file changed, 9 insertions(+)
 
 commit 5501fba534696974899f2591929bff9e1b6ecd65
@@ -2040,8 +4898,8 @@ Date:   Sat May 12 13:50:02 2012 +0200
 
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/_gobject/__init__.py  |    1 +
- gi/_gobject/constants.py |    1 +
+ gi/_gobject/__init__.py  | 1 +
+ gi/_gobject/constants.py | 1 +
  2 files changed, 2 insertions(+)
 
 commit 4c51a5411092f8ab6f8f6e9692a9b49692f621a7
@@ -2058,8 +4916,8 @@ Date:   Fri Jun 1 02:53:13 2012 -0400
 
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/_gobject/pygboxed.c   |    3 ++-
- tests/test_everything.py |    8 ++++++++
+ gi/_gobject/pygboxed.c   | 3 ++-
+ tests/test_everything.py | 8 ++++++++
  2 files changed, 10 insertions(+), 1 deletion(-)
 
 commit dc8eef26906753fcb3ce057b23ca110137897fa5
@@ -2074,7 +4932,7 @@ Date:   Fri Jun 1 13:43:38 2012 +0200
 
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- tests/test_properties.py |    4 ++--
+ tests/test_properties.py | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 853e6a71234ebd66af5a64dfb296e323c2c905a6
@@ -2091,8 +4949,8 @@ Date:   Thu May 17 17:09:15 2012 +0200
 
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/pygi-closure.c |   17 +++++++++++++++++
- tests/test_gi.py  |    5 +++++
+ gi/pygi-closure.c | 17 +++++++++++++++++
+ tests/test_gi.py  |  5 +++++
  2 files changed, 22 insertions(+)
 
 commit bac9d526f6a9774821d1c9c0e7b35cc6db942975
@@ -2101,7 +4959,7 @@ Date:   Fri Jun 1 12:28:53 2012 +0200
 
     tests: Add more vfunc checks for GIMarshallingTestsObject
 
- tests/test_gi.py |   25 +++++++++++++++++++++++++
+ tests/test_gi.py | 25 +++++++++++++++++++++++++
  1 file changed, 25 insertions(+)
 
 commit e1aaf4a48453be0e69e7f3a70a2e7a790871a4d2
@@ -2113,7 +4971,7 @@ Date:   Fri Jun 1 12:02:55 2012 +0200
     This came up as a side issue in
     https://bugzilla.gnome.org/show_bug.cgi?id=653151
 
- tests/test_gi.py |    3 +++
+ tests/test_gi.py | 3 +++
  1 file changed, 3 insertions(+)
 
 commit edc17e703e1a05e20545d3df9167ceb076450443
@@ -2130,9 +4988,9 @@ Date:   Wed May 16 11:13:05 2012 +0200
 
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/_gobject/pygobject.c |  130
- ++++++++++++++++++++++++++++++++++++++++++++---
- tests/test_gobject.py   |   59 +++++++++++++++++++++
+ gi/_gobject/pygobject.c | 130
+ +++++++++++++++++++++++++++++++++++++++++++++---
+ tests/test_gobject.py   |  59 ++++++++++++++++++++++
  2 files changed, 181 insertions(+), 8 deletions(-)
 
 commit 07a08b49aae83a297e2f91240448314e4663f724
@@ -2149,8 +5007,8 @@ Date:   Mon May 14 15:31:14 2012 +0200
 
     Co-Authored-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/types.py      |    6 +++---
- tests/test_gi.py |   27 +++++++++++++++++++++++++++
+ gi/types.py      |  6 +++---
+ tests/test_gi.py | 27 +++++++++++++++++++++++++++
  2 files changed, 30 insertions(+), 3 deletions(-)
 
 commit b965ee15bac6cd28d16d32205d96d2b1bdd3f0e1
@@ -2161,7 +5019,7 @@ Date:   Fri Jun 1 08:18:40 2012 +0200
 
     The pep8 check failed on this.
 
- tests/test_properties.py |    2 +-
+ tests/test_properties.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 274d60a7c08d74a299f4b83d8054c00eadb4bdbd
@@ -2176,8 +5034,8 @@ Date:   Wed May 30 16:45:53 2012 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=677124
 
- gi/pygi-cache.c  |   13 ++++---------
- tests/test_gi.py |    3 +++
+ gi/pygi-cache.c  | 13 ++++---------
+ tests/test_gi.py |  3 +++
  2 files changed, 7 insertions(+), 9 deletions(-)
 
 commit 62c2e962a225ec2527aa3d7406aa0dae232a0886
@@ -2188,7 +5046,7 @@ Date:   Fri May 25 17:09:55 2012 -0400
 
     libregress now needs cairo-gobject
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 9477f0f2f17a6d9b97e5ee08378bc009b8d4c30a
@@ -2197,7 +5055,7 @@ Date:   Mon May 14 15:48:34 2012 +0200
 
     Fix comment in previous commit
 
- tests/test_gobject.py |    2 +-
+ tests/test_gobject.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 6610428394d0c65987de5021bf2c38641cdb7116
@@ -2229,9 +5087,9 @@ Date:   Tue May 8 20:04:09 2012 -0700
 
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/_gobject/pygobject.c |  104
- ++++++++++++++++++++++++++++++++++++++++++++++-
- tests/test_gobject.py   |   90 ++++++++++++++++++++++++++++++++++++++++
+ gi/_gobject/pygobject.c | 104
+ +++++++++++++++++++++++++++++++++++++++++++++++-
+ tests/test_gobject.py   |  90 +++++++++++++++++++++++++++++++++++++++++
  2 files changed, 193 insertions(+), 1 deletion(-)
 
 commit 88babe7377402f6e6f912a8b83615aab848eae81
@@ -2244,8 +5102,8 @@ Date:   Fri May 11 19:08:47 2012 -0300
 
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/pygtkcompat.py         |    5 ++---
- tests/test_pygtkcompat.py |    1 +
+ gi/pygtkcompat.py         | 5 ++---
+ tests/test_pygtkcompat.py | 1 +
  2 files changed, 3 insertions(+), 3 deletions(-)
 
 commit 3f712b56397296bca2f5358cd52977b1a2011964
@@ -2258,8 +5116,8 @@ Date:   Fri May 11 12:39:05 2012 -0300
 
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/overrides/Gtk.py     |   16 ++++++++++++----
- tests/test_overrides.py |    9 +++++++++
+ gi/overrides/Gtk.py     | 16 ++++++++++++----
+ tests/test_overrides.py |  9 +++++++++
  2 files changed, 21 insertions(+), 4 deletions(-)
 
 commit 9a1a07742ec0b1821d469603f9996a2b7d832f40
@@ -2275,10 +5133,9 @@ Date:   Sun May 6 18:10:39 2012 -0700
 
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/overrides/Gdk.py     |   44
- ++++++++++++++++++++++++++++++++++++++++++++
- tests/Makefile.am       |    2 +-
- tests/test_overrides.py |   17 +++++++++++++++++
+ gi/overrides/Gdk.py     | 44 ++++++++++++++++++++++++++++++++++++++++++++
+ tests/Makefile.am       |  2 +-
+ tests/test_overrides.py | 17 +++++++++++++++++
  3 files changed, 62 insertions(+), 1 deletion(-)
 
 commit d9608c332d9592f03545b110cfac8105453ea035
@@ -2297,9 +5154,9 @@ Date:   Sat May 5 12:42:42 2012 -0700
 
     https://bugzilla.gnome.org/show_bug.cgi?id=656554
 
- gi/_gobject/pygtype.c    |   47
- ++++++++++++++++++++++++++++++++++++++++++++--
- tests/test_everything.py |   16 ++++++++++++----
+ gi/_gobject/pygtype.c    | 47
+ +++++++++++++++++++++++++++++++++++++++++++++--
+ tests/test_everything.py | 16 ++++++++++++----
  2 files changed, 57 insertions(+), 6 deletions(-)
 
 commit e7a909c16dc1c625ab11e270f23d540f15c71767
@@ -2308,7 +5165,7 @@ Date:   Mon May 7 10:33:40 2012 -0300
 
     Require gobject-introspection 1.33.0
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 9e8239684433631e0d1650d25416e4d7bf92a058
@@ -2317,7 +5174,7 @@ Date:   Sun May 6 18:28:23 2012 -0700
 
     NEWS: Add API additions since 3.2.0
 
- NEWS |    7 ++++---
+ NEWS | 7 ++++---
  1 file changed, 4 insertions(+), 3 deletions(-)
 
 commit d1a2bf51eb25b54028fbf496d20dfad9546bcb5e
@@ -2326,7 +5183,7 @@ Date:   Sun May 6 18:25:23 2012 -0700
 
     NEWS: Mark API changes since 3.2.0
 
- NEWS |    6 +++---
+ NEWS | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit a3329539291bd8ea9aa6cb184a05ea7c21f8885a
@@ -2339,7 +5196,7 @@ Date:   Sun May 6 18:19:35 2012 -0700
     string check
     to work with both Python 2 and 3.
 
- gi/pygi-argument.c |   42 +++++++++---------------------------------
+ gi/pygi-argument.c | 42 +++++++++---------------------------------
  1 file changed, 9 insertions(+), 33 deletions(-)
 
 commit 42c717ed77613e02f3c8ef2685bc071462b87d73
@@ -2350,7 +5207,7 @@ Date:   Sun May 6 18:08:57 2012 -0700
 
     Was missing a space around operator, causing the PEP8 check to fail.
 
- gi/pygtkcompat.py |    2 +-
+ gi/pygtkcompat.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 168a08753cec1ff77ccca5d81b9a5fd2af5d3720
@@ -2365,9 +5222,9 @@ Date:   Sun May 6 18:02:04 2012 -0700
     will now raise
     a proper TypeError.
 
- gi/pygi-argument.c |   39 +++++++++++++++++++++++++++++++++++++++
- gi/pygi-property.c |    3 +++
- tests/test_gi.py   |   40 ++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-argument.c | 39 +++++++++++++++++++++++++++++++++++++++
+ gi/pygi-property.c |  3 +++
+ tests/test_gi.py   | 40 ++++++++++++++++++++++++++++++++++++++++
  3 files changed, 82 insertions(+)
 
 commit 5948b62ba3e08ea943e6965ee38c94c363186226
@@ -2382,7 +5239,7 @@ Date:   Sun May 6 17:59:57 2012 -0700
     object from
     that, so we need to scale to 0..65535 and round to int.
 
- gi/pygtkcompat.py |    6 +++---
+ gi/pygtkcompat.py | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit 6af74c501bc604559f8b5b4e0d856d022ed882bb
@@ -2391,7 +5248,7 @@ Date:   Sun May 6 06:02:31 2012 -0700
 
     test_gi: Check setting properties in constructor
 
- tests/test_gi.py |   33 +++++++++++++++++++++++++++++++++
+ tests/test_gi.py | 33 +++++++++++++++++++++++++++++++++
  1 file changed, 33 insertions(+)
 
 commit 9f50fd214e4214f83959b2883a0c667f7f157c97
@@ -2400,8 +5257,8 @@ 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 +++++++++++
+ gi/pygi-property.c | 36 ++++++++++++++++++++++++++++++++++++
+ tests/test_gi.py   | 11 +++++++++++
  2 files changed, 47 insertions(+)
 
 commit 8321af2c7df499291e664c676376f149a0c3dcac
@@ -2410,9 +5267,9 @@ 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
- +++++++++++++++++++++++++++++++++++++++--
+ gi/_gobject/propertyhelper.py | 10 ++++++--
+ tests/test_properties.py      | 58
+ +++++++++++++++++++++++++++++++++++++++++--
  2 files changed, 64 insertions(+), 4 deletions(-)
 
 commit f2494526e1c579c41babfe7ff67deef0f6966adf
@@ -2421,10 +5278,10 @@ 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 +-
+ 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
@@ -2435,7 +5292,7 @@ Date:   Sat May 5 09:28:36 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=675472
 
- gi/overrides/GLib.py |    3 +++
+ gi/overrides/GLib.py | 3 +++
  1 file changed, 3 insertions(+)
 
 commit d6c091d87c86c8ccc7cb54347fbceccedac61633
@@ -2451,7 +5308,7 @@ Date:   Sat May 5 09:23:55 2012 +0200
     Actually do what they mean to do now and call the corresponding
     GIMarshallingTests methods.
 
- tests/test_gi.py |    4 ++--
+ tests/test_gi.py | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit fda8a069d503e63c76a6b1ba285a181822549059
@@ -2464,8 +5321,8 @@ Date:   Sat May 5 08:52:41 2012 +0200
 
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/pygtkcompat.py         |   20 ++++++++++++++++++++
- tests/test_pygtkcompat.py |    8 ++++++++
+ gi/pygtkcompat.py         | 20 ++++++++++++++++++++
+ tests/test_pygtkcompat.py |  8 ++++++++
  2 files changed, 28 insertions(+)
 
 commit 2b49c5f58bb841de7a9077eeeaf996eb9851dab3
@@ -2478,7 +5335,7 @@ Date:   Mon Apr 30 13:44:19 2012 -0300
 
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/pygtkcompat.py |   14 ++++++++++++++
+ gi/pygtkcompat.py | 14 ++++++++++++++
  1 file changed, 14 insertions(+)
 
 commit 16fbb17a9fd17eeb9f886af99e89a214d328dae1
@@ -2496,8 +5353,8 @@ Date:   Thu May 3 12:25:04 2012 +0200
     byte array
     instead.
 
- tests/test_gi.py        |    2 +-
- tests/test_overrides.py |    2 +-
+ tests/test_gi.py        | 2 +-
+ tests/test_overrides.py | 2 +-
  2 files changed, 2 insertions(+), 2 deletions(-)
 
 commit fd7f8eefbe8aba0b29d80e3eb9d985d33a268c8a
@@ -2515,9 +5372,9 @@ Date:   Thu May 3 09:38:56 2012 +0200
     Python
     module, which we do not have when building without cairo support.
 
- configure.ac             |    3 +++
- tests/Makefile.am        |    4 ++--
- tests/test_everything.py |    8 +++++++-
+ configure.ac             | 3 +++
+ tests/Makefile.am        | 4 ++--
+ tests/test_everything.py | 8 +++++++-
  3 files changed, 12 insertions(+), 3 deletions(-)
 
 commit 1c5634e6d98c8b67b37a2747951c66f5d8f1907d
@@ -2529,9 +5386,9 @@ Date:   Thu May 3 09:28:51 2012 +0200
     assertAlmostEquals → assertAlmostEqual
     assertNotEquals → assertNotEqual
 
- tests/test_everything.py |    4 ++--
- tests/test_gi.py         |   12 ++++++------
- tests/test_overrides.py  |   10 +++++-----
+ tests/test_everything.py |  4 ++--
+ tests/test_gi.py         | 12 ++++++------
+ tests/test_overrides.py  | 10 +++++-----
  3 files changed, 13 insertions(+), 13 deletions(-)
 
 commit 07f312e66c07357168098d3f96813d2c997e8dc7
@@ -2545,7 +5402,7 @@ Date:   Wed May 2 12:08:19 2012 +0200
     a few edge
     cases.
 
- tests/Makefile.am |    1 +
+ tests/Makefile.am | 1 +
  1 file changed, 1 insertion(+)
 
 commit b0740d386c2cbbd153878209b584b568968e4d98
@@ -2554,7 +5411,7 @@ Date:   Mon Apr 30 16:26:57 2012 +0200
 
     configure.ac: Post-release bump to 3.3.2
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit d3977266faadacd3d05705497c1cf51a01a6606f
@@ -2563,7 +5420,7 @@ Date:   Mon Apr 30 16:08:09 2012 +0200
 
     Release 3.3.1
 
- NEWS |   66
+ NEWS | 66
  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 66 insertions(+)
 
@@ -2582,7 +5439,7 @@ Date:   Sun Apr 29 23:55:15 2012 +0200
 
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/overrides/Gio.py |    4 ++--
+ gi/overrides/Gio.py | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 592c67482c254f65817c1a1b5c5de5dfcaab31b4
@@ -2595,8 +5452,8 @@ Date:   Sun Apr 29 12:56:50 2012 -0300
 
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/pygtkcompat.py         |    2 +-
- tests/test_pygtkcompat.py |    4 ++++
+ gi/pygtkcompat.py         | 2 +-
+ tests/test_pygtkcompat.py | 4 ++++
  2 files changed, 5 insertions(+), 1 deletion(-)
 
 commit 3551462a429ef30274fa01fc8111da5025f9c342
@@ -2611,7 +5468,7 @@ Date:   Sun Apr 29 20:17:47 2012 +0200
 
     Do include bug numbers from now on, as they are very useful.
 
- Makefile.am |   12 ++++++++++--
+ Makefile.am | 12 ++++++++++--
  1 file changed, 10 insertions(+), 2 deletions(-)
 
 commit fe79ef612a7853f024b73c7997b8ec89015ae94c
@@ -2622,8 +5479,8 @@ Date:   Wed Apr 25 13:07:59 2012 +0200
 
     Similar to "check.gdb", but invokes nemiver.
 
- Makefile.am       |    3 +++
- tests/Makefile.am |    3 +++
+ Makefile.am       | 3 +++
+ tests/Makefile.am | 3 +++
  2 files changed, 6 insertions(+)
 
 commit 3090cc70a7ce8df38dd6cf6c17350417a7367c0b
@@ -2634,7 +5491,7 @@ Date:   Tue Apr 24 13:24:00 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=637466
 
- tests/test_everything.py |   18 ++++++++++++------
+ tests/test_everything.py | 18 ++++++++++++------
  1 file changed, 12 insertions(+), 6 deletions(-)
 
 commit 88d189ec3e3d900a96496a50c1d6e76615b19558
@@ -2650,7 +5507,7 @@ Date:   Tue Apr 24 13:03:36 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=666636
 
- tests/test_everything.py |   24 +++++++++++++-----------
+ tests/test_everything.py | 24 +++++++++++++-----------
  1 file changed, 13 insertions(+), 11 deletions(-)
 
 commit 8ee21619b3cfc179cf114813478470d9aa3f6fb8
@@ -2671,10 +5528,9 @@ Date:   Mon Apr 23 12:33:09 2012 +0200
 
     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
- +++++++++++++++++++++++++++++++++++++++++
+ 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
@@ -2685,7 +5541,7 @@ Date:   Mon Apr 23 20:09:43 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=667954
 
- tests/test_gdbus.py |    2 +-
+ tests/test_gdbus.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 3ae38d7519524288a57e5d522954b9d6725f0185
@@ -2700,7 +5556,7 @@ Date:   Mon Apr 23 18:47:34 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=674475
 
- tests/test_overrides.py |   31 +++++++++++++++++++++++++++++++
+ tests/test_overrides.py | 31 +++++++++++++++++++++++++++++++
  1 file changed, 31 insertions(+)
 
 commit c12b10ca0feaaf61f23354c7b6631a9ef3635c36
@@ -2715,8 +5571,8 @@ Date:   Mon Apr 23 17:40:23 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=660018
 
- gi/overrides/Gtk.py     |   34 ++++++++++++++++++----------------
- tests/test_overrides.py |    6 ++++++
+ gi/overrides/Gtk.py     | 34 ++++++++++++++++++----------------
+ tests/test_overrides.py |  6 ++++++
  2 files changed, 24 insertions(+), 16 deletions(-)
 
 commit d37680bb9390426f7f58ea3d352c3e5e2106e978
@@ -2729,8 +5585,8 @@ Date:   Mon Apr 23 15:24:04 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=660018
 
- gi/overrides/Gtk.py     |    6 ++++++
- tests/test_overrides.py |    4 ++++
+ gi/overrides/Gtk.py     | 6 ++++++
+ tests/test_overrides.py | 4 ++++
  2 files changed, 10 insertions(+)
 
 commit e03284f852f0e404cc91374f3e2e42b0ac1977b4
@@ -2745,7 +5601,7 @@ Date:   Sun Apr 22 16:45:06 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=652860
 
- pygi-convert.sh |    3 ---
+ pygi-convert.sh | 3 ---
  1 file changed, 3 deletions(-)
 
 commit f82eca6006dec21624796074af8ffe9b2256f7a4
@@ -2754,14 +5610,14 @@ 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 ++--
+ 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
@@ -2772,7 +5628,7 @@ Date:   Sat Apr 21 12:02:54 2012 +0200
 
     Fixes https://bugzilla.gnome.org/show_bug.cgi?id=642754
 
- gi/pygi-info.c |    1 +
+ gi/pygi-info.c | 1 +
  1 file changed, 1 insertion(+)
 
 commit 9c48a561c5ee010410df7d6e430353b41d5fbd88
@@ -2790,9 +5646,9 @@ Date:   Thu Apr 12 20:30:05 2012 +0200
 
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/pygi-cache.c           |    4 +++-
- gi/pygi-marshal-cleanup.c |    4 ++--
- tests/test_gi.py          |    3 +++
+ 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
@@ -2809,10 +5665,10 @@ Date:   Thu Apr 19 13:11:56 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=674351
 
- gi/_gobject/gobjectmodule.c   |    5 ++++-
- gi/_gobject/propertyhelper.py |    9 ++++++---
- tests/test_properties.py      |   42
- ++++++++++++++++++++++++++++++++++++++---
+ gi/_gobject/gobjectmodule.c   |  5 ++++-
+ gi/_gobject/propertyhelper.py |  9 ++++++---
+ tests/test_properties.py      | 42
+ +++++++++++++++++++++++++++++++++++++++---
  3 files changed, 49 insertions(+), 7 deletions(-)
 
 commit 2158ecd05a2770d6538bae67d01d1f718855a7d4
@@ -2825,7 +5681,7 @@ Date:   Thu Apr 19 16:12:29 2012 +0200
     we test the
     properties of the right object.
 
- tests/test_everything.py |    2 +-
+ tests/test_everything.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 84e3471ba4595534cbe6875f1c8b77776e1d1814
@@ -2840,8 +5696,8 @@ Date:   Wed Apr 18 21:44:08 2012 +0200
 
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/_gobject/pygtype.c    |    9 +++++++--
- tests/test_everything.py |   15 +++++++++++++++
+ gi/_gobject/pygtype.c    |  9 +++++++--
+ tests/test_everything.py | 15 +++++++++++++++
  2 files changed, 22 insertions(+), 2 deletions(-)
 
 commit d1362451e070e156d2f49c9cde930cc38befb12b
@@ -2850,8 +5706,8 @@ Date:   Thu Apr 19 07:27:10 2012 +0200
 
     Add missing GObject.TYPE_GTYPE
 
- gi/_gobject/__init__.py  |    1 +
- gi/_gobject/constants.py |    1 +
+ gi/_gobject/__init__.py  | 1 +
+ gi/_gobject/constants.py | 1 +
  2 files changed, 2 insertions(+)
 
 commit d3225f1540e09719caa73e52d402e946da3add24
@@ -2860,7 +5716,7 @@ Date:   Tue Apr 10 12:44:00 2012 +0200
 
     Fix test_mainloop.py for Python 3
 
- tests/test_mainloop.py |    9 +++++++--
+ tests/test_mainloop.py | 9 +++++++--
  1 file changed, 7 insertions(+), 2 deletions(-)
 
 commit 903283119896f3e054694484da4147788b02ce60
@@ -2880,7 +5736,7 @@ Date:   Mon Apr 9 15:20:39 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=616279
 
- tests/test_everything.py |   16 ++++++++--------
+ tests/test_everything.py | 16 ++++++++--------
  1 file changed, 8 insertions(+), 8 deletions(-)
 
 commit 0fd900d351c8d7d57dc6a1b049ee05f342f6ab1d
@@ -2906,9 +5762,9 @@ Date:   Sun Mar 18 15:59:58 2012 -0700
 
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/_gobject/pygobject.c |  138 ++++++++++++++++++++++++++++++++++++++---
- tests/test_gobject.py   |  158
- +++++++++++++++++++++++++++++++++++++++++++++++
+ gi/_gobject/pygobject.c | 138 +++++++++++++++++++++++++++++++++++++++---
+ tests/test_gobject.py   | 158
+ ++++++++++++++++++++++++++++++++++++++++++++++++
  2 files changed, 288 insertions(+), 8 deletions(-)
 
 commit c0922589964c1d8bffe5a56d2f56df96eedfac10
@@ -2919,8 +5775,8 @@ Date:   Wed Apr 4 19:08:54 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620943
 
- gi/_gobject/propertyhelper.py |    9 +++++++--
- tests/test_properties.py      |   28 +++++++++++++++++++++++++++-
+ gi/_gobject/propertyhelper.py |  9 +++++++--
+ tests/test_properties.py      | 28 +++++++++++++++++++++++++++-
  2 files changed, 34 insertions(+), 3 deletions(-)
 
 commit d4054be9de3b7e4ed64c8172ebbde0a697462c79
@@ -2933,8 +5789,8 @@ Date:   Wed Apr 4 17:54:52 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=524719
 
- gi/_glib/pygsource.c |   15 +++++++++++++++
- tests/test_source.py |   24 ++++++++++++++++++++++++
+ gi/_glib/pygsource.c | 15 +++++++++++++++
+ tests/test_source.py | 24 ++++++++++++++++++++++++
  2 files changed, 39 insertions(+)
 
 commit 05030a95a4d3090162ed5f510a26d69bbb152942
@@ -2947,8 +5803,8 @@ Date:   Wed Apr 4 15:59:24 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=646667
 
- gi/overrides/__init__.py |    7 ++++---
- tests/test_overrides.py  |   13 +++++++++++++
+ gi/overrides/__init__.py |  7 ++++---
+ tests/test_overrides.py  | 13 +++++++++++++
  2 files changed, 17 insertions(+), 3 deletions(-)
 
 commit 96f14989baea76fe8692f10c1a37e2dfc45fecbf
@@ -2966,8 +5822,8 @@ Date:   Wed Apr 4 15:30:55 2012 +0200
 
     Co-authored-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/_gobject/pygobject.c |    4 ++++
- tests/test_gobject.py   |   11 +++++++++++
+ gi/_gobject/pygobject.c |  4 ++++
+ tests/test_gobject.py   | 11 +++++++++++
  2 files changed, 15 insertions(+)
 
 commit 24cc09a7105299805fcc5bc151f53ac69958d728
@@ -2983,7 +5839,7 @@ Date:   Wed Feb 9 18:37:33 2011 +0100
 
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- gi/_gobject/pygobject.c |   40 ----------------------------------------
+ gi/_gobject/pygobject.c | 40 ----------------------------------------
  1 file changed, 40 deletions(-)
 
 commit 2a5a33a9c9c170830c98c2e32fa8dcea3c35f2e6
@@ -2998,7 +5854,7 @@ Date:   Tue Apr 3 22:26:34 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=663068
 
- tests/test_mainloop.py |   25 ++++++++++++++++++++++++-
+ tests/test_mainloop.py | 25 ++++++++++++++++++++++++-
  1 file changed, 24 insertions(+), 1 deletion(-)
 
 commit d03696c1aaa7e66f8f16554cf4a4b97addb5aea1
@@ -3020,22 +5876,22 @@ Date:   Tue Feb 21 15:13:42 2012 +0100
 
     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 +++++++
+ 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
@@ -3048,7 +5904,7 @@ Date:   Tue Mar 27 17:34:48 2012 +0200
 
     Signed-off-by: Martin Pitt <martinpitt@gnome.org>
 
- tests/test_everything.py |   19 +++++++++++++++++++
+ tests/test_everything.py | 19 +++++++++++++++++++
  1 file changed, 19 insertions(+)
 
 commit 7c0017c30129a8db391f902ed592782200d69c64
@@ -3061,7 +5917,7 @@ Date:   Mon Mar 26 17:55:41 2012 +0200
     released. So
     continue with 3.3.x on master.
 
- configure.ac |    4 ++--
+ configure.ac | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 8309f305e5ce508fc5f6411c8153bea2cee5f741
@@ -3075,8 +5931,8 @@ Date:   Mon Mar 26 17:51:37 2012 +0200
     - Ignore *.pyc files.
     - Do not ignore .gitignore, we actually want to track this.
 
- .gitignore |   61
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ .gitignore | 61
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 61 insertions(+)
 
 commit 81de788a72b40acd2f857718d78bdeea01d12eb1
@@ -3091,13 +5947,13 @@ Date:   Mon Mar 26 17:45:08 2012 +0200
     - "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 ++++--
+ 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
@@ -3111,7 +5967,7 @@ Date:   Thu Mar 22 11:14:03 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672627
 
- tests/Makefile.am |    9 ++++-----
+ tests/Makefile.am | 9 ++++-----
  1 file changed, 4 insertions(+), 5 deletions(-)
 
 commit d1f5474c6c50163aefe660e0689dc7f30e6cd48b
@@ -3122,14 +5978,14 @@ Date:   Thu Mar 22 10:56:59 2012 -0300
 
     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 +-
+ 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
@@ -3140,16 +5996,16 @@ Date:   Thu Mar 22 10:56:03 2012 -0300
 
     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 ++--
+ 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
@@ -3160,12 +6016,11 @@ Date:   Thu Mar 22 10:52:05 2012 -0300
 
     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 +-
+ 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
@@ -3176,7 +6031,7 @@ Date:   Thu Mar 22 10:49:52 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672627
 
- tests/test_overrides.py |    2 +-
+ tests/test_overrides.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 2b8eb9fa5b9ca454d7130b3eec15a982fee1bdc9
@@ -3187,8 +6042,8 @@ Date:   Thu Mar 22 10:49:27 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672627
 
- demos/gtk-demo/demos/rotatedtext.py |    1 -
- tests/test_overrides.py             |    1 -
+ demos/gtk-demo/demos/rotatedtext.py | 1 -
+ tests/test_overrides.py             | 1 -
  2 files changed, 2 deletions(-)
 
 commit 03e597cb8f3b075efae556ee51a598695a883ad3
@@ -3199,12 +6054,12 @@ Date:   Thu Mar 22 10:48:59 2012 -0300
 
     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 +-
+ 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
@@ -3215,23 +6070,23 @@ Date:   Thu Mar 22 10:46:17 2012 -0300
 
     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
- ++++++++++++------------
+ 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
@@ -3242,7 +6097,7 @@ Date:   Thu Mar 22 10:40:46 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672627
 
- tests/test_signal.py |   20 ++++++++++----------
+ tests/test_signal.py | 20 ++++++++++----------
  1 file changed, 10 insertions(+), 10 deletions(-)
 
 commit 725483a5dc36739dc7836716b5d6d48091564bf8
@@ -3253,67 +6108,67 @@ Date:   Thu Mar 22 10:38:59 2012 -0300
 
     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 +
+ 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
@@ -3324,15 +6179,15 @@ Date:   Thu Mar 22 10:33:29 2012 -0300
 
     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 ++++----
+ 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
@@ -3343,15 +6198,15 @@ Date:   Thu Mar 22 10:28:28 2012 -0300
 
     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 ++++----
+ 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
@@ -3363,38 +6218,38 @@ Date:   Thu Mar 22 10:24:40 2012 -0300
     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 -
+ 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
@@ -3407,12 +6262,12 @@ Date:   Thu Mar 22 10:32:43 2012 +0100
 
     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 +--
+ 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
@@ -3421,7 +6276,7 @@ Date:   Thu Mar 22 10:31:22 2012 +0100
 
     Fail tests if they use or encounter deprecations
 
- tests/Makefile.am |    2 +-
+ tests/Makefile.am | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 65762243a34af014950527c323a51a29d40fb3e1
@@ -3441,9 +6296,9 @@ Date:   Thu Mar 22 10:15:16 2012 +0100
     to
     tests/runtests.py.
 
- tests/Makefile.am       |   33 ++++++++++++---------------------
- tests/runtests.py       |    7 +++++++
- tests/test_overrides.py |    6 ------
+ tests/Makefile.am       | 33 ++++++++++++---------------------
+ tests/runtests.py       |  7 +++++++
+ tests/test_overrides.py |  6 ------
  3 files changed, 19 insertions(+), 27 deletions(-)
 
 commit 3b4ae83a0ece8e3aed1de5452e2acd32841e629a
@@ -3458,7 +6313,7 @@ Date:   Thu Mar 22 09:58:21 2012 +0100
     import,
     which makes this work again.
 
- tests/test_overrides.py |    9 +++++----
+ tests/test_overrides.py | 9 +++++----
  1 file changed, 5 insertions(+), 4 deletions(-)
 
 commit 927f7877ffa5e16c4cabcecbc05656ee0ec6a167
@@ -3472,8 +6327,8 @@ Date:   Wed Mar 21 21:09:24 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672589
 
- gi/pygtkcompat.py         |   19 +++++++++++++++++++
- tests/test_pygtkcompat.py |   22 ++++++++++++++++++++++
+ gi/pygtkcompat.py         | 19 +++++++++++++++++++
+ tests/test_pygtkcompat.py | 22 ++++++++++++++++++++++
  2 files changed, 41 insertions(+)
 
 commit b322d6a1f6d44bace4eefb98558cfe94a73a727c
@@ -3484,8 +6339,8 @@ Date:   Wed Mar 21 16:01:35 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672578
 
- tests/test_everything.py  |    4 ++--
- tests/test_pygtkcompat.py |   18 ++++++++++++++++++
+ tests/test_everything.py  |  4 ++--
+ tests/test_pygtkcompat.py | 18 ++++++++++++++++++
  2 files changed, 20 insertions(+), 2 deletions(-)
 
 commit c8bc6ae10cfe8b2eff4204ec2175907a6eb0585a
@@ -3498,54 +6353,54 @@ Date:   Wed Mar 21 14:45:53 2012 -0300
 
     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 +-
+ 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
@@ -3564,10 +6419,10 @@ Date:   Wed Mar 21 16:59:33 2012 +0100
     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 +++++++++++++++++++++---------------
+ 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
@@ -3585,8 +6440,8 @@ Date:   Tue Mar 20 14:55:07 2012 +0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=668903
 
- gi/pygi-marshal-from-py.c |    3 ++-
- gi/pygi-marshal-to-py.c   |    3 ++-
+ gi/pygi-marshal-from-py.c | 3 ++-
+ gi/pygi-marshal-to-py.c   | 3 ++-
  2 files changed, 4 insertions(+), 2 deletions(-)
 
 commit 8d85d6639778ec6364235071d272d67e7aae49ae
@@ -3616,8 +6471,8 @@ Date:   Wed Mar 21 14:34:36 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672463
 
- gi/overrides/Gtk.py     |   26 ++++++++++++++------------
- tests/test_overrides.py |    5 +++++
+ gi/overrides/Gtk.py     | 26 ++++++++++++++------------
+ tests/test_overrides.py |  5 +++++
  2 files changed, 19 insertions(+), 12 deletions(-)
 
 commit 38aecc481741fd3a319a76a0ec8bf5329a483876
@@ -3635,7 +6490,7 @@ Date:   Wed Mar 21 15:21:02 2012 +0100
 
     Fix this by calling close().
 
- tests/test_pygtkcompat.py |    3 ++-
+ tests/test_pygtkcompat.py | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit 5e0e5e72a4436badd09f0aa07f62960afcdca8c6
@@ -3646,7 +6501,7 @@ Date:   Mon Mar 19 16:58:22 2012 +0100
 
     Use 3.1.93 for now, this will most likely become 3.2.0 as it is.
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 88924e399d7ccf7af2e9a78720e0c508cd6080d8
@@ -3655,7 +6510,7 @@ Date:   Mon Mar 19 16:41:17 2012 +0100
 
     Release 3.1.92
 
- NEWS |   46 ++++++++++++++++++++++++++++++++++++++++++++++
+ NEWS | 46 ++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 46 insertions(+)
 
 commit b41e6139befb984c0b78bcefe2630ab1393b4b40
@@ -3666,8 +6521,8 @@ Date:   Mon Mar 19 16:14:54 2012 +0100
 
     Also update Martin's email address.
 
- README         |   10 ++++++----
- pygobject.doap |    2 +-
+ README         | 10 ++++++----
+ pygobject.doap |  2 +-
  2 files changed, 7 insertions(+), 5 deletions(-)
 
 commit 45e27ba7e447552057a2950fc768c63ff2e6612e
@@ -3676,7 +6531,7 @@ Date:   Mon Mar 19 16:11:22 2012 +0100
 
     Bump version to 3.1.92, in sync with GNOME
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 77d358f8c5f524259249ea686899e3a4da05562e
@@ -3685,7 +6540,7 @@ Date:   Mon Mar 19 11:54:07 2012 -0300
 
     Correct Gtk.TreePath.__iter__ to work with Python 3
 
- gi/overrides/Gtk.py |    2 +-
+ gi/overrides/Gtk.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 1f18bcb37bdc42368ad9a07c7f348f736c2f665d
@@ -3694,7 +6549,7 @@ Date:   Mon Mar 19 15:54:13 2012 +0100
 
     Fix pygtkcompat.py to work with Python 3
 
- gi/pygtkcompat.py |   20 +++++++++++++++-----
+ gi/pygtkcompat.py | 20 +++++++++++++++-----
  1 file changed, 15 insertions(+), 5 deletions(-)
 
 commit 96a9f92da801989464fbcedf6d849819f6dbea64
@@ -3709,7 +6564,7 @@ Date:   Mon Mar 19 15:32:22 2012 +0100
     is not
     exactly two at the moment.
 
- tests/test_everything.py |    4 ++--
+ tests/test_everything.py | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit ba00afb1e50759b2b321f16e05a15946053cdafa
@@ -3718,8 +6573,8 @@ 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 +++++
+ gi/pygtkcompat.py         | 5 +++++
+ tests/test_pygtkcompat.py | 5 +++++
  2 files changed, 10 insertions(+)
 
 commit 65499246a862ce6a82bc3b0cc74fe8ff82dde687
@@ -3731,8 +6586,8 @@ Date:   Fri Mar 16 16:08:44 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672260
 
- gi/overrides/Gtk.py     |   10 ++++++++++
- tests/test_overrides.py |   11 +++++++++++
+ gi/overrides/Gtk.py     | 10 ++++++++++
+ tests/test_overrides.py | 11 +++++++++++
  2 files changed, 21 insertions(+)
 
 commit 43c761d9f35252dcb58b9cf2278016d841eea4ec
@@ -3743,8 +6598,8 @@ Date:   Fri Mar 16 16:08:23 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672260
 
- gi/overrides/Gtk.py     |   11 +++++++++++
- tests/test_overrides.py |    6 ++++++
+ gi/overrides/Gtk.py     | 11 +++++++++++
+ tests/test_overrides.py |  6 ++++++
  2 files changed, 17 insertions(+)
 
 commit 116d3712251b1b8aa2d4f4a9e40e22f5b9fcbe4f
@@ -3755,8 +6610,8 @@ Date:   Fri Mar 16 16:07:30 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672260
 
- gi/overrides/Pango.py   |    3 +++
- tests/test_overrides.py |    4 ++++
+ gi/overrides/Pango.py   | 3 +++
+ tests/test_overrides.py | 4 ++++
  2 files changed, 7 insertions(+)
 
 commit a3ca47b086b7fcf084282be788c5d737dde847ac
@@ -3768,8 +6623,8 @@ Date:   Fri Mar 16 16:06:37 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672260
 
- gi/overrides/Gtk.py     |   15 +++++++++++++++
- tests/test_overrides.py |   14 ++++++++++++++
+ gi/overrides/Gtk.py     | 15 +++++++++++++++
+ tests/test_overrides.py | 14 ++++++++++++++
  2 files changed, 29 insertions(+)
 
 commit 458dab08c78cb730dd95bcd67af20a0d73a3af2f
@@ -3781,8 +6636,8 @@ Date:   Fri Mar 16 16:06:12 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672260
 
- gi/overrides/Gtk.py     |   10 ++++++++++
- tests/test_overrides.py |    9 ++++++++-
+ gi/overrides/Gtk.py     | 10 ++++++++++
+ tests/test_overrides.py |  9 ++++++++-
  2 files changed, 18 insertions(+), 1 deletion(-)
 
 commit 2f7789a5a1f55ec38c5ff0f96bc5c9023679a333
@@ -3793,8 +6648,8 @@ Date:   Fri Mar 16 16:05:55 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672260
 
- gi/overrides/Gtk.py     |    3 +++
- tests/test_overrides.py |   11 +++++++++++
+ gi/overrides/Gtk.py     |  3 +++
+ tests/test_overrides.py | 11 +++++++++++
  2 files changed, 14 insertions(+)
 
 commit 2dd9dadd1bd92c3324e9de209ba8205a9d4106d6
@@ -3805,8 +6660,8 @@ Date:   Thu Mar 15 15:22:46 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672260
 
- gi/overrides/Gtk.py     |    5 +++++
- tests/test_overrides.py |    3 +++
+ gi/overrides/Gtk.py     | 5 +++++
+ tests/test_overrides.py | 3 +++
  2 files changed, 8 insertions(+)
 
 commit bf8c95836e1cc1e1629937cbc69ea3027fb82746
@@ -3836,10 +6691,9 @@ Date:   Thu Mar 15 09:48:10 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=671610
 
- gi/overrides/Gtk.py     |   81
- +++++++++++++++++++++++++++++------------------
- tests/test_overrides.py |   74
- +++++++++++++++++++++++++++++++++++++++++++
+ gi/overrides/Gtk.py     | 81
+ ++++++++++++++++++++++++++++++-------------------
+ tests/test_overrides.py | 74 ++++++++++++++++++++++++++++++++++++++++++++
  2 files changed, 124 insertions(+), 31 deletions(-)
 
 commit f7db4eaf8148f2dd8bf1718152a1dcae509470c7
@@ -3854,8 +6708,8 @@ Date:   Sun Mar 18 16:07:26 2012 +0100
 
     Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
 
- gi/overrides/Gtk.py     |    4 +---
- tests/test_overrides.py |    6 ++++++
+ gi/overrides/Gtk.py     | 4 +---
+ tests/test_overrides.py | 6 ++++++
  2 files changed, 7 insertions(+), 3 deletions(-)
 
 commit 466337cf2fd091738eeab12c10d250a9d0827284
@@ -3864,7 +6718,7 @@ Date:   Fri Mar 16 16:55:47 2012 -0300
 
     Correct bad rebase, remove duplicate Window
 
- gi/overrides/Gtk.py |    7 -------
+ gi/overrides/Gtk.py | 7 -------
  1 file changed, 7 deletions(-)
 
 commit c60d5ee3c88bd8e1c68ea97f079947cf79d5bb7d
@@ -3878,11 +6732,11 @@ Date:   Thu Mar 15 15:42:28 2012 -0300
 
     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 +++++++++
+ 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
@@ -3897,7 +6751,7 @@ Date:   Wed Mar 14 15:20:53 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672087
 
- gi/overrides/Gtk.py |    8 +++++++-
+ gi/overrides/Gtk.py | 8 +++++++-
  1 file changed, 7 insertions(+), 1 deletion(-)
 
 commit fbd21ee7176bc1b70547ea464b512c8ffd674187
@@ -3908,8 +6762,8 @@ Date:   Wed Mar 14 17:13:04 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672093
 
- gi/overrides/Gtk.py     |    3 +++
- tests/test_overrides.py |    2 ++
+ gi/overrides/Gtk.py     | 3 +++
+ tests/test_overrides.py | 2 ++
  2 files changed, 5 insertions(+)
 
 commit a7b08cb75541612c78d123b1d968be7874e3c481
@@ -3920,7 +6774,7 @@ Date:   Wed Mar 14 13:32:31 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672081
 
- gi/overrides/Gtk.py |   14 ++++++++++++++
+ gi/overrides/Gtk.py | 14 ++++++++++++++
  1 file changed, 14 insertions(+)
 
 commit 02950cabb38b1b3c9378c42c069eefdbccbce17d
@@ -3933,8 +6787,8 @@ Date:   Wed Mar 14 13:31:41 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672081
 
- gi/overrides/Gtk.py     |    4 ++++
- tests/test_overrides.py |   10 ++++++++++
+ gi/overrides/Gtk.py     |  4 ++++
+ tests/test_overrides.py | 10 ++++++++++
  2 files changed, 14 insertions(+)
 
 commit 7245bd0ae3f6243c79fa8543a0ed1e50e5015844
@@ -3945,7 +6799,7 @@ Date:   Wed Mar 14 13:31:06 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672081
 
- gi/overrides/Pango.py |    9 +++++++++
+ gi/overrides/Pango.py | 9 +++++++++
  1 file changed, 9 insertions(+)
 
 commit bc1fd8814df6c1e85b586d0fb943c89f7e2b78b5
@@ -3965,7 +6819,7 @@ Date:   Fri Mar 16 13:27:56 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672224
 
- gi/pygi-marshal-from-py.c |    7 ++++++-
+ gi/pygi-marshal-from-py.c | 7 ++++++-
  1 file changed, 6 insertions(+), 1 deletion(-)
 
 commit a906b7d1947ba905f959d3f738eb6c29b02f96e7
@@ -3984,12 +6838,12 @@ Date:   Fri Mar 16 00:29:31 2012 -0700
 
     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
- ++++++++++++++++++++---------------------
+ 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
@@ -4022,9 +6876,9 @@ Date:   Wed Mar 14 22:52:47 2012 +0100
 
     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 ++++++++
+ 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
@@ -4049,9 +6903,9 @@ Date:   Fri Mar 16 09:59:57 2012 +0100
 
     Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
 
- gi/overrides/Gtk.py     |   56
- +++++++++++++++++++++++------------------------
- tests/test_overrides.py |   35 +++++++++++++++++++++++++++--
+ gi/overrides/Gtk.py     | 56
+ ++++++++++++++++++++++++-------------------------
+ tests/test_overrides.py | 35 +++++++++++++++++++++++++++++--
  2 files changed, 61 insertions(+), 30 deletions(-)
 
 commit 77ab27ab8a580d98f76730f075e083e1e870f55e
@@ -4084,10 +6938,10 @@ Date:   Tue Mar 13 01:41:53 2012 -0700
 
     Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
 
- gi/_gobject/__init__.py       |   10 +++----
- gi/_gobject/propertyhelper.py |   59
- ++++++++++++++++++++++++++++++-----------
- tests/test_properties.py      |   41 ++++++++++++++++++++++++++++
+ gi/_gobject/__init__.py       | 10 ++++----
+ gi/_gobject/propertyhelper.py | 59
+ +++++++++++++++++++++++++++++++------------
+ tests/test_properties.py      | 41 ++++++++++++++++++++++++++++++
  3 files changed, 89 insertions(+), 21 deletions(-)
 
 commit 174a61fb3149c07dab5cc35e64825922cdefcb95
@@ -4100,7 +6954,7 @@ Date:   Tue Mar 13 17:10:13 2012 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=672045
 
- gi/overrides/Gtk.py |   17 +++++++++++++++++
+ gi/overrides/Gtk.py | 17 +++++++++++++++++
  1 file changed, 17 insertions(+)
 
 commit 7746d2188ac4933c2c9011d84525d1e62fc18953
@@ -4113,9 +6967,9 @@ Date:   Fri Mar 9 12:26:53 2012 +0100
 
     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 +++++++++++++++++++
+ 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
@@ -4133,12 +6987,12 @@ Date:   Thu Mar 8 12:21:28 2012 +0100
     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 +--
+ 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
@@ -4151,7 +7005,7 @@ Date:   Mon Mar 5 21:10:55 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=671409
 
- gi/overrides/Gtk.py |    5 +++++
+ gi/overrides/Gtk.py | 5 +++++
  1 file changed, 5 insertions(+)
 
 commit 4824ceaa77b59788325a2c1ee0f994d4e74d7a1c
@@ -4163,7 +7017,7 @@ Date:   Sun Mar 4 16:41:18 2012 +0100
     When we found the member, unref the objects before breaking out of the
     loop.
 
- gi/pygi-marshal-from-py.c |    9 +++------
+ gi/pygi-marshal-from-py.c | 9 +++------
  1 file changed, 3 insertions(+), 6 deletions(-)
 
 commit c6ae29ac157978a61b11cc2de9e8485d8a175105
@@ -4172,7 +7026,7 @@ Date:   Tue Feb 21 15:37:18 2012 +0100
 
     tests: Split TestInterfaces into separate tests
 
- tests/test_gi.py |   36 +++++++++++++++++++-----------------
+ tests/test_gi.py | 36 +++++++++++++++++++-----------------
  1 file changed, 19 insertions(+), 17 deletions(-)
 
 commit de3299818ae5fdf1c7abbe05a36bfd5cdface7b8
@@ -4181,7 +7035,7 @@ Date:   Mon Feb 20 19:37:32 2012 +0100
 
     Post release version bump to 3.1.2
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit fd020e783c0dacea3320225b4ddd57d6a0fce7ea
@@ -4190,7 +7044,7 @@ Date:   Mon Feb 20 19:33:56 2012 +0100
 
     Prepare 3.1.1 release
 
- NEWS |   18 ++++++++++++++++++
+ NEWS | 18 ++++++++++++++++++
  1 file changed, 18 insertions(+)
 
 commit 99485d96811667ef7a7a393b68b7361733157d61
@@ -4199,7 +7053,7 @@ Date:   Sat Feb 18 00:38:05 2012 +0100
 
     Don't use C99 style
 
- gi/pygi-cache.c |    3 ++-
+ gi/pygi-cache.c | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit 0739c39f6282d95fc17ee406fa1151d074b0450d
@@ -4215,7 +7069,7 @@ Date:   Thu Feb 16 16:42:53 2012 +0100
     internally, but at least we can verify that it does not crash due to
     double-free.
 
- tests/test_everything.py |   10 +++++++++-
+ tests/test_everything.py | 10 +++++++++-
  1 file changed, 9 insertions(+), 1 deletion(-)
 
 commit 087a104f66793a981a0c02f1c7ab9cc1cf659da3
@@ -4226,7 +7080,7 @@ Date:   Wed Feb 15 13:36:39 2012 +0100
 
     Not necessary any more since glib 2.24, and we depend on 2.31.
 
- gi/_glib/pyglib.c |    3 ---
+ gi/_glib/pyglib.c | 3 ---
  1 file changed, 3 deletions(-)
 
 commit 66fb610e45912a7def29e5848577d280ef55643a
@@ -4239,7 +7093,7 @@ Date:   Wed Feb 15 13:35:33 2012 +0100
     documentation. This also
     simplifies the code.
 
- gi/_glib/pygsource.c |    4 +---
+ gi/_glib/pygsource.c | 4 +---
  1 file changed, 1 insertion(+), 3 deletions(-)
 
 commit 18342edded05d3d9cccf648ed92bc1cac95c51eb
@@ -4250,9 +7104,9 @@ Date:   Wed Feb 15 13:31:23 2012 +0100
 
     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 +-
+ 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
@@ -4264,7 +7118,7 @@ Date:   Thu Feb 2 19:06:01 2012 +0100
     Looking at the gir file gtk.gdk.x11_* should get converted to
     GdkX11.x11_*. Fixing pygiconvert.sh to do so.
 
- pygi-convert.sh |    2 +-
+ pygi-convert.sh | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 3af5016978df598d5fd1c225cc49bb2c04dc4e35
@@ -4275,7 +7129,7 @@ Date:   Fri Feb 10 13:29:41 2012 +0100
 
     Commit ee62df4d2fc0cc63c2f29d3ad9b47b875dbd5f89 introduced both calls
 
- configure.ac |    6 +++---
+ configure.ac | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit 50c3b1bad3ea79750649f4b48fce0adbfaba5268
@@ -4286,7 +7140,7 @@ Date:   Fri Feb 10 09:28:36 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=649267
 
- gi/_gobject/pygparamspec.c |    2 +-
+ gi/_gobject/pygparamspec.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 6ab542fb3ec1031922ba65664d77bbaac0df453e
@@ -4297,8 +7151,8 @@ Date:   Mon Nov 14 14:41:08 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=664496
 
- pygi-convert.sh |   76
- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ pygi-convert.sh | 76
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 76 insertions(+)
 
 commit 4aeb27efc43e131de5d0bc0f60dca7c1d34c3d45
@@ -4311,9 +7165,9 @@ Date:   Fri Feb 10 09:04:18 2012 +0100
 
     Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
 
- gi/pygi-argument.c       |    3 ++-
- gi/pygi-info.c           |   13 +++++++++++++
- tests/test_everything.py |   21 +++++++++++++++++++++
+ gi/pygi-argument.c       |  3 ++-
+ gi/pygi-info.c           | 13 +++++++++++++
+ tests/test_everything.py | 21 +++++++++++++++++++++
  3 files changed, 36 insertions(+), 1 deletion(-)
 
 commit 5c0b20cc1a261cb7430a5251dffe60da698033b5
@@ -4324,7 +7178,7 @@ Date:   Thu Feb 9 18:15:42 2012 +0100
 
     Use what was recently added in g-i
 
- tests/test_gi.py |   17 +++++++++++++++--
+ tests/test_gi.py | 17 +++++++++++++++--
  1 file changed, 15 insertions(+), 2 deletions(-)
 
 commit ea7778f6f37a6fc38f88d89d4b6cae8be0ed9753
@@ -4335,7 +7189,7 @@ Date:   Thu Feb 9 18:14:52 2012 +0100
 
     Also tidy up the spacing a bit
 
- tests/test_gi.py |   29 +++++++++++++++++++++++------
+ tests/test_gi.py | 29 +++++++++++++++++++++++------
  1 file changed, 23 insertions(+), 6 deletions(-)
 
 commit db7f9be319d3cf52aef300fbac60cabb7ff57276
@@ -4344,7 +7198,7 @@ Date:   Wed Feb 8 22:23:30 2012 +0100
 
     Add unit test for builder's connect_after
 
- tests/test_overrides.py |    8 ++++++++
+ tests/test_overrides.py | 8 ++++++++
  1 file changed, 8 insertions(+)
 
 commit 671f9b0dd73ac41a84caf9d1f04cec351bc01b47
@@ -4359,7 +7213,7 @@ Date:   Wed Feb 8 16:06:22 2012 -0500
 
     https://bugzilla.gnome.org/show_bug.cgi?id=669705
 
- gi/overrides/Gtk.py |    2 +-
+ gi/overrides/Gtk.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 1d23d8006be98b77a0134fddd23b76df05e489fa
@@ -4370,7 +7224,7 @@ Date:   Tue Feb 7 11:49:58 2012 +0000
 
     https://bugzilla.gnome.org/show_bug.cgi?id=669598
 
- m4/python.m4 |    6 +++---
+ m4/python.m4 | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit 945fd18e531c2131440af93dcd89f6c63abbfd7c
@@ -4393,7 +7247,7 @@ Date:   Tue Feb 7 13:42:19 2012 -0500
 
     https://bugzilla.gnome.org/show_bug.cgi?id=669594
 
- gi/_glib/pygspawn.c |    4 ++--
+ gi/_glib/pygspawn.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 8fc969c45d6d720400dc6c9ef391d0ca93f14b5a
@@ -4402,7 +7256,7 @@ Date:   Mon Feb 6 19:15:53 2012 +0100
 
     Post release version bump to 3.1.1
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit f76b2fe6d37be76bf129ee2adee90b2cc0eee56e
@@ -4411,7 +7265,7 @@ Date:   Mon Feb 6 19:11:52 2012 +0100
 
     Prepare 3.1.0 release
 
- NEWS |   34 ++++++++++++++++++++++++++++++++++
+ NEWS | 34 ++++++++++++++++++++++++++++++++++
  1 file changed, 34 insertions(+)
 
 commit c09d0dffc5a570d5ae4df1ae07b2e5594c3ca1bf
@@ -4423,8 +7277,8 @@ Date:   Mon Feb 6 19:04:41 2012 +0100
 
     Removed obsolete MAINTAINERS file
 
- MAINTAINERS    |   19 -------------------
- pygobject.doap |   44 +++++++++++++++-----------------------------
+ MAINTAINERS    | 19 -------------------
+ pygobject.doap | 44 +++++++++++++++-----------------------------
  2 files changed, 15 insertions(+), 48 deletions(-)
 
 commit 0285e107be581c4d594127dc06cd05df1f02fb3f
@@ -4439,9 +7293,9 @@ Date:   Mon Feb 6 18:57:01 2012 +0100
     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 +------------------------------
+ gi/overrides/Gtk.py     | 15 ---------------
+ tests/compathelper.py   |  2 --
+ tests/test_overrides.py | 31 +------------------------------
  3 files changed, 1 insertion(+), 47 deletions(-)
 
 commit 0e921cd26ed5a6e3bc6ef5f553e8b22b862d72a6
@@ -4450,7 +7304,7 @@ Date:   Sun Feb 5 13:47:10 2012 +0100
 
     tests: Fixed issues with python3
 
- tests/test_gi.py |    9 ++++++---
+ tests/test_gi.py | 9 ++++++---
  1 file changed, 6 insertions(+), 3 deletions(-)
 
 commit ee62df4d2fc0cc63c2f29d3ad9b47b875dbd5f89
@@ -4461,9 +7315,9 @@ Date:   Sun Feb 5 11:59:51 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=664150
 
- gi/pygi-property.c |   48 ++++++++++++++++++++++++++++++++++++----
- tests/test_gi.py   |   62
- ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-property.c | 48 ++++++++++++++++++++++++++++++++++++++----
+ tests/test_gi.py   | 62
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2 files changed, 106 insertions(+), 4 deletions(-)
 
 commit c329bf2aee8d75ce452638db75e09197ff2b9b65
@@ -4477,7 +7331,7 @@ Date:   Sun Feb 5 11:46:21 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=669393
 
- gi/pygi-marshal-cleanup.c |   32 +++++++++++++++++++++++---------
+ gi/pygi-marshal-cleanup.c | 32 +++++++++++++++++++++++---------
  1 file changed, 23 insertions(+), 9 deletions(-)
 
 commit 4ea37c606f67df843788261b2c8acd6bac4c1e0c
@@ -4491,7 +7345,7 @@ Date:   Sun Feb 5 18:51:53 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=669415
 
- tests/test_everything.py |    9 +++++++++
+ tests/test_everything.py | 9 +++++++++
  1 file changed, 9 insertions(+)
 
 commit a41984780ee49dcf02c718ca1be87bba747472e5
@@ -4510,7 +7364,7 @@ Date:   Mon Feb 6 09:34:28 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=669415
 
- gi/_glib/pyglib.c |    2 ++
+ gi/_glib/pyglib.c | 2 ++
  1 file changed, 2 insertions(+)
 
 commit 2c797c17913999379e277788d5e4cce8d68cebb0
@@ -4521,7 +7375,7 @@ Date:   Sat Feb 4 16:11:34 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=663288
 
- tests/Makefile.am |    1 +
+ tests/Makefile.am | 1 +
  1 file changed, 1 insertion(+)
 
 commit d6a899cdf70e978534326155e3fad75a705f4b20
@@ -4533,7 +7387,7 @@ Date:   Sat Feb 4 15:55:55 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=665553
 
- gi/overrides/Gtk.py |    6 ++----
+ gi/overrides/Gtk.py | 6 ++----
  1 file changed, 2 insertions(+), 4 deletions(-)
 
 commit 534ec71c575a279ff1c05da20a8858bb1145b4d0
@@ -4548,8 +7402,8 @@ Date:   Sat Feb 4 15:42:36 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=647723
 
- gi/overrides/GLib.py    |   18 ++++++++++++++++++
- tests/test_overrides.py |   45
+ gi/overrides/GLib.py    | 18 ++++++++++++++++++
+ tests/test_overrides.py | 45
  +++++++++++++++++++++++++++++++++++++++++++++
  2 files changed, 63 insertions(+)
 
@@ -4566,9 +7420,9 @@ Date:   Sat Feb 4 15:41:08 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=647725
 
- gi/overrides/GLib.py    |   23 +++++++++++++++++++
- tests/test_overrides.py |   56
- +++++++++++++++++++++++++++++++++++++++++++++++
+ gi/overrides/GLib.py    | 23 ++++++++++++++++++++
+ tests/test_overrides.py | 56
+ +++++++++++++++++++++++++++++++++++++++++++++++++
  2 files changed, 79 insertions(+)
 
 commit f82404034be042bf2026bbb7f1e33b11d6e17a6f
@@ -4583,7 +7437,7 @@ Date:   Wed Jan 25 07:01:06 2012 +0100
     other test
     case names.
 
- tests/test_everything.py |   30 +++++++++++++++---------------
+ tests/test_everything.py | 30 +++++++++++++++---------------
  1 file changed, 15 insertions(+), 15 deletions(-)
 
 commit e37ee78fbf0aa72159a40da4165a26bea065faf1
@@ -4596,7 +7450,7 @@ Date:   Mon Jan 23 13:10:30 2012 +0000
 
     https://bugzilla.gnome.org/show_bug.cgi?id=668497
 
- gi/pygi-foreign-cairo.c |    2 +-
+ gi/pygi-foreign-cairo.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit db24865d6b60351d72f5b8f47103d6d0a6c63b2e
@@ -4609,7 +7463,7 @@ Date:   Mon Jan 23 13:06:41 2012 +0000
 
     https://bugzilla.gnome.org/show_bug.cgi?id=668497
 
- gi/_gobject/gobjectmodule.c |    2 +-
+ gi/_gobject/gobjectmodule.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit a8408cfd68cd5e7cdb0b8a83e107d9a0d828e4bd
@@ -4629,10 +7483,10 @@ Date:   Mon Jan 23 13:01:27 2012 +0000
 
     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 --
+ 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
@@ -4647,7 +7501,7 @@ Date:   Thu Jan 19 18:09:07 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=668288
 
- gi/_glib/pygmainloop.c |    4 ++--
+ gi/_glib/pygmainloop.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 557a61c12c01137a0d7c679c4b053973df09d445
@@ -4660,7 +7514,7 @@ Date:   Mon Dec 26 00:44:56 2011 -0500
 
     https://bugzilla.gnome.org/show_bug.cgi?id=666852
 
- tests/test_gi.py |    4 ++--
+ tests/test_gi.py | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit d69e5b3c7bdb9113382fd125c256b12bff4c24d2
@@ -4677,7 +7531,7 @@ Date:   Mon Jan 23 12:37:26 2012 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=666270
 
- gi/pygi-argument.c |   12 +++++++++++-
+ gi/pygi-argument.c | 12 +++++++++++-
  1 file changed, 11 insertions(+), 1 deletion(-)
 
 commit 77f32d9110bfeb6dad8457f565b4c70b5998fef6
@@ -4696,8 +7550,8 @@ Date:   Thu Dec 15 16:12:01 2011 +0200
 
     Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
 
- gi/pygi-closure.c        |    2 ++
- tests/test_everything.py |   35 +++++++++++++++++++++++++++++++++++
+ gi/pygi-closure.c        |  2 ++
+ tests/test_everything.py | 35 +++++++++++++++++++++++++++++++++++
  2 files changed, 37 insertions(+)
 
 commit 4b9dc03d0e49e9a1f4bf0f2df503bdff00d13a2b
@@ -4715,7 +7569,7 @@ Date:   Mon Jan 23 13:56:02 2012 +0000
 
     https://bugzilla.gnome.org/show_bug.cgi?id=666098
 
- gi/_glib/pyglib.c |    3 +++
+ gi/_glib/pyglib.c | 3 +++
  1 file changed, 3 insertions(+)
 
 commit adcfe96d49b09bcc550653d73de196610fd5144d
@@ -4740,11 +7594,11 @@ Date:   Fri Jan 20 16:20:10 2012 +0000
 
     https://bugzilla.gnome.org/show_bug.cgi?id=666098
 
- gi/_glib/pyglib.c       |   46
+ gi/_glib/pyglib.c       | 46
  +++++++++++++++++++++++++++++++++++-----------
- gi/_glib/pyglib.h       |    1 +
- gi/pygi-marshal-to-py.c |   16 +++++++++++++---
- tests/test_gi.py        |   32 ++++++++++++++++++++++++++++++++
+ 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
@@ -4757,7 +7611,7 @@ Date:   Mon Jan 23 12:42:21 2012 +0200
 
     Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
 
- gi/pygi-argument.c |   26 +++++++++++++-------------
+ gi/pygi-argument.c | 26 +++++++++++++-------------
  1 file changed, 13 insertions(+), 13 deletions(-)
 
 commit c71c010be01d706f90bc200194325fd82f4071b2
@@ -4766,7 +7620,7 @@ Date:   Sat Jan 14 14:24:23 2012 +0100
 
     Avoid C99 syntax.
 
- gi/gimodule.c |   10 ++++++----
+ gi/gimodule.c | 10 ++++++----
  1 file changed, 6 insertions(+), 4 deletions(-)
 
 commit c299d058c22385ececaec64c872d1dd1bc1ae17a
@@ -4775,7 +7629,7 @@ Date:   Fri Jan 6 13:39:31 2012 +0100
 
     Connect to first action of a radio group.
 
- gi/overrides/Gtk.py |    4 ++--
+ gi/overrides/Gtk.py | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit dee2f179037902a3883bd0e61ff1c350e1fd8a4f
@@ -4784,7 +7638,7 @@ Date:   Wed Jan 4 16:40:51 2012 +0100
 
     Use g_slist_free_full in pygi-closure.
 
- gi/pygi-closure.c |    3 +--
+ gi/pygi-closure.c | 3 +--
  1 file changed, 1 insertion(+), 2 deletions(-)
 
 commit 2bee4207ab6f07dc9c0952affe72f0e304cfb624
@@ -4799,7 +7653,7 @@ Date:   Wed Jan 4 15:24:13 2012 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=667261
 
- gi/pygi-marshal-from-py.c |    8 ++++----
+ gi/pygi-marshal-from-py.c | 8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit d68455e99b1a9ebba31209b17a11317b1958678b
@@ -4810,8 +7664,8 @@ Date:   Tue Jan 3 16:57:40 2012 +0100
 
     Treat NULL as an empty array and add the corresponding testcase
 
- gi/pygi-marshal-to-py.c |    9 +++++----
- tests/test_gi.py        |    3 +++
+ gi/pygi-marshal-to-py.c | 9 +++++----
+ tests/test_gi.py        | 3 +++
  2 files changed, 8 insertions(+), 4 deletions(-)
 
 commit e3451b8e6018bb76e9992fb6af24a71725de5cfd
@@ -4820,7 +7674,7 @@ Date:   Fri Dec 23 12:01:43 2011 +0100
 
     Branching, bump version to 3.1.0
 
- configure.ac |    4 ++--
+ configure.ac | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 8d1a36cc73f5f4df091ecb289c8a7b38ec2ab605
@@ -4829,7 +7683,7 @@ Date:   Mon Dec 12 18:35:30 2011 +0100
 
     Add notes about branching to HACKING
 
- HACKING |   10 ++++++++++
+ HACKING | 10 ++++++++++
  1 file changed, 10 insertions(+)
 
 commit 00030bc6f0fb961c716ed692144cd8e4bb9be7d0
@@ -4841,8 +7695,8 @@ Date:   Sat Dec 10 12:51:45 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=664864
 
- gi/_gobject/propertyhelper.py |    2 +-
- tests/test_properties.py      |   31 +++++++++++++++++++++++++++++++
+ gi/_gobject/propertyhelper.py |  2 +-
+ tests/test_properties.py      | 31 +++++++++++++++++++++++++++++++
  2 files changed, 32 insertions(+), 1 deletion(-)
 
 commit 7b78abc6c399abd0daa4c11c644d107e1bb7b452
@@ -4851,7 +7705,7 @@ Date:   Mon Dec 12 17:00:24 2011 +0100
 
     Remove mention of removed option --enable-docs
 
- HACKING |    2 +-
+ HACKING | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 4cba52f5b5e79b7b6212cb0795e8976a9da9f21d
@@ -4860,7 +7714,7 @@ Date:   Mon Dec 12 17:00:03 2011 +0100
 
     Fix sebp's name in NEWS
 
- NEWS |    2 +-
+ NEWS | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 8c95981d0ba224a577f87998030c384b3dae3d80
@@ -4869,7 +7723,7 @@ Date:   Mon Dec 12 16:20:09 2011 +0100
 
     Release 3.0.3
 
- NEWS |   15 +++++++++++++++
+ NEWS | 15 +++++++++++++++
  1 file changed, 15 insertions(+)
 
 commit 58e47fd28c5d75bb78042c8f9eb5aae84de9c64d
@@ -4878,7 +7732,7 @@ Date:   Mon Dec 12 16:16:44 2011 +0100
 
     Pre-release version bump
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 884468d4816fc976c0c0c72651e7f81d13f3f78b
@@ -4889,7 +7743,7 @@ Date:   Thu Dec 1 11:50:38 2011 -0300
 
     Signed-off-by: Manuel Quiñones <manuq@laptop.org>
 
- pygi-convert.sh |   14 ++++++++++++++
+ pygi-convert.sh | 14 ++++++++++++++
  1 file changed, 14 insertions(+)
 
 commit 654711d0f940d7480d0f1cdb25a3dc9996f7a706
@@ -4900,9 +7754,9 @@ Date:   Tue Nov 8 12:38:12 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=663610
 
- gi/overrides/Gtk.py     |   15 +++++++++++++++
- tests/compathelper.py   |    2 ++
- tests/test_overrides.py |   31 ++++++++++++++++++++++++++++++-
+ gi/overrides/Gtk.py     | 15 +++++++++++++++
+ tests/compathelper.py   |  2 ++
+ tests/test_overrides.py | 31 ++++++++++++++++++++++++++++++-
  3 files changed, 47 insertions(+), 1 deletion(-)
 
 commit 4f637212f13b197a95c824967a58496b9e3b877c
@@ -4911,7 +7765,7 @@ Date:   Wed Nov 2 14:51:24 2011 -0400
 
     add test for bytearray variants
 
- tests/test_gi.py |    4 ++++
+ tests/test_gi.py | 4 ++++
  1 file changed, 4 insertions(+)
 
 commit 20ca3f129d6cc662285cce8c732b55596016aefa
@@ -4920,7 +7774,7 @@ Date:   Wed Nov 2 14:50:42 2011 -0400
 
     handle NULL arrays correctly for each array type
 
- gi/pygi-marshal-to-py.c |   11 ++++++-----
+ gi/pygi-marshal-to-py.c | 11 ++++++-----
  1 file changed, 6 insertions(+), 5 deletions(-)
 
 commit ce2f780bffe44b1d4de617dcbce4b90c58b03c18
@@ -4931,8 +7785,8 @@ Date:   Wed Nov 2 14:17:21 2011 -0400
 
     This reverts commit cfda820e8d9604c5ef2ad1161c22b20080d5daf4.
 
- gi/pygi-marshal-from-py.c |    6 +++++-
- gi/pygi-marshal-to-py.c   |    8 +++++++-
+ gi/pygi-marshal-from-py.c | 6 +++++-
+ gi/pygi-marshal-to-py.c   | 8 +++++++-
  2 files changed, 12 insertions(+), 2 deletions(-)
 
 commit 832f16f96815adc22cc3acbeb3fa969631795a29
@@ -4948,7 +7802,7 @@ Date:   Sun Oct 30 18:08:57 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=663068
 
- gi/_glib/pygmainloop.c |    5 ++++-
+ gi/_glib/pygmainloop.c | 5 ++++-
  1 file changed, 4 insertions(+), 1 deletion(-)
 
 commit 2fd3aa9d4ca0906a5e609845ee500ba72e358f94
@@ -4959,8 +7813,8 @@ Date:   Sat Oct 29 15:08:03 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=662994
 
- gi/types.py      |   22 +++++++++++++---------
- tests/test_gi.py |   20 ++++++++++----------
+ gi/types.py      | 22 +++++++++++++---------
+ tests/test_gi.py | 20 ++++++++++----------
  2 files changed, 23 insertions(+), 19 deletions(-)
 
 commit cfda820e8d9604c5ef2ad1161c22b20080d5daf4
@@ -4971,8 +7825,8 @@ Date:   Wed Nov 2 14:54:21 2011 +0100
 
     This reverts commit eef35b2df8023ffff2d195ee16c084f5cfcb6ba3.
 
- gi/pygi-marshal-from-py.c |    6 +-----
- gi/pygi-marshal-to-py.c   |    8 +-------
+ gi/pygi-marshal-from-py.c | 6 +-----
+ gi/pygi-marshal-to-py.c   | 8 +-------
  2 files changed, 2 insertions(+), 12 deletions(-)
 
 commit eef35b2df8023ffff2d195ee16c084f5cfcb6ba3
@@ -4990,8 +7844,8 @@ Date:   Sun Oct 30 16:36:32 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=662550
 
- gi/pygi-marshal-from-py.c |    6 +++++-
- gi/pygi-marshal-to-py.c   |    8 +++++++-
+ gi/pygi-marshal-from-py.c | 6 +++++-
+ gi/pygi-marshal-to-py.c   | 8 +++++++-
  2 files changed, 12 insertions(+), 2 deletions(-)
 
 commit 4c1d9f01b8fa6702f73b290180f934250e179caa
@@ -5000,7 +7854,7 @@ Date:   Sun Oct 30 09:20:45 2011 +0000
 
     pygi-convert: fix for Pango.Alignment
 
- pygi-convert.sh |    1 +
+ pygi-convert.sh | 1 +
  1 file changed, 1 insertion(+)
 
 commit e3abd76096cc9f335681c7225f452c286b9c59e2
@@ -5009,7 +7863,7 @@ Date:   Sun Oct 30 07:06:57 2011 +0000
 
     pygi-convert: fix for Gtk.Orientation
 
- pygi-convert.sh |    1 +
+ pygi-convert.sh | 1 +
  1 file changed, 1 insertion(+)
 
 commit 52b82c5f78ef3755388457fa9440c36ccd2dfbbf
@@ -5025,7 +7879,7 @@ Date:   Thu Oct 27 07:16:24 2011 +0200
     this as EXFAIL
     for now. (See https://bugzilla.gnome.org/show_bug.cgi?id=656554)
 
- tests/test_everything.py |   24 ++++++++++++++++++++++++
+ tests/test_everything.py | 24 ++++++++++++++++++++++++
  1 file changed, 24 insertions(+)
 
 commit c7aa0e79dfb4c1092c51ae1464b8414083b4f3fc
@@ -5048,12 +7902,12 @@ Date:   Tue Oct 4 12:28:26 2011 +0200
 
     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 +++++++-
+ 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
@@ -5062,7 +7916,7 @@ Date:   Sat Oct 22 00:20:57 2011 +0200
 
     Release 3.0.2
 
- NEWS |    8 ++++++++
+ NEWS | 8 ++++++++
  1 file changed, 8 insertions(+)
 
 commit 5c24760b797e985721f7fe51d52252e4dd54a417
@@ -5079,8 +7933,8 @@ Date:   Fri Oct 21 17:31:41 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=662383
 
- gi/pygi-invoke.c         |   10 ++++++++++
- tests/test_everything.py |    8 ++++++++
+ gi/pygi-invoke.c         | 10 ++++++++++
+ tests/test_everything.py |  8 ++++++++
  2 files changed, 18 insertions(+)
 
 commit 585222915dc98b0e375de3db4771466278a32e81
@@ -5093,8 +7947,8 @@ Date:   Tue Oct 18 00:39:16 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=661673
 
- gi/pygi-marshal-from-py.c |  121
- +++++++++++++++++++++++++--------------------
+ gi/pygi-marshal-from-py.c | 121
+ ++++++++++++++++++++++++++--------------------
  1 file changed, 68 insertions(+), 53 deletions(-)
 
 commit 8deaec6b9abd87f02060c9feec773d4693e89028
@@ -5109,8 +7963,8 @@ Date:   Wed Oct 19 14:35:11 2011 +0200
 
     https://launchpad.net/bugs/875399
 
- gi/overrides/Gdk.py |   95
- ++++++++++++++++++++++++++-------------------------
+ gi/overrides/Gdk.py | 95
+ +++++++++++++++++++++++++++--------------------------
  1 file changed, 48 insertions(+), 47 deletions(-)
 
 commit f395fb131caf7ca550acd17138d8061926ef4f92
@@ -5121,7 +7975,7 @@ Date:   Fri Oct 14 17:19:45 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=661359
 
- tests/test_everything.py |   11 +++++++++++
+ tests/test_everything.py | 11 +++++++++++
  1 file changed, 11 insertions(+)
 
 commit 611f58b99851328653af4930f188c33eccaa9f6f
@@ -5133,7 +7987,7 @@ Date:   Fri Oct 14 16:42:32 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=661359
 
- gi/pygi-argument.c |   10 ++++++++++
+ gi/pygi-argument.c | 10 ++++++++++
  1 file changed, 10 insertions(+)
 
 commit 0f1eb9fa0e7aa5e7c22dabc709c0dfb469e404f1
@@ -5145,7 +7999,7 @@ Date:   Tue Oct 4 11:13:43 2011 +0200
     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 +++--
+ gi/_gobject/propertyhelper.py | 5 +++--
  1 file changed, 3 insertions(+), 2 deletions(-)
 
 commit bef8d385117dd0295c9ba7567710d76fc2bb729a
@@ -5154,7 +8008,7 @@ Date:   Mon Oct 10 11:24:42 2011 +0200
 
     Add tests for boxed properties.
 
- tests/test_properties.py |   20 ++++++++++++++++++--
+ tests/test_properties.py | 20 ++++++++++++++++++--
  1 file changed, 18 insertions(+), 2 deletions(-)
 
 commit 77123ffeb1585837033848f4d5a90cfa63fdaee0
@@ -5163,7 +8017,7 @@ Date:   Fri Sep 30 20:21:07 2011 +0200
 
     Post release bump version
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit f5ccfec0a1bc4c999bfa49d75383ea06d3a068c4
@@ -5172,8 +8026,8 @@ Date:   Fri Sep 30 20:19:46 2011 +0200
 
     Release 3.0.1
 
- NEWS         |    5 +++++
- configure.ac |    2 +-
+ NEWS         | 5 +++++
+ configure.ac | 2 +-
  2 files changed, 6 insertions(+), 1 deletion(-)
 
 commit 56ac9339eb1d6950623dc4d8c3b9972874e7fa86
@@ -5189,8 +8043,8 @@ Date:   Thu Sep 22 19:03:20 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=659879
 
- gi/pygi-marshal-from-py.c |   60
- ++++++++++++++++++++++++++++++++++++++++++---
+ gi/pygi-marshal-from-py.c | 60
+ +++++++++++++++++++++++++++++++++++++++++++----
  1 file changed, 56 insertions(+), 4 deletions(-)
 
 commit 311a4f8035a95b41bc3c0a836c32b7a5bf2d9959
@@ -5203,10 +8057,10 @@ Date:   Wed Sep 21 21:50:48 2011 -0400
     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 ++-
+ 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
@@ -5218,7 +8072,7 @@ Date:   Wed Sep 21 21:13:22 2011 -0400
 
     This reverts commit f6fa5dd8f39af1b8a52d7600d257400b0983e8c5.
 
- gi/_gobject/gobjectmodule.c |   32 +++++++++++++++++---------------
+ gi/_gobject/gobjectmodule.c | 32 +++++++++++++++++---------------
  1 file changed, 17 insertions(+), 15 deletions(-)
 
 commit a24c10b779f2a1b0425d56d03d59c393389cad98
@@ -5227,7 +8081,7 @@ Date:   Wed Sep 21 21:10:00 2011 -0400
 
     make sure to commit the NEWS file
 
- NEWS |    4 ++++
+ NEWS | 4 ++++
  1 file changed, 4 insertions(+)
 
 commit 2eed2940c9be099fb6305288d895265e6b35d3d2
@@ -5236,7 +8090,7 @@ Date:   Mon Sep 19 13:19:57 2011 -0400
 
     prep for 3.0 release
 
- configure.ac |    6 +++---
+ configure.ac | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit fbd58b70c2c3c1128f95a87eb4cc8313b6a401b8
@@ -5245,7 +8099,7 @@ Date:   Fri Sep 16 14:19:15 2011 -0400
 
     up version required of gobject-introspection to 1.29.0
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 225f21117b6b3546989abe22538c784291e86b2a
@@ -5259,12 +8113,12 @@ Date:   Fri Sep 16 12:26:10 2011 -0400
     * 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 +--
+ 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
@@ -5273,7 +8127,7 @@ Date:   Fri Sep 16 12:24:38 2011 -0400
 
     post release bump
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 3ec4020205e909ee4400650434f9ae7b89c2bde8
@@ -5282,7 +8136,7 @@ Date:   Thu Sep 15 18:12:01 2011 -0400
 
     edit HACKING file to show correct tag format
 
- HACKING |    2 +-
+ HACKING | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 2e864fd05bc0adf48df9f65ab72785ebb1d0d3f0
@@ -5291,7 +8145,7 @@ Date:   Thu Sep 15 18:10:33 2011 -0400
 
     update NEWS file to prep for release
 
- NEWS |   35 +++++++++++++++++++++++++++++++++++
+ NEWS | 35 +++++++++++++++++++++++++++++++++++
  1 file changed, 35 insertions(+)
 
 commit 0da687fa699aba4f42c42a924d6754e2bd47df50
@@ -5300,7 +8154,7 @@ Date:   Thu Sep 15 17:59:31 2011 -0400
 
     fix typo s/lenth/length
 
- gi/overrides/Gtk.py |    2 +-
+ gi/overrides/Gtk.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 0e4861abaff64d8e7e8d1aeedf9dd1e80de8aab2
@@ -5309,7 +8163,7 @@ Date:   Thu Sep 15 17:48:58 2011 -0400
 
     fix typo in docstring
 
- gi/_gobject/propertyhelper.py |    2 +-
+ gi/_gobject/propertyhelper.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit e7fcc326d64def610e5a1003cf6c7ca97023814d
@@ -5327,7 +8181,7 @@ Date:   Thu Sep 15 17:46:46 2011 -0400
       just
       set length to that.
 
- gi/overrides/Gtk.py |    6 ++----
+ gi/overrides/Gtk.py | 6 ++----
  1 file changed, 2 insertions(+), 4 deletions(-)
 
 commit 6f380153afb3390f7da9f4b8befb1c4ee224da17
@@ -5342,7 +8196,7 @@ Date:   Mon Sep 12 21:07:20 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=659140
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 11c45ac6dcb6ffad766d03bfc77f45a6d703a90d
@@ -5357,8 +8211,8 @@ Date:   Thu Sep 15 14:18:57 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=659142
 
- gi/_gobject/gobjectmodule.c |    4 ----
- gi/_gobject/pygobject.h     |    2 --
+ gi/_gobject/gobjectmodule.c | 4 ----
+ gi/_gobject/pygobject.h     | 2 --
  2 files changed, 6 deletions(-)
 
 commit 7e48fd6dfd86b7082c3fd35d25d9693c56c9665a
@@ -5376,8 +8230,8 @@ Date:   Thu Sep 15 15:52:18 2011 -0400
         import gi
         installdir = gi._overridesdir
 
- gi/__init__.py      |    2 ++
- pygobject-3.0.pc.in |   10 +++++++++-
+ gi/__init__.py      |  2 ++
+ pygobject-3.0.pc.in | 10 +++++++++-
  2 files changed, 11 insertions(+), 1 deletion(-)
 
 commit beea7072a5a989be47a755ac46647380d4dbd6b4
@@ -5400,7 +8254,7 @@ Date:   Thu Sep 15 00:11:09 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=627236
 
- tests/test_overrides.py |    4 ++--
+ tests/test_overrides.py | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 46ba7f04ef3df08e07ddda5c10f0c98bec5fa183
@@ -5420,8 +8274,8 @@ Date:   Thu Sep 15 00:08:31 2011 -0400
       for arrays
     https://bugzilla.gnome.org/show_bug.cgi?id=627236
 
- gi/pygi-marshal-from-py.c |   35 ++++++++++++++++++++++++++++++++---
- tests/test_gi.py          |   29 +++++++++++++++++++++++++++++
+ gi/pygi-marshal-from-py.c | 35 ++++++++++++++++++++++++++++++++---
+ tests/test_gi.py          | 29 +++++++++++++++++++++++++++++
  2 files changed, 61 insertions(+), 3 deletions(-)
 
 commit e30a41592baa942188574e5c9f99572963e2e387
@@ -5446,8 +8300,8 @@ Date:   Thu Sep 15 00:02:34 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=627236
 
- gi/pygi-cache.c |   30 ++++++++++++++++++++----------
- gi/pygi-cache.h |    9 +++++++--
+ gi/pygi-cache.c | 30 ++++++++++++++++++++----------
+ gi/pygi-cache.h |  9 +++++++--
  2 files changed, 27 insertions(+), 12 deletions(-)
 
 commit f6fa5dd8f39af1b8a52d7600d257400b0983e8c5
@@ -5475,7 +8329,7 @@ Date:   Wed Sep 14 20:26:15 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=657403
 
- gi/_gobject/gobjectmodule.c |   32 +++++++++++++++-----------------
+ gi/_gobject/gobjectmodule.c | 32 +++++++++++++++-----------------
  1 file changed, 15 insertions(+), 17 deletions(-)
 
 commit 61b64a65beee9011f8e4ed20f0a83e6630ba154f
@@ -5487,7 +8341,7 @@ Date:   Tue Sep 13 18:08:04 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=657403
 
- gi/_gobject/gobjectmodule.c |    2 +-
+ gi/_gobject/gobjectmodule.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 93e12cc2eb7e7f2c18971da86e9c9452d3f566b7
@@ -5498,7 +8352,7 @@ Date:   Fri Aug 26 11:22:09 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=657416
 
- gi/_gobject/pygobject.h |   19 +------------------
+ gi/_gobject/pygobject.h | 19 +------------------
  1 file changed, 1 insertion(+), 18 deletions(-)
 
 commit e1c71092af6e2cffa36248519adfceac1874051d
@@ -5509,7 +8363,7 @@ Date:   Wed Aug 31 09:43:28 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=657785
 
- pygi-convert.sh |    2 ++
+ pygi-convert.sh | 2 ++
  1 file changed, 2 insertions(+)
 
 commit 3ace5c2e2268285a5dcb39889fcb2a71bc1063bd
@@ -5524,8 +8378,8 @@ Date:   Fri Sep 2 08:37:15 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=658032
 
- examples/signal.py      |    2 --
- gi/_gobject/pygobject.c |   11 -----------
+ examples/signal.py      |  2 --
+ gi/_gobject/pygobject.c | 11 -----------
  2 files changed, 13 deletions(-)
 
 commit fcd457d1d1d8a813acb2ebfe5ee0e9aab2c9c88c
@@ -5539,10 +8393,10 @@ Date:   Tue Sep 13 12:05:30 2011 +0200
 
     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 +++++++-
+ 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
@@ -5553,7 +8407,7 @@ Date:   Mon Sep 12 23:03:05 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=658856
 
- Makefile.am |    6 ------
+ Makefile.am | 6 ------
  1 file changed, 6 deletions(-)
 
 commit 24b920f9922e367bdb8b3e56c2f61e0c8f5cdb66
@@ -5562,7 +8416,7 @@ Date:   Tue Sep 13 16:20:48 2011 -0400
 
     cast params for PyObject_IsInstance to suppress warnings
 
- gi/_gobject/pygobject-private.h |    4 ++--
+ gi/_gobject/pygobject-private.h | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 861369ec59b17f67151813dc2e87c6e86126b954
@@ -5579,7 +8433,7 @@ Date:   Tue Sep 13 16:04:31 2011 -0400
        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 ++--
+ gi/_gobject/pygobject-private.h | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit eea93e89fb064253bd8903c8b453daf4b3c87c2c
@@ -5589,7 +8443,7 @@ 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 +++++++++++++++++++--
+ gi/pygi-marshal-from-py.c | 21 +++++++++++++++++++--
  1 file changed, 19 insertions(+), 2 deletions(-)
 
 commit a4e4318b50a24a688e32579273fbcfa51d1b422a
@@ -5634,7 +8488,7 @@ Date:   Fri Sep 9 16:50:25 2011 +0200
 
     Examples: fix cairo-demo.py imports
 
- examples/cairo-demo.py |    6 +++---
+ examples/cairo-demo.py | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit 3ca19fc13e6024fd04851e6f269020a92b09fa17
@@ -5646,7 +8500,7 @@ Date:   Fri Sep 9 15:08:27 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=658654
 
- pygobject-3.0-uninstalled.pc.in |   14 +++++++-------
+ pygobject-3.0-uninstalled.pc.in | 14 +++++++-------
  1 file changed, 7 insertions(+), 7 deletions(-)
 
 commit 6e773175b9d2f46b3df5075ec952a8c5aff3c607
@@ -5657,8 +8511,8 @@ Date:   Fri Sep 9 15:08:04 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=658654
 
- pygobject-3.0-uninstalled.pc.in |    6 ------
- pygobject-3.0.pc.in             |    5 +----
+ pygobject-3.0-uninstalled.pc.in | 6 ------
+ pygobject-3.0.pc.in             | 5 +----
  2 files changed, 1 insertion(+), 10 deletions(-)
 
 commit 81d388780311311d8dc4a027a59d114edf9a00fc
@@ -5669,8 +8523,8 @@ Date:   Fri Sep 9 14:57:58 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=658652
 
- docs/Makefile.am |    2 +-
- m4/python.m4     |    2 +-
+ docs/Makefile.am | 2 +-
+ m4/python.m4     | 2 +-
  2 files changed, 2 insertions(+), 2 deletions(-)
 
 commit 7e692ee061406e48e4862b98a0829650b1d6d585
@@ -5681,13 +8535,13 @@ Date:   Fri Sep 9 14:57:46 2011 +0200
 
     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 +-
+ 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
@@ -5698,9 +8552,9 @@ Date:   Fri Sep 9 14:57:36 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=658652
 
- gi/Makefile.am            |    2 --
- gi/overrides/Makefile.am  |    1 -
- gi/repository/Makefile.am |    1 -
+ gi/Makefile.am            | 2 --
+ gi/overrides/Makefile.am  | 1 -
+ gi/repository/Makefile.am | 1 -
  3 files changed, 4 deletions(-)
 
 commit db1e484bfa157967de55ee2e0e18a82b8e388b61
@@ -5711,8 +8565,8 @@ Date:   Fri Sep 9 14:57:25 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=658652
 
- gi/tests/Makefile.am |   24 ------------------------
- gi/tests/runtests.py |   21 ---------------------
+ gi/tests/Makefile.am | 24 ------------------------
+ gi/tests/runtests.py | 21 ---------------------
  2 files changed, 45 deletions(-)
 
 commit b0ecbf00138ef1147e478ebf3c66f0e9b3f85dfc
@@ -5724,9 +8578,9 @@ Date:   Fri Sep 9 14:55:25 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=658652
 
- Makefile.am |    2 +-
- autogen.sh  |   95
- +++++++----------------------------------------------------
+ Makefile.am |  2 +-
+ autogen.sh  | 95
+ +++++++------------------------------------------------------
  2 files changed, 12 insertions(+), 85 deletions(-)
 
 commit 4671f5397003f376f00830e3fd1c214de594619f
@@ -5737,8 +8591,8 @@ Date:   Fri Sep 9 14:55:01 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=658652
 
- configure.ac |    3 ++-
- m4/python.m4 |   47 +++++++++++++++++++++++++++++++++++++----------
+ configure.ac |  3 ++-
+ m4/python.m4 | 47 +++++++++++++++++++++++++++++++++++++----------
  2 files changed, 39 insertions(+), 11 deletions(-)
 
 commit 2c9fd09da196d35db968bff4ae63fcce2d891e69
@@ -5750,7 +8604,7 @@ Date:   Fri Sep 9 15:38:22 2011 +0100
     See
     http://blogs.gnome.org/desrt/2011/09/08/am_maintainer_mode-is-not-cool/
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit b24dcb415406668931e02a1f669ef9861bb3a660
@@ -5761,8 +8615,8 @@ Date:   Wed Aug 24 09:58:10 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=657054
 
- Makefile.am  |    2 +-
- configure.ac |   25 -------------------------
+ Makefile.am  |  2 +-
+ configure.ac | 25 -------------------------
  2 files changed, 1 insertion(+), 26 deletions(-)
 
 commit ecea2358a379c8ff44dff2f8f9c30a9092af1681
@@ -5773,7 +8627,7 @@ Date:   Wed Sep 7 10:38:28 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=657054
 
- docs/Makefile.am |    5 +++--
+ docs/Makefile.am | 5 +++--
  1 file changed, 3 insertions(+), 2 deletions(-)
 
 commit 8d3125c8ce9890c70400dd8a3ac273b590fe6a31
@@ -5789,13 +8643,13 @@ Date:   Tue Sep 6 22:22:11 2011 +0200
 
     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 --------------------------------
+ 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
@@ -5815,7 +8669,7 @@ Date:   Wed Sep 7 10:40:36 2011 +0200
     selecting
     the rotated text demo in the treeview.
 
- demos/gtk-demo/gtk-demo.py |    3 +++
+ demos/gtk-demo/gtk-demo.py | 3 +++
  1 file changed, 3 insertions(+)
 
 commit 31db3ed3d233bd495c3a2f99b3fa51031bfa30c6
@@ -5824,7 +8678,7 @@ Date:   Tue Sep 6 22:13:54 2011 +0200
 
     overrides: add constants for atoms
 
- gi/overrides/Gdk.py |   49
+ gi/overrides/Gdk.py | 49
  +++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 49 insertions(+)
 
@@ -5847,10 +8701,10 @@ Date:   Wed Aug 31 14:18:56 2011 +0200
 
     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 ---
+ 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
@@ -5859,7 +8713,7 @@ Date:   Wed Aug 31 18:00:44 2011 +0200
 
     post release version bump
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit ac5a0f46242abdd3cd98ec5f9f2bf8e5b05f3845
@@ -5868,7 +8722,7 @@ Date:   Wed Aug 31 17:58:37 2011 +0200
 
     Release 2.90.3
 
- NEWS |   12 ++++++++++++
+ NEWS | 12 ++++++++++++
  1 file changed, 12 insertions(+)
 
 commit 429569abddada5a3bad554de707ddf35b349936e
@@ -5884,11 +8738,11 @@ Date:   Thu Aug 25 13:57:53 2011 -0400
       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 ++++++++
+ 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
@@ -5897,7 +8751,7 @@ Date:   Tue Aug 2 12:05:12 2011 +0200
 
     Test GPtrArray regression
 
- tests/test_everything.py |    3 +++
+ tests/test_everything.py | 3 +++
  1 file changed, 3 insertions(+)
 
 commit 42fc9fa437102c882844a0e70a081ab08de92658
@@ -5912,13 +8766,13 @@ Date:   Fri Aug 26 10:53:43 2011 +0200
 
     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 -----
+ 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
@@ -5932,14 +8786,14 @@ Date:   Fri Aug 26 10:45:59 2011 +0200
 
     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 +++++++----------------
+ 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
@@ -5955,7 +8809,7 @@ Date:   Wed Aug 24 17:30:09 2011 -0500
 
     https://bugzilla.gnome.org/show_bug.cgi?id=657120
 
- gi/pygi-marshal-out.c |    8 +++++++-
+ gi/pygi-marshal-out.c | 8 +++++++-
  1 file changed, 7 insertions(+), 1 deletion(-)
 
 commit f38511f251602e18551c04617cc2e2d42e812e1e
@@ -5972,8 +8826,8 @@ Date:   Tue Aug 23 14:18:43 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=657120
 
- gi/pygi-marshal-out.c |   23 +++++++++--------------
- tests/test_gi.py      |    8 ++++++++
+ gi/pygi-marshal-out.c | 23 +++++++++--------------
+ tests/test_gi.py      |  8 ++++++++
  2 files changed, 17 insertions(+), 14 deletions(-)
 
 commit d92846a5446b0dd2e69c813f56224a1966ab1a33
@@ -5982,7 +8836,7 @@ 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 ++++----
+ demos/gtk-demo/demos/printing.py | 8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit 1aebc1565752840075027b9452fe2a67217bf53b
@@ -5992,7 +8846,7 @@ 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 ++++++++++----
+ demos/gtk-demo/demos/printing.py | 14 ++++++++++----
  1 file changed, 10 insertions(+), 4 deletions(-)
 
 commit 1f9e4486c5b84209ce0038887738fc16a4ef7da3
@@ -6001,7 +8855,7 @@ 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 +++++--
+ demos/gtk-demo/gtk-demo.py | 7 +++++--
  1 file changed, 5 insertions(+), 2 deletions(-)
 
 commit 971d063f7a36e13ef6621db7002b00af52f6292a
@@ -6011,7 +8865,7 @@ 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 +----
+ demos/gtk-demo/gtk-demo.py | 5 +----
  1 file changed, 1 insertion(+), 4 deletions(-)
 
 commit c2979a37d6d505095b6e55789150a6498d95819d
@@ -6026,7 +8880,7 @@ Date:   Mon Aug 22 14:22:18 2011 +0200
     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 +++++-
+ demos/gtk-demo/gtk-demo.py | 6 +++++-
  1 file changed, 5 insertions(+), 1 deletion(-)
 
 commit 9ea56535f35abbea4cd977dea4c89247e4b01694
@@ -6035,7 +8889,7 @@ Date:   Mon Aug 22 12:30:24 2011 +0200
 
     [gtk-demo] images.py: fix 'Insensitive 'button mnenomic
 
- demos/gtk-demo/demos/images.py |    2 +-
+ demos/gtk-demo/demos/images.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 7829dae1cdb8697a19c2b5e158ef0e08f6c2558b
@@ -6045,7 +8899,7 @@ 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 ++--
+ demos/gtk-demo/demos/printing.py | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 07f0274301d77d9bf62b49a14b059d9a52afb445
@@ -6054,7 +8908,7 @@ Date:   Mon Aug 22 10:37:08 2011 +0200
 
     [gtk-demo] printing.py: fix text file loading
 
- demos/gtk-demo/demos/printing.py |   32 ++++++++++++++++----------------
+ demos/gtk-demo/demos/printing.py | 32 ++++++++++++++++----------------
  1 file changed, 16 insertions(+), 16 deletions(-)
 
 commit 135148a4c35aac1d132b0b8fa3adbf1fdcdb3a24
@@ -6063,7 +8917,7 @@ Date:   Mon Aug 22 10:20:35 2011 +0200
 
     [gtk-demo] pixbuf.py: fix image loading
 
- demos/gtk-demo/demos/pixbuf.py |   25 +++++++++++--------------
+ demos/gtk-demo/demos/pixbuf.py | 25 +++++++++++--------------
  1 file changed, 11 insertions(+), 14 deletions(-)
 
 commit a93cae2c80e30a408f86e7e6c4d15a538011a189
@@ -6072,8 +8926,8 @@ Date:   Mon Aug 22 10:10:02 2011 +0200
 
     [gtk-demo] images.py: fix logo loading
 
- demos/gtk-demo/demos/images.py |   70
- +++++++++++++++++-----------------------
+ demos/gtk-demo/demos/images.py | 70
+ +++++++++++++++++-------------------------
  1 file changed, 29 insertions(+), 41 deletions(-)
 
 commit eddc0824e0e4c156fca5de05bdeb600c534d4b24
@@ -6082,7 +8936,7 @@ Date:   Wed Aug 24 12:19:21 2011 +0200
 
     [gtk-demo] appwindow.py: set AboutDialog parent
 
- demos/gtk-demo/demos/appwindow.py |    7 +++----
+ demos/gtk-demo/demos/appwindow.py | 7 +++----
  1 file changed, 3 insertions(+), 4 deletions(-)
 
 commit 7fe10a5b33148b1f029f3d34f76b7f880c1c2e7a
@@ -6091,7 +8945,7 @@ Date:   Mon Aug 22 07:58:25 2011 +0200
 
     [gtk-demo] appwindow.py: fix logo loading
 
- demos/gtk-demo/demos/appwindow.py |   10 +++-------
+ demos/gtk-demo/demos/appwindow.py | 10 +++-------
  1 file changed, 3 insertions(+), 7 deletions(-)
 
 commit 62fda288c1c37167c589e8e9d49ed625f770a98a
@@ -6100,7 +8954,7 @@ Date:   Mon Aug 22 07:57:31 2011 +0200
 
     [gtk-demo] appwindow.py: fix callback signatures
 
- demos/gtk-demo/demos/appwindow.py |    6 +++---
+ demos/gtk-demo/demos/appwindow.py | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit 87e9ab4d3a0aac4f4710aa0f8af0a1736f781ad9
@@ -6109,8 +8963,8 @@ 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 +-
+ 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
@@ -6120,7 +8974,7 @@ 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 +++---
+ demos/gtk-demo/demos/Icon View/iconviewedit.py | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit f29d3a85a275a39e8481484779264b0dea1160ab
@@ -6130,7 +8984,7 @@ 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 +++++++++++++++-----
+ demos/gtk-demo/gtk-demo.py | 20 +++++++++++++++-----
  1 file changed, 15 insertions(+), 5 deletions(-)
 
 commit ecd1eb00b19733da3f2e3d7935792378f34cab19
@@ -6139,17 +8993,17 @@ 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 ++
+ 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
@@ -6158,17 +9012,17 @@ 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 -
+ 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
@@ -6178,8 +9032,8 @@ 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
- ++++++++++++++++++++++++++++++++++++++------
+ demos/gtk-demo/gtk-demo.py | 116
+ +++++++++++++++++++++++++++++++++++++++------
  1 file changed, 101 insertions(+), 15 deletions(-)
 
 commit 250c36f4a8352ff1b31c1c85b156d3e803d4b8ef
@@ -6188,7 +9042,7 @@ Date:   Fri Aug 19 15:08:15 2011 +0200
 
     [gtk-demo] remove C-isms
 
- demos/gtk-demo/gtk-demo.py |   28 ++++++++++++++--------------
+ demos/gtk-demo/gtk-demo.py | 28 ++++++++++++++--------------
  1 file changed, 14 insertions(+), 14 deletions(-)
 
 commit cf35fe8e259e786d0fa21b08b1f5c64c9bb0a84e
@@ -6197,7 +9051,7 @@ 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 ++--
+ demos/gtk-demo/gtk-demo.py | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 241827208e25c72a990d8edd95a3b879470d6409
@@ -6210,8 +9064,8 @@ Date:   Fri Aug 19 14:40:56 2011 +0200
     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
- ++++++++++++++++++++------------------------
+ demos/gtk-demo/gtk-demo.py | 151
+ +++++++++++++++++++++------------------------
  1 file changed, 70 insertions(+), 81 deletions(-)
 
 commit 58797c355a08a35375988881a17958bb42ad54bb
@@ -6221,7 +9075,7 @@ 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
+ demos/gtk-demo/gtk-demo.py | 43
  ++++++++++++++++++++++++++-----------------
  1 file changed, 26 insertions(+), 17 deletions(-)
 
@@ -6231,7 +9085,7 @@ 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 +++++++++++++++++++++++----------------
+ demos/gtk-demo/gtk-demo.py | 39 +++++++++++++++++++++++----------------
  1 file changed, 23 insertions(+), 16 deletions(-)
 
 commit 6ffc999fbd4c9990fb5bde53ddd46d139b53245e
@@ -6240,7 +9094,7 @@ Date:   Fri Aug 19 11:02:35 2011 +0200
 
     [gtk-demo] drawingarea: fix labels
 
- demos/gtk-demo/demos/drawingarea.py |    4 ++--
+ demos/gtk-demo/demos/drawingarea.py | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 9fd3986affe11cbc5a816adcccdc56d0592f3618
@@ -6249,9 +9103,9 @@ 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 ++++----
+ 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
@@ -6260,7 +9114,7 @@ Date:   Fri Aug 19 10:07:14 2011 +0200
 
     [gtk-demo] fix shebang
 
- demos/gtk-demo/gtk-demo.py |    2 +-
+ demos/gtk-demo/gtk-demo.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 01142060ae7d71a8a1f7d3e9bbc6f52e65f01c8d
@@ -6272,9 +9126,9 @@ Date:   Fri Aug 19 12:27:04 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=656891
 
- gi/overrides/Gtk.py     |   26 +++++++++++++++++++--
- tests/test_overrides.py |   57
- +++++++++++++++++++++++++++++++++++++++++++++++
+ gi/overrides/Gtk.py     | 26 ++++++++++++++++++++--
+ tests/test_overrides.py | 57
+ +++++++++++++++++++++++++++++++++++++++++++++++++
  2 files changed, 81 insertions(+), 2 deletions(-)
 
 commit d6da96c65b2ed3cda238886990a624fbc31f6987
@@ -6283,7 +9137,7 @@ Date:   Wed Aug 24 16:31:12 2011 +0200
 
     Convert ACCEL_* constants into Gtk.AccelFlags.
 
- pygi-convert.sh |    1 +
+ pygi-convert.sh | 1 +
  1 file changed, 1 insertion(+)
 
 commit 0841d41698302abb5d987849a5874252564ed428
@@ -6292,7 +9146,7 @@ Date:   Wed Aug 24 16:22:17 2011 +0200
 
     Convert TREE_VIEW_DROP_* constants into Gtk.TreeViewDropPosition
 
- pygi-convert.sh |    1 +
+ pygi-convert.sh | 1 +
  1 file changed, 1 insertion(+)
 
 commit 37b0d0f9dc3d485829cae6e50da369fdea91a2d1
@@ -6301,7 +9155,7 @@ Date:   Thu Aug 18 14:06:32 2011 -0400
 
     post commit version bump
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit e51efc50835a14e0418cc27cc928c52d1aa6a3cf
@@ -6310,7 +9164,7 @@ Date:   Thu Aug 18 14:02:30 2011 -0400
 
     release 2.90.2
 
- NEWS |   10 ++++++++++
+ NEWS | 10 ++++++++++
  1 file changed, 10 insertions(+)
 
 commit 74c727b53fcf64f465ee77b5a1ea04a69ca90968
@@ -6319,7 +9173,7 @@ Date:   Thu Aug 18 13:50:51 2011 -0400
 
     remove tests that were removed from gi
 
- tests/test_gi.py |   11 -----------
+ tests/test_gi.py | 11 -----------
  1 file changed, 11 deletions(-)
 
 commit 11ea24dd30d8eeca11c8433c6bd75b06e52ae1ef
@@ -6332,7 +9186,7 @@ Date:   Thu Aug 18 13:48:57 2011 -0400
        arrays causes a crash in the tests because of this
      * disregaurd is_pointer when cacluating item sizes
 
- gi/pygi-info.c |    8 ++------
+ gi/pygi-info.c | 8 ++------
  1 file changed, 2 insertions(+), 6 deletions(-)
 
 commit 493b4a21dd162d78cf572b548b58ba6a9ff22971
@@ -6343,7 +9197,7 @@ Date:   Wed Jul 6 01:50:31 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=654162
 
- examples/signal.py |    9 ++++-----
+ examples/signal.py | 9 ++++-----
  1 file changed, 4 insertions(+), 5 deletions(-)
 
 commit 0332010e704e253380e993874eab9dd122e59a7e
@@ -6354,7 +9208,7 @@ Date:   Wed Jul 6 01:54:50 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=654162
 
- examples/properties.py |   14 +++++++-------
+ examples/properties.py | 14 +++++++-------
  1 file changed, 7 insertions(+), 7 deletions(-)
 
 commit c39f4555ebd703651eca6f978ed9870655b737f0
@@ -6369,9 +9223,9 @@ Date:   Fri Aug 12 22:55:02 2011 +0200
     generating
     introspection XML for exported DBus server objects.
 
- gi/overrides/GLib.py    |   50
- +++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_overrides.py |   22 +++++++++++++++++++++
+ gi/overrides/GLib.py    | 50
+ +++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_overrides.py | 22 ++++++++++++++++++++++
  2 files changed, 72 insertions(+)
 
 commit 735f98d83c1c19df7457aa32a378e8c80cf2831f
@@ -6382,7 +9236,7 @@ Date:   Mon Aug 15 18:58:31 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=654001
 
- pygi-convert.sh |    2 ++
+ pygi-convert.sh | 2 ++
  1 file changed, 2 insertions(+)
 
 commit d0a96a0a75f2bc969522abce2d326ef440cf143a
@@ -6393,9 +9247,9 @@ Date:   Mon Aug 15 13:12:49 2011 +0200
 
     This is needed by libpeas.
 
- gi/_gobject/Makefile.am         |    5 ++++-
- pygobject-3.0-uninstalled.pc.in |    4 ++--
- pygobject-3.0.pc.in             |    6 +++---
+ 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
@@ -6404,7 +9258,7 @@ Date:   Sun Aug 14 11:20:15 2011 -0400
 
     update the doap file
 
- pygobject.doap |   26 ++++++++++++++------------
+ pygobject.doap | 26 ++++++++++++++------------
  1 file changed, 14 insertions(+), 12 deletions(-)
 
 commit 762a36d2343bc39a502507d600fd1b9db9649dae
@@ -6413,7 +9267,7 @@ Date:   Sun Aug 14 11:13:25 2011 -0400
 
     prerelease bump
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit d3f85a61ec4b1a1d04838f73dc8d862258150048
@@ -6422,8 +9276,8 @@ Date:   Sun Aug 14 10:13:37 2011 -0400
 
     get things ready for release
 
- NEWS |  194
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ NEWS | 194
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 194 insertions(+)
 
 commit ffd057649380d4249c1c52e1225e3646f3994bc6
@@ -6432,7 +9286,7 @@ Date:   Sun Aug 14 05:26:18 2011 -0400
 
     pass exta keywords to the Box constructor
 
- gi/overrides/Gtk.py |    4 ++--
+ gi/overrides/Gtk.py | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit cadbd4142bd0045368b5123d4b0a1876bdd5d798
@@ -6441,9 +9295,9 @@ 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
- +++++++++++++++++++++++++++++++++++++++++++++--
+ gi/overrides/Gtk.py     |  50 ++++++++++++++++++++++++
+ tests/test_overrides.py | 102
+ ++++++++++++++++++++++++++++++++++++++++++++++--
  2 files changed, 149 insertions(+), 3 deletions(-)
 
 commit 9ee9b22bd95e44bd2eca26e7bf3b0a9a988700c5
@@ -6452,7 +9306,7 @@ Date:   Sat Aug 13 09:19:29 2011 -0400
 
     add test for object arrays
 
- tests/test_everything.py |    6 ++++++
+ tests/test_everything.py | 6 ++++++
  1 file changed, 6 insertions(+)
 
 commit c9d9ffd0380878792cbdb13dec4e53be897e5fbc
@@ -6467,8 +9321,8 @@ Date:   Sat Aug 13 08:46:18 2011 -0400
       prevelant
       it has been decided to only support those arrays
 
- gi/pygi-marshal-out.c |    2 +-
- tests/test_gi.py      |    8 --------
+ gi/pygi-marshal-out.c | 2 +-
+ tests/test_gi.py      | 8 --------
  2 files changed, 1 insertion(+), 9 deletions(-)
 
 commit b12379de1790b72d51883bf7b63c892639a892e7
@@ -6477,7 +9331,7 @@ Date:   Sat Aug 13 06:31:52 2011 -0400
 
     revert Gtk.Window override because it causes issues with subclasses
 
- gi/overrides/Gtk.py |    9 ---------
+ gi/overrides/Gtk.py | 9 ---------
  1 file changed, 9 deletions(-)
 
 commit 3e64a62d6d7f9e9d2820aad54187ef9c34710a1f
@@ -6486,7 +9340,7 @@ Date:   Thu Apr 7 21:05:32 2011 +1000
 
     take GIL in _pygi_invoke_closure_free (bug #647016)
 
- gi/pygi-closure.c |    3 +++
+ gi/pygi-closure.c | 3 +++
  1 file changed, 3 insertions(+)
 
 commit f8de9b8615f5dc30f492781d792aef5fc1e9ab73
@@ -6497,7 +9351,7 @@ Date:   Mon Jun 27 00:41:24 2011 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=653462
 
- gi/overrides/Gtk.py |    3 +++
+ gi/overrides/Gtk.py | 3 +++
  1 file changed, 3 insertions(+)
 
 commit 583d0b3c6b53712128d7c2d5f075000a2a76ae5f
@@ -6512,7 +9366,7 @@ Date:   Mon Jun 27 00:40:12 2011 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=653462
 
- gi/overrides/Gtk.py |    3 +++
+ gi/overrides/Gtk.py | 3 +++
  1 file changed, 3 insertions(+)
 
 commit 017fdfc1dd06259006719e02ffa48883cee01ffd
@@ -6526,7 +9380,7 @@ Date:   Mon Jun 27 00:39:41 2011 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=653462
 
- gi/overrides/Gtk.py |   40 ++++++++++++++++++++++++++++++++++++++++
+ gi/overrides/Gtk.py | 40 ++++++++++++++++++++++++++++++++++++++++
  1 file changed, 40 insertions(+)
 
 commit af8bc9d5cdba48a7ee728ccb7ea9039df3ecceba
@@ -6540,7 +9394,7 @@ Date:   Mon Jun 27 00:38:30 2011 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=653462
 
- gi/overrides/Gtk.py |   15 ++++++++++++---
+ gi/overrides/Gtk.py | 15 ++++++++++++---
  1 file changed, 12 insertions(+), 3 deletions(-)
 
 commit 7914d814350af1a18bdeda64f049c8e9a68d1d18
@@ -6551,7 +9405,7 @@ Date:   Mon Jun 27 00:38:20 2011 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=653462
 
- gi/overrides/Gtk.py |    3 +++
+ gi/overrides/Gtk.py | 3 +++
  1 file changed, 3 insertions(+)
 
 commit 5b1c875269b7979caae97e84919a690a34d92f29
@@ -6568,7 +9422,7 @@ Date:   Mon Jun 27 00:36:20 2011 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=653462
 
- gi/overrides/Gdk.py |    8 ++++++++
+ gi/overrides/Gdk.py | 8 ++++++++
  1 file changed, 8 insertions(+)
 
 commit 187a2932bbf1e724f759ff3ed3392fc7341c6aa8
@@ -6579,13 +9433,13 @@ Date:   Mon Aug 8 12:06:18 2011 +0200
 
     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 +++++++++++++++++
+ 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
@@ -6594,7 +9448,7 @@ Date:   Sat Aug 13 04:13:28 2011 -0400
 
     remove references to deprecated GI_INFO_TYPE_ERROR_DOMAIN
 
- gi/pygi-info.c |    5 -----
+ gi/pygi-info.c | 5 -----
  1 file changed, 5 deletions(-)
 
 commit 745001178fc72be5626c7211366d694f41162987
@@ -6607,7 +9461,7 @@ Date:   Thu Aug 11 15:11:42 2011 +0200
     works. Also
     update the warning to explain how to fix the problem.
 
- gi/_gobject/__init__.py |    8 ++++----
+ gi/_gobject/__init__.py | 8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit 25d2d05cba05414cd4551e0e06f6286a9b97a509
@@ -6620,9 +9474,9 @@ Date:   Fri Jul 22 15:46:31 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642048
 
- gi/importer.py |   11 +++---
- gi/module.py   |  118
- ++++++++++++++++++++++++++++----------------------------
+ gi/importer.py |  11 +++---
+ gi/module.py   | 118
+ ++++++++++++++++++++++++++++-----------------------------
  2 files changed, 64 insertions(+), 65 deletions(-)
 
 commit 698b2284e29c0f699198cf6a22eeb0e399daba6e
@@ -6633,7 +9487,7 @@ Date:   Fri Jul 22 15:45:09 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642048
 
- gi/__init__.py |    2 +-
+ gi/__init__.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 7b068ebe59884ebd9aeb4425dc80cdff73a66fb1
@@ -6644,12 +9498,12 @@ Date:   Fri Jul 22 14:13:02 2011 -0400
 
     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 ++--
+ 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
@@ -6660,8 +9514,8 @@ Date:   Fri Jul 22 14:11:53 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642048
 
- gi/importer.py |    7 +++++--
- gi/module.py   |   32 +++++++++++++++++++++++++++++---
+ gi/importer.py |  7 +++++--
+ gi/module.py   | 32 +++++++++++++++++++++++++++++---
  2 files changed, 34 insertions(+), 5 deletions(-)
 
 commit fbd4a8263260c187211799454c08b1e55e2cb998
@@ -6672,13 +9526,13 @@ Date:   Fri Jul 22 12:27:41 2011 -0400
 
     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 +++++++-------
+ 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
@@ -6689,9 +9543,9 @@ Date:   Fri Jul 22 12:26:32 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642048
 
- gi/Makefile.am          |    2 +-
- gi/_glib/Makefile.am    |   10 +++++-----
- gi/_gobject/Makefile.am |    2 +-
+ gi/Makefile.am          |  2 +-
+ gi/_glib/Makefile.am    | 10 +++++-----
+ gi/_gobject/Makefile.am |  2 +-
  3 files changed, 7 insertions(+), 7 deletions(-)
 
 commit b8700451acd4a19b59b64fc8641fca748d2189e2
@@ -6709,22 +9563,22 @@ Date:   Fri Jul 22 11:20:09 2011 -0400
 
     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 ++--
+ 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
@@ -6735,10 +9589,10 @@ Date:   Fri Jul 22 11:16:00 2011 -0400
 
     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 +++++++++---------
+ 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
@@ -6754,12 +9608,12 @@ Date:   Fri Jul 22 11:10:46 2011 -0400
 
     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 +-
+ 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
@@ -6770,12 +9624,12 @@ Date:   Fri Jul 22 11:07:10 2011 -0400
 
     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 ++++++------
+ 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
@@ -6900,9 +9754,9 @@ Date:   Mon Jul 18 18:46:31 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642048
 
- Makefile.am |    5 ----
- pygtk.py    |   95
- -----------------------------------------------------------
+ Makefile.am |  5 ----
+ pygtk.py    | 95
+ -------------------------------------------------------------
  2 files changed, 100 deletions(-)
 
 commit 75e9f7d80d9224c05e6063b88479f1baee48c489
@@ -6913,11 +9767,11 @@ Date:   Mon Jul 18 18:41:41 2011 -0400
 
     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 +------
+ 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
@@ -6928,12 +9782,12 @@ Date:   Mon Jul 18 18:28:50 2011 -0400
 
     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 ++++++++++++++++++++++
+ 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
@@ -6945,7 +9799,7 @@ Date:   Thu Aug 11 09:53:15 2011 +0200
     Callbacks still use GIArgument, add missing GVariant support for
     return types.
 
- gi/pygi-argument.c |    6 ++++--
+ gi/pygi-argument.c | 6 ++++--
  1 file changed, 4 insertions(+), 2 deletions(-)
 
 commit 18a240cc492d2e5ebe2709a0d7155e27c8ff9e63
@@ -6958,7 +9812,7 @@ Date:   Wed Aug 10 14:11:10 2011 +0200
     is the
     equivalent of what commit 9d5604220bd56 did for pygi_marshall_*().
 
- gi/pygi-argument.c |    7 +++++++
+ gi/pygi-argument.c | 7 +++++++
  1 file changed, 7 insertions(+)
 
 commit aa820d6ce2fee83e61e3e9de7c6b7d2452e2847d
@@ -6968,7 +9822,7 @@ 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 +++-
+ gi/pygi-invoke.c | 4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)
 
 commit eaad9f3c71cedfe28ff2d2bb05ea6c64e323715f
@@ -6978,8 +9832,8 @@ 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 +-
+ gi/pygi-invoke.c | 32 ++++++++++++++++++--------------
+ gi/types.py      |  2 +-
  2 files changed, 19 insertions(+), 15 deletions(-)
 
 commit 76edfd0d5776f61c92c84fd9fb8dcc246c580e93
@@ -7025,10 +9879,10 @@ 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 --
+ 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
@@ -7037,11 +9891,11 @@ 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
- +++++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/Makefile.am      |   3 +-
+ gi/pygi-invoke-ng.c | 464
+ ----------------------------------------------------
+ gi/pygi-invoke.c    | 464
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++
  3 files changed, 466 insertions(+), 465 deletions(-)
 
 commit 62d59fa2c2b31d7a3cac8996d58234d4b13bb19f
@@ -7095,7 +9949,7 @@ 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 +
+ tests/Makefile.am | 1 +
  1 file changed, 1 insertion(+)
 
 commit e024e832ab9c82d3e299cc6e1cb427de44f2d16e
@@ -7104,8 +9958,8 @@ 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
- ++++++++++++++++++++++++++++++++-------------------
+ gi/pygi-invoke-ng.c | 78
+ +++++++++++++++++++++++++++++++++--------------------
  1 file changed, 49 insertions(+), 29 deletions(-)
 
 commit fc8b8ce768ac780f7ed9edc63b70dd35194153c0
@@ -7114,7 +9968,7 @@ Date:   Wed Jul 13 15:42:26 2011 -0400
 
     [invoke] missed a bit when removing constructor_class usage
 
- gi/pygi-invoke-ng.c |    2 +-
+ gi/pygi-invoke-ng.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit c94bcf4ae7e36f90c356c89712b00609f9f849bd
@@ -7123,8 +9977,8 @@ 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 -
+ gi/pygi-invoke-ng.c           | 11 +++++------
+ gi/pygi-invoke-state-struct.h |  1 -
  2 files changed, 5 insertions(+), 7 deletions(-)
 
 commit c11d3195f324ea41e86e3da7ff99b55425c2faec
@@ -7139,7 +9993,7 @@ Date:   Wed Jul 13 10:40:25 2011 +0200
     completely with
     Python 3. Rewrite it to use gi.repository.Gio.
 
- tests/test_properties.py |   38 +++++++++++++++++++-------------------
+ tests/test_properties.py | 38 +++++++++++++++++++-------------------
  1 file changed, 19 insertions(+), 19 deletions(-)
 
 commit 8f89ff24fcac627ce15ca93038711fded1a7c5ed
@@ -7152,7 +10006,7 @@ Date:   Wed Jul 13 08:42:22 2011 +0200
     str method.
     This unbreaks gi/module.py for Python 3 again.
 
- gi/module.py |    8 ++++++--
+ gi/module.py | 8 ++++++--
  1 file changed, 6 insertions(+), 2 deletions(-)
 
 commit 20aea4b052126fa0bface3e6e0dccfd77f9505b1
@@ -7161,8 +10015,8 @@ Date:   Fri Jul 8 14:39:22 2011 -0400
 
     [caching] remove all inline compiler flags
 
- gi/pygi-cache.c |   96
- +++++++++++++++++++++++++++----------------------------
+ gi/pygi-cache.c | 96
+ ++++++++++++++++++++++++++++-----------------------------
  1 file changed, 48 insertions(+), 48 deletions(-)
 
 commit bf7bb79b66ad406063fb443e7452d830c55986ef
@@ -7171,8 +10025,8 @@ Date:   Fri Jul 8 14:35:20 2011 -0400
 
     [caching] refactor function names to be less confusing
 
- gi/pygi-cache.c |  307
- +++++++++++++++++++++++++++----------------------------
+ gi/pygi-cache.c | 307
+ +++++++++++++++++++++++++++-----------------------------
  1 file changed, 150 insertions(+), 157 deletions(-)
 
 commit c167a9345b01c070bd5a84b4a4b3a53baf9e217d
@@ -7193,7 +10047,7 @@ Date:   Fri Jul 8 11:24:09 2011 -0400
     NO_SEPARATOR
       flag
 
- gi/overrides/Gtk.py |   13 ++++++++-----
+ gi/overrides/Gtk.py | 13 ++++++++-----
  1 file changed, 8 insertions(+), 5 deletions(-)
 
 commit 367e4ededd4a45125157050bcc9e4e685fd4a82d
@@ -7206,7 +10060,7 @@ Date:   Fri Jul 8 10:15:53 2011 +0200
     loop was
     never quit when the call failed.
 
- tests/test_gdbus.py |    6 ++++--
+ tests/test_gdbus.py | 6 ++++--
  1 file changed, 4 insertions(+), 2 deletions(-)
 
 commit 11b578400cbf9f7c270b662a5e8953ccd466e5ef
@@ -7215,10 +10069,10 @@ 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 ++---
+ 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
@@ -7227,11 +10081,11 @@ 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 +++++-----
+ 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
@@ -7242,7 +10096,7 @@ Date:   Thu Jul 7 10:59:08 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=653844
 
- examples/cairo-demo.py |    6 ++----
+ examples/cairo-demo.py | 6 ++----
  1 file changed, 2 insertions(+), 4 deletions(-)
 
 commit a606bab1ddc605167f2e9dc7c46c8f929fdce23b
@@ -7253,8 +10107,8 @@ Date:   Tue Jul 5 14:28:20 2011 -0700
 
     https://bugzilla.gnome.org/show_bug.cgi?id=654056
 
- gi/overrides/Gtk.py     |    8 ++++++++
- tests/test_overrides.py |   13 ++++++++++++-
+ gi/overrides/Gtk.py     |  8 ++++++++
+ tests/test_overrides.py | 13 ++++++++++++-
  2 files changed, 20 insertions(+), 1 deletion(-)
 
 commit fc5c869486c7f6929e285ea7a86623ec41ecd9bd
@@ -7297,7 +10151,7 @@ Date:   Thu Jul 7 13:39:19 2011 +0200
     Gtk.main()
     -------------- 8< -----------------
 
- gi/overrides/Gtk.py |  10 ++++++++--
+ gi/overrides/Gtk.py | 10 ++++++++--
  1 file changed, 8 insertions(+), 2 deletions(-)
 
 commit 5c04fc5b2ca7e262c052426d5863d69d0c4a24da
@@ -7306,10 +10160,10 @@ 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 +++---
+ 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
@@ -7318,7 +10172,7 @@ 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 -
+ gi/pygi-cache.h | 1 -
  1 file changed, 1 deletion(-)
 
 commit 433e0fb259047d8c81e5949a31abb5e0feefd27b
@@ -7329,7 +10183,7 @@ Date:    Thu May 12 18:53:06 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=647581
 
- gi/pygi-argument.c |   2 ++
+ gi/pygi-argument.c | 2 ++
  1 file changed, 2 insertions(+)
 
 commit 38cca3c14e79fbc383e3fc65a120bee03714b99f
@@ -7338,7 +10192,7 @@ 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 +-
+ gi/pygi-foreign-cairo.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 9ae43fdbcc547eb1e3c61bf9545da40555b2e2c6
@@ -7347,7 +10201,7 @@ 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 +-
+ gi/pygi-foreign-cairo.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit d3ee40b36b1718e6fb4544dbe07e291138ea1eb9
@@ -7356,7 +10210,7 @@ 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 +-
+ gi/pygi-argument.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 49dc98eb9339ea64355cd752ca000c79da56f3a2
@@ -7365,7 +10219,7 @@ Date:    Wed Jun 29 18:01:44 2011 -0400
 
     [gi] handle marshalling gerrors arguments for signals
 
- gi/pygi-argument.c |  18 ++++++++++++++++--
+ gi/pygi-argument.c | 18 ++++++++++++++++--
  1 file changed, 16 insertions(+), 2 deletions(-)
 
 commit db9419fcef628e9ffee10591156007ea9c0bc1f0
@@ -7375,7 +10229,7 @@ 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 +++---
+ gi/pygi-cache.c | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit 9027e1a20fd06df5c26edcec1893ef0814ec938a
@@ -7387,7 +10241,7 @@ Date:    Tue Jun 28 18:21:55 2011 -0400
       * make sure we can store a custom GObject as a PyObject inside of
       a TreeModel
 
- tests/test_overrides.py |   26 +++++++++++++++-----------
+ tests/test_overrides.py | 26 +++++++++++++++-----------
  1 file changed, 15 insertions(+), 11 deletions(-)
 
 commit b6842e4b2a28733e143d4022864041ca82e91f7a
@@ -7399,8 +10253,8 @@ Date:    Tue Jun 28 18:13:38 2011 -0400
      * box the PYGOBJECT in a GValue so we can store PyGObjects in a
      TreeModel row
 
- gi/overrides/Gtk.py |   7 ++++---
- gobject/pygtype.c   |   7 ++++---
+ gi/overrides/Gtk.py | 7 ++++---
+ gobject/pygtype.c   | 7 ++++---
  2 files changed, 8 insertions(+), 6 deletions(-)
 
 commit 7fc9d45860210fd9d333fd3769c6cf93a6a20eb6
@@ -7409,7 +10263,7 @@ 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 ++++++++++++++++++---
+ gi/pygi-marshal.c | 21 ++++++++++++++++++---
  1 file changed, 18 insertions(+), 3 deletions(-)
 
 commit 8d60c0bc7b327aa757a8727f1146f02cc0b78af8
@@ -7422,7 +10276,7 @@ Date:    Tue Jun 28 13:54:48 2011 -0400
      importing 2.0
        which is not supported
 
- gi/overrides/Gtk.py |  12 ++++++++++++
+ gi/overrides/Gtk.py | 12 ++++++++++++
  1 file changed, 12 insertions(+)
 
 commit 7c589c0c1de1a786e00685afd5292b6fb1f93ed3
@@ -7448,7 +10302,7 @@ Date:    Tue Jun 28 13:08:49 2011 -0400
        dict
        to avoid name clashing
 
- gi/overrides/Gtk.py |   5 +++++
+ gi/overrides/Gtk.py | 5 +++++
  1 file changed, 5 insertions(+)
 
 commit 2aa12267bee91aa696633a0cea2a0accae09250a
@@ -7459,8 +10313,8 @@ Date:    Mon Jun 27 10:56:20 2011 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=653488
 
- gobject/propertyhelper.py |   23 ++++++++++++++++-------
- tests/test_properties.py  |   40 ++++++++++++++++++++++++++++++++++++----
+ gobject/propertyhelper.py | 23 ++++++++++++++++-------
+ tests/test_properties.py  | 40 ++++++++++++++++++++++++++++++++++++----
  2 files changed, 52 insertions(+), 11 deletions(-)
 
 commit dc62e67b447ef526a6f2d1aa8648ad101d95024b
@@ -7471,8 +10325,8 @@ Date:    Mon Jun 27 10:56:20 2011 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=653488
 
- gobject/propertyhelper.py |   23 ++++++++++++++++-------
- tests/test_properties.py  |   40 ++++++++++++++++++++++++++++++++++++----
+ gobject/propertyhelper.py | 23 ++++++++++++++++-------
+ tests/test_properties.py  | 40 ++++++++++++++++++++++++++++++++++++----
  2 files changed, 52 insertions(+), 11 deletions(-)
 
 commit 50cfccb5801c1b9a0a42ffe2826cd245f21fd88d
@@ -7482,8 +10336,8 @@ 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 ++
+ gi/pygi-invoke-ng.c      | 2 ++
+ gi/pygi-marshal-cleanup.c | 2 ++
  2 files changed, 4 insertions(+)
 
 commit eff65cd2ce490296865441c3c78b7846f380459c
@@ -7493,8 +10347,8 @@ 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
- +++++++++++++++++++++++++++++++++++++++++------------
+ gi/pygi-marshal.c | 56
+ +++++++++++++++++++++++++++++++++++++++++++------------
  1 file changed, 44 insertions(+), 12 deletions(-)
 
 commit 05ed688d54e3ff04e961b60d0b5d3ed0b97c771d
@@ -7504,7 +10358,7 @@ 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 ++++--
+ gi/pygi-cache.c | 6 ++++--
  1 file changed, 4 insertions(+), 2 deletions(-)
 
 commit 4fd957a5de364c0588168dee15e1e61d4f12e173
@@ -7513,7 +10367,7 @@ Date:    Fri Jun 17 17:07:56 2011 -0400
 
     [gi-invoke-ng] handle in pointer array marshalling
 
- gi/pygi-marshal.c |   28 ++++++++++++++++++++++------
+ gi/pygi-marshal.c | 28 ++++++++++++++++++++++------
  1 file changed, 22 insertions(+), 6 deletions(-)
 
 commit df3911ad2ce83af9bf9679ed1b221847b23ba2de
@@ -7522,7 +10376,7 @@ Date:    Fri Jun 10 08:44:04 2011 +0300
 
     Adding GPtrArray tests
 
- tests/test_gi.py |   43 ++++++++++++++++++++++++++++++++++++++++++-
+ tests/test_gi.py | 43 ++++++++++++++++++++++++++++++++++++++++++-
  1 file changed, 42 insertions(+), 1 deletion(-)
 
 commit e32c2be53175014399d89e1e85c9afc6e53c94be
@@ -7535,7 +10389,7 @@ Date:    Fri Jun 17 11:32:28 2011 -0400
       relying on the size of GIArgument
     * special case GPtrArrays
 
- gi/pygi-marshal.c |   27 +++++++++------------------
+ gi/pygi-marshal.c | 27 +++++++++------------------
  1 file changed, 9 insertions(+), 18 deletions(-)
 
 commit 6e8dc28cb261cafbfed40fc0797a0dd5f91f497b
@@ -7545,7 +10399,7 @@ 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 +-
+ gi/pygi-marshal-cleanup.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit af7c93ea98b7f492eef265e58c8b3c878805524f
@@ -7557,8 +10411,8 @@ Date:    Wed Jun 15 12:06:47 2011 -0400
 
     * init is now skipped in the gir
 
- gi/overrides/GLib.py   |   18 ++++++++----------
- tests/test_overrides.py |    6 ++----
+ gi/overrides/GLib.py   | 18 ++++++++----------
+ tests/test_overrides.py |  6 ++----
  2 files changed, 10 insertions(+), 14 deletions(-)
 
 commit c6112307f29f9a850e6e9efa5f55d5d4a363c6b0
@@ -7567,7 +10421,7 @@ Date:    Wed Jun 15 11:42:45 2011 -0400
 
     [gi-invoke-ng] actual code to import overrides
 
- gi/pygi-cache.c |    7 +------
+ gi/pygi-cache.c | 7 +------
  1 file changed, 1 insertion(+), 6 deletions(-)
 
 commit 902575d857beffb14e56821ea8a52f705385f6bb
@@ -7576,7 +10430,7 @@ Date:    Wed Jun 15 11:25:10 2011 -0400
 
     [gi-invoke-ng] import pytypes so we get overrides
 
- gi/pygi-marshal.c |   4 +++-
+ gi/pygi-marshal.c | 4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)
 
 commit 9d5604220bd56ae2708e9b74122c14208e0a30b4
@@ -7585,7 +10439,7 @@ 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 ++++++-
+ gi/pygi-marshal.c | 7 ++++++-
  1 file changed, 6 insertions(+), 1 deletion(-)
 
 commit c1f5651062687e800a52b5d8d16c88c0acde2934
@@ -7594,7 +10448,7 @@ 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 ++++++++++++++++--------
+ gi/pygi-marshal-cleanup.c | 24 ++++++++++++++++--------
  1 file changed, 16 insertions(+), 8 deletions(-)
 
 commit fbf5382fbc1aed49ed491d2255d616a1643a45fc
@@ -7617,7 +10471,7 @@ Date:    Fri Jun 10 14:01:32 2011 +0200
 
     closure: avoid double free crash
 
- gi/pygi-closure.c |   12 ++++--------
+ gi/pygi-closure.c | 12 ++++--------
  1 file changed, 4 insertions(+), 8 deletions(-)
 
 commit 929f4236f2b8601e7960a4a7b0a860d976ad83c6
@@ -7629,8 +10483,8 @@ Date:    Fri Jun 3 23:11:17 2011 -0700
     Call Gdk.Color.equal and Gdk.RGBA.equal when
     == equality testing is used.
 
- gi/overrides/Gdk.py    |    6 ++++++
- tests/test_overrides.py |    4 ++++
+ gi/overrides/Gdk.py    | 6 ++++++
+ tests/test_overrides.py | 4 ++++
  2 files changed, 10 insertions(+)
 
 commit dff5961ba229c7c34bd7b0a18a446b56bbe39e3a
@@ -7639,7 +10493,7 @@ 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 +++
+ gi/pygi-closure.c | 3 +++
  1 file changed, 3 insertions(+)
 
 commit d7d178206bfbb0858556fcfd6c9ca8eefda3fdf5
@@ -7648,7 +10502,7 @@ Date:    Wed Jun 8 09:47:20 2011 +0200
 
     Use constants instead of literals
 
- tests/test_overrides.py |    8 ++++----
+ tests/test_overrides.py | 8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit fe386a0ad548a23e30e9cb947bfa2198fb48ef29
@@ -7659,8 +10513,8 @@ Date:    Mon Jun 6 19:07:22 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=647509
 
- gi/pygi-argument.c |   8 ++++----
- gi/pygi-invoke.c   |  20 +++++++++++++-------
+ gi/pygi-argument.c |  8 ++++----
+ gi/pygi-invoke.c   | 20 +++++++++++++-------
  2 files changed, 17 insertions(+), 11 deletions(-)
 
 commit bd7b8d96a7420522c1fdc127ef8cfb7d6e8a1b31
@@ -7671,7 +10525,7 @@ Date:    Mon Jun 6 19:05:07 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=647509
 
- gi/gimodule.c |    2 +-
+ gi/gimodule.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 2d73012e5dbcc45a5782a6c119dfb272c14b5a61
@@ -7682,7 +10536,7 @@ Date:    Mon Jun 6 17:38:21 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=647509
 
- gi/module.py |    4 +++-
+ gi/module.py | 4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)
 
 commit d82e6c8d1d9f2fc48fdcc15b7d2a97e4f24cf3bf
@@ -7691,8 +10545,8 @@ Date:    Mon Jun 6 17:24:28 2011 +0200
 
     Merge gi/HACKING into /HACKING
 
- HACKING    |  16 ++++++++++++++++
- gi/HACKING |  26 --------------------------
+ HACKING    | 16 ++++++++++++++++
+ gi/HACKING | 26 --------------------------
  2 files changed, 16 insertions(+), 26 deletions(-)
 
 commit 92aca4416a7930e5870b8d1a4016bae8140462ee
@@ -7741,8 +10595,8 @@ Date:    Fri Jun 3 16:59:15 2011 +0100
 
     Thanks to Bernie Innocenti for initial diagnosis.
 
- glib/pygsource.c    |   6 ++++--
- gobject/pygobject.c |   8 +++++++-
+ glib/pygsource.c    | 6 ++++--
+ gobject/pygobject.c | 8 +++++++-
  2 files changed, 11 insertions(+), 3 deletions(-)
 
 commit 4c9bcedb4e11ad66a4b86174e2425c7afcafc473
@@ -7751,7 +10605,7 @@ Date:    Tue May 31 16:59:41 2011 -0400
 
     [gi-invoke-ng] enable invoke-ng by default
 
- configure.ac |    8 ++++----
+ configure.ac | 8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit 2e4cfb85a55ff205e263591d573ee5ecf0ffff3e
@@ -7760,7 +10614,7 @@ 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 +++++++++++++++++++++++++-----
+ gi/pygi-marshal-cleanup.c | 30 +++++++++++++++++++++++++-----
  1 file changed, 25 insertions(+), 5 deletions(-)
 
 commit 508b1b6ca1b143f1e123a3ddb83e8ce146758dfc
@@ -7769,10 +10623,10 @@ Date:  Tue May 31 16:01:03 2011 -0400
 
     [gi-invoke-ng] add hash cleanup routines
 
- gi/pygi-cache.c          |    2 ++
- gi/pygi-marshal-cleanup.c |   64
- +++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-marshal-cleanup.h |   10 +++++--
+ 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 1954c75b94a74259b4e5d28f5ff8d76aa4610832
@@ -7781,7 +10635,7 @@ Date:    Tue May 31 14:47:30 2011 -0400
 
     [gi-invoke-ng] handle arrays with transfers of GI_TRANSFER_CONTAINER
 
- gi/pygi-marshal-cleanup.c |   3 ++-
+ gi/pygi-marshal-cleanup.c | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit b626c46b4a95602c7bf1278c2a39aacb7f5027d9
@@ -7790,10 +10644,10 @@ Date:  Tue May 31 14:40:49 2011 -0400
 
     [gi-invoke-ng] add list cleanup routines
 
- gi/pygi-cache.c          |    8 ++---
- gi/pygi-marshal-cleanup.c |   84
- +++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-marshal-cleanup.h |   8 +++++
+ gi/pygi-cache.c          |  8 ++---
+ gi/pygi-marshal-cleanup.c | 84
+ +++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-marshal-cleanup.h |  8 +++++
  3 files changed, 96 insertions(+), 4 deletions(-)
 
 commit 2e542c327cd52c1f77af28905557dd25c64175d8
@@ -7802,7 +10656,7 @@ Date:    Thu May 26 16:10:13 2011 -0400
 
     indentation fix
 
- gi/pygi-marshal.c |   8 ++++----
+ gi/pygi-marshal.c | 8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit 601aec11c49e821fe97dd30a2187fe3c75844712
@@ -7811,9 +10665,9 @@ Date:    Thu May 26 16:09:38 2011 -0400
 
     [gi-invoke-ng] add out array cleanup
 
- gi/pygi-cache.c          |    2 +-
- gi/pygi-marshal-cleanup.c |   24 ++++++++++++++++++++++++
- gi/pygi-marshal.c        |   37 +++++++++++++++++++++++++++++++------
+ gi/pygi-cache.c          |  2 +-
+ gi/pygi-marshal-cleanup.c | 24 ++++++++++++++++++++++++
+ gi/pygi-marshal.c        | 37 +++++++++++++++++++++++++++++++------
  3 files changed, 56 insertions(+), 7 deletions(-)
 
 commit e9ad4428b769f8c9ace1cdc973c684de84fb1a5e
@@ -7825,7 +10679,7 @@ Date:    Thu May 26 13:22:38 2011 -0400
     * We are simply setting our own array so we don't want any allocate
     null byte
 
- gi/pygi-marshal.c |   2 +-
+ gi/pygi-marshal.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit a986b2b8e5ee37f2a330f5aabc85c73ebb0de508
@@ -7834,11 +10688,11 @@ Date:  Thu May 26 13:21:55 2011 -0400
 
     [gi-invoke-ng] add array cleanup for in arrays
 
- gi/pygi-cache.c          |    2 +-
- gi/pygi-marshal-cleanup.c |   72
- ++++++++++++++++++++++++++++++++++++++++++++-
- gi/pygi-marshal-cleanup.h |   9 ++++++
- gi/pygi-marshal.c        |   13 ++++++--
+ 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(-)
 
 commit 990c60805c8ef718eb29e2e1b24f057552c6159e
@@ -7847,8 +10701,8 @@ Date:    Mon May 23 17:06:30 2011 -0400
 
     [gi-invoke-ng] remove remaining bits of the invoke stage state machine
 
- gi/pygi-invoke-ng.c          |    7 +------
- gi/pygi-invoke-state-struct.h |   14 --------------
+ gi/pygi-invoke-ng.c          |  7 +------
+ gi/pygi-invoke-state-struct.h | 14 --------------
  2 files changed, 1 insertion(+), 20 deletions(-)
 
 commit dbbcf4a0e76fb572d85843ee31c3798df5cd5cc5
@@ -7867,14 +10721,14 @@ Date:  Mon May 23 16:59:57 2011 -0400
       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 +-
+ 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
@@ -7888,10 +10742,10 @@ Date:  Thu May 12 17:29:20 2011 -0400
     * Now we call specific cleanup functions at the point of failure (or
       successful completion of a marshalling stage)
 
- gi/pygi-invoke-ng.c      |   59 ++++++++++++++++++++++++++++++-------
- gi/pygi-marshal-cleanup.c |   72
- +++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-marshal-cleanup.h |   14 +++++++++
+ 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(-)
 
 commit c1389dadbf35afee3f28d90ef637efd8c1f071a5
@@ -7909,7 +10763,7 @@ Date:    Thu May 12 11:53:40 2011 -0400
        flow of
        processing.
 
- codegen/docextract.py |    4 ++--
+ codegen/docextract.py | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 303d8e8ab9e60cb554de7fc0e8592cd9b2c50843
@@ -7928,8 +10782,8 @@ Date:    Mon May 9 17:32:09 2011 -0400
        as long
        as the C API is still unstable.
 
- codegen/docextract.py       |   15 ++++++++++++++-
- codegen/docextract_to_xml.py |    9 ++++++---
+ codegen/docextract.py       | 15 ++++++++++++++-
+ codegen/docextract_to_xml.py |  9 ++++++---
  2 files changed, 20 insertions(+), 4 deletions(-)
 
 commit 4f615c6e300d6f2d7551b640efa301060206ab58
@@ -7938,11 +10792,11 @@ Date:  Thu May 5 14:04:34 2011 -0400
 
     [gi-invoke-ng] tweek cleanup routines
 
- gi/pygi-cache.c          |    5 +++
- gi/pygi-marshal-cleanup.c |   87
- ++++++++++++++++++++++++++++++++++-----------
- gi/pygi-marshal-cleanup.h |   6 ++--
- gi/pygi-marshal.c        |   11 ++----
+ 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
@@ -7968,10 +10822,10 @@ Date:  Mon May 2 15:49:52 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=649165
 
- gi/module.py        |    9 ++++++++-
- tests/te_ST@nouppera |   50
+ gi/module.py        |  9 ++++++++-
+ tests/te_ST@nouppera | 50
  ++++++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_gi.py     |   30 ++++++++++++++++++++++++++++++
+ tests/test_gi.py     | 30 ++++++++++++++++++++++++++++++
  3 files changed, 88 insertions(+), 1 deletion(-)
 
 commit b5e150da76c3d4de1a75f58d03c3a761e9005a63
@@ -7980,7 +10834,7 @@ Date:    Wed May 4 08:35:27 2011 +0200
 
     [gi] pygi-convert.sh: Convert gtk.gdk.CROSSHAIR
 
- pygi-convert.sh |    1 +
+ pygi-convert.sh | 1 +
  1 file changed, 1 insertion(+)
 
 commit fcc5ea201ab25da6db94ea8a37364a1d3c4d7c65
@@ -7989,7 +10843,7 @@ 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 ++
+ gi/pygi-cache.c | 2 ++
  1 file changed, 2 insertions(+)
 
 commit dbe8c4fabc8ac19415a3be0e854d3a54c2317e0b
@@ -7998,10 +10852,10 @@ 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 +--
+ 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
@@ -8011,12 +10865,12 @@ 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 +++
+ 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
@@ -8029,8 +10883,8 @@ Date:    Wed Apr 27 15:47:19 2011 -0400
     * PyCObject is deprecated and pycairo 1.10.0 is first release to
     fix this issue
 
- configure.ac           |   15 +++++++++++----
- gi/pygi-foreign-cairo.c |    2 +-
+ configure.ac           | 15 +++++++++++----
+ gi/pygi-foreign-cairo.c |  2 +-
  2 files changed, 12 insertions(+), 5 deletions(-)
 
 commit 83b7823a510b0b391560c6deaf9d15d8303c7b14
@@ -8039,7 +10893,7 @@ Date:    Thu Apr 21 16:52:20 2011 +0200
 
     [python3] fix build. PYcairo_IMPORT doesn't exists anymore
 
- gi/pygi-foreign-cairo.c |    7 ++++++-
+ gi/pygi-foreign-cairo.c | 7 ++++++-
  1 file changed, 6 insertions(+), 1 deletion(-)
 
 commit 3e933784df423757e591d703614cb700adb0bbe0
@@ -8048,7 +10902,7 @@ Date:    Mon Apr 18 18:36:25 2011 +0200
 
     Updated DOAP file
 
- pygobject.doap |   15 +++++++++++++++
+ pygobject.doap | 15 +++++++++++++++
  1 file changed, 15 insertions(+)
 
 commit 399d06b4b20685eb38acfd7e43226e06737ab7d2
@@ -8057,7 +10911,7 @@ Date:    Sat Apr 16 16:02:05 2011 +0200
 
     [gi] Don't create variant twice
 
- gi/overrides/GLib.py |    2 +-
+ gi/overrides/GLib.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 8d8a84ea23d28d25851c5870f261c020d762cef4
@@ -8069,7 +10923,7 @@ Date:    Fri Apr 15 16:14:43 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=647736
 
- pygi-convert.sh |    1 +
+ pygi-convert.sh | 1 +
  1 file changed, 1 insertion(+)
 
 commit 3b51d6426d0f59b2dd7e0dcdcded4bed43d6b9d8
@@ -8082,7 +10936,7 @@ Date:    Fri Apr 15 15:58:53 2011 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=639952
     https://bugzilla.gnome.org/show_bug.cgi?id=647796
 
- gi/overrides/GLib.py |   14 +-------------
+ gi/overrides/GLib.py | 14 +-------------
  1 file changed, 1 insertion(+), 13 deletions(-)
 
 commit bb4dce14ba666969815d4e56adbc38f0ac4f7ff7
@@ -8091,7 +10945,7 @@ Date:    Fri Apr 15 15:58:31 2011 +0200
 
     [gi] Added additional test case for GVariant handling
 
- tests/test_overrides.py |   15 +++++++++++++++
+ tests/test_overrides.py | 15 +++++++++++++++
  1 file changed, 15 insertions(+)
 
 commit 138df2778543409752e229a09828a805f68a420d
@@ -8106,7 +10960,7 @@ Date:    Mon Apr 11 18:34:31 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=647477
 
- gi/pygi-argument.c |   2 ++
+ gi/pygi-argument.c | 2 ++
  1 file changed, 2 insertions(+)
 
 commit 985f239d891c7697d76ccecb797b189669ae6ee1
@@ -8122,8 +10976,8 @@ 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 +++++++++++++++++++---------
- tests/test_properties.py |    8 ++++++++
+ gobject/pygtype.c       | 28 +++++++++++++++++++---------
+ tests/test_properties.py |  8 ++++++++
  2 files changed, 27 insertions(+), 9 deletions(-)
 
 commit 58cfc3cd1152b4448b56a6ff597f954d8450b83e
@@ -8133,7 +10987,7 @@ 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 +-
+ dsextras.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 629d267478982c426ba61a639d5c9603fed856e6
@@ -8142,7 +10996,7 @@ Date:    Tue Mar 22 11:35:44 2011 +0100
 
     dsextras.py: remove \r as wel as \n character
 
- dsextras.py |   2 +-
+ dsextras.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 426c7109d4c0dbf0d56cc075f97f33b3451f79a8
@@ -8155,8 +11009,8 @@ Date:    Wed Apr 27 15:47:19 2011 -0400
     * PyCObject is deprecated and pycairo 1.10.0 is first release to
     fix this issue
 
- configure.ac           |   15 +++++++++++----
- gi/pygi-foreign-cairo.c |    2 +-
+ configure.ac           | 15 +++++++++++----
+ gi/pygi-foreign-cairo.c |  2 +-
  2 files changed, 12 insertions(+), 5 deletions(-)
 
 commit 4e5833d0c2fe548617e5ea510f05920fd0caf73b
@@ -8165,7 +11019,7 @@ Date:    Thu Apr 21 16:52:20 2011 +0200
 
     [python3] fix build. PYcairo_IMPORT doesn't exists anymore
 
- gi/pygi-foreign-cairo.c |    7 ++++++-
+ gi/pygi-foreign-cairo.c | 7 ++++++-
  1 file changed, 6 insertions(+), 1 deletion(-)
 
 commit 91ec337359720839862d3f5a8a0ea98f760a0752
@@ -8174,7 +11028,7 @@ Date:    Mon Apr 18 18:36:25 2011 +0200
 
     Updated DOAP file
 
- pygobject.doap |   15 +++++++++++++++
+ pygobject.doap | 15 +++++++++++++++
  1 file changed, 15 insertions(+)
 
 commit 05c766044c83340c44564d0097514bfc1d1d9df7
@@ -8183,7 +11037,7 @@ Date:    Sat Apr 16 16:02:05 2011 +0200
 
     [gi] Don't create variant twice
 
- gi/overrides/GLib.py |    2 +-
+ gi/overrides/GLib.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit eb8f212e3687af30407cf01fcdfbf530257bcddb
@@ -8195,7 +11049,7 @@ Date:    Fri Apr 15 16:14:43 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=647736
 
- pygi-convert.sh |    1 +
+ pygi-convert.sh | 1 +
  1 file changed, 1 insertion(+)
 
 commit af31729573de24161ee90563e5738187c749783c
@@ -8208,7 +11062,7 @@ Date:    Fri Apr 15 15:58:53 2011 +0200
     https://bugzilla.gnome.org/show_bug.cgi?id=639952
     https://bugzilla.gnome.org/show_bug.cgi?id=647796
 
- gi/overrides/GLib.py |   14 +-------------
+ gi/overrides/GLib.py | 14 +-------------
  1 file changed, 1 insertion(+), 13 deletions(-)
 
 commit 070f6688be4afb926656038dcceac4c8b8ed97c7
@@ -8217,7 +11071,7 @@ Date:    Fri Apr 15 15:58:31 2011 +0200
 
     [gi] Added additional test case for GVariant handling
 
- tests/test_overrides.py |   15 +++++++++++++++
+ tests/test_overrides.py | 15 +++++++++++++++
  1 file changed, 15 insertions(+)
 
 commit 65aa040e86d94ee6bb227a2bce09668b60208027
@@ -8226,7 +11080,7 @@ Date:    Tue Apr 12 14:51:35 2011 -0400
 
     [gi-invoke-ng] fix prototype
 
- gi/pygi-cache.h |    2 +-
+ gi/pygi-cache.h | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 12aa4e6376366ca9d758434f6544c9c70a1e5df8
@@ -8242,15 +11096,15 @@ Date:  Tue Apr 12 14:48:16 2011 -0400
     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 +
+ 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 0463295cd046bd6382ad9dc71ea1518858d63c5f
@@ -8265,7 +11119,7 @@ Date:    Mon Apr 11 18:34:31 2011 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=647477
 
- gi/pygi-argument.c |   2 ++
+ gi/pygi-argument.c | 2 ++
  1 file changed, 2 insertions(+)
 
 commit 1d64c3d3db2ec17b9a48df55271f712db6c07060
@@ -8275,7 +11129,7 @@ Date:    Wed Mar 30 16:40:31 2011 -0400
     [gi-invoke-ng] fix marshal header that is no longer part of
     pygi-arguments.h
 
- gi/pygi-marshal.h |   8 ++++----
+ gi/pygi-marshal.h | 8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit 3580cd1c7222022ebeef3476f9e609c8045f12a3
@@ -8284,10 +11138,10 @@ Date:  Wed Mar 30 15:53:13 2011 -0400
 
     [gi-invoke-ng] code style space fixes
 
- gi/pygi-cache.c     | 420 +++++++++++++++++++-------------------
- gi/pygi-invoke-ng.c | 145 +++++++------
- gi/pygi-marshal.c   | 565
- ++++++++++++++++++++++++++-------------------------
+ gi/pygi-cache.c     | 420 +++++++++++++++++++-------------------
+ gi/pygi-invoke-ng.c | 145 +++++++-------
+ gi/pygi-marshal.c   | 565
+ ++++++++++++++++++++++++++--------------------------
  3 files changed, 566 insertions(+), 564 deletions(-)
 
 commit 81662fcd09f112bfffcdc5b7f01a5537b84cd9d4
@@ -8296,7 +11150,7 @@ Date:    Tue Mar 29 16:54:44 2011 -0400
 
     [gi-invoke-ng] don't decref value taken from a dict as it is borrowed
 
- gi/pygi-invoke-ng.c |   1 -
+ gi/pygi-invoke-ng.c | 1 -
  1 file changed, 1 deletion(-)
 
 commit a456fc0adc1f8a0754bf59cde8924f905bfc7dc1
@@ -8305,7 +11159,7 @@ Date:    Tue Mar 29 15:23:06 2011 -0400
 
     [gi-invoke-ng] return None when appropriate so we don't crash
 
- gi/pygi-marshal.c |   18 +++++++++++++++++-
+ gi/pygi-marshal.c | 18 +++++++++++++++++-
  1 file changed, 17 insertions(+), 1 deletion(-)
 
 commit e8c8c37e5587dc7ff62519df336988a12e6f5d0a
@@ -8314,7 +11168,7 @@ Date:    Tue Mar 29 15:21:41 2011 -0400
 
     [gi-invoke-ng] fix aux value caching
 
- gi/pygi-cache.c |   15 ++++++++++-----
+ gi/pygi-cache.c | 15 ++++++++++-----
  1 file changed, 10 insertions(+), 5 deletions(-)
 
 commit 4e4c1847c713a4eb4ab34d04488e94dac24d9167
@@ -8323,7 +11177,7 @@ Date:    Mon Mar 28 20:25:46 2011 -0400
 
     [gi-invoke-ng] backport handling flags with no gtype
 
- gi/pygi-marshal.c |   25 ++++++++++++++++++++++++-
+ gi/pygi-marshal.c | 25 ++++++++++++++++++++++++-
  1 file changed, 24 insertions(+), 1 deletion(-)
 
 commit fd76423e655b3711e1ffbf9b61ea4e2c94040234
@@ -8332,7 +11186,7 @@ Date:    Mon Mar 28 18:32:00 2011 -0400
 
     [gi-invoke-ng] backport raw gvalue handling
 
- gi/pygi-marshal.c |   23 ++++++++++++++++++-----
+ gi/pygi-marshal.c | 23 ++++++++++++++++++-----
  1 file changed, 18 insertions(+), 5 deletions(-)
 
 commit 507b5051c83f70ceae79e0fa693c86e5cbb9f442
@@ -8342,8 +11196,8 @@ Date:    Mon Mar 28 18:30:31 2011 -0400
     [gi-invoke-ng] marshal instances seperately since they differ slightly
     from other args
 
- gi/pygi-cache.c   |   2 +-
- gi/pygi-marshal.c |   38 ++++++++++++++++++++++++++++++++++++++
+ gi/pygi-cache.c   |  2 +-
+ gi/pygi-marshal.c | 38 ++++++++++++++++++++++++++++++++++++++
  2 files changed, 39 insertions(+), 1 deletion(-)
 
 commit 726a27c0e74ace3ff23d9cc4d393ae53e57f1fac
@@ -8352,14 +11206,14 @@ Date:  Mon Mar 28 18:26:09 2011 -0400
 
     [gi-invoke-ng] refactor FunctionCache to be more generic CallableCache
 
- 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 +-
+ 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
@@ -8368,7 +11222,7 @@ Date:    Mon Mar 28 15:01:12 2011 -0400
 
     [gi-invoke-rewrite] backport glib error handling
 
- gi/pygi-invoke-ng.c |  14 ++++++--------
+ gi/pygi-invoke-ng.c | 14 ++++++--------
  1 file changed, 6 insertions(+), 8 deletions(-)
 
 commit 37b14b28a5f2aec16ac7f321efbf07e1403e9531
@@ -8377,7 +11231,7 @@ Date:    Fri Mar 25 18:48:42 2011 -0400
 
     [gi-invoke-ng] backport closure passing from invoke
 
- gi/pygi-marshal.c |   13 ++++++++++---
+ gi/pygi-marshal.c | 13 ++++++++++---
  1 file changed, 10 insertions(+), 3 deletions(-)
 
 commit cf7f97eabc9c49773c2916929b8c43ef453d0652
@@ -8386,11 +11240,11 @@ Date:  Fri Mar 25 18:47:36 2011 -0400
 
     [gi-invoke-ng] handle vfuncs and fix cosntrutors
 
- gi/pygi-cache.c              |    9 +++++++
- gi/pygi-cache.h              |    2 ++
- gi/pygi-invoke-ng.c          |   56
- ++++++++++++++++++++++++++++++-----------
- gi/pygi-invoke-state-struct.h |    2 ++
+ 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
@@ -8399,8 +11253,8 @@ 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 +++
+ gi/pygi-cache.c   | 22 ++++++----------------
+ gi/pygi-marshal.c |  3 +++
  2 files changed, 9 insertions(+), 16 deletions(-)
 
 commit 482553ae5d863ca523be3bd1eededa5d02a4f87e
@@ -8414,9 +11268,9 @@ Date:    Fri Mar 25 13:14:01 2011 -0400
        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 +
+ gi/pygi-invoke-ng.c          | 46
+ +++++++++++++++++++++++++++++++++++++------
+ gi/pygi-invoke-state-struct.h |  1 +
  2 files changed, 41 insertions(+), 6 deletions(-)
 
 commit 0534eb0e843cdf09611143da184052f7e549e4dc
@@ -8432,8 +11286,8 @@ 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 +++++++++++++++++++---------
- tests/test_properties.py |    8 ++++++++
+ gobject/pygtype.c       | 28 +++++++++++++++++++---------
+ tests/test_properties.py |  8 ++++++++
  2 files changed, 27 insertions(+), 9 deletions(-)
 
 commit 5f0e130026a663a57ed1317e0fa0e1f78f9e6e0a
@@ -8443,7 +11297,7 @@ 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 +-
+ dsextras.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 62a6274105003ef386ddfe9ef38e8afa8c43d124
@@ -8452,7 +11306,7 @@ Date:    Tue Mar 22 11:35:44 2011 +0100
 
     dsextras.py: remove \r as wel as \n character
 
- dsextras.py |   2 +-
+ dsextras.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 86c436978c933f6ebe17627abe98325ce66f6baa
@@ -8476,12 +11330,12 @@ 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 +++-
+ 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
@@ -8490,7 +11344,7 @@ Date:    Tue Mar 22 15:37:24 2011 -0400
 
     [gi] revert back to the type.py from master
 
- gi/types.py |  21 +++++++++++++++------
+ gi/types.py | 21 +++++++++++++++------
  1 file changed, 15 insertions(+), 6 deletions(-)
 
 commit cb30d00d1c92e73d9bfb08cc7b600a5aa70f2fc0
@@ -8500,9 +11354,9 @@ 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
- ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-argument.h | 268 +-----------------------------------------
+ gi/pygi-marshal.h  | 336
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++
  2 files changed, 337 insertions(+), 267 deletions(-)
 
 commit 17cb714cfdaf45b6d7dd627b0189bd24e6578f74
@@ -8537,13 +11391,13 @@ Date:  Tue Mar 22 13:20:54 2011 -0400
        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 ++++++------
+ 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
@@ -8560,8 +11414,8 @@ Date:    Tue Mar 22 15:04:01 2011 +0100
     prefer it
     over test_overrides.py's directory.
 
- tests/Makefile.am      |    3 ++-
- tests/test_overrides.py |    4 +++-
+ tests/Makefile.am      | 3 ++-
+ tests/test_overrides.py | 4 +++-
  2 files changed, 5 insertions(+), 2 deletions(-)
 
 commit 7332a1b99775519fdc5500cab6628b713e946a8c
@@ -8595,8 +11449,8 @@ Date:    Wed Mar 16 17:34:18 2011 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=644757
 
- gi/pygi-argument.c |  17 ++++++++++-------
- tests/test_gi.py   |   4 ++++
+ gi/pygi-argument.c | 17 ++++++++++-------
+ tests/test_gi.py   |  4 ++++
  2 files changed, 14 insertions(+), 7 deletions(-)
 
 commit 1e70957c5470a0f4bceba38ca66a4e4274fdc8d8
@@ -8607,7 +11461,7 @@ Date:    Sun Mar 6 23:41:01 2011 +1300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=644347
 
- pygi-convert.sh |    7 +++++++
+ pygi-convert.sh | 7 +++++++
  1 file changed, 7 insertions(+)
 
 commit 2292673c96e7973a0732ca15bbd5b0bf7a9c7dcf
@@ -8618,7 +11472,7 @@ Date:    Sun Mar 6 23:41:30 2011 +1300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=644347
 
- pygi-convert.sh |   28 ----------------------------
+ pygi-convert.sh | 28 ----------------------------
  1 file changed, 28 deletions(-)
 
 commit d26e5cc45f277f6b7edb32aa416520bb53bff9c2
@@ -8627,8 +11481,8 @@ Date:    Fri Mar 11 14:09:02 2011 -0500
 
     [gi-demos] add pickers demo
 
- demos/gtk-demo/demos/pickers.py |   74
- +++++++++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/pickers.py | 74
+ +++++++++++++++++++++++++++++++++++++++++
  1 file changed, 74 insertions(+)
 
 commit b8d926a458ed7d7e92719e41b5bc1c36f68882b3
@@ -8637,8 +11491,8 @@ Date:    Thu Mar 10 18:12:50 2011 -0500
 
     [gi-demos] add menu demo
 
- demos/gtk-demo/demos/menus.py |  122
- +++++++++++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/menus.py | 122
+ ++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 122 insertions(+)
 
 commit 9baec8ed1c5d99c1677a75eaa1d38912f41f0b2d
@@ -8647,7 +11501,7 @@ 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 ++++-
+ gi/overrides/Gio.py | 5 ++++-
  1 file changed, 4 insertions(+), 1 deletion(-)
 
 commit 5ac534ac3ceee3cc19fe2297e3cd009817ed726f
@@ -8666,10 +11520,10 @@ Date:  Mon Mar 21 13:19:58 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620215
 
- gi/Makefile.am    |   4 +---
- glib/Makefile.am  |   2 +-
- m4/python.m4     |    7 ++-----
- tests/Makefile.am |   2 +-
+ gi/Makefile.am    | 4 +---
+ glib/Makefile.am  | 2 +-
+ m4/python.m4     | 7 ++-----
+ tests/Makefile.am | 2 +-
  4 files changed, 5 insertions(+), 10 deletions(-)
 
 commit cd01f8ce1373f28b1427dd847bef44f747f1e6b3
@@ -8678,7 +11532,7 @@ Date:    Fri Mar 18 17:06:08 2011 +0100
 
     setup.py: fix user_access_control option
 
- setup.py |    2 +-
+ setup.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 2da60baec4f43c41f43527cbfde4e21e0eea728c
@@ -8691,7 +11545,7 @@ Date:    Wed Mar 16 10:22:35 2011 +0100
     to Tualatrix
     Chou for spotting this!
 
- gi/overrides/Gtk.py |   1 +
+ gi/overrides/Gtk.py | 1 +
  1 file changed, 1 insertion(+)
 
 commit 029a79d1af1e0998aa6bc88ce1c1f48ce0ccd2a0
@@ -8715,8 +11569,8 @@ 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 +++++++++++++
+ gi/overrides/Gio.py | 16 +++++++++++++++-
+ tests/test_gdbus.py | 13 +++++++++++++
  2 files changed, 28 insertions(+), 1 deletion(-)
 
 commit 5bf66ce79267b25bcc80251f9170498fa1d765f6
@@ -8727,7 +11581,7 @@ Date:    Sun Mar 6 23:05:33 2011 +1300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=644343
 
- gi/overrides/Gtk.py |   2 ++
+ gi/overrides/Gtk.py | 2 ++
  1 file changed, 2 insertions(+)
 
 commit 8e4f86e17a1de533a93b0748fd8de3cbfa70ba62
@@ -8736,7 +11590,7 @@ 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 ++-
+ demos/gtk-demo/gtk-demo.py | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit 097e5efab29d3d2d91d0b9fc75bf00219e9b7810
@@ -8745,10 +11599,10 @@ 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/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 ++--
  4 files changed, 11 insertions(+), 5 deletions(-)
 
 commit fd5d5ef3abc947d3c6066eea6378514f87b7f0ce
@@ -8757,8 +11611,8 @@ Date:    Tue Feb 22 15:07:40 2011 -0500
 
     [gi-demos] add liststore demo
 
- demos/gtk-demo/demos/Tree View/liststore.py | 205
- +++++++++++++++++++++++++++
+ demos/gtk-demo/demos/Tree View/liststore.py | 205
+ ++++++++++++++++++++++++++++
  1 file changed, 205 insertions(+)
 
 commit 09de5cf99474fc8a34b5f4a61cede1fb47353ebb
@@ -8767,7 +11621,7 @@ Date:    Mon Mar 7 18:08:40 2011 -0500
 
     [gi-demos] catch the correct error class
 
- demos/gtk-demo/demos/images.py |   11 ++++++-----
+ demos/gtk-demo/demos/images.py | 11 ++++++-----
  1 file changed, 6 insertions(+), 5 deletions(-)
 
 commit 7284d2d4622978fc9ddfd00f2714b3a572b7ab56
@@ -8784,8 +11638,8 @@ Date:    Sun Mar 6 21:18:36 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=644039
 
- gobject/propertyhelper.py |   5 ++---
- tests/test_properties.py  |   23 +++++++++++++++++++++++
+ gobject/propertyhelper.py |  5 ++---
+ tests/test_properties.py  | 23 +++++++++++++++++++++++
  2 files changed, 25 insertions(+), 3 deletions(-)
 
 commit 618dbb0ee15b47e5e7cb16a34ffce0937d7fa26d
@@ -8802,7 +11656,7 @@ 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 +-
+ gobject/pygtype.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 7e9483ff75b7a63ddda0fa9a9847f9f22ad71240
@@ -8811,7 +11665,7 @@ Date:    Fri Mar 4 12:24:35 2011 -0500
 
     [gi-overrides] handle unichar gvalues when setting treemodels
 
- gi/overrides/Gtk.py |  10 ++++++++++
+ gi/overrides/Gtk.py | 10 ++++++++++
  1 file changed, 10 insertions(+)
 
 commit 6367bffa006e94dc667d7008fccad8d47d8d3646
@@ -8820,8 +11674,8 @@ Date:    Fri Mar 4 11:43:51 2011 -0500
 
     [gi-overrides] special case python 2 keywords that crept in
 
- gi/overrides/Gtk.py    |    6 +++++-
- tests/test_overrides.py |    8 ++++----
+ gi/overrides/Gtk.py    | 6 +++++-
+ tests/test_overrides.py | 8 ++++----
  2 files changed, 9 insertions(+), 5 deletions(-)
 
 commit 83b0f8a37d5f3236780d87a1ca466c5e44ae2bc0
@@ -8831,7 +11685,7 @@ 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 +++++-
+ configure.ac | 6 +++++-
  1 file changed, 5 insertions(+), 1 deletion(-)
 
 commit 4645af87d3c587f535404867dab56608719e5c7b
@@ -8840,8 +11694,8 @@ Date:    Fri Mar 4 00:39:23 2011 -0500
 
     [gi-demos] add iconview demo
 
- demos/gtk-demo/demos/Icon View/iconviewbasics.py |  212
- ++++++++++++++++++++++
+ demos/gtk-demo/demos/Icon View/iconviewbasics.py | 212
+ +++++++++++++++++++++++
  1 file changed, 212 insertions(+)
 
 commit 761dcb516a04f7a89b3c7d68e88fff23055e2a80
@@ -8854,7 +11708,7 @@ Date:    Thu Mar 3 18:39:16 2011 -0500
     sending in
       *args.  You can only send in **kwds.
 
- gi/types.py |   2 +-
+ gi/types.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit f9604e90af12a1b9dbe7d7f311308e87cd0ed7dd
@@ -8863,8 +11717,8 @@ 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
- +++++++++++++++++++++++++++++++++++++-
+ demos/gtk-demo/demos/combobox.py | 49
+ +++++++++++++++++++++++++++++++++++++++-
  1 file changed, 48 insertions(+), 1 deletion(-)
 
 commit b70f4daf071cf77a4561b57f5521eb928f66d1ce
@@ -8873,8 +11727,8 @@ Date:    Thu Mar 3 16:47:51 2011 -0500
 
     [gi-overrides] add an override for Gdk.RGBA
 
- gi/overrides/Gdk.py    |   18 ++++++++++++++++++
- tests/test_overrides.py |   10 ++++++++++
+ gi/overrides/Gdk.py    | 18 ++++++++++++++++++
+ tests/test_overrides.py | 10 ++++++++++
  2 files changed, 28 insertions(+)
 
 commit ee2b63f60f350332ed21927721ed9ddff3a8034e
@@ -8884,7 +11738,7 @@ 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 +++++++++--------------
+ demos/gtk-demo/demos/Entry/search_entry.py | 23 +++++++++--------------
  1 file changed, 9 insertions(+), 14 deletions(-)
 
 commit cd046e4c355706ead5f512b810a2a48317f8c32e
@@ -8893,8 +11747,8 @@ Date:    Wed Mar 2 18:13:43 2011 -0500
 
     [gi-demos] add search entry demo
 
- demos/gtk-demo/demos/Entry/search_entry.py |  257
- ++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/Entry/search_entry.py | 257
+ +++++++++++++++++++++++++++++
  1 file changed, 257 insertions(+)
 
 commit d5ddaa92e6349c2f52b67317326060973cb69661
@@ -8903,7 +11757,7 @@ Date:    Wed Mar 2 15:37:27 2011 -0500
 
     [gi] wrap map in a list for Python 3 compat
 
- gi/types.py |   2 +-
+ gi/types.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 3e5ab72a2e1fa2d8c4c2864137c6251f264ff4af
@@ -8912,7 +11766,7 @@ Date:    Tue Mar 1 14:52:00 2011 -0500
 
     [gi-demos] fix up the validation combobox
 
- demos/gtk-demo/demos/combobox.py |   21 +++++++++++++++------
+ demos/gtk-demo/demos/combobox.py | 21 +++++++++++++++------
  1 file changed, 15 insertions(+), 6 deletions(-)
 
 commit 08af5f99f0838b3584f6a3b210d0a0304811e8ff
@@ -8921,7 +11775,7 @@ 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 +
+ pygobject-2.0.pc.in | 1 +
  1 file changed, 1 insertion(+)
 
 commit 4a6b14a92a687a2311516b2c16c355216b5270a7
@@ -8930,7 +11784,7 @@ Date:    Fri Feb 11 17:14:11 2011 +0100
 
     setup.py: Set bdist_wininst user-access-control property
 
- setup.py |    3 ++-
+ setup.py | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit ad3ab659b83cb985730e19a83651da319d4bcb9c
@@ -8939,7 +11793,7 @@ Date:    Wed Mar 2 16:29:00 2011 +0100
 
     Fix uninitialized variable in gi.require_version()
 
- gi/__init__.py |    3 ++-
+ gi/__init__.py | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit 6e7606ee8830f6f51b777f41f6df2f6ea1784e89
@@ -8953,7 +11807,7 @@ 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 ++
+ tests/runtests.py | 2 ++
  1 file changed, 2 insertions(+)
 
 commit 0461e05174637ae02f34029b85ba217d5ae48c53
@@ -8962,8 +11816,8 @@ 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 +++++++++
+ demos/gtk-demo/demos/combobox.py | 2 +-
+ gi/overrides/Gtk.py             | 9 +++++++++
  2 files changed, 10 insertions(+), 1 deletion(-)
 
 commit 40decf3501823004a6e4d3acbbf204c4d4d0a7ec
@@ -8973,7 +11827,7 @@ Date:    Mon Feb 28 14:16:00 2011 -0500
     update NEWS to reflect changes in the 2.27.91 release (PYGOBJECT_2_28
     branch)
 
- NEWS |   50 ++++++++++++++++++++++++++++++++++++++++++++++++++
+ NEWS | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 50 insertions(+)
 
 commit c2d5122b8e3cf51ec52418f90f1788895b842b6a
@@ -8987,7 +11841,7 @@ Date:    Mon Feb 28 14:08:05 2011 -0500
      use this
        instead of creating our own button press event
 
- tests/test_overrides.py |    9 +++++----
+ tests/test_overrides.py | 9 +++++----
  1 file changed, 5 insertions(+), 4 deletions(-)
 
 commit 1be1a2ea2787dffeb71ab4a38233fb71e761bd21
@@ -9001,7 +11855,7 @@ Date:    Thu Feb 24 19:30:32 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642554
 
- tests/test_overrides.py |   21 +++++++++++++++++++++
+ tests/test_overrides.py | 21 +++++++++++++++++++++
  1 file changed, 21 insertions(+)
 
 commit 99044a4860dd65c97f52b41b7cd3f216f4a97cd4
@@ -9012,8 +11866,8 @@ Date:    Wed Feb 23 18:43:27 2011 -0500
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642554
 
- gi/overrides/Gdk.py |  70
- +++++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/overrides/Gdk.py | 70
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 70 insertions(+)
 
 commit 6e30c69d38fd382414eb820097c297a80be547ac
@@ -9038,7 +11892,7 @@ Date:    Wed Feb 23 14:14:16 2011 -0500
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642554
 
- gi/pygi-argument.c |  38 ++++++++++++++++++++++++++++++++++++++
+ gi/pygi-argument.c | 38 ++++++++++++++++++++++++++++++++++++++
  1 file changed, 38 insertions(+)
 
 commit 525f21d1365c24488b768955362085bf82512dee
@@ -9049,9 +11903,9 @@ Date:    Wed Feb 16 09:44:12 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642437
 
- gi/types.py            |   40 ++++++++++++++++++++++++++++++++++++++++
- gobject/gobjectmodule.c |    9 +++++++--
- tests/test_gi.py       |   16 ++++++++++++++++
+ gi/types.py            | 40 ++++++++++++++++++++++++++++++++++++++++
+ gobject/gobjectmodule.c |  9 +++++++--
+ tests/test_gi.py       | 16 ++++++++++++++++
  3 files changed, 63 insertions(+), 2 deletions(-)
 
 commit da212024772a7a0c32f04f3589bfb24d2eb5706f
@@ -9061,8 +11915,8 @@ 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/importer.py | 2 +-
+ gi/module.py  | 2 +-
  2 files changed, 2 insertions(+), 2 deletions(-)
 
 commit 2ce6b58c7427cf67ba4f55731ba0a4c04703e495
@@ -9111,9 +11965,9 @@ Date:    Wed Feb 23 12:05:03 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642708
 
- gi/pygi-invoke.c |   54
+ gi/pygi-invoke.c | 54
  ++++++++++++++++++++++++++++++++++++++++++++++++++----
- tests/test_gi.py |    9 +++++++++
+ tests/test_gi.py |  9 +++++++++
  2 files changed, 59 insertions(+), 4 deletions(-)
 
 commit 702a89beca92cab6b0142829b20281b9245f28b8
@@ -9124,8 +11978,8 @@ Date:    Wed Feb 23 15:11:59 2011 -0500
 
      * as done in PyGTK None indicates the column should not be set
 
- gi/overrides/Gtk.py    |    3 +++
- tests/test_overrides.py |   18 +++++++++++++-----
+ gi/overrides/Gtk.py    |  3 +++
+ tests/test_overrides.py | 18 +++++++++++++-----
  2 files changed, 16 insertions(+), 5 deletions(-)
 
 commit 498f0d9c903131aca5efe27ffaad7620e40f72ea
@@ -9135,8 +11989,8 @@ 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 ++++++++++++++++++----
- tests/test_gi.py |   36 ++++++++++++++++++++++++++++++++++++
+ gi/gimodule.c   | 22 ++++++++++++++++++----
+ tests/test_gi.py | 36 ++++++++++++++++++++++++++++++++++++
  2 files changed, 54 insertions(+), 4 deletions(-)
 
 commit 824aeb7fab17d6590e5babf2d1f64298f2d0e16b
@@ -9154,7 +12008,7 @@ 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 +-
+ gobject/pygflags.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 3afbebeee486e14fd3f48552368903eb78f6b10c
@@ -9169,7 +12023,7 @@ Date:    Tue Feb 22 21:37:33 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642305
 
- gi/importer.py |    2 +-
+ gi/importer.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 2a9cbfb435b47dc646e2c6ffe630464b560229a6
@@ -9182,9 +12036,9 @@ Date:    Mon Feb 21 17:20:57 2011 -0500
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642921
 
- gi/overrides/Gtk.py    |   37 +++++++++++++++++---
- tests/test_overrides.py |   87
- ++++++++++++++++++++++++++++++++++++++++-------
+ gi/overrides/Gtk.py    | 37 ++++++++++++++++++---
+ tests/test_overrides.py | 87
+ +++++++++++++++++++++++++++++++++++++++++--------
  2 files changed, 107 insertions(+), 17 deletions(-)
 
 commit 9e4ce7dc0f03ea407654c4af028122f57cbc4c5e
@@ -9215,8 +12069,8 @@ 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 b458f6f3424a04f6ceece09d443009372d70544c
@@ -9225,8 +12079,8 @@ 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
- ++++++++++++++++++++++++
+ demos/gtk-demo/demos/Icon View/iconviewedit.py | 101
+ +++++++++++++++++++++++++
  1 file changed, 101 insertions(+)
 
 commit 7b47289e25d1dd57ce15556ccfbb3ede1c4bfe8b
@@ -9235,8 +12089,8 @@ Date:    Sat Feb 19 17:26:42 2011 -0500
 
     [gi-demos] add info bars demo
 
- demos/gtk-demo/demos/infobars.py |   99
- ++++++++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/infobars.py | 99
+ ++++++++++++++++++++++++++++++++++++++++
  1 file changed, 99 insertions(+)
 
 commit 76758efb6579752237a0dc4d56cf9518de6c6e55
@@ -9249,10 +12103,10 @@ Date:  Wed Feb 16 11:53:18 2011 +0100
 
     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 +++++++++++++++++++++++
+ 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 96f7d1aed732db09a74cd463ed894b7347dbcb15
@@ -9274,13 +12128,13 @@ Date:  Sat Feb 19 23:11:25 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642607
 
- 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/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 ++++++++++++++++
  6 files changed, 191 insertions(+), 29 deletions(-)
 
 commit 63a60bcc20e724f96ea8d565ee0cf13a228b72b9
@@ -9305,10 +12159,10 @@ Date:  Tue Feb 8 15:38:21 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=640181
 
- gi/overrides/Gio.py |  99
- +++++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_gdbus.py | 102
- ++++++++++++++++++++++++++++++++++++++++++++++++++-
+ gi/overrides/Gio.py | 99
+ ++++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_gdbus.py | 102
+ ++++++++++++++++++++++++++++++++++++++++++++++++++--
  2 files changed, 199 insertions(+), 2 deletions(-)
 
 commit ed5cdbb6f52bdbd13521a814516b15687955d6f7
@@ -9324,7 +12178,7 @@ Date:    Fri Feb 18 22:48:59 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=642715
 
- gi/pygi-closure.c |   8 ++++++++
+ gi/pygi-closure.c | 8 ++++++++
  1 file changed, 8 insertions(+)
 
 commit 5a5ee3877e22939a697772a7f0630ef8cae3d52f
@@ -9333,7 +12187,7 @@ Date:    Fri Feb 18 10:15:59 2011 +0100
 
     Fix runtests.py to work with Python3 (print function syntax error).
 
- tests/runtests.py |   2 +-
+ tests/runtests.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit ad5d3fccff9433e2dadac89d731dac5cafb0eac3
@@ -9344,8 +12198,8 @@ Date:    Thu Feb 17 19:46:49 2011 -0500
 
     * 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 file changed, 196 insertions(+)
 
 commit 9ac11c3c3b1c0399c85ece57c0983ed60d419d7a
@@ -9356,8 +12210,8 @@ Date:    Thu Feb 17 17:25:00 2011 -0500
 
      * needs annotation fix from GdkPixbuf for ImageLoader to work
 
- demos/gtk-demo/demos/images.py |  311
- ++++++++++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/images.py | 311
+ +++++++++++++++++++++++++++++++++++++++++
  1 file changed, 311 insertions(+)
 
 commit 13b06170b89b3468e6255be32af4833ffc675c9d
@@ -9366,8 +12220,8 @@ Date:    Thu Feb 17 14:48:24 2011 -0500
 
     [gi-demos] add pixbuf demo
 
- demos/gtk-demo/demos/pixbuf.py |  183
- ++++++++++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/pixbuf.py | 183
+ +++++++++++++++++++++++++++++++++++++++++
  1 file changed, 183 insertions(+)
 
 commit 7abcfd5b4db99bb0f50c5a47d346a2de3836f994
@@ -9376,7 +12230,7 @@ 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 +++-------
+ demos/gtk-demo/demos/printing.py | 10 +++-------
  1 file changed, 3 insertions(+), 7 deletions(-)
 
 commit 9b13f49356da7d71c69b82da2a59d92f456a6913
@@ -9387,8 +12241,8 @@ Date:    Wed Feb 16 19:39:30 2011 -0500
 
     * needs some annotations for pango before it is 100% useful
 
- demos/gtk-demo/demos/printing.py |  177
- ++++++++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/printing.py | 177
+ +++++++++++++++++++++++++++++++++++++++
  1 file changed, 177 insertions(+)
 
 commit 6025b62ee662af347e48b6752e6d5be74b4a8215
@@ -9399,8 +12253,8 @@ Date:    Wed Feb 16 17:52:38 2011 -0500
 
     https://bugzilla.gnome.org/show_bug.cgi?id=635947
 
- gi/overrides/Gdk.py    |   41 +++++++++++++++++++++++++++++++++++++++++
- tests/test_overrides.py |   23 +++++++++++++++++++++++
+ gi/overrides/Gdk.py    | 41 +++++++++++++++++++++++++++++++++++++++++
+ tests/test_overrides.py | 23 +++++++++++++++++++++++
  2 files changed, 64 insertions(+)
 
 commit 03c0aa498470037ef2aa6a8233198ff521f8d42f
@@ -9409,8 +12263,8 @@ Date:    Wed Feb 16 16:18:24 2011 -0500
 
     [gi-demos] add the links demo
 
- demos/gtk-demo/demos/links.py |   74
- +++++++++++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/links.py | 74
+ +++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 74 insertions(+)
 
 commit 79ecddf8d54b3f4f8b5ef05d302675152622c832
@@ -9419,8 +12273,8 @@ Date:    Wed Feb 16 15:48:40 2011 -0500
 
     [gi-demos] add expander demo
 
- demos/gtk-demo/demos/expander.py |   60
- ++++++++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/expander.py | 60
+ ++++++++++++++++++++++++++++++++++++++++
  1 file changed, 60 insertions(+)
 
 commit 76cdb13ab872f91f8384d26b0f2932087a746117
@@ -9430,8 +12284,8 @@ 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 ++----
- tests/test_overrides.py |    8 ++++++++
+ gi/overrides/Gtk.py    | 6 ++----
+ tests/test_overrides.py | 8 ++++++++
  2 files changed, 10 insertions(+), 4 deletions(-)
 
 commit 6ef83c049735689c42f085ca9d7b8e1f251c410f
@@ -9451,8 +12305,8 @@ 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 |   19 +++++++++++--------
- tests/runtests.py |   4 +++-
+ tests/Makefile.am | 19 +++++++++++--------
+ tests/runtests.py |  4 +++-
  2 files changed, 14 insertions(+), 9 deletions(-)
 
 commit e0896b45f60f37097ec521f1bc38778383b78dd8
@@ -9461,8 +12315,8 @@ Date:    Tue Feb 15 14:47:10 2011 -0500
 
     [gi-demos] add dialogs demo
 
- demos/gtk-demo/demos/dialogs.py |  153
- +++++++++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/dialogs.py | 153
+ ++++++++++++++++++++++++++++++++++++++++
  1 file changed, 153 insertions(+)
 
 commit 2dea743e82f6b18697950c34f116b2d0f1d6b1dd
@@ -9471,7 +12325,7 @@ Date:    Tue Feb 15 14:46:41 2011 -0500
 
     [gi-overrides] fix typo in GtkTable constructor
 
- gi/overrides/Gtk.py |   8 ++++----
+ gi/overrides/Gtk.py | 8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit 9c277e1782c5a9d672d91fabf5289c5415891682
@@ -9481,7 +12335,7 @@ 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 ++++----
+ demos/gtk-demo/demos/clipboard.py | 8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit 18800c4db0e1faea38fd84f635d26a7ded5d10de
@@ -9490,7 +12344,7 @@ 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 +++++++
+ gi/overrides/Gtk.py | 7 +++++++
  1 file changed, 7 insertions(+)
 
 commit ad93386ba9f73ef4c3826544b3868cf03c01225e
@@ -9499,7 +12353,7 @@ 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 +++++++++-------------
+ demos/gtk-demo/demos/appwindow.py | 22 +++++++++-------------
  1 file changed, 9 insertions(+), 13 deletions(-)
 
 commit d0c45c80974f05b6adfd3bb01d785be268a53a98
@@ -9512,7 +12366,7 @@ Date:    Tue Feb 15 11:21:13 2011 -0500
     a destroy
       notify
 
- demos/gtk-demo/demos/clipboard.py |   20 ++++++++++----------
+ demos/gtk-demo/demos/clipboard.py | 20 ++++++++++----------
  1 file changed, 10 insertions(+), 10 deletions(-)
 
 commit 02d0327508234ab2e3b7dc6de506d70e6fcaaa17
@@ -9521,7 +12375,7 @@ 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 +++---
+ demos/gtk-demo/demos/clipboard.py | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit aa006cad6990eff0cbb68fa9550e428f2bc96473
@@ -9531,8 +12385,8 @@ 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
- +++++++++++++--------------------
+ demos/gtk-demo/demos/colorselector.py | 44
+ ++++++++++++++---------------------
  1 file changed, 17 insertions(+), 27 deletions(-)
 
 commit f94a96c53e9432ac085bd05acee7ebdd2803fbad
@@ -9543,7 +12397,7 @@ Date:    Mon Feb 14 17:58:25 2011 -0500
 
     * Still having some issues with filtering the ComboBoxText widget
 
- demos/gtk-demo/demos/combobox.py |   17 ++++++++---------
+ demos/gtk-demo/demos/combobox.py | 17 ++++++++---------
  1 file changed, 8 insertions(+), 9 deletions(-)
 
 commit 3606eb20ad1651af621bf1aa429ec102082565eb
@@ -9557,16 +12411,16 @@ 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/pygi-signal-closure.c |  245
- ++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-signal-closure.h |   46 +++++++++
- gi/pygi.h               |   28 ++++++
- gobject/pygobject.c     |   24 ++++-
+ 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 ++++-
  9 files changed, 436 insertions(+), 4 deletions(-)
 
 commit 2e39d5e8f96be2253acb2f34a0d0b5b9c9adb8ff
@@ -9575,8 +12429,8 @@ 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 file changed, 50 insertions(+), 94 deletions(-)
 
 commit 8385afbbc5df295d9b7cd3b5d19c90faa1f7ea8e
@@ -9590,7 +12444,7 @@ Date:    Mon Feb 14 16:43:35 2011 -0500
       bindings
     * we alias this so people do not get confused
 
- gi/overrides/Gdk.py |   5 +++++
+ gi/overrides/Gdk.py | 5 +++++
  1 file changed, 5 insertions(+)
 
 commit d491c369e049ab726f09002af0462391d5c2f3ec
@@ -9605,7 +12459,7 @@ 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 ++++++++
+ gi/overrides/Gtk.py | 8 ++++++++
  1 file changed, 8 insertions(+)
 
 commit 95bc2b2b025d659725d701c3b759c0c4d9681a36
@@ -9614,7 +12468,7 @@ Date:    Mon Feb 14 15:06:38 2011 -0500
 
     [gi-demos] get appwindow demo working again
 
- demos/gtk-demo/demos/appwindow.py |   24 ++++--------------------
+ demos/gtk-demo/demos/appwindow.py | 24 ++++--------------------
  1 file changed, 4 insertions(+), 20 deletions(-)
 
 commit 015185f502c498c21cb108d3bb288c5b6dbf202f
@@ -9623,7 +12477,7 @@ Date:    Mon Feb 14 15:05:44 2011 -0500
 
     [gi-demos] fixed use of tree_iter_get
 
- demos/gtk-demo/gtk-demo.py |   2 +-
+ demos/gtk-demo/gtk-demo.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 0c20977e4598e5447dd07c069e91226efacb1160
@@ -9634,13 +12488,13 @@ Date:  Fri Feb 11 22:02:03 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=638899
 
- PKG-INFO.in                    |    2 +-
- README                                 |    3 +-
- configure.ac                   |    3 --
- examples/gio/directory-async.py |   33 -----------------
- examples/gio/downloader.py     |   77
- ---------------------------------------
- pygobject.doap                         |    2 +-
+ 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(-)
 
 commit e4ebbd7de5570af1abf41bdf9469d4ce3edd48cb
@@ -9707,9 +12561,9 @@ Date:    Fri Feb 11 11:05:04 2011 -0500
     * this branch will drop support for the static binding
     * use the pygobject-2-28 branch for static binding fixes
 
- NEWS        |  289
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- configure.ac |    4 +-
+ NEWS        | 289
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ configure.ac |   4 +-
  2 files changed, 291 insertions(+), 2 deletions(-)
 
 commit 16140237aa45b4f188923da9f95b9d2af971011b
@@ -9718,10 +12572,10 @@ 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 +
+ autogen.sh       | 3 +++
+ configure.ac     | 6 ------
+ m4/python.m4     | 9 +++++----
+ tests/runtests.py | 1 +
  4 files changed, 9 insertions(+), 10 deletions(-)
 
 commit c2079f415638ef892b1e51f25eaafa3e1621667f
@@ -9730,8 +12584,8 @@ Date:    Thu Feb 10 22:26:00 2011 +0100
 
     Add missing libraries to link against
 
- glib/Makefile.am    |   2 +-
- gobject/Makefile.am |   1 +
+ glib/Makefile.am    | 2 +-
+ gobject/Makefile.am | 1 +
  2 files changed, 2 insertions(+), 1 deletion(-)
 
 commit 3cca62a9e7afd3d3d302c66f4fafe253f7743d4e
@@ -9746,7 +12600,7 @@ Date:    Wed Jan 19 15:00:56 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639948
 
- tests/runtests.py |   9 +++++++++
+ tests/runtests.py | 9 +++++++++
  1 file changed, 9 insertions(+)
 
 commit 14c4cf8e6edae893538680964380d543bde4a14d
@@ -9761,7 +12615,7 @@ Date:    Wed Feb 9 11:34:59 2011 +0100
     session
     D-BUS (such as distribution package builds).
 
- tests/Makefile.am |   3 ++-
+ tests/Makefile.am | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit 0858f550e2b6f75e3f583f963f5952f5ddae4e0e
@@ -9773,7 +12627,7 @@ Date:    Tue Feb 8 15:46:36 2011 +0100
     - TestCase.assert_() has been deprecated by assertTrue().
     - Exceptions don't have a message attribute any more, use str(e)
 
- tests/test_gdbus.py |  34 +++++++++++++++-------------------
+ tests/test_gdbus.py | 34 +++++++++++++++-------------------
  1 file changed, 15 insertions(+), 19 deletions(-)
 
 commit b7f32e4cca0cef201489b55653f96ac64a8f9ab9
@@ -9788,10 +12642,10 @@ Date:  Sat Jan 29 12:20:50 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=640838
 
- gi/overrides/Gio.py             |   54 ++++++++++++++++++++++++++++
- tests/org.gnome.test.gschema.xml |    9 +++++
- tests/test_overrides.py         |   73
- ++++++++++++++++++++++++++++++--------
+ gi/overrides/Gio.py             | 54 +++++++++++++++++++++++++++++
+ tests/org.gnome.test.gschema.xml |  9 +++++
+ tests/test_overrides.py         | 73
+ ++++++++++++++++++++++++++++++++--------
  3 files changed, 122 insertions(+), 14 deletions(-)
 
 commit 8dad0eaed60a9de26e9a729a48a1f6bc74be486e
@@ -9807,8 +12661,8 @@ Date:    Fri Feb 4 16:36:07 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=641493
 
- gi/types.py     |    4 +++-
- tests/test_gi.py |    8 ++++++++
+ gi/types.py     | 4 +++-
+ tests/test_gi.py | 8 ++++++++
  2 files changed, 11 insertions(+), 1 deletion(-)
 
 commit 2660be1f227be7a53092483bc9d8ead1bd1fb266
@@ -9824,7 +12678,7 @@ Date:    Thu Feb 3 15:31:42 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639945
 
- tests/test_overrides.py |   40 ++++++++++++++++++++++++++++++++++++++++
+ tests/test_overrides.py | 40 ++++++++++++++++++++++++++++++++++++++++
  1 file changed, 40 insertions(+)
 
 commit d57500537014b3da624be33b40401ba289fa22b8
@@ -9833,8 +12687,8 @@ 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 ++++++++++++++++++++++++++++++++++---
+ gi/pygi-cache.c  | 18 +++---------------
+ gi/pygi-invoke.c | 37 ++++++++++++++++++++++++++++++++++---
  2 files changed, 37 insertions(+), 18 deletions(-)
 
 commit 99d6e6c8d806e6f9e48c3c2380024fb3511d110a
@@ -9843,8 +12697,8 @@ Date:    Wed Feb 2 19:27:40 2011 -0500
 
     [gi] fix container object reffing
 
- gi/pygi-argument.c |   7 +++----
- gi/pygi-cache.c    |  12 ++++--------
+ gi/pygi-argument.c |  7 +++----
+ gi/pygi-cache.c    | 12 ++++--------
  2 files changed, 7 insertions(+), 12 deletions(-)
 
 commit 09acaff29dfaabc77477cffca2c7137f68991e7f
@@ -9853,9 +12707,9 @@ Date:    Wed Feb 2 21:00:48 2011 +0100
 
     [python 3] use the right syntaxis to raise exceptions
 
- codegen/argtypes.py   |    8 ++++----
- codegen/definitions.py |   14 +++++++-------
- gi/overrides/Gtk.py   |    2 +-
+ codegen/argtypes.py   |  8 ++++----
+ codegen/definitions.py | 14 +++++++-------
+ gi/overrides/Gtk.py   |  2 +-
  3 files changed, 12 insertions(+), 12 deletions(-)
 
 commit 36094e5982d3e05d5662843b6d401f0974f5235f
@@ -9864,7 +12718,7 @@ 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 +++---
+ tests/testhelpermodule.c | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit c913c1789296310c2cf27554ce719d7f6e9c94cd
@@ -9875,7 +12729,7 @@ Date:    Wed Feb 2 20:37:21 2011 +0100
 
     This is to avoid some warnings when building with python 3
 
- gi/gimodule.c |    6 +++---
+ gi/gimodule.c | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit 7bc4122897d9d05172a2bd5b56bded87e2afaec4
@@ -9896,8 +12750,8 @@ Date:    Sat Jan 29 00:16:50 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=640868
 
- gobject/pygobject.c     |    4 +++-
- tests/test_everything.py |    9 ++++++++-
+ gobject/pygobject.c     | 4 +++-
+ tests/test_everything.py | 9 ++++++++-
  2 files changed, 11 insertions(+), 2 deletions(-)
 
 commit afeaaa126f7cd6556fb855ecd0facc174c0f946c
@@ -9914,8 +12768,8 @@ Date:    Wed Jan 19 16:19:46 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639936
 
- gi/overrides/Gdk.py    |    6 ++++++
- tests/test_overrides.py |    8 ++++++++
+ gi/overrides/Gdk.py    | 6 ++++++
+ tests/test_overrides.py | 8 ++++++++
  2 files changed, 14 insertions(+)
 
 commit 4a67f45880433905de33632fe0c32a13b44c0b33
@@ -9924,7 +12778,7 @@ Date:    Mon Jan 31 16:51:37 2011 -0500
 
     [gi] handle hash being NULL
 
- gi/pygi-argument.c |   6 ++++++
+ gi/pygi-argument.c | 6 ++++++
  1 file changed, 6 insertions(+)
 
 commit 2fbfe410f4b4394a2018ada0e538585c1bec23ae
@@ -9933,9 +12787,9 @@ 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 +-
+ gi/pygi-cache.c  | 70
+ ++++++++++++++++++++++++++++++++++++++++----------------
+ gi/pygi-invoke.c |  2 +-
  2 files changed, 51 insertions(+), 21 deletions(-)
 
 commit 858669f92c9907dd70b4966d6a8521ed122225be
@@ -9944,7 +12798,7 @@ Date:    Mon Jan 31 17:38:52 2011 +0100
 
     Ship tests/org.gnome.test.gschema.xml in dist tarballs
 
- tests/Makefile.am |   3 ++-
+ tests/Makefile.am | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit 77d76df59606e470808085e977fb199cc76e8251
@@ -9953,9 +12807,9 @@ 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 +++++----
+ gi/pygi-argument.c | 155
+ +++++++++++++++++++++++++++++++++++++++++++++++++----
+ gi/pygi-cache.c    |  27 ++++++----
  2 files changed, 162 insertions(+), 20 deletions(-)
 
 commit bd66af67f248a3ca90d2fa2626605263c2392e16
@@ -9964,8 +12818,8 @@ Date:    Sun Jan 30 17:06:44 2011 -0500
 
     [gi] whitespace fixes
 
- gi/pygi-cache.c |   60
- +++++++++++++++++++++++++++----------------------------
+ gi/pygi-cache.c | 60
+ ++++++++++++++++++++++++++++-----------------------------
  1 file changed, 30 insertions(+), 30 deletions(-)
 
 commit 1cdbd4be9b015f792c2c02afa5ac7e24edbdae86
@@ -9979,11 +12833,11 @@ Date:  Sun Jan 30 17:04:13 2011 -0500
     * 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 +++++++---
+ 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
@@ -10008,8 +12862,8 @@ Date:   Sat Jan 29 13:49:36 2011 -0500
 
     [gi] marshal arrays out
 
- gi/pygi-argument.c |  101
- ++++++++++++++++++++++++++++++++++++++++++++++++++--
+ gi/pygi-argument.c | 101
+ +++++++++++++++++++++++++++++++++++++++++++++++++++--
  1 file changed, 99 insertions(+), 2 deletions(-)
 
 commit e62e7062d5cfd782eac64852f681c63e2776b8d4
@@ -10018,8 +12872,8 @@ Date:   Sat Jan 29 13:48:23 2011 -0500
 
     [gi] fix sequence caching to support out
 
- gi/pygi-cache.c |  111
- +++++++++++++++++++++++++++++++++++++++++++------------
+ gi/pygi-cache.c | 111
+ ++++++++++++++++++++++++++++++++++++++++++++------------
  1 file changed, 87 insertions(+), 24 deletions(-)
 
 commit 69207910209ebfe450df616aeb8fa4cc2e7eccf3
@@ -10032,9 +12886,9 @@ 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/org.gnome.test.gschema.xml |   16 ++++++++++++++++
- tests/test_overrides.py         |   31 +++++++++++++++++++++++++++++++
+ tests/Makefile.am               |  7 +++++--
+ tests/org.gnome.test.gschema.xml | 16 ++++++++++++++++
+ tests/test_overrides.py         | 31 +++++++++++++++++++++++++++++++
  3 files changed, 52 insertions(+), 2 deletions(-)
 
 commit 488478a83640d50baee963337fcc870fec76b784
@@ -10048,8 +12902,8 @@ Date:   Fri Jan 28 07:20:26 2011 +0100
     consistent
     with the actual GTK API.
 
- gi/overrides/Gtk.py    |   19 ++++++++++++++-----
- tests/test_overrides.py |    4 ++--
+ gi/overrides/Gtk.py    | 19 ++++++++++++++-----
+ tests/test_overrides.py |  4 ++--
  2 files changed, 16 insertions(+), 7 deletions(-)
 
 commit dace1a553793fb7fb054b60760f02c9e5cf00b38
@@ -10063,8 +12917,8 @@ 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 +++++
- tests/test_overrides.py |    9 +++++++++
+ gi/overrides/Gtk.py    | 5 +++++
+ tests/test_overrides.py | 9 +++++++++
  2 files changed, 14 insertions(+)
 
 commit 91d34124b2a5128e93e13c7fee8693d5edc4e9bb
@@ -10076,7 +12930,7 @@ Date:   Thu Jan 27 12:23:18 2011 +0100
     This var behaves like .gitignore and allows us to skip some specific
     files.
 
- Makefile.am |  27 +++++++++++++++++++++++++++
+ Makefile.am | 27 +++++++++++++++++++++++++++
  1 file changed, 27 insertions(+)
 
 commit 8a98d26981ce68809a21c64cac4962e58c927905
@@ -10088,25 +12942,25 @@ Date: Thu Jan 27 12:15:30 2011 +0100
     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
- +++++++++++++++++++++++++++++++++++++++++++++
- glib/Makefile.am         |    2 +
- gobject/.gitignore       |    3 -
- gobject/Makefile.am      |    2 +
- tests/.gitignore         |    2 -
- tests/Makefile.am        |    2 +
+ .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 +
  18 files changed, 222 insertions(+), 100 deletions(-)
 
 commit 331c42b63bc60a3b906fa21e1c0a7c1b9428f347
@@ -10115,7 +12969,7 @@ Date:   Thu Jan 27 12:04:19 2011 +0100
 
     pygi-convert.sh: Convert Pango.TabAlign.*
 
- pygi-convert.sh |    1 +
+ pygi-convert.sh | 1 +
  1 file changed, 1 insertion(+)
 
 commit be1a2959fa0a3d8682e0e8aef389d73dacab0689
@@ -10127,7 +12981,7 @@ Date:   Thu Jan 27 12:02:39 2011 +0100
     It is doing more harm than good for projects which use things like
     self.window.
 
- pygi-convert.sh |    1 -
+ pygi-convert.sh | 1 -
  1 file changed, 1 deletion(-)
 
 commit dd7deb4b658c56857c26b1a278a3d688f2ea6a2a
@@ -10136,7 +12990,7 @@ Date:   Thu Jan 27 11:58:26 2011 +0100
 
     pygi-convert.sh: Don't convert self.window assignments
 
- pygi-convert.sh |    2 +-
+ pygi-convert.sh | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 975341a26772966d4afc87a88a6a566d61237fa0
@@ -10147,8 +13001,8 @@ Date:   Fri Jan 21 18:41:54 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=640184
 
- gobject/gobjectmodule.c |    1 +
- tests/test_gobject.py  |    4 ++++
+ gobject/gobjectmodule.c | 1 +
+ tests/test_gobject.py  | 4 ++++
  2 files changed, 5 insertions(+)
 
 commit a59e2d58bdb3f31a4f415dbe14b7d9988ac28ce3
@@ -10159,7 +13013,7 @@ Date:   Fri Jan 21 15:54:43 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=640184
 
- tests/test_gobject.py |   21 +++++++++++++++++++++
+ tests/test_gobject.py | 21 +++++++++++++++++++++
  1 file changed, 21 insertions(+)
 
 commit 7d70105eb324ea4b6a58c2d3fb3f2dda36e7ab33
@@ -10170,10 +13024,10 @@ Date: Fri Jan 21 17:24:49 2011 +0100
 
     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
@@ -10182,7 +13036,7 @@ 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 +++-
+ tests/test_gi.py | 4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)
 
 commit 843553ea958eddec185bb660851a310dc050a14b
@@ -10191,7 +13045,7 @@ 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 +++++-
+ gi/overrides/Gio.py | 6 +++++-
  1 file changed, 5 insertions(+), 1 deletion(-)
 
 commit 6ff357839feb39930a5f3175de3d0ed35f24d3f4
@@ -10255,12 +13109,12 @@ Date: Wed Jan 26 15:17:03 2011 -0500
          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 ++++++++++++-------
- tests/test_overrides.py |    8 +++++---
+ 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
@@ -10269,8 +13123,8 @@ Date:   Wed Jan 26 14:00:08 2011 -0500
 
     [gi] fix try/except blocks using depricated raise format
 
- gi/overrides/GLib.py |    4 ++--
- gi/overrides/Gdk.py  |    2 +-
+ gi/overrides/GLib.py | 4 ++--
+ gi/overrides/Gdk.py  | 2 +-
  2 files changed, 3 insertions(+), 3 deletions(-)
 
 commit d3e30e240fed6ef1dd40fd29fd13dc2effc6c7b1
@@ -10279,7 +13133,7 @@ Date:   Wed Jan 26 19:03:48 2011 +0100
 
     [gi] Add docstring to GLib.Variant constructor
 
- gi/overrides/GLib.py |   11 +++++++++++
+ gi/overrides/GLib.py | 11 +++++++++++
  1 file changed, 11 insertions(+)
 
 commit 963cd52fec26f7a4fb34414f8ac6662932ede322
@@ -10288,7 +13142,7 @@ Date:   Wed Jan 26 18:45:38 2011 +0100
 
     [gi] update gdbus test cases for previous GVariant change
 
- tests/test_gdbus.py |   4 ++--
+ tests/test_gdbus.py | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 27e3a6276ff5f2cdc03ddf69ee80d44c3bf2c094
@@ -10313,8 +13167,8 @@ Date:   Wed Jan 26 18:39:17 2011 +0100
 
     Thanks to Ryan Lortie for pointing this out!
 
- gi/overrides/GLib.py   |   25 ++++++++++---------------
- tests/test_overrides.py |   32 +++++++++++++-------------------
+ gi/overrides/GLib.py   | 25 ++++++++++---------------
+ tests/test_overrides.py | 32 +++++++++++++-------------------
  2 files changed, 23 insertions(+), 34 deletions(-)
 
 commit b15e8e2c0c933d0f827a70280faf875ac383d81b
@@ -10341,8 +13195,8 @@ Date:   Wed Jan 26 00:40:49 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=640629
 
- gi/types.py     |   26 +++++++++++++-------------
- tests/test_gi.py |   13 +++++++++++++
+ gi/types.py     | 26 +++++++++++++-------------
+ tests/test_gi.py | 13 +++++++++++++
  2 files changed, 26 insertions(+), 13 deletions(-)
 
 commit 569d42ac2f50fb706ef289ff631db743483f40ee
@@ -10375,9 +13229,9 @@ Date:   Thu Jan 20 16:26:18 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=640073
 
- gi/types.py     |  104
- +++++++++++++++++++++++++++++++++---------------------
- tests/test_gi.py |   13 +++++++
+ gi/types.py     | 104
+ ++++++++++++++++++++++++++++++++++---------------------
+ tests/test_gi.py |  13 +++++++
  2 files changed, 77 insertions(+), 40 deletions(-)
 
 commit 8f4e6536f3c2edf38a45632d1c23eb7c6681c3be
@@ -10386,7 +13240,7 @@ Date:   Mon Jan 24 19:23:19 2011 +0100
 
     pygi-convert.sh: Convert gtk.UI_MANAGER_*
 
- pygi-convert.sh |    1 +
+ pygi-convert.sh | 1 +
  1 file changed, 1 insertion(+)
 
 commit 1f473b5164407a178203eb8cc7f3c786e0d0e5c2
@@ -10395,7 +13249,7 @@ Date:   Fri Jan 21 18:41:54 2011 +0100
 
     pygi-convert.sh: Convert gdk.GRAB_*
 
- pygi-convert.sh |    1 +
+ pygi-convert.sh | 1 +
  1 file changed, 1 insertion(+)
 
 commit f5d0b7b9d189f65503c0bf66d8bda4186ca3223a
@@ -10404,7 +13258,7 @@ Date:   Fri Jan 21 16:45:07 2011 +0100
 
     [gi] set the gtype GValue correctly
 
- gi/pygi-property.c |   4 ++--
+ gi/pygi-property.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit ce521011d7f6d7f082aaea76fa05c5af9f6e93f5
@@ -10413,11 +13267,11 @@ 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
@@ -10426,8 +13280,8 @@ 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 ++++++++++++------------
+ gi/pygi-argument.c | 14 +++++++++-----
+ gi/pygi-cache.c    | 24 ++++++++++++------------
  2 files changed, 21 insertions(+), 17 deletions(-)
 
 commit 4c93bdeae76830aa4029dfc86e32e6f277d5271d
@@ -10436,7 +13290,7 @@ Date:   Fri Jan 21 08:18:37 2011 -0500
 
     [gi] marshal unions
 
- gi/pygi-cache.c |   27 +++++++++++++--------------
+ gi/pygi-cache.c | 27 +++++++++++++--------------
  1 file changed, 13 insertions(+), 14 deletions(-)
 
 commit a060287d1a6d190acb9d344f08fd5662e3296da5
@@ -10445,9 +13299,9 @@ 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(+)
 
 commit e7699d9af41f8c374326b8a4ec0939ef1426e386
@@ -10456,7 +13310,7 @@ Date:   Fri Jan 21 04:28:15 2011 -0500
 
     [gi] error out if the constructor returns NULL
 
- gi/pygi-invoke.c |    7 +++++++
+ gi/pygi-invoke.c | 7 +++++++
  1 file changed, 7 insertions(+)
 
 commit 58ff2b2c38c1004861083ca88633be76767229f0
@@ -10466,7 +13320,7 @@ 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 +++++++++++
+ gi/pygi-cache.c | 11 +++++++++++
  1 file changed, 11 insertions(+)
 
 commit 5eb779439daa8bf1e86df689377dc10ef1430eab
@@ -10475,8 +13329,8 @@ Date:   Fri Jan 21 04:26:11 2011 -0500
 
     [gi] support struct out
 
- gi/pygi-argument.c |  30 ++++++++++++++++++++++++++----
- gi/pygi-cache.c    |  15 ++-------------
+ gi/pygi-argument.c | 30 ++++++++++++++++++++++++++----
+ gi/pygi-cache.c    | 15 ++-------------
  2 files changed, 28 insertions(+), 17 deletions(-)
 
 commit 3133dc595adf44279397d30712c0f8595f0e1acc
@@ -10493,16 +13347,16 @@ Date: Fri Jan 21 04:22:06 2011 -0500
       interface_info
       to the interface cache
 
- gi/pygi-argument.c        |   20 ++++----------------
- gi/pygi-cache.c           |   43
+ 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 ++++----
+ 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
@@ -10516,8 +13370,8 @@ 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 +++++++++++++++++-
- tests/test_overrides.py |   26 ++++++++++++++++++++++++++
+ gi/overrides/GLib.py   | 18 +++++++++++++++++-
+ tests/test_overrides.py | 26 ++++++++++++++++++++++++++
  2 files changed, 43 insertions(+), 1 deletion(-)
 
 commit 71dd03261fc06b8180c14cd31b54d8e4b200be3a
@@ -10535,7 +13389,7 @@ Date:   Thu Jan 20 19:48:23 2011 +0100
 
     GNOME bug #639880
 
- pygi-convert.sh |    1 +
+ pygi-convert.sh | 1 +
  1 file changed, 1 insertion(+)
 
 commit d1b0fa501cc431baa530d96fb50f4c35590890ac
@@ -10546,7 +13400,7 @@ Date:   Thu Jan 20 19:45:01 2011 +0100
 
     GNOME bug #639880
 
- pygi-convert.sh |    1 +
+ pygi-convert.sh | 1 +
  1 file changed, 1 insertion(+)
 
 commit 6d8ff4d5bdda5480089543869535cc3ee83da2f5
@@ -10571,9 +13425,9 @@ Date:   Wed Jan 19 11:41:11 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639939
 
- gi/overrides/GLib.py   |  229
- +++++++++++++++++++++++++----------------------
- tests/test_overrides.py |  159 ++++++++++++++++++++++++++++++--
+ gi/overrides/GLib.py   | 229
+ ++++++++++++++++++++++++++----------------------
+ tests/test_overrides.py | 159 +++++++++++++++++++++++++++++++--
  2 files changed, 273 insertions(+), 115 deletions(-)
 
 commit ac095f5435f106e175fa3297cb273e63c85d2809
@@ -10582,7 +13436,7 @@ Date:   Thu Jan 20 15:55:45 2011 +0100
 
     Uncomment test_gi.TestInterfaceClash
 
- tests/test_gi.py |   22 +++++++++++-----------
+ tests/test_gi.py | 22 +++++++++++-----------
  1 file changed, 11 insertions(+), 11 deletions(-)
 
 commit 1239f3709ba257c404dda72b7067b77b19c240fa
@@ -10591,9 +13445,9 @@ 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 +++++++------
+ gi/pygi-argument.c | 121
+ +++++++++++++++++++++++++++++++++++++++++------------
+ gi/pygi-cache.c    |  30 ++++++-------
  2 files changed, 111 insertions(+), 40 deletions(-)
 
 commit f0a0b6c2eda89622de2b1e5ebb6a48103ad72a42
@@ -10608,13 +13462,13 @@ 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
- ++++++++++++++++++++++++++++++++++++++++++++++
- tests/testhelpermodule.c |   50 ++++++++++++++++++++++++++++++++++++
+ 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
@@ -10629,11 +13483,11 @@ 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/testhelpermodule.c |   51 ++++++++++++++++++++++++++++++++++++++
+ tests/test-floating.c   | 30 +++++++++++++++++++++++
+ tests/test-floating.h   | 20 ++++++++++++++++
+ tests/test_gobject.py   | 62
+ ++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/testhelpermodule.c | 51 +++++++++++++++++++++++++++++++++++++++
  4 files changed, 163 insertions(+)
 
 commit b6737b91938d527872eff1d645a205cacf94e15d
@@ -10644,7 +13498,7 @@ Date:   Wed Jan 19 14:52:41 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639949
 
- tests/test_gobject.py |    8 +++++++-
+ tests/test_gobject.py | 8 +++++++-
  1 file changed, 7 insertions(+), 1 deletion(-)
 
 commit 2b0f1ede820414ef1cfd6b37569fcb946d2031fc
@@ -10659,7 +13513,7 @@ 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 --
+ gi/overrides/Gtk.py | 2 --
  1 file changed, 2 deletions(-)
 
 commit b59edf4f0f7cab44033f9d704d476e10ee0d0c0a
@@ -10668,7 +13522,7 @@ Date:   Wed Jan 19 18:04:10 2011 +0100
 
     Fix a typo in a private symbol name.
 
- gobject/gobjectmodule.c |    6 +++---
+ gobject/gobjectmodule.c | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit 6447688e283a8fb22de3ab68cbc06e34ad23d198
@@ -10677,7 +13531,7 @@ Date:   Thu Jan 20 11:49:08 2011 +0100
 
     pygi-convert.sh: Convert glib.source_remove()
 
- pygi-convert.sh |    1 +
+ pygi-convert.sh | 1 +
  1 file changed, 1 insertion(+)
 
 commit 84ee8de4bc00a8f901926cc6386d73c12dbd0b0b
@@ -10686,7 +13540,7 @@ Date:   Thu Jan 20 11:42:34 2011 +0100
 
     Fix typo in previous commit to actually convert glib.GError
 
- pygi-convert.sh |    2 +-
+ pygi-convert.sh | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit b238cb614338f46e6feb7935cca0a55c7a929418
@@ -10696,7 +13550,7 @@ 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 +++
+ pygi-convert.sh | 3 +++
  1 file changed, 3 insertions(+)
 
 commit 21c09a7ee294b59abb3eca6f64f13bf5c8a2fa0e
@@ -10714,8 +13568,8 @@ Date:   Wed Jan 19 12:00:02 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639934
 
- gi/overrides/Gtk.py    |   14 ++++++++++++--
- tests/test_overrides.py |   34 +++++++++++++++++++++++++++-------
+ gi/overrides/Gtk.py    | 14 ++++++++++++--
+ tests/test_overrides.py | 34 +++++++++++++++++++++++++++-------
  2 files changed, 39 insertions(+), 9 deletions(-)
 
 commit d465e25297ad6589ff2cd0c00e11e8bd8ffe3f78
@@ -10730,7 +13584,7 @@ Date:   Wed Jan 19 22:52:51 2011 +0100
     in bug
     639939 does.
 
- tests/test_overrides.py |    2 +-
+ tests/test_overrides.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 2b8e1d0531dcb8f57dc9f2fddf25970bee3daa90
@@ -10741,8 +13595,8 @@ Date:   Wed Jan 19 20:18:19 2011 +0100
 
     This extends commit b1a98083c to also work for strings.
 
- gi/overrides/GLib.py   |    8 +++++++-
- tests/test_overrides.py |   13 +++++++++++++
+ gi/overrides/GLib.py   |  8 +++++++-
+ tests/test_overrides.py | 13 +++++++++++++
  2 files changed, 20 insertions(+), 1 deletion(-)
 
 commit 8efd14c87b35072cdd039bf223f8ced8f51be9bb
@@ -10751,7 +13605,7 @@ Date:   Wed Jan 19 14:08:03 2011 -0500
 
     [gi] return NULL if out_marshaller fails
 
- gi/pygi-invoke.c |    5 +++++
+ gi/pygi-invoke.c | 5 +++++
  1 file changed, 5 insertions(+)
 
 commit 5b1db41d60204c8021f47f43b85dac126c389c8d
@@ -10760,9 +13614,9 @@ 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 +++++++++--------
+ gi/pygi-argument.c |  4 ++++
+ gi/pygi-cache.c    | 11 ++++++++---
+ gi/pygi-invoke.c   | 17 +++++++++--------
  3 files changed, 21 insertions(+), 11 deletions(-)
 
 commit 7c2f48bb6d67ec9a1ee5ac03a5aee34b54c6ebdd
@@ -10777,8 +13631,8 @@ 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 +++++++
+ gi/pygi-info.c | 37 +++++++++++++++++++++++++++++++++++++
+ gi/types.py   |  7 +++++++
  2 files changed, 44 insertions(+)
 
 commit db7300e173388d9557dcd2333781bfaa6b021605
@@ -10787,7 +13641,7 @@ Date:   Wed Jan 19 18:54:39 2011 +0100
 
     pygi-convert.sh: Migrate Gdk.Cursor constructor, and some cursor names
 
- pygi-convert.sh |    2 ++
+ pygi-convert.sh | 2 ++
  1 file changed, 2 insertions(+)
 
 commit 4c1d4faddf1c9cb233c484da3eadd8e31c231f70
@@ -10800,7 +13654,7 @@ Date:   Wed Jan 19 18:43:29 2011 +0100
     calling the
     GtkWidget methods instead.
 
- pygi-convert.sh |    5 ++++-
+ pygi-convert.sh | 5 ++++-
  1 file changed, 4 insertions(+), 1 deletion(-)
 
 commit b1049b947d073fb569ba900a4d5c8519482d831e
@@ -10813,7 +13667,7 @@ Date:   Wed Jan 19 17:35:09 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639967
 
- gi/pygi-argument.c |   4 ++--
+ gi/pygi-argument.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 25b69ae257a12b6dc97ed3f2f7ea54b166ddbba1
@@ -10833,9 +13687,9 @@ Date:   Wed Jan 19 17:45:11 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639834
 
- gi/Makefile.am   |    3 ++-
- gi/pygi-invoke.c |   12 +++---------
- tests/test_gi.py |   10 ++++++++++
+ gi/Makefile.am   |  3 ++-
+ gi/pygi-invoke.c | 12 +++---------
+ tests/test_gi.py | 10 ++++++++++
  3 files changed, 15 insertions(+), 10 deletions(-)
 
 commit 18b84767db1d66e3d6f09067ab19ffd4b82539ca
@@ -10844,8 +13698,8 @@ 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 +-
+ gi/pygi-argument.c | 2 +-
+ gi/pygi-cache.c    | 2 +-
  2 files changed, 2 insertions(+), 2 deletions(-)
 
 commit c5d7c730008275b2c585b2609fc2ff5e051cce47
@@ -10855,9 +13709,9 @@ 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 +-
+ gi/pygi-argument.c | 90
+ +++++++++++++++++++++++++++++++++++++++++++++---------
+ gi/pygi-cache.c    |  2 +-
  2 files changed, 76 insertions(+), 16 deletions(-)
 
 commit e6fcafc6179e963cbae7774e7ee50415bde2c523
@@ -10875,7 +13729,7 @@ Date:   Wed Jan 19 17:03:06 2011 +0100
     preferred for
     now, so disable the replacement rules.
 
- pygi-convert.sh |   19 ++++++++++---------
+ pygi-convert.sh | 19 ++++++++++---------
  1 file changed, 10 insertions(+), 9 deletions(-)
 
 commit 167261d556eab0d2e448c7ed28eef540a024ba1d
@@ -10884,7 +13738,7 @@ Date:   Wed Jan 19 16:47:08 2011 +0100
 
     Link libregress.so to GIO_LIBS again
 
- configure.ac |    5 +++++
+ configure.ac | 5 +++++
  1 file changed, 5 insertions(+)
 
 commit d143afa6da4f5b5f47be8df11fa41d7b47ab1794
@@ -10897,7 +13751,7 @@ 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 +++++--
+ gi/overrides/Gdk.py | 7 +++++--
  1 file changed, 5 insertions(+), 2 deletions(-)
 
 commit 4f5d20966d4a8c649e5fae584039621edab178f3
@@ -10906,7 +13760,7 @@ Date:   Wed Jan 19 10:02:40 2011 -0500
 
     [gi] use correct format stings when setting errors
 
- gi/pygi-argument.c |  12 ++++++------
+ gi/pygi-argument.c | 12 ++++++------
  1 file changed, 6 insertions(+), 6 deletions(-)
 
 commit 7f08fd5c33ee5c9907f5becbe2f21fb7122d6e19
@@ -10915,7 +13769,7 @@ Date:   Wed Jan 19 09:45:09 2011 -0500
 
     [gi] allow marshalling strings as None
 
- gi/pygi-argument.c |   5 +++++
+ gi/pygi-argument.c | 5 +++++
  1 file changed, 5 insertions(+)
 
 commit 093242a9e125998cd07bf66fc4b2880f532a2e4d
@@ -10924,8 +13778,8 @@ 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 +++++++++---------
+ gi/pygi-argument.c |  2 +-
+ gi/pygi-cache.c    | 18 +++++++++---------
  2 files changed, 10 insertions(+), 10 deletions(-)
 
 commit f0b17605ed2eb917b350654b070984beb553eae3
@@ -10934,7 +13788,7 @@ Date:   Wed Jan 19 09:41:13 2011 -0500
 
     [gi] allow marshalling None for hashes
 
- gi/pygi-argument.c |   5 +++++
+ gi/pygi-argument.c | 5 +++++
  1 file changed, 5 insertions(+)
 
 commit 93f1b787ab8420300d1064c0237a0c2d8a2ac98f
@@ -10943,7 +13797,7 @@ Date:   Wed Jan 19 09:40:37 2011 -0500
 
     [gi] add marshalling to some out values
 
- gi/pygi-argument.c |  50
+ gi/pygi-argument.c | 50
  +++++++++++++++++++++++++++++++++++++++++---------
  1 file changed, 41 insertions(+), 9 deletions(-)
 
@@ -10953,7 +13807,7 @@ Date:   Wed Jan 19 15:27:33 2011 +0100
 
     [gi] Fixed typo in exception
 
- gi/overrides/Gtk.py |   2 +-
+ gi/overrides/Gtk.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 5f16df31b5a5a9f45f702eee48c3a18899ea3f71
@@ -10962,9 +13816,9 @@ 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 ++++----
+ gi/pygi-argument.c | 47 +++++++++++++++++++++++++++++++++++------------
+ gi/pygi-foreign.c  | 18 ++++++++++++------
+ gi/pygi-foreign.h  |  8 ++++----
  3 files changed, 51 insertions(+), 22 deletions(-)
 
 commit b2189424f9dd6d3a4a5b9792f0d5843fc27657d1
@@ -10973,7 +13827,7 @@ 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 ++--
+ gi/overrides/Gdk.py | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 5eca5ff2c9509ec96158fe43b29f0fd951243efe
@@ -10996,8 +13850,8 @@ Date:   Wed Jan 19 14:54:57 2011 +0100
 
     This reverts commit 8878c57676091c08e66bc6cbe735d898cb420582.
 
- gi/overrides/Pango.py  |    5 ++++-
- tests/test_overrides.py |    5 +++++
+ gi/overrides/Pango.py  | 5 ++++-
+ tests/test_overrides.py | 5 +++++
  2 files changed, 9 insertions(+), 1 deletion(-)
 
 commit 9e7b95b3676a1b502662523a9bd4ebe40ccb4845
@@ -11006,9 +13860,9 @@ Date:   Thu Dec 16 23:39:33 2010 +0000
 
     Python iterator interface support for GFileEnumerator.
 
- gi/overrides/Gio.py     |   41 +++++++++++++++++++++++++++++++++++++++++
- gi/overrides/Makefile.am |    1 +
- tests/test_overrides.py  |   20 ++++++++++++++++++++
+ gi/overrides/Gio.py     | 41 +++++++++++++++++++++++++++++++++++++++++
+ gi/overrides/Makefile.am |  1 +
+ tests/test_overrides.py  | 20 ++++++++++++++++++++
  3 files changed, 62 insertions(+)
 
 commit bca5834fc8fa342149e0eec7b396877a2abe6d33
@@ -11075,8 +13929,8 @@ 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
- ++++++++++++++++++++++++++--------------------------
+ gi/pygi-argument.c | 54
+ +++++++++++++++++++++++++++---------------------------
  1 file changed, 27 insertions(+), 27 deletions(-)
 
 commit 762ccb3d2620ea22023446b6ae79f3a111d8b56a
@@ -11085,7 +13939,7 @@ Date:   Wed Jan 19 07:49:52 2011 -0500
 
     [gi] return FALSE when setting errors in the marshaller
 
- gi/pygi-argument.c |   3 ++-
+ gi/pygi-argument.c | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit cbaba6357937cbed3ebd34d2db1cdd59d37df118
@@ -11094,10 +13948,10 @@ 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 +++++++++++++++++++-
+ 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
@@ -11106,7 +13960,7 @@ 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 +
+ gi/pygi-argument.c | 1 +
  1 file changed, 1 insertion(+)
 
 commit 09f7ca7e2378e6679002677ac3f4802f4cc7d9d5
@@ -11115,8 +13969,8 @@ 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 ++++
+ gi/pygi-argument.c | 1 +
+ tests/test_gi.py   | 4 ++++
  2 files changed, 5 insertions(+)
 
 commit 22eee43e50a150ace80694213fb87be9f0c72f51
@@ -11125,7 +13979,7 @@ Date:   Wed Jan 19 10:27:47 2011 +0100
 
     Convert Gdk.Pixbuf to GdkPixbuf.Pixbuf
 
- pygi-convert.sh |    1 +
+ pygi-convert.sh | 1 +
  1 file changed, 1 insertion(+)
 
 commit a4b210d69c832629894090b7154ae194209b0c60
@@ -11140,8 +13994,8 @@ 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 ++++++
+ glib/pyglib.c              | 12 ++++++++++++
+ gobject/pygobject-private.h | 6 ++++++
  2 files changed, 18 insertions(+)
 
 commit 329afb6fb1b3c325a6a9de2b6aca91c64d51dd9f
@@ -11150,9 +14004,9 @@ 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 +
+ gi/pygi-argument.c | 9 +++++++--
+ gi/pygi-cache.c    | 2 ++
+ gi/pygi-cache.h    | 1 +
  3 files changed, 10 insertions(+), 2 deletions(-)
 
 commit a000627ec3904b9414ce375aec8d144fc0c26248
@@ -11162,7 +14016,7 @@ 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 -
+ pygi-convert.sh | 1 -
  1 file changed, 1 deletion(-)
 
 commit 99ff4610fb5ece2fc8d2f9eba13e661968adf3f0
@@ -11171,7 +14025,7 @@ Date:   Tue Jan 18 18:26:01 2011 +0100
 
     pygi-convert.sh: Fix match for adding missing imports
 
- pygi-convert.sh |    8 ++++----
+ pygi-convert.sh | 8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit 3aa95011fad67df20370e92bf25236a34d7d08d3
@@ -11185,7 +14039,7 @@ Date:   Tue Jan 18 18:09:30 2011 +0100
     hackish unfortunately. We can't use a match test or a lookahead/behind
     assertion.
 
- pygi-convert.sh |    5 +++--
+ pygi-convert.sh | 5 +++--
  1 file changed, 3 insertions(+), 2 deletions(-)
 
 commit f66051380c0432bf142774542ade2144adcd455e
@@ -11194,7 +14048,7 @@ Date:   Tue Jan 18 11:44:27 2011 -0500
 
     [gi] use correct union memeber when marshalling floats
 
- gi/pygi-argument.c |   2 +-
+ gi/pygi-argument.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 36bc1c17e7d4189059337cc6a73c64edd819ec12
@@ -11203,7 +14057,7 @@ Date:   Tue Jan 18 17:29:52 2011 +0100
 
     Remove trailing whitespace from gi/overrides/Gtk.py
 
- gi/overrides/Gtk.py |  10 +++++-----
+ gi/overrides/Gtk.py | 10 +++++-----
  1 file changed, 5 insertions(+), 5 deletions(-)
 
 commit 1006df1929a667716c25e74b35b8f14643358732
@@ -11217,11 +14071,11 @@ Date: Tue Jan 18 11:24:06 2011 -0500
     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 +++------
+ 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
@@ -11236,7 +14090,7 @@ Date:   Tue Jan 18 16:47:10 2011 +0100
     (which works
     just fine now).
 
- gi/overrides/Pango.py |    7 +------
+ gi/overrides/Pango.py | 7 +------
  1 file changed, 1 insertion(+), 6 deletions(-)
 
 commit efbbe71634037fa100b17327389b883b259cca54
@@ -11247,7 +14101,7 @@ Date:   Tue Jan 18 16:23:39 2011 +0100
 
     This allows us to run the test suite against local typelibs.
 
- tests/Makefile.am |   2 +-
+ tests/Makefile.am | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit c96ca383350e5b9b079d9a86464922314939c006
@@ -11261,7 +14115,7 @@ Date:   Tue Jan 18 07:16:40 2011 -0500
     * use _pygi_g_type_info_size instead of _pygi_g_type_tag_size to
       support all types
 
- gi/pygi-cache.c |   42 ++++++++++++++++++++++++------------------
+ gi/pygi-cache.c | 42 ++++++++++++++++++++++++------------------
  1 file changed, 24 insertions(+), 18 deletions(-)
 
 commit f56d85a7f39c2088bf9fd50b1b1e5b67c03104d3
@@ -11278,8 +14132,8 @@ 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 ++++++++++++++++++----------
- tests/test_overrides.py |   12 +++++++++++-
+ gi/overrides/Gtk.py    | 28 ++++++++++++++++++----------
+ tests/test_overrides.py | 12 +++++++++++-
  2 files changed, 29 insertions(+), 11 deletions(-)
 
 commit 84d6142c14a7ebfb7284d3db52e14d3393f93905
@@ -11302,8 +14156,8 @@ 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
@@ -11314,7 +14168,7 @@ Date:   Tue Jan 18 12:57:13 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=612126
 
- configure.ac |    6 +++---
+ configure.ac | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit 761e98d32729f5894f4c75a54c65ed11329dc9d5
@@ -11323,7 +14177,7 @@ Date:   Tue Jan 18 12:52:32 2011 +0100
 
     pygi-convert.sh: Handle keysyms
 
- pygi-convert.sh |    1 +
+ pygi-convert.sh | 1 +
  1 file changed, 1 insertion(+)
 
 commit d62cdfa38a675c1daf3bc12d5cd769434eea5dc8
@@ -11332,7 +14186,7 @@ Date:   Tue Jan 18 12:14:09 2011 +0100
 
     GLib overrides: Add test case for array variant building
 
- tests/test_overrides.py |    7 +++++++
+ tests/test_overrides.py | 7 +++++++
  1 file changed, 7 insertions(+)
 
 commit 69a78307f3762e3f54d28d98514cec7d31ff20db
@@ -11343,8 +14197,8 @@ Date:   Tue Jan 18 10:21:03 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639824
 
- gi/pygi-foreign-cairo.c |   96
- -----------------------------------------------
+ gi/pygi-foreign-cairo.c | 96
+ -------------------------------------------------
  1 file changed, 96 deletions(-)
 
 commit 017680c9a5e163021628bf29543598861a3b600a
@@ -11355,7 +14209,7 @@ Date:   Tue Jan 18 10:20:25 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639823
 
- gi/pygi-invoke.c |    5 ++++-
+ gi/pygi-invoke.c | 5 ++++-
  1 file changed, 4 insertions(+), 1 deletion(-)
 
 commit 771ef76574690eb98926249f38661d741d1ebbb0
@@ -11364,7 +14218,7 @@ Date:   Tue Jan 18 12:02:01 2011 +0100
 
     The tags can be Empty not None.
 
- gi/overrides/Gtk.py |   2 +-
+ gi/overrides/Gtk.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit b1a98083cdc50653e1d7bfb809bdf089f833df3d
@@ -11379,9 +14233,9 @@ Date:   Tue Jan 18 12:01:28 2011 +0100
 
     Add corresponding test cases.
 
- gi/overrides/GLib.py   |   50 ++++++++++++++++++++++++++++++++++++++++++
- tests/test_overrides.py |   55
- +++++++++++++++++++++++++++++++++++++++++++++++
+ gi/overrides/GLib.py   | 50 ++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_overrides.py | 55
+ +++++++++++++++++++++++++++++++++++++++++++++++++
  2 files changed, 105 insertions(+)
 
 commit ecb9f824c503c529d43e585b4cdb4c1c9ab14593
@@ -11398,9 +14252,9 @@ 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 ++++++++++++++++++++++++++++++++-
+ tests/test_overrides.py | 33 ++++++++++++++++++++++++++++++++-
  2 files changed, 77 insertions(+), 1 deletion(-)
 
 commit 31c73dee34a52fd22b5ff3a23adce92cea5ddc3d
@@ -11409,8 +14263,8 @@ Date:   Tue Jan 18 10:56:18 2011 +0100
 
     Add override for gtk_text_buffer_insert_with_tags
 
- gi/overrides/Gtk.py    |   12 ++++++++++++
- tests/test_overrides.py |    6 ++++++
+ gi/overrides/Gtk.py    | 12 ++++++++++++
+ tests/test_overrides.py |  6 ++++++
  2 files changed, 18 insertions(+)
 
 commit fc7d7f7f153d57ff3866b7bfd5e6479d702cc4d9
@@ -11421,11 +14275,11 @@ Date: Mon Jan 17 14:35:14 2011 +0100
 
     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
@@ -11438,8 +14292,8 @@ Date:   Mon Jan 17 14:20:55 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620215
 
- configure.ac |    2 +-
- m4/python.m4 |   31 +------------------------------
+ configure.ac |  2 +-
+ m4/python.m4 | 31 +------------------------------
  2 files changed, 2 insertions(+), 31 deletions(-)
 
 commit e2dea065da94d17a915abe1ce4671b1dc48e02c0
@@ -11455,7 +14309,7 @@ Date:   Mon Jan 17 19:09:27 2011 +0100
 
        gi/overrides/Gtk.py
 
- gi/overrides/Gtk.py |  10 ----------
+ gi/overrides/Gtk.py | 10 ----------
  1 file changed, 10 deletions(-)
 
 commit 4fbae9629adc166627de05bb0946b71485343d69
@@ -11467,7 +14321,7 @@ Date:   Mon Jan 17 19:08:23 2011 +0100
 
     This reverts commit 232841148f35684be83a2f47b5b18da4fb74f63a.
 
- gi/overrides/Gtk.py |  13 ++-----------
+ gi/overrides/Gtk.py | 13 ++-----------
  1 file changed, 2 insertions(+), 11 deletions(-)
 
 commit c054f0aca67952876b3519bb75ddc62c5517f7cb
@@ -11479,7 +14333,7 @@ Date:   Mon Jan 17 19:08:06 2011 +0100
 
     This reverts commit ed7e7a8f22b1481acf78c0c2e4c489dbad72f599.
 
- gi/overrides/Gtk.py |   9 ---------
+ gi/overrides/Gtk.py | 9 ---------
  1 file changed, 9 deletions(-)
 
 commit 2d9534f347505573da46743b47318e08bf073aef
@@ -11488,7 +14342,7 @@ Date:   Mon Jan 17 18:54:10 2011 +0100
 
     pygi-convert.sh: Handle gtk.combo_box_new_text()
 
- pygi-convert.sh |    1 +
+ pygi-convert.sh | 1 +
  1 file changed, 1 insertion(+)
 
 commit 0586a83212a9f9234fe00659ae744ab04e7ccc67
@@ -11497,11 +14351,11 @@ 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 +-
+ 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
@@ -11511,7 +14365,7 @@ Date:   Mon Jan 17 16:57:53 2011 +0100
     Override TreeSortable.set_sort_func and set_default_sort_func to
     add default values to be pygtk compliant
 
- gi/overrides/Gtk.py |   6 ++++++
+ gi/overrides/Gtk.py | 6 ++++++
  1 file changed, 6 insertions(+)
 
 commit ed7e7a8f22b1481acf78c0c2e4c489dbad72f599
@@ -11521,7 +14375,7 @@ Date:   Mon Jan 17 16:29:28 2011 +0100
     Override Gtk.TreeViewColumn.pack_start, pack_end and
     set_cell_data_func to add default values to be compliant with pygtk
 
- gi/overrides/Gtk.py |   9 +++++++++
+ gi/overrides/Gtk.py | 9 +++++++++
  1 file changed, 9 insertions(+)
 
 commit 232841148f35684be83a2f47b5b18da4fb74f63a
@@ -11531,7 +14385,7 @@ Date:   Mon Jan 17 16:28:51 2011 +0100
     Override Gtk.CellLayout.pack_start and pack_end to add default values
     to be compliant with pygtk
 
- gi/overrides/Gtk.py |  13 +++++++++++--
+ gi/overrides/Gtk.py | 13 +++++++++++--
  1 file changed, 11 insertions(+), 2 deletions(-)
 
 commit 1dec12826753756fcadefc8ef8c756fc902c320b
@@ -11541,7 +14395,7 @@ Date:   Mon Jan 17 15:54:32 2011 +0100
     Override Gtk.Paned pack1 and pack2 to add default values to be
     compliant with pygtk
 
- gi/overrides/Gtk.py |  10 ++++++++++
+ gi/overrides/Gtk.py | 10 ++++++++++
  1 file changed, 10 insertions(+)
 
 commit a8c727b9c4195d8085a45661683a18614ae84485
@@ -11551,7 +14405,7 @@ Date:   Mon Jan 17 15:46:25 2011 +0100
     Override Gtk.Box.pack_start and pack_end to set default values to
     be compliant with pygtk
 
- gi/overrides/Gtk.py |  10 ++++++++++
+ gi/overrides/Gtk.py | 10 ++++++++++
  1 file changed, 10 insertions(+)
 
 commit 7cc8ac35bb0d8dbf7d66f014f8cd7ff070b3acb8
@@ -11562,8 +14416,8 @@ Date:   Wed Aug 4 00:30:05 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=625982
 
- gobject/propertyhelper.py |   26 +++++++++++++-------------
- tests/test_properties.py  |   9 +++++++++
+ gobject/propertyhelper.py | 26 +++++++++++++-------------
+ tests/test_properties.py  |  9 +++++++++
  2 files changed, 22 insertions(+), 13 deletions(-)
 
 commit 7a0548dbfbdfe481f75315b6bc7824a9f1a8a87b
@@ -11580,8 +14434,8 @@ Date:   Mon Jan 17 17:52:15 2011 +0100
 
     Add corresponding test case.
 
- gi/overrides/Gtk.py    |    2 +-
- tests/test_overrides.py |   12 +++++++++++-
+ gi/overrides/Gtk.py    |  2 +-
+ tests/test_overrides.py | 12 +++++++++++-
  2 files changed, 12 insertions(+), 2 deletions(-)
 
 commit 09c21c79fb6063c8451f53d4588363d2be7239f4
@@ -11598,14 +14452,14 @@ Date: Mon Jan 17 16:46:08 2011 +0100
     In Gstreamer, there is a function gst_version, which was previously
     inaccessible because of IntrospectionModule.version overriding it.
 
- gi/module.py                      |   26 +++++++++++++-------------
- gi/overrides/GIMarshallingTests.py |   2 +-
- gi/overrides/GLib.py              |    2 +-
- gi/overrides/Gdk.py               |   10 +++++-----
- gi/overrides/Gtk.py               |    2 +-
- gi/overrides/Pango.py             |    2 +-
- gi/overrides/__init__.py          |    2 +-
- tests/test_everything.py          |    2 +-
+ gi/module.py                      | 26 +++++++++++++-------------
+ gi/overrides/GIMarshallingTests.py |  2 +-
+ gi/overrides/GLib.py              |  2 +-
+ gi/overrides/Gdk.py               | 10 +++++-----
+ gi/overrides/Gtk.py               |  2 +-
+ gi/overrides/Pango.py             |  2 +-
+ gi/overrides/__init__.py          |  2 +-
+ tests/test_everything.py          |  2 +-
  8 files changed, 24 insertions(+), 24 deletions(-)
 
 commit 2c70beca9e76e4dc253453c556e6985ce59a3dd9
@@ -11615,8 +14469,8 @@ Date:   Mon Jan 17 16:17:25 2011 +0100
     Amend previous enum wrapping commit to remove redundant setting of
     __info__ attribute.
 
- gi/module.py |    2 +-
- gi/types.py  |    6 +++---
+ gi/module.py | 2 +-
+ gi/types.py  | 6 +++---
  2 files changed, 4 insertions(+), 4 deletions(-)
 
 commit 6fbb6be5a5d0d9cd43e1504b8dda5aa75feb95ca
@@ -11625,7 +14479,7 @@ Date:   Mon Jan 17 16:16:45 2011 +0100
 
     pygi-convert.sh: Handle GdkPixbuf.InterpType
 
- pygi-convert.sh |    2 ++
+ pygi-convert.sh | 2 ++
  1 file changed, 2 insertions(+)
 
 commit 66a5784f4ab5de5b6d8d51eb4ce869fa26f6a601
@@ -11643,9 +14497,9 @@ Date:   Mon Jan 17 15:43:34 2011 +0100
     enum from the GIMarshallingTests (updating gobject-introspection
     will be required).
 
- gi/module.py    |    2 +-
- gi/types.py     |    2 ++
- tests/test_gi.py |   10 ++++++++++
+ gi/module.py    |  2 +-
+ gi/types.py     |  2 ++
+ tests/test_gi.py | 10 ++++++++++
  3 files changed, 13 insertions(+), 1 deletion(-)
 
 commit da50d5620a42046d4fc905bb28a0890d73533cb1
@@ -11656,12 +14510,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-invoke.c |   72
- +++++++++++++++++++++++++++++++++++++++++-------------
- gi/pygi-invoke.h |    3 ++-
- gi/types.py     |   28 ++++++++++++++++++++-
- tests/test_gi.py |    5 ++--
+ gi/pygi-info.c   |  4 ++--
+ gi/pygi-invoke.c | 72
+ +++++++++++++++++++++++++++++++++++++++++++-------------
+ gi/pygi-invoke.h |  3 ++-
+ gi/types.py     | 28 +++++++++++++++++++++-
+ tests/test_gi.py |  5 ++--
  5 files changed, 89 insertions(+), 23 deletions(-)
 
 commit 8ceef79c98a1c2e22ed8ab655ef1169f1763dd23
@@ -11686,18 +14540,18 @@ 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/pyglib.c          |   48
- +++--------------------------------------------
- glib/pygmaincontext.c  |   22 ++++++++++++++++++++++
- glib/pygmaincontext.h  |    2 +-
- glib/pygmainloop.c     |    2 +-
- glib/pygoptioncontext.c |   21 +++++++++++++++++++++
- glib/pygoptioncontext.h |    2 ++
- glib/pygoptiongroup.c  |   26 +++++++++++++++++++++++++
- glib/pygoptiongroup.h  |    2 ++
- glib/pygsource.c       |    2 +-
+ glib/glibmodule.c      |  5 ++++-
+ glib/pyglib-private.h  |  3 +++
+ glib/pyglib.c          | 48
+ +++---------------------------------------------
+ glib/pygmaincontext.c  | 22 ++++++++++++++++++++++
+ glib/pygmaincontext.h  |  2 +-
+ glib/pygmainloop.c     |  2 +-
+ glib/pygoptioncontext.c | 21 +++++++++++++++++++++
+ glib/pygoptioncontext.h |  2 ++
+ glib/pygoptiongroup.c  | 26 ++++++++++++++++++++++++++
+ glib/pygoptiongroup.h  |  2 ++
+ glib/pygsource.c       |  2 +-
  11 files changed, 86 insertions(+), 49 deletions(-)
 
 commit 17caffe4eeefeaf33a56ececbc6c7454f60b9d76
@@ -11706,7 +14560,7 @@ Date:   Mon Jan 17 14:51:26 2011 +0100
 
     pygi-convert.sh: Handle Gdk.DragAction
 
- pygi-convert.sh |    1 +
+ pygi-convert.sh | 1 +
  1 file changed, 1 insertion(+)
 
 commit aa390aa80f06ac83ec89e5c5ee143d21ace97917
@@ -11717,7 +14571,7 @@ Date:   Mon Jan 17 14:46:58 2011 +0100
 
     There are other GSettings.get_* functions like get_for_screen().
 
- pygi-convert.sh |    2 +-
+ pygi-convert.sh | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 2e6d5bb49425e6087ca61765ecb72e7a760f2ab2
@@ -11728,7 +14582,7 @@ Date:   Mon Jan 17 11:22:46 2011 +0100
 
     This particular affects dbus.mainloop.glib.*
 
- pygi-convert.sh |    2 +-
+ pygi-convert.sh | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 3887b030fc19d25e0cd7b4ed504f4ed23363c3d6
@@ -11739,7 +14593,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 ++++
+ gi/pygi-property.c | 4 ++++
  1 file changed, 4 insertions(+)
 
 commit a4950b4cbb3c7567a8586061bb361adb7d9afb98
@@ -11750,7 +14604,7 @@ Date:   Sun Jan 16 21:43:30 2011 +0100
 
     Do not leak type_info in find_vfunc_info
 
- gi/gimodule.c |   10 +++++-----
+ gi/gimodule.c | 10 +++++-----
  1 file changed, 5 insertions(+), 5 deletions(-)
 
 commit d0cbcc45366d40702c69cef207d3c0f361260c02
@@ -11761,8 +14615,8 @@ Date:   Sun Jan 16 12:16:31 2011 +0100
 
     It is fairly common and even gtk itself still has attach_defaults.
 
- gi/overrides/Gtk.py    |    3 +++
- tests/test_overrides.py |    4 ++++
+ gi/overrides/Gtk.py    | 3 +++
+ tests/test_overrides.py | 4 ++++
  2 files changed, 7 insertions(+)
 
 commit 6409d659326bf3cefdf6051379e8bc2031f16733
@@ -11771,7 +14625,7 @@ Date:   Sat Jan 15 11:20:23 2011 -0600
 
     pygi-convert.sh: Convert Pango.WrapMode
 
- pygi-convert.sh |    1 +
+ pygi-convert.sh | 1 +
  1 file changed, 1 insertion(+)
 
 commit 6aaa6a38198e84a189ca1e8d26b1871d5b6bb711
@@ -11784,7 +14638,7 @@ Date:   Sat Jan 15 11:17:09 2011 -0600
     changing those,
     just change module names which start with "gtk" or "gdk".
 
- pygi-convert.sh |    4 ++--
+ pygi-convert.sh | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 9be0f1f2dfb89150faf1827ef482feea03645149
@@ -11793,10 +14647,10 @@ 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 ++++++--
+ 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
@@ -11805,9 +14659,9 @@ Date:   Thu Jan 13 21:07:25 2011 -0500
 
     [gi] marshal in hashes
 
- gi/pygi-argument.c |  93 +++++++++++++++++++++++++++++++++++++--
- gi/pygi-cache.c    |  122
- ++++++++++++++++++++++++++++++++++++----------------
+ gi/pygi-argument.c |  93 ++++++++++++++++++++++++++++++++++++++--
+ gi/pygi-cache.c    | 122
+ +++++++++++++++++++++++++++++++++++++----------------
  2 files changed, 176 insertions(+), 39 deletions(-)
 
 commit c36fbf4918c8557a8e274a12004a412da3b22b2c
@@ -11828,8 +14682,8 @@ Date:   Tue Jan 11 21:41:47 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639229
 
- gi/module.py            |   28 +++++++++++++++++++++-------
- tests/test_everything.py |   18 ++++++++++++++++++
+ gi/module.py            | 28 +++++++++++++++++++++-------
+ tests/test_everything.py | 18 ++++++++++++++++++
  2 files changed, 39 insertions(+), 7 deletions(-)
 
 commit 1679e6af3f212e4d4644e048dc3c6177ed3fac6b
@@ -11838,7 +14692,7 @@ Date:   Thu Jan 13 00:02:20 2011 +0100
 
     pygi-convert.sh: handle ReliefStyle
 
- pygi-convert.sh |    1 +
+ pygi-convert.sh | 1 +
  1 file changed, 1 insertion(+)
 
 commit e9166ba5d19f2b586f65a3b83a671a5afd486d8f
@@ -11847,8 +14701,8 @@ Date:   Wed Jan 12 16:50:30 2011 -0500
 
     [gi] support for GList and GSList in
 
- gi/pygi-argument.c |  122
- +++++++++++++++++++++++++++++++++++++++++++++++++---
+ gi/pygi-argument.c | 122
+ ++++++++++++++++++++++++++++++++++++++++++++++++++---
  1 file changed, 116 insertions(+), 6 deletions(-)
 
 commit 9baf3240fbac103823ad0feaaf1c82e46d276722
@@ -11857,9 +14711,9 @@ 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 +++++++
+ gi/pygi-cache.c  | 3 ++-
+ gi/pygi-cache.h  | 1 +
+ gi/pygi-invoke.c | 7 +++++++
  3 files changed, 10 insertions(+), 1 deletion(-)
 
 commit d54d12c66226910952b0dc44c8d9514a7edaa6f2
@@ -11870,8 +14724,8 @@ Date:   Wed Jan 12 16:23:02 2011 -0500
 
     * get the correct item_size and pass the GArray data not the GArray
 
- gi/pygi-argument.c |  39 ++++++++++++++++++++++-----------------
- gi/pygi-cache.c    |   3 ++-
+ gi/pygi-argument.c | 39 ++++++++++++++++++++++-----------------
+ gi/pygi-cache.c    |  3 ++-
  2 files changed, 24 insertions(+), 18 deletions(-)
 
 commit 3b0eff80d2ee35e0417476f0a170b9e178e3d1ee
@@ -11880,11 +14734,11 @@ 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
- +++++++++++++++++++++++++++++++++++++++--
+ 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
@@ -11893,7 +14747,7 @@ Date:   Tue Jan 11 22:21:18 2011 +0100
 
     setup.py: fix the provides keyword argument
 
- setup.py |    2 +-
+ setup.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 59dac72d0fa8e1d68bbbc13d76c2747f1cb11857
@@ -11902,7 +14756,7 @@ Date:   Tue Jan 11 22:19:18 2011 +0100
 
     setup.py: use the same spaces-less format for all setup() parameters
 
- setup.py |    8 ++++----
+ setup.py | 8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit c5c149be171895d292852df364541f14f0ec423a
@@ -11911,12 +14765,12 @@ 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 +-
+ 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
@@ -11925,11 +14779,11 @@ 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 +
+ gi/pygi-argument.c | 74
+ ++++++++++++++++++++++++++++++++++++++++----------
+ gi/pygi-cache.c    | 79
+ ++++++++++++++++++++++++++++++++++++++++++------------
+ gi/pygi-cache.h    |  1 +
  3 files changed, 123 insertions(+), 31 deletions(-)
 
 commit 4992dca9f5cea68d85eb2ed86105c9c6b8311d79
@@ -11949,7 +14803,7 @@ Date:   Tue Jan 11 19:30:38 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639232
 
- gi/module.py |    9 +++++++++
+ gi/module.py | 9 +++++++++
  1 file changed, 9 insertions(+)
 
 commit 2ffaec59e7349c145a0e2a5edba2ffb7d8628369
@@ -11960,7 +14814,7 @@ Date:   Tue Jan 11 19:40:19 2011 +0100
 
     Breaks marshalling of some types
 
- gi/module.py |    2 +-
+ gi/module.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 52a298cc0f05ceec96457f17f9a801e9838fb757
@@ -11981,7 +14835,7 @@ Date:   Tue Jan 11 19:26:50 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=639229
 
- gi/module.py |   10 +++++++---
+ gi/module.py | 10 +++++++---
  1 file changed, 7 insertions(+), 3 deletions(-)
 
 commit 369a75ba5fb64ff7a7c95d21f8bfe359e639e9ff
@@ -11993,11 +14847,11 @@ Date: Mon Jan 10 17:55:03 2011 -0500
     * 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 +
+ 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
@@ -12006,7 +14860,7 @@ Date:   Mon Jan 10 15:33:56 2011 -0500
 
     [gi] fix casting when marshaling a char to uint8
 
- gi/pygi-argument.c |   2 +-
+ gi/pygi-argument.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 441da4a7346ca059630dbc820c5b46e4d0222f4b
@@ -12020,15 +14874,15 @@ Date: Mon Jan 10 15:07:16 2011 -0500
     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 +
+ 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
@@ -12040,11 +14894,11 @@ Date: Sun Jan 9 19:37:55 2011 -0500
     * 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 ++
+ 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
@@ -12053,7 +14907,7 @@ Date:   Sun Jan 9 18:05:31 2011 -0500
 
     [gi] fix some function names
 
- gi/pygi-cache.c |    5 ++---
+ gi/pygi-cache.c | 5 ++---
  1 file changed, 2 insertions(+), 3 deletions(-)
 
 commit 2ec4230a5180f048c26c2e4234b2a098d42f030b
@@ -12062,10 +14916,10 @@ 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 ++++----
+ gi/pygi-argument.c | 122 +++++++++----------
+ gi/pygi-cache.c    | 344
+ +++++++++++++++++++++++++++++------------------------
+ gi/pygi-cache.h    |  50 ++++----
  3 files changed, 273 insertions(+), 243 deletions(-)
 
 commit f4cdf0c0321285da015686fcb7115bd91bfd5c7c
@@ -12075,13 +14929,13 @@ 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 ++++----
+ 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
@@ -12095,10 +14949,10 @@ Date: Sat Jan 8 19:10:29 2011 -0500
       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 +-
+ gi/pygi-argument.c |  76 ++++++++++++++++-
+ gi/pygi-cache.c    | 242
+ ++++++++++++++++++++++-------------------------------
+ gi/pygi-cache.h    |  4 +-
  3 files changed, 175 insertions(+), 147 deletions(-)
 
 commit 202a268db7f98f5a3c525c6e65ec4bff1917257e
@@ -12109,7 +14963,7 @@ Date:   Sat Jan 8 02:19:52 2011 +0000
 
     Needed for G_TYPE_CONVERTER_FLAGS and others.
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit c3aa36151fdef9ed9884d93114786bbe86387983
@@ -12118,7 +14972,7 @@ Date:   Fri Jan 7 12:58:11 2011 +0100
 
     Add test for incorrect attributes in Gdk.Event
 
- tests/test_overrides.py |    4 ++++
+ tests/test_overrides.py | 4 ++++
  1 file changed, 4 insertions(+)
 
 commit 204b45c7e95eb50d9e3843127fb10e13b1b17fee
@@ -12141,7 +14995,7 @@ Date:   Sun Jan 2 19:25:55 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=638523
 
- gi/overrides/Gdk.py |   2 +-
+ gi/overrides/Gdk.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 6cf298ca5565d0eb99824f050ff47407e50a5c01
@@ -12152,7 +15006,7 @@ Date:   Fri Jan 7 09:08:31 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=638847
 
- gi/pygi-closure.c |   3 +++
+ gi/pygi-closure.c | 3 +++
  1 file changed, 3 insertions(+)
 
 commit 1be76d5e006efa24598ff7bf26153660dbe0a890
@@ -12163,7 +15017,7 @@ Date:   Fri Jan 7 09:07:35 2011 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=638847
 
- gi/pygi-argument.c |   1 +
+ gi/pygi-argument.c | 1 +
  1 file changed, 1 insertion(+)
 
 commit 43849c51391fc9cd239697065c3d40fa02fb6783
@@ -12172,8 +15026,8 @@ Date:   Thu Jan 6 17:30:14 2011 -0500
 
     whitespace fixes
 
- gi/pygi-cache.c |   24 ++++++++++++------------
- gi/pygi-cache.h |   42 +++++++++++++++++++++---------------------
+ gi/pygi-cache.c | 24 ++++++++++++------------
+ gi/pygi-cache.h | 42 +++++++++++++++++++++---------------------
  2 files changed, 33 insertions(+), 33 deletions(-)
 
 commit 8b5b3d2bbbbdf5d26c83e9a6fe67121cbd77ebe1
@@ -12184,11 +15038,11 @@ Date: Thu Jan 6 17:29:00 2011 -0500
 
     * still doesn't compile
 
- gi/pygi-argument.c |  708
- ++++++++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-argument.h |  35 ++-
- gi/pygi-cache.c    |  82 ++++--
- gi/pygi-cache.h    |  41 ++-
+ 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
@@ -12200,9 +15054,9 @@ Date:   Tue Jan 4 18:49:53 2011 -0500
     * 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 ++++++++++++
+ gi/pygi-cache.c | 480
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-cache.h | 104 ++++++++++++
  2 files changed, 584 insertions(+)
 
 commit 8d5a7857876669f56bb03bf618bcfdcc290721c0
@@ -12213,8 +15067,8 @@ Date:   Wed Dec 22 12:34:10 2010 -0800
 
     https://bugzilla.gnome.org/show_bug.cgi?id=637832
 
- gi/pygi-closure.c |   66
- +++++++++++++++++++++++++++++++++++++++++++++--------
+ gi/pygi-closure.c | 66
+ ++++++++++++++++++++++++++++++++++++++++++++++---------
  1 file changed, 56 insertions(+), 10 deletions(-)
 
 commit f14976ffabec28f6cafe1e37dc81d207a947d4ca
@@ -12223,7 +15077,7 @@ Date:   Tue Dec 28 18:34:25 2010 +0100
 
     Fix stupid name clash
 
- gi/module.py |    7 +++++--
+ gi/module.py | 7 +++++--
  1 file changed, 5 insertions(+), 2 deletions(-)
 
 commit 01b2a193d403beb861eab524300b4f1af63157ce
@@ -12232,7 +15086,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 ++++++-
+ tests/Makefile.am | 7 ++++++-
  1 file changed, 6 insertions(+), 1 deletion(-)
 
 commit efc186f692f9eac781cc47456be74a3da7f14dcd
@@ -12241,7 +15095,7 @@ Date:   Tue Dec 28 13:25:34 2010 +0100
 
     Comment out tests that require SRV lookups
 
- tests/test_gresolver.py |    5 ++++-
+ tests/test_gresolver.py | 5 ++++-
  1 file changed, 4 insertions(+), 1 deletion(-)
 
 commit d2462cc1ab51d76fb4625c47c3d34de1d5d0dee8
@@ -12250,9 +15104,9 @@ Date:   Tue Dec 28 13:00:16 2010 +0100
 
     Use suppresion file when running valgrind
 
- tests/Makefile.am |   2 +-
- tests/python.supp |  387
- +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/Makefile.am |   2 +-
+ tests/python.supp | 387
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2 files changed, 388 insertions(+), 1 deletion(-)
 
 commit 0ee58113ecbea72784c52de928c041fc8fc88984
@@ -12261,12 +15115,12 @@ Date: Thu Dec 23 00:10:41 2010 +0100
 
     Fix warnings.
 
- gi/pygi-argument.c         |   16 +++++++---------
- gi/pygi-foreign-cairo.c     |  13 ++-----------
- gio/gfile.override         |    5 ++---
- glib/pyglib-python-compat.h |   3 +++
- glib/pyglib.c              |    2 +-
- glib/pygmainloop.c         |    3 ++-
+ gi/pygi-argument.c         | 16 +++++++---------
+ gi/pygi-foreign-cairo.c     | 13 ++-----------
+ gio/gfile.override         |  5 ++---
+ glib/pyglib-python-compat.h | 3 +++
+ glib/pyglib.c              |  2 +-
+ glib/pygmainloop.c         |  3 ++-
  6 files changed, 17 insertions(+), 25 deletions(-)
 
 commit 78ea84cd91392400ebac5a361ef8793bfe928fd0
@@ -12277,8 +15131,8 @@ Date:   Sun Dec 19 23:10:57 2010 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=637615
 
- gi/overrides/Gtk.py    |   12 ++++++------
- tests/test_overrides.py |    6 ++++++
+ gi/overrides/Gtk.py    | 12 ++++++------
+ tests/test_overrides.py |  6 ++++++
  2 files changed, 12 insertions(+), 6 deletions(-)
 
 commit 046cc5915286e042d1040271a90676b77632409e
@@ -12297,8 +15151,8 @@ Date:   Thu Dec 16 15:41:10 2010 -0500
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620579
 
- gobject/pygtype.c       |   35 ++++++++++++++++++++++++++---------
- tests/test_properties.py |   16 ++++++++++++++++
+ gobject/pygtype.c       | 35 ++++++++++++++++++++++++++---------
+ tests/test_properties.py | 16 ++++++++++++++++
  2 files changed, 42 insertions(+), 9 deletions(-)
 
 commit 7aa783d5cd674f34da318f826bd5f4a0e09d24cb
@@ -12308,7 +15162,7 @@ Date:   Tue Dec 14 12:29:54 2010 +0100
     dsextras.py: check if gcc is there when platform is win32 and compiler
     is mingw32
 
- dsextras.py |   6 ++++++
+ dsextras.py | 6 ++++++
  1 file changed, 6 insertions(+)
 
 commit cebf5f09a6c5018ced64f35e7747fc81b93b823e
@@ -12317,7 +15171,7 @@ Date:   Tue Dec 14 12:29:01 2010 +0100
 
     dsextras.py: be consistent in how distutils imports are done
 
- dsextras.py |   6 +++---
+ dsextras.py | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit 35e590d48c78f2e76c47c2b4eaf0f7e8d1ed5c93
@@ -12326,7 +15180,7 @@ Date:   Tue Dec 14 12:25:07 2010 +0100
 
     dsextras.py: add have_gcc() function
 
- dsextras.py |   5 +++++
+ dsextras.py | 5 +++++
  1 file changed, 5 insertions(+)
 
 commit 637c2c287cfb0e89365026531c651111f5593ac7
@@ -12335,7 +15189,7 @@ Date:   Tue Dec 14 12:24:41 2010 +0100
 
     dsextras.py: use distutils.spawn.find_executable for have_pkgconfig()
 
- dsextras.py |   8 ++------
+ dsextras.py | 8 ++------
  1 file changed, 2 insertions(+), 6 deletions(-)
 
 commit 020d00bc0ce7b77006b4d4f42d63122d79bcbf89
@@ -12344,7 +15198,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 +-
+ setup.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit b03cc9e0d66d8caea3cd6a63db198c43de9267e9
@@ -12353,7 +15207,7 @@ Date:   Mon Dec 13 10:21:52 2010 +0100
 
     pygi-convert.sh: improve GtkSourceView conversion
 
- pygi-convert.sh |    7 +++++++
+ pygi-convert.sh | 7 +++++++
  1 file changed, 7 insertions(+)
 
 commit fbc12cd7c09a67de9e28b7b0b28de9dc0e0e3418
@@ -12362,7 +15216,7 @@ Date:   Mon Dec 13 10:27:56 2010 +0100
 
     pygi-convert.sh: Gtk.DialogFlags conversion
 
- pygi-convert.sh |    1 +
+ pygi-convert.sh | 1 +
  1 file changed, 1 insertion(+)
 
 commit 73e933d2429aea4d14e15350a538da1c5c3f71eb
@@ -12379,7 +15233,7 @@ Date:   Sun Dec 12 20:38:46 2010 -0500
        Thanks to Krzesimir Nowak for suggesting this in a gtksourceviewmm
        recent commit.
 
- codegen/docextract_to_xml.py |    2 +-
+ codegen/docextract_to_xml.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit db7ffa75b007074cb6b33b547c6d8140da300a3e
@@ -12388,7 +15242,7 @@ Date:   Mon Dec 13 00:17:26 2010 +0100
 
     pygi-convert.sh: add more Gtk conversions and sort
 
- pygi-convert.sh |   50 ++++++++++++++++++++++++++------------------------
+ pygi-convert.sh | 50 ++++++++++++++++++++++++++------------------------
  1 file changed, 26 insertions(+), 24 deletions(-)
 
 commit f4bfe73d0ccedf7f671d3acd6d9e262d5383b733
@@ -12397,7 +15251,7 @@ Date:   Mon Dec 13 00:01:40 2010 +0100
 
     pygi-convert.sh: convert Atk
 
- pygi-convert.sh |   12 ++++++++++++
+ pygi-convert.sh | 12 ++++++++++++
  1 file changed, 12 insertions(+)
 
 commit e55ce3667eb1d352bf96f265bf018ffe8aea75f9
@@ -12406,7 +15260,7 @@ Date:   Sun Dec 12 23:48:48 2010 +0100
 
     pygi-convert.sh: convert a few more Gio types
 
- pygi-convert.sh |    9 +++++++++
+ pygi-convert.sh | 9 +++++++++
  1 file changed, 9 insertions(+)
 
 commit acc9f84bc6e13d76c6516cefe393d4a4f868aa24
@@ -12415,7 +15269,7 @@ Date:   Sun Dec 12 14:19:00 2010 +0100
 
     pygi-convert.sh: more GLib conversion
 
- pygi-convert.sh |    7 +++++++
+ pygi-convert.sh | 7 +++++++
  1 file changed, 7 insertions(+)
 
 commit c903390814bebdc62d530472f6f94feecc59b8b3
@@ -12424,7 +15278,7 @@ Date:   Sun Dec 12 14:00:34 2010 +0100
 
     pygi-convert.sh: remove two cases handled by overrides
 
- pygi-convert.sh |    2 --
+ pygi-convert.sh | 2 --
  1 file changed, 2 deletions(-)
 
 commit d33c987e505ec8ddffa2b8cb5526f05b9b5f62be
@@ -12433,8 +15287,8 @@ Date:   Sun Dec 12 13:38:56 2010 +0100
 
     Override Gtk.ScrolledWindow constructor
 
- gi/overrides/Gtk.py    |    7 +++++++
- tests/test_overrides.py |    7 +++++++
+ gi/overrides/Gtk.py    | 7 +++++++
+ tests/test_overrides.py | 7 +++++++
  2 files changed, 14 insertions(+)
 
 commit 1c24bb089fcd69e3104ae72a0e7560a8c5a3f05b
@@ -12443,7 +15297,7 @@ Date:   Sun Dec 12 12:32:39 2010 +0100
 
     pygi-convert.sh: Fix 'find' syntax
 
- pygi-convert.sh |    2 +-
+ pygi-convert.sh | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit f0a1d6b6bb53d0fa2788d8b9027d737b0aef8dfc
@@ -12452,7 +15306,7 @@ Date:   Sun Dec 12 12:29:38 2010 +0100
 
     pygi-convert.sh: start handling Gio and GLib
 
- pygi-convert.sh |    8 ++++++++
+ pygi-convert.sh | 8 ++++++++
  1 file changed, 8 insertions(+)
 
 commit 365bf3251af3498dc797a58cce071805451b49b1
@@ -12461,7 +15315,7 @@ Date:   Sat Dec 11 23:05:31 2010 +0100
 
     pygi-convert.sh: convert Gdk.ScrollDirection.
 
- pygi-convert.sh |    1 +
+ pygi-convert.sh | 1 +
  1 file changed, 1 insertion(+)
 
 commit bca603de0f217fb290189a0ea330f82961c46d5d
@@ -12474,8 +15328,8 @@ Date:   Sat Dec 11 15:03:21 2010 +0100
     not a
     gobject property so we need to jump through some oops.
 
- gi/overrides/Pango.py  |   13 +++++++++++++
- tests/test_overrides.py |    6 ++++++
+ gi/overrides/Pango.py  | 13 +++++++++++++
+ tests/test_overrides.py |  6 ++++++
  2 files changed, 19 insertions(+)
 
 commit df233301802e3f7f9ce338cde015ca2a2fc648ab
@@ -12486,7 +15340,7 @@ Date:   Sat Dec 11 14:18:53 2010 +0100
 
     It is now properly handled by an override.
 
- pygi-convert.sh |    1 -
+ pygi-convert.sh | 1 -
  1 file changed, 1 deletion(-)
 
 commit d8abcc9463542af9cd43d71849d0ad4c183b570b
@@ -12495,8 +15349,8 @@ Date:   Fri Dec 10 14:05:20 2010 +0100
 
     Override GtkAction and GtkRadioAction constructors.
 
- gi/overrides/Gtk.py    |   20 +++++++++++++++++---
- tests/test_overrides.py |   18 ++++++++++++++++++
+ gi/overrides/Gtk.py    | 20 +++++++++++++++++---
+ tests/test_overrides.py | 18 ++++++++++++++++++
  2 files changed, 35 insertions(+), 3 deletions(-)
 
 commit 7924b18a99a0680c04aca46be4b64a7aa507dfe5
@@ -12507,8 +15361,8 @@ Date:   Sat Dec 4 22:13:28 2010 +0000
 
     https://bugzilla.gnome.org/show_bug.cgi?id=636486
 
- gi/overrides/Gtk.py    |    7 +++++++
- tests/test_overrides.py |    9 +++++++++
+ gi/overrides/Gtk.py    | 7 +++++++
+ tests/test_overrides.py | 9 +++++++++
  2 files changed, 16 insertions(+)
 
 commit e76352dd83c8706e68ad57d00d185da9afea99c4
@@ -12517,8 +15371,8 @@ Date:   Thu Dec 9 13:23:10 2010 -0500
 
     add secondary_text apis to MessageDialog
 
- gi/overrides/Gtk.py    |    8 ++++++++
- tests/test_overrides.py |    8 ++++++++
+ gi/overrides/Gtk.py    | 8 ++++++++
+ tests/test_overrides.py | 8 ++++++++
  2 files changed, 16 insertions(+)
 
 commit de682b2d36c362140ab7d43c0743b01ec0865a74
@@ -12527,7 +15381,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 +++----
+ gi/overrides/Gtk.py | 7 +++----
  1 file changed, 3 insertions(+), 4 deletions(-)
 
 commit dbb16571803bf51f497768bf80944514f4290ee5
@@ -12536,7 +15390,7 @@ Date:   Wed Dec 8 18:25:15 2010 +0100
 
     Fix demo for override changes.
 
- demos/gtk-demo/gtk-demo.py |   5 +++--
+ demos/gtk-demo/gtk-demo.py | 5 +++--
  1 file changed, 3 insertions(+), 2 deletions(-)
 
 commit 2adcd95762944a4e27123093d3c8d080e49be1ea
@@ -12545,11 +15399,10 @@ Date: Wed Dec 8 18:06:01 2010 +0100
 
     Override Pango.FontDescription.
 
- demos/gtk-demo/gtk-demo.py |   2 +-
- gi/overrides/Makefile.am   |   1 +
- gi/overrides/Pango.py     |   40
- ++++++++++++++++++++++++++++++++++++++++
- tests/test_overrides.py    |   7 +++++++
+ demos/gtk-demo/gtk-demo.py |  2 +-
+ gi/overrides/Makefile.am   |  1 +
+ gi/overrides/Pango.py     | 40 ++++++++++++++++++++++++++++++++++++++++
+ tests/test_overrides.py    |  7 +++++++
  4 files changed, 49 insertions(+), 1 deletion(-)
 
 commit 769da968c9187414d0420412d8fb8c833d12042a
@@ -12563,9 +15416,9 @@ Date:   Wed Dec 8 17:38:11 2010 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=619606
 
- gi/gimodule.c   |    4 +++-
- gi/types.py     |   12 ++----------
- tests/test_gi.py |   10 ----------
+ gi/gimodule.c   |  4 +++-
+ gi/types.py     | 12 ++----------
+ tests/test_gi.py | 10 ----------
  3 files changed, 5 insertions(+), 21 deletions(-)
 
 commit 167a01c46b3fa0b3c8339502c875d32bd2bca974
@@ -12574,7 +15427,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 +++---
+ demos/gtk-demo/gtk-demo.py | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit d2cfd6e9250d40de7c715ac74e299deddf137683
@@ -12587,7 +15440,7 @@ Date:   Wed Dec 8 17:34:54 2010 +0100
     end up up with two 'label' in the kwds dict. Besides 'str' is a
     reserved keyword.
 
- gi/overrides/Gtk.py |   4 ++--
+ gi/overrides/Gtk.py | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit c0c684c9bb4e2bc08d7cb6ac246705e8a3b77656
@@ -12596,7 +15449,7 @@ Date:   Wed Dec 8 14:16:39 2010 +0100
 
     Fix typo when raising an exception
 
- gi/types.py |   2 +-
+ gi/types.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 88c9a3ad49d9fcf779c3523672d8bf4767910301
@@ -12605,7 +15458,7 @@ Date:   Wed Dec 8 10:46:27 2010 +0100
 
     pygi-convert.sh: Added more conversions
 
- pygi-convert.sh |   14 ++++++++++++++
+ pygi-convert.sh | 14 ++++++++++++++
  1 file changed, 14 insertions(+)
 
 commit 4d8d96326b2cac91e6d75e6601b92e202d1918ff
@@ -12614,8 +15467,8 @@ Date:   Tue Dec 7 20:39:15 2010 +0100
 
     Override LinkButton constructor to make 'uri' mandatory
 
- gi/overrides/Gtk.py    |    7 +++++++
- tests/test_overrides.py |    6 ++++++
+ gi/overrides/Gtk.py    | 7 +++++++
+ tests/test_overrides.py | 6 ++++++
  2 files changed, 13 insertions(+)
 
 commit f4f7fb35af1b41598dc050f5df155a01c370a920
@@ -12624,8 +15477,8 @@ Date:   Sat Dec 4 19:19:19 2010 +0600
 
     Container should be iterable.
 
- gi/overrides/Gtk.py    |    9 +++++++++
- tests/test_overrides.py |    6 +++++-
+ gi/overrides/Gtk.py    | 9 +++++++++
+ tests/test_overrides.py | 6 +++++-
  2 files changed, 14 insertions(+), 1 deletion(-)
 
 commit d2ad05d6d8d53b941e0ad33fcb200f1245a2d308
@@ -12634,7 +15487,7 @@ Date:   Tue Dec 7 14:13:00 2010 +0100
 
     No need to import Gdk
 
- gi/overrides/Gtk.py |   1 -
+ gi/overrides/Gtk.py | 1 -
  1 file changed, 1 deletion(-)
 
 commit b6a40badf0b2b59e690ce818efb03c7c816b8a04
@@ -12643,7 +15496,7 @@ Date:   Tue Dec 7 14:07:53 2010 +0100
 
     Remove semicolumns
 
- gi/overrides/Gtk.py |   7 +++----
+ gi/overrides/Gtk.py | 7 +++----
  1 file changed, 3 insertions(+), 4 deletions(-)
 
 commit cdc9c26553bf47ea488676e7bdc5f8ab0a2c906b
@@ -12653,7 +15506,7 @@ Date:   Mon Dec 6 16:05:30 2010 -0500
     [gi] make sure Gtk.Button override passes all keywords to parent
     constructor
 
- gi/overrides/Gtk.py |   4 ++--
+ gi/overrides/Gtk.py | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit cede81ad65db017e95543d8d35715751aa202fed
@@ -12662,7 +15515,7 @@ Date:   Sun Dec 5 13:31:20 2010 +0100
 
     Fix cut&paste error in the Label override
 
- gi/overrides/Gtk.py |   2 +-
+ gi/overrides/Gtk.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 607c59b74ebbc1e39cb4121c870b689e1888c106
@@ -12671,7 +15524,7 @@ Date:   Sat Dec 4 16:03:27 2010 +0100
 
     pygi-convert.sh: handle TextWindowType
 
- pygi-convert.sh |    1 +
+ pygi-convert.sh | 1 +
  1 file changed, 1 insertion(+)
 
 commit dfeabe0b68938e27da2e65903983b5113dc422f1
@@ -12680,8 +15533,8 @@ Date:   Sat Dec 4 15:49:15 2010 +0100
 
     Override Label constructor to behave like pygtk
 
- gi/overrides/Gtk.py    |    7 +++++++
- tests/test_overrides.py |    4 ++++
+ gi/overrides/Gtk.py    | 7 +++++++
+ tests/test_overrides.py | 4 ++++
  2 files changed, 11 insertions(+)
 
 commit da4e045e5abbed2796cc4ed39df35a0dde2de31b
@@ -12690,8 +15543,8 @@ Date:   Sat Dec 4 15:40:35 2010 +0100
 
     Override GtkTable constructor to behave like pygtk
 
- gi/overrides/Gtk.py    |    7 +++++++
- tests/test_overrides.py |   12 ++++++++++++
+ gi/overrides/Gtk.py    |  7 +++++++
+ tests/test_overrides.py | 12 ++++++++++++
  2 files changed, 19 insertions(+)
 
 commit 81452c23ab1befa59ff375692e582791432796a5
@@ -12700,7 +15553,7 @@ Date:   Sat Dec 4 12:59:43 2010 +0100
 
     pygi-convert.sh: convert MovementStep
 
- pygi-convert.sh |    1 +
+ pygi-convert.sh | 1 +
  1 file changed, 1 insertion(+)
 
 commit 4d097eea94258eda0c328711491fd456cbd6741b
@@ -12713,7 +15566,7 @@ Date:   Sat Dec 4 11:57:02 2010 +0100
     point we
     shuld just clean up the old stuff.
 
- gi/overrides/Gdk.py |  22 ++++++++++++++++------
+ gi/overrides/Gdk.py | 22 ++++++++++++++++------
  1 file changed, 16 insertions(+), 6 deletions(-)
 
 commit cda317195566711d66190145b545e26ed7226172
@@ -12731,8 +15584,8 @@ Date:   Thu Dec 2 23:47:40 2010 -0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=636336
 
- gi/overrides/Gtk.py     |    5 ++++-
- gi/overrides/__init__.py |   27 +++++++++++++++++++++++++--
+ gi/overrides/Gtk.py     |  5 ++++-
+ gi/overrides/__init__.py | 27 +++++++++++++++++++++++++--
  2 files changed, 29 insertions(+), 3 deletions(-)
 
 commit 82689cbf53d92b1b951a459fe3de0e1d3a91791a
@@ -12757,8 +15610,8 @@ Date:   Thu Dec 2 16:27:04 2010 -0500
 
     https://bugzilla.gnome.org/show_bug.cgi?id=635172
 
- gi/overrides/Gtk.py    |   38 ++++++++++++++++++++++++++++++++++++--
- tests/test_overrides.py |    8 +++++++-
+ gi/overrides/Gtk.py    | 38 ++++++++++++++++++++++++++++++++++++--
+ tests/test_overrides.py |  8 +++++++-
  2 files changed, 43 insertions(+), 3 deletions(-)
 
 commit 677490e9402bad7b7c2a832345ef54f7f0c5fc7f
@@ -12769,8 +15622,8 @@ Date:   Fri Dec 3 23:39:50 2010 +0100
 
     The "path" argument may also be a string or a tuple
 
- gi/overrides/Gtk.py    |   10 ++++++++++
- tests/test_overrides.py |   29 +++++++++++++++++++++++++++++
+ gi/overrides/Gtk.py    | 10 ++++++++++
+ tests/test_overrides.py | 29 +++++++++++++++++++++++++++++
  2 files changed, 39 insertions(+)
 
 commit dacfe618fa244445c979f1a5efa80c1f9a5a4ae9
@@ -12783,8 +15636,8 @@ Date:   Fri Dec 3 23:29:00 2010 +0100
     override __new__ and it will be useful for all the api that take a
     TreePath or a string or a tuple.
 
- gi/overrides/Gtk.py    |   33 +++++++++++++++------------------
- tests/test_overrides.py |   18 ++++++++++++++++++
+ gi/overrides/Gtk.py    | 33 +++++++++++++++------------------
+ tests/test_overrides.py | 18 ++++++++++++++++++
  2 files changed, 33 insertions(+), 18 deletions(-)
 
 commit 7a8af9e220ee48aa28f6b025c5dae324b14fe128
@@ -12793,8 +15646,8 @@ Date:   Sun Nov 28 13:02:30 2010 +0100
 
     Override Container to behave like a sequence
 
- gi/overrides/Gtk.py    |    6 ++++++
- tests/test_overrides.py |   11 +++++++++++
+ gi/overrides/Gtk.py    |  6 ++++++
+ tests/test_overrides.py | 11 +++++++++++
  2 files changed, 17 insertions(+)
 
 commit 94e8befc935d4a6c7f766e34195e10fc3fb3b93a
@@ -12807,8 +15660,7 @@ Date:   Tue Nov 30 16:57:05 2010 -0500
     * this patch does the recursion using the previous patche's support
     functions
 
- gi/types.py |  55
- +++++++++++++++++++++++++++++++++++++++++++++----------
+ gi/types.py | 55 +++++++++++++++++++++++++++++++++++++++++++++----------
  1 file changed, 45 insertions(+), 10 deletions(-)
 
 commit 9c5aee4f06f92457f9ae987656c0c469f76d0ee8
@@ -12821,9 +15673,9 @@ Date:   Thu Jul 22 23:19:51 2010 +1000
 
     https://bugzilla.gnome.org/show_bug.cgi?id=625033
 
- gi/gimodule.c   |  130
- +++++++++++++++++++++++++++++++++++++++---------------
- tests/test_gi.py |   37 ++++++++++++++++
+ gi/gimodule.c   | 130
+ ++++++++++++++++++++++++++++++++++++++++---------------
+ tests/test_gi.py |  37 ++++++++++++++++
  2 files changed, 131 insertions(+), 36 deletions(-)
 
 commit 78358e1ab54d02317f397276adee03ecb2187588
@@ -12832,8 +15684,8 @@ Date:   Mon Nov 29 18:29:57 2010 -0500
 
     add a profiling torture test for when we fix up invoke
 
- tests/test_everything.py |   67
- ++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_everything.py | 67
+ ++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 67 insertions(+)
 
 commit 792e679c06df4357843fd310c7953a931172fc99
@@ -12853,13 +15705,13 @@ Date: Mon Nov 29 16:41:38 2010 -0500
     out if it
       causes any issues with legacy modules and code
 
- gi/Makefile.am                   |    2 +-
- gi/overrides/Makefile.am  |   2 +-
- gi/repository/Makefile.am |   2 +-
- glib/Makefile.am         |    2 +-
- gobject/Makefile.am      |    2 +-
- tests/test_gi.py         |    2 --
- tests/test_overrides.py   |   3 ---
+ gi/Makefile.am                   | 2 +-
+ gi/overrides/Makefile.am  | 2 +-
+ gi/repository/Makefile.am | 2 +-
+ glib/Makefile.am         | 2 +-
+ gobject/Makefile.am      | 2 +-
+ tests/test_gi.py         | 2 --
+ tests/test_overrides.py   | 3 ---
  7 files changed, 5 insertions(+), 10 deletions(-)
 
 commit c587e1ace7429195ac6fd4db03d2f33e2af09838
@@ -12868,7 +15720,7 @@ Date:   Mon Nov 29 15:11:46 2010 -0500
 
     add test for inout argument count
 
- tests/test_gi.py |    1 +
+ tests/test_gi.py | 1 +
  1 file changed, 1 insertion(+)
 
 commit 5de88b4bcffdafcf8c7c20033cdf95dc690199ce
@@ -12879,8 +15731,8 @@ Date:   Mon Nov 22 19:17:23 2010 -0500
 
     https://bugzilla.gnome.org/show_bug.cgi?id=623615
 
- gi/pygi-argument.c      |   27 ++++++++++++++++++++++++++-
- tests/test_everything.py |   17 +++++++++++++++--
+ gi/pygi-argument.c      | 27 ++++++++++++++++++++++++++-
+ tests/test_everything.py | 17 +++++++++++++++--
  2 files changed, 41 insertions(+), 3 deletions(-)
 
 commit f129b3db2c78d3cce3614993fdd1619fb9eb9c79
@@ -12891,10 +15743,10 @@ Date: Sun Nov 21 12:16:53 2010 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=623615
 
- gi/pygi-argument.c      |   60
- ++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-info.c                  |    5 ++++
- tests/test_everything.py |    5 ++++
+ gi/pygi-argument.c      | 60
+ ++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-info.c                  |  5 ++++
+ tests/test_everything.py |  5 ++++
  3 files changed, 70 insertions(+)
 
 commit fd2c0288eb67823fca1265348a27a9f8f147ae50
@@ -12903,7 +15755,7 @@ Date:   Sat Nov 27 23:01:42 2010 +0100
 
     pygi-convert.sh: gtk.accel_map -> Gtk.AccelMap._
 
- pygi-convert.sh |    1 +
+ pygi-convert.sh | 1 +
  1 file changed, 1 insertion(+)
 
 commit 13d0ff1d9c129bb458e234b630ebe920b50e2e0f
@@ -12912,7 +15764,7 @@ Date:   Sat Nov 27 22:34:13 2010 +0100
 
     pygi-convert.sh: handle "from gtk import gdk"
 
- pygi-convert.sh |    2 ++
+ pygi-convert.sh | 2 ++
  1 file changed, 2 insertions(+)
 
 commit 63a97634031c3d159ad77fdaa1f6341d7656eb07
@@ -12921,7 +15773,7 @@ Date:   Sat Nov 27 22:23:24 2010 +0100
 
     pygi-convert.sh: add some Pango special cases
 
- pygi-convert.sh |    3 +++
+ pygi-convert.sh | 3 +++
  1 file changed, 3 insertions(+)
 
 commit 57e42bf4230d1aa20a47e3b0df2e509602333892
@@ -12932,8 +15784,8 @@ Date:   Sat Nov 27 19:51:38 2010 +0100
 
     Make the tag argument optional.
 
- gi/overrides/Gtk.py    |    9 +++++++++
- tests/test_overrides.py |   17 +++++++++++++++++
+ gi/overrides/Gtk.py    |  9 +++++++++
+ tests/test_overrides.py | 17 +++++++++++++++++
  2 files changed, 26 insertions(+)
 
 commit 828b698e47ee819a60d24a772a3cc51ff9cd6601
@@ -12942,8 +15794,8 @@ Date:   Sat Nov 27 19:32:48 2010 +0100
 
     Override TextBuffer.set_text() to make length optional
 
- gi/overrides/Gtk.py    |    3 +++
- tests/test_overrides.py |   11 ++++++++++-
+ gi/overrides/Gtk.py    |  3 +++
+ tests/test_overrides.py | 11 ++++++++++-
  2 files changed, 13 insertions(+), 1 deletion(-)
 
 commit bf55dc862755a57bb1b998702d284fc460e88a30
@@ -12954,8 +15806,8 @@ Date:   Sat Nov 27 16:46:40 2010 +0100
 
     Override create_mark to make the left_gravity argument optional
 
- gi/overrides/Gtk.py    |    3 +++
- tests/test_overrides.py |    3 +++
+ gi/overrides/Gtk.py    | 3 +++
+ tests/test_overrides.py | 3 +++
  2 files changed, 6 insertions(+)
 
 commit 94c0e2f71636d055bdebe3ec378f3d339eea66c9
@@ -12966,8 +15818,8 @@ Date:   Sat Nov 27 16:10:33 2010 +0100
 
     Fix the override and add unit test
 
- gi/overrides/Gtk.py    |    8 +++++---
- tests/test_overrides.py |    7 +++++++
+ gi/overrides/Gtk.py    | 8 +++++---
+ tests/test_overrides.py | 7 +++++++
  2 files changed, 12 insertions(+), 3 deletions(-)
 
 commit 0cd717e3926276540b9145e58a4a3368136b00de
@@ -12977,7 +15829,7 @@ Date:   Mon Nov 22 18:35:09 2010 -0500
     [gi] fix ActionGroup constructor to allow other keyword properties
     to be set
 
- gi/overrides/Gtk.py |   4 ++--
+ gi/overrides/Gtk.py | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 226777cdb70fc72d206664ffd8b6737f7239d23f
@@ -12986,8 +15838,8 @@ Date:   Mon Nov 22 18:32:28 2010 -0500
 
     [gi] require the name parameter when creatin a Gtk.ActionGroup
 
- gi/overrides/Gtk.py    |    3 +++
- tests/test_overrides.py |    2 ++
+ gi/overrides/Gtk.py    | 3 +++
+ tests/test_overrides.py | 2 ++
  2 files changed, 5 insertions(+)
 
 commit d0049fa9982d13b3553b05569fb0a227e48b6647
@@ -12998,8 +15850,8 @@ Date:   Sun Nov 21 15:20:58 2010 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=635437
 
- gi/overrides/Gtk.py    |    3 +++
- tests/test_overrides.py |   34 +++++++++++++++++++++-------------
+ gi/overrides/Gtk.py    |  3 +++
+ tests/test_overrides.py | 34 +++++++++++++++++++++-------------
  2 files changed, 24 insertions(+), 13 deletions(-)
 
 commit e1db544e46aeed984133896af34b671a6a5547df
@@ -13010,8 +15862,8 @@ Date:   Sun Nov 21 23:03:25 2010 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=635466
 
- gi/overrides/Gtk.py    |   15 +++++++++++++++
- tests/test_overrides.py |    6 ++++++
+ gi/overrides/Gtk.py    | 15 +++++++++++++++
+ tests/test_overrides.py |  6 ++++++
  2 files changed, 21 insertions(+)
 
 commit a5e806ad8a8b279402ff7adb1c1cdc04f9f3da76
@@ -13022,7 +15874,7 @@ Date:   Sun Nov 21 21:57:40 2010 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=635464
 
- gi/overrides/Gtk.py |   6 ++++++
+ gi/overrides/Gtk.py | 6 ++++++
  1 file changed, 6 insertions(+)
 
 commit 1c537bc67107948c92b51ba6ba749747e84263e2
@@ -13038,8 +15890,8 @@ Date:   Mon Nov 22 15:04:00 2010 -0500
     which
       should be accepted by pycairo for any API that takes a rect
 
- gi/pygi-foreign-cairo.c |   85
- +++++++++++++++++++++++++++++++++++------------
+ gi/pygi-foreign-cairo.c | 85
+ +++++++++++++++++++++++++++++++++++++------------
  1 file changed, 64 insertions(+), 21 deletions(-)
 
 commit 4cede8f12321bed6c3b71813a62c01b61853ba69
@@ -13050,8 +15902,8 @@ Date:   Fri Nov 19 16:46:53 2010 -0500
 
     https://bugzilla.gnome.org/show_bug.cgi?id=627367
 
- gi/overrides/Gdk.py |   7 +++++++
- gi/overrides/Gtk.py |  25 +++++++++++++++++++++++++
+ gi/overrides/Gdk.py | 7 +++++++
+ gi/overrides/Gtk.py | 25 +++++++++++++++++++++++++
  2 files changed, 32 insertions(+)
 
 commit 3fd51bb903724b752f72f49c7cb35652b819791d
@@ -13065,9 +15917,9 @@ 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 +++--
+ gi/pygi-argument.c | 65
+ ++++++++++++++++++++++++++++++++++++++++++++----------
+ tests/test_gi.py   |  6 +++--
  2 files changed, 57 insertions(+), 14 deletions(-)
 
 commit 7ddb0f7fd8b1b9e8f691c6d42a83cb16c6561d26
@@ -13076,7 +15928,7 @@ Date:   Fri Nov 19 18:19:38 2010 +0100
 
     pygi-convert.sh: Add pynotify -> Notify
 
- pygi-convert.sh |    3 +++
+ pygi-convert.sh | 3 +++
  1 file changed, 3 insertions(+)
 
 commit bf03d4db03a7739ac16ddc4e614441557ede554d
@@ -13096,7 +15948,7 @@ Date:   Fri Nov 19 09:08:07 2010 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=635244
 
- pygi-convert.sh |   25 +++++--------------------
+ pygi-convert.sh | 25 +++++--------------------
  1 file changed, 5 insertions(+), 20 deletions(-)
 
 commit 18f5d229d3a4b9520c1c456be2635c8e36015c12
@@ -13107,7 +15959,7 @@ Date:   Fri Nov 19 09:00:35 2010 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=635244
 
- pygi-convert.sh |    2 ++
+ pygi-convert.sh | 2 ++
  1 file changed, 2 insertions(+)
 
 commit ef74273c2043944708515e59a654ebe4944b46ff
@@ -13120,7 +15972,7 @@ Date:   Thu Nov 18 13:54:48 2010 -0500
     were entered
       since they reside in an unordered hash internally
 
- tests/test_overrides.py |    9 +++++----
+ tests/test_overrides.py | 9 +++++----
  1 file changed, 5 insertions(+), 4 deletions(-)
 
 commit 2c25886bf6710568d0646f82dce4770faa44c40d
@@ -13132,9 +15984,9 @@ Date:   Wed Nov 17 14:38:09 2010 -0500
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620579
 
- gi/pygi-argument.c         |   14 ++++++++++++--
- glib/pyglib-python-compat.h |   5 +++++
- tests/test_gi.py           |    3 +++
+ gi/pygi-argument.c         | 14 ++++++++++++--
+ glib/pyglib-python-compat.h | 5 +++++
+ tests/test_gi.py           |  3 +++
  3 files changed, 20 insertions(+), 2 deletions(-)
 
 commit 8c2d32c8205b971b4353e3d5d2ed1efa6ef0e06c
@@ -13149,7 +16001,7 @@ Date:   Fri Nov 12 10:20:32 2010 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=634671
 
- gi/pygi-invoke.c |   25 ++++++++++++++-----------
+ gi/pygi-invoke.c | 25 ++++++++++++++-----------
  1 file changed, 14 insertions(+), 11 deletions(-)
 
 commit d9bab3b185bb59bd29e3c3f6225f3636f58ec45e
@@ -13158,8 +16010,8 @@ Date:   Wed Nov 10 14:11:56 2010 -0500
 
     update news for release
 
- NEWS |   73
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ NEWS | 73
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 73 insertions(+)
 
 commit 1338a95339e21cc02b9df6d10166996c8b97a6bf
@@ -13170,7 +16022,7 @@ Date:   Tue Sep 28 13:44:13 2010 +1000
 
     https://bugzilla.gnome.org/show_bug.cgi?id=625033
 
- gi/pygi-info.c |   29 +++++++++++++++++++++++++++++
+ gi/pygi-info.c | 29 +++++++++++++++++++++++++++++
  1 file changed, 29 insertions(+)
 
 commit 9ce3edf69824935aeca9e676eaa9782786c22a97
@@ -13186,7 +16038,7 @@ Date:   Tue Nov 9 22:57:41 2010 -0500
     compile
       without the forign structs
 
- gi/pygi-foreign-cairo.c |    4 ++++
+ gi/pygi-foreign-cairo.c | 4 ++++
  1 file changed, 4 insertions(+)
 
 commit 68b8211d8b014cf26ca7e9ab751fb3f61f228290
@@ -13211,9 +16063,9 @@ Date:   Mon Oct 25 18:28:36 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=627545
 
- gi/pygi-foreign-cairo.c |   57
- +++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-invoke.c       |   15 +++++++++++--
+ gi/pygi-foreign-cairo.c | 57
+ +++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-invoke.c       | 15 +++++++++++--
  2 files changed, 70 insertions(+), 2 deletions(-)
 
 commit ce8b948310220288e9eef904eef4ec8f4e24a376
@@ -13222,8 +16074,8 @@ Date:   Tue Nov 9 22:11:51 2010 -0500
 
     [gi] add overrides to Gtk.Editable
 
- gi/overrides/Gtk.py    |   17 +++++++++++++++++
- tests/test_overrides.py |   12 ++++++++++++
+ gi/overrides/Gtk.py    | 17 +++++++++++++++++
+ tests/test_overrides.py | 12 ++++++++++++
  2 files changed, 29 insertions(+)
 
 commit 87dbc716f26cefc0e9427c3d6e8befe8eabd3d1e
@@ -13241,8 +16093,8 @@ Date:   Tue Nov 9 21:12:54 2010 -0500
     * this keeps the old way of checking vfuncs while adding the edge case
       where vfunc is named differently from their invoker
 
- gi/pygi-info.c |   16 ++++++++++++++++
- gi/types.py   |    2 +-
+ gi/pygi-info.c | 16 ++++++++++++++++
+ gi/types.py   |  2 +-
  2 files changed, 17 insertions(+), 1 deletion(-)
 
 commit 540e9f1f349ba3625e28b7673c92210eb8974098
@@ -13256,9 +16108,9 @@ 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 ++++++++++++++++++++++++++++++-
+ gi/overrides/Gtk.py    | 80
+ ++++++++++++++++++++++++++++++++++++++-----------
+ tests/test_overrides.py | 53 +++++++++++++++++++++++++++++++-
  2 files changed, 114 insertions(+), 19 deletions(-)
 
 commit 0bcb58b9541d9ae52e1d96e6239e9dbe0698872a
@@ -13268,7 +16120,7 @@ Date:   Fri Nov 5 13:56:12 2010 -0400
     fix dialogs overrides which were relying on broken inheritance
     behavior
 
- gi/overrides/Gtk.py |  14 ++++++++++++--
+ gi/overrides/Gtk.py | 14 ++++++++++++--
  1 file changed, 12 insertions(+), 2 deletions(-)
 
 commit 89c104d17d79d7b935cd76101cba19d49390f7be
@@ -13292,14 +16144,14 @@ Date: Thu Nov 4 12:00:14 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=633347
 
- gi/module.py                      |   12 +++++++++-
- gi/overrides/GIMarshallingTests.py |   2 +-
- gi/overrides/Gdk.py               |    2 +-
- gi/overrides/Gtk.py               |    2 +-
- gi/overrides/__init__.py          |   43
- ++++++++++++++++++++++++++++++++++++
- gi/types.py                       |    8 -------
- tests/test_overrides.py           |   27 ++++++++++++++++++++++
+ gi/module.py                      | 12 ++++++++++-
+ gi/overrides/GIMarshallingTests.py |  2 +-
+ gi/overrides/Gdk.py               |  2 +-
+ gi/overrides/Gtk.py               |  2 +-
+ gi/overrides/__init__.py          | 43
+ ++++++++++++++++++++++++++++++++++++++
+ gi/types.py                       |  8 -------
+ tests/test_overrides.py           | 27 ++++++++++++++++++++++++
  7 files changed, 84 insertions(+), 12 deletions(-)
 
 commit 878b8f630acd2146bee364054acd45cd33eea37a
@@ -13315,7 +16167,7 @@ Date:   Thu Nov 4 11:16:43 2010 +0100
 
     setup.py: ease maintenance burden for tests installation
 
- setup.py |   23 +++--------------------
+ setup.py | 23 +++--------------------
  1 file changed, 3 insertions(+), 20 deletions(-)
 
 commit cdacaa9572893796e0f3aa3730d0191911cb29ee
@@ -13324,8 +16176,8 @@ Date:   Wed Nov 3 09:51:09 2010 -0400
 
     fix inheritence issues in overrides
 
- gi/overrides/Gtk.py |  79
- ++++++++++++++++++++++++++-------------------------
+ gi/overrides/Gtk.py | 79
+ +++++++++++++++++++++++++++--------------------------
  1 file changed, 40 insertions(+), 39 deletions(-)
 
 commit 3d5955767d81f45e796ab2af0707533375681774
@@ -13336,8 +16188,8 @@ Date:   Wed Nov 3 09:38:56 2010 +0100
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- tests/runtests-windows.py |   47
- +++++++++++++++++++++++++++++++++++++++++++++
+ tests/runtests-windows.py | 47
+ +++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 47 insertions(+)
 
 commit 8cb3f2e78161639c568110aad6a807dcf59f3ae8
@@ -13350,7 +16202,7 @@ Date:   Wed Nov 3 09:35:52 2010 +0100
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- pygobject_postinstall.py |   26 +++-----------------------
+ pygobject_postinstall.py | 26 +++-----------------------
  1 file changed, 3 insertions(+), 23 deletions(-)
 
 commit 63167574df53eb481cc11b6a097b2bfe7d5747f5
@@ -13361,7 +16213,7 @@ Date:   Wed Nov 3 09:34:38 2010 +0100
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- pygobject_postinstall.py |   35 +----------------------------------
+ pygobject_postinstall.py | 35 +----------------------------------
  1 file changed, 1 insertion(+), 34 deletions(-)
 
 commit f7b12611f94fd8c27fb67a03746c10149ce6e0ef
@@ -13372,7 +16224,7 @@ Date:   Wed Nov 3 09:31:14 2010 +0100
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- setup.py |   56 ++++++++++++++++++++++++++------------------------------
+ setup.py | 56 ++++++++++++++++++++++++++------------------------------
  1 file changed, 26 insertions(+), 30 deletions(-)
 
 commit a31b4196fbb4638a245430f2fdeafd7534b1d84d
@@ -13383,7 +16235,7 @@ Date:   Wed Nov 3 09:28:36 2010 +0100
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- setup.py |   61
+ setup.py | 61
  +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 61 insertions(+)
 
@@ -13395,7 +16247,7 @@ Date:   Wed Nov 3 09:26:59 2010 +0100
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- setup.py |    3 +++
+ setup.py | 3 +++
  1 file changed, 3 insertions(+)
 
 commit 78533d851ee1314686f18cfa793613a9cf7d6686
@@ -13406,7 +16258,7 @@ Date:   Wed Nov 3 09:25:56 2010 +0100
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- setup.py |   25 +++++++++++++++++++++++++
+ setup.py | 25 +++++++++++++++++++++++++
  1 file changed, 25 insertions(+)
 
 commit ad40688df533dda0b1f7be8ea37c542b8796a26b
@@ -13417,7 +16269,7 @@ Date:   Wed Nov 3 09:24:45 2010 +0100
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- setup.py |    3 +++
+ setup.py | 3 +++
  1 file changed, 3 insertions(+)
 
 commit 21ddfc66e4e18c002a33154eb4ab81170ed71ecc
@@ -13428,7 +16280,7 @@ Date:   Wed Nov 3 09:23:05 2010 +0100
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- setup.py |   37 ++++++++++++++++++++-----------------
+ setup.py | 37 ++++++++++++++++++++-----------------
  1 file changed, 20 insertions(+), 17 deletions(-)
 
 commit 7d353d04892de67265bf693f591f37fd393de639
@@ -13440,7 +16292,7 @@ Date:   Wed Nov 3 09:18:11 2010 +0100
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- setup.py |   18 ++++++++++--------
+ setup.py | 18 ++++++++++--------
  1 file changed, 10 insertions(+), 8 deletions(-)
 
 commit 286364ed39953e942e24d5911519bcac2f90975a
@@ -13452,7 +16304,7 @@ Date:   Wed Nov 3 09:05:59 2010 +0100
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- setup.py |   29 +++++++++--------------------
+ setup.py | 29 +++++++++--------------------
  1 file changed, 9 insertions(+), 20 deletions(-)
 
 commit 3f70f92904c123e6cc40929c0affd3f75d061828
@@ -13463,7 +16315,7 @@ Date:   Wed Nov 3 09:02:30 2010 +0100
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- setup.py |   31 ++++++++++++++++++++++---------
+ setup.py | 31 ++++++++++++++++++++++---------
  1 file changed, 22 insertions(+), 9 deletions(-)
 
 commit 9aa54b65f729c0f3b0e96ab7ff797f87dad6a455
@@ -13474,7 +16326,7 @@ Date:   Wed Nov 3 08:58:00 2010 +0100
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- README.win32 |   13 +++++--------
+ README.win32 | 13 +++++--------
  1 file changed, 5 insertions(+), 8 deletions(-)
 
 commit 5a33105f690ba84b2e4bb15d73d3467e92fa06e0
@@ -13485,8 +16337,8 @@ Date:   Wed Nov 3 07:59:18 2010 +0100
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- dsextras.py | 148
- +++++++++++++++++++++++++++++++++++++----------------------
+ dsextras.py | 148
+ ++++++++++++++++++++++++++++++++++++++----------------------
  1 file changed, 93 insertions(+), 55 deletions(-)
 
 commit d03503d0412d173acb383926ab3c2d640dad3e3f
@@ -13497,7 +16349,7 @@ Date:   Wed Nov 3 07:00:40 2010 +0100
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- dsextras.py |   4 ++--
+ dsextras.py | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 8c62968e9f8467e24870b8c4f61112676eef4630
@@ -13509,7 +16361,7 @@ Date:   Wed Nov 3 06:56:32 2010 +0100
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- dsextras.py |  15 ++++++---------
+ dsextras.py | 15 ++++++---------
  1 file changed, 6 insertions(+), 9 deletions(-)
 
 commit b98277afc24886bbda400e0ad360992bffa77b7c
@@ -13520,7 +16372,7 @@ Date:   Wed Nov 3 06:49:48 2010 +0100
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- dsextras.py |  10 ++++++++++
+ dsextras.py | 10 ++++++++++
  1 file changed, 10 insertions(+)
 
 commit a565558652ebc3fa49d7aea40d399b06bbe376c4
@@ -13532,7 +16384,7 @@ Date:   Wed Nov 3 06:45:05 2010 +0100
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- dsextras.py |   4 ++--
+ dsextras.py | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 4b1ff0c7f9953f925d2178069263cca67ca7db02
@@ -13543,7 +16395,7 @@ Date:   Wed Nov 3 06:44:21 2010 +0100
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- dsextras.py |  25 +++++++++++++------------
+ dsextras.py | 25 +++++++++++++------------
  1 file changed, 13 insertions(+), 12 deletions(-)
 
 commit 819a21cea831c3892040390e9446b78a91d1cbbe
@@ -13554,7 +16406,7 @@ Date:   Wed Nov 3 06:28:04 2010 +0100
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- dsextras.py |  58
+ dsextras.py | 58
  +++++++++++++++++++++++++++++++---------------------------
  1 file changed, 31 insertions(+), 27 deletions(-)
 
@@ -13567,7 +16419,7 @@ Date:   Wed Nov 3 06:16:21 2010 +0100
 
     Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
 
- .gitignore |   7 +++++++
+ .gitignore | 7 +++++++
  1 file changed, 7 insertions(+)
 
 commit 268d6ed2b0b1d266c612da4453b6117d9e14437e
@@ -13576,7 +16428,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 ++++++++++++++++++++++++
+ tests/test_gi.py | 24 ++++++++++++++++++++++++
  1 file changed, 24 insertions(+)
 
 commit f6386a6e0d225c83cdbe1add4c4d3ea51d3ec2f0
@@ -13587,7 +16439,7 @@ Date:   Wed Oct 27 18:28:11 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=625093
 
- gi/module.py |    8 ++++++++
+ gi/module.py | 8 ++++++++
  1 file changed, 8 insertions(+)
 
 commit 28ed01c34c503cfb4f14fe7af7912060ca70aba6
@@ -13603,7 +16455,7 @@ Date:   Mon Sep 20 23:10:14 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=629552
 
- gobject/pygpointer.c |    2 +-
+ gobject/pygpointer.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 1731f89e4b5a20c33976963e12a1f39a21d33fde
@@ -13616,7 +16468,7 @@ Date:   Thu Oct 28 14:21:12 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=629042
 
- gi/pygi-invoke.c |   10 +++++++++-
+ gi/pygi-invoke.c | 10 +++++++++-
  1 file changed, 9 insertions(+), 1 deletion(-)
 
 commit 783e2e351ec7470bda6b441e51f387dd61543c4b
@@ -13627,9 +16479,9 @@ 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.c | 91
+ +++++++++++++++++++++++++++++++++++++++++++++++++---------
+ gi/pygi-info.h |  7 +++++
  2 files changed, 84 insertions(+), 14 deletions(-)
 
 commit 2ca897273f52ae38f5e06e72c773a048e199eee5
@@ -13638,7 +16490,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 +
+ gi/pygi-foreign-cairo.c | 1 +
  1 file changed, 1 insertion(+)
 
 commit 8b28b1d713df33931e255600ab98feda37a8e02a
@@ -13648,7 +16500,7 @@ Date:   Thu Oct 28 13:47:34 2010 -0400
     [gi] make overrides work for python 3.x protocols and alias for
     python 2.x
 
- gi/overrides/Gtk.py |   9 +++++++--
+ gi/overrides/Gtk.py | 9 +++++++--
  1 file changed, 7 insertions(+), 2 deletions(-)
 
 commit 3c09710d2f68af9c16ce39fd25656147656a486a
@@ -13657,7 +16509,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 +++++++++++
+ gi/overrides/Gtk.py | 11 +++++++++++
  1 file changed, 11 insertions(+)
 
 commit 9d4443b3de8c327d8645ddde0a7a6dc5b977d7b4
@@ -13667,7 +16519,7 @@ Date:   Sat Oct 23 14:22:36 2010 +0200
     Override Gtk.TreeViewColumn.cell_get_position to not return success
     value
 
- gi/overrides/Gtk.py |   5 +++++
+ gi/overrides/Gtk.py | 5 +++++
  1 file changed, 5 insertions(+)
 
 commit 6679d39ace06294e98f9d6fc911ed6fb27656010
@@ -13677,7 +16529,7 @@ Date:   Sat Oct 23 14:21:36 2010 +0200
     Override get_path_at_pos and get_dest_row_at_pos of Gtk.TreeView to
     not return success value
 
- gi/overrides/Gtk.py |  15 +++++++++++++++
+ gi/overrides/Gtk.py | 15 +++++++++++++++
  1 file changed, 15 insertions(+)
 
 commit 80b1b266fa68a5c67106871502017166628f71e4
@@ -13687,7 +16539,7 @@ Date:   Sat Oct 23 14:20:38 2010 +0200
     Override Gtk.TreeSortable.get_sort_column_id to not return success
     value
 
- gi/overrides/Gtk.py |  12 ++++++++++++
+ gi/overrides/Gtk.py | 12 ++++++++++++
  1 file changed, 12 insertions(+)
 
 commit 17cd0fb3a2d2ca0c6109c41727ba0b8c42217cd5
@@ -13697,7 +16549,7 @@ Date:   Sat Oct 23 14:19:20 2010 +0200
     Override forward_search and backward_search of Gtk.TextIter to not
     return success value
 
- gi/overrides/Gtk.py |  15 +++++++++++++++
+ gi/overrides/Gtk.py | 15 +++++++++++++++
  1 file changed, 15 insertions(+)
 
 commit 95c86fa31da3d2fe84db0e2b5bc2a6dc896c9223
@@ -13707,7 +16559,7 @@ Date:   Sat Oct 23 14:18:09 2010 +0200
     Override Gtk.TextBuffer.get_selection_bounds to not return success
     value
 
- gi/overrides/Gtk.py |   5 +++++
+ gi/overrides/Gtk.py | 5 +++++
  1 file changed, 5 insertions(+)
 
 commit da6d87460b9392c29d025a7eed9249fb604204bc
@@ -13717,7 +16569,7 @@ Date:   Sat Oct 23 14:17:04 2010 +0200
     Override Gtk.RecentInfo.get_application_info to not return success
     value
 
- gi/overrides/Gtk.py |  10 ++++++++++
+ gi/overrides/Gtk.py | 10 ++++++++++
  1 file changed, 10 insertions(+)
 
 commit 0ed2e8772bdc405b0d0c7e0b2803e0e141abcb6a
@@ -13726,7 +16578,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 ++++++++++
+ gi/overrides/Gtk.py | 10 ++++++++++
  1 file changed, 10 insertions(+)
 
 commit b85b445f15421209c0b4adf676d7c8218d6437c5
@@ -13736,7 +16588,7 @@ Date:   Sat Oct 23 14:15:24 2010 +0200
     Override get_item_at_pos, get_visible_range, get_dest_item_at_pos
     of Gtk.IconView to not return success value
 
- gi/overrides/Gtk.py |  19 +++++++++++++++++++
+ gi/overrides/Gtk.py | 19 +++++++++++++++++++
  1 file changed, 19 insertions(+)
 
 commit 684d716192d58c972083e579e909bcd97f8a5025
@@ -13745,7 +16597,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 ++++++++++
+ gi/overrides/Gtk.py | 10 ++++++++++
  1 file changed, 10 insertions(+)
 
 commit 8ec830c57fafbfe50d9619c6caba3cb95a00d688
@@ -13754,7 +16606,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 ++++++++++
+ gi/overrides/Gtk.py | 10 ++++++++++
  1 file changed, 10 insertions(+)
 
 commit b483852904468722230903989e3451c7c6a24c0f
@@ -13774,14 +16626,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 ++--
- gobject/pygobject-private.h |   1 +
- gobject/pygobject.h        |    2 ++
- gobject/pygtype.c          |   37 ++++++++++++++++++++++++++++----
- tests/test_gi.py           |    1 -
- tests/test_overrides.py     |  50
- +++++++++++++++++++++++++++++++++++++++----
+ gi/pygi-argument.c         | 17 ++++++---------
+ gobject/gobjectmodule.c     | 4 ++--
+ gobject/pygobject-private.h | 1 +
+ 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
@@ -13790,7 +16642,7 @@ Date:   Fri Oct 22 13:28:31 2010 +1300
 
     Shortcut removal is not needed on post-uninstall
 
- pygobject_postinstall.py |   14 ++------------
+ pygobject_postinstall.py | 14 ++------------
  1 file changed, 2 insertions(+), 12 deletions(-)
 
 commit a3ed97fe6f80548801739fe6b72771b9eb6d93f7
@@ -13799,7 +16651,7 @@ Date:   Thu Oct 21 13:25:35 2010 +1300
 
     Disable shortcut creation in windows installer
 
- pygobject_postinstall.py |    2 +-
+ pygobject_postinstall.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit a3d6212b0abccef58f05d454c091936776413d98
@@ -13810,9 +16662,9 @@ Date:   Thu Oct 7 11:43:27 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=631634
 
- gi/overrides/Gtk.py    |   94
- ++++++++++++++++++++++++++++++++++++++++++++---
- tests/test_overrides.py |   64 +++++++++++++++++++++++++++++++-
+ gi/overrides/Gtk.py    | 94
+ +++++++++++++++++++++++++++++++++++++++++++++----
+ tests/test_overrides.py | 64 ++++++++++++++++++++++++++++++++-
  2 files changed, 151 insertions(+), 7 deletions(-)
 
 commit a87e3ba64b54e6df0b5b96af47c34e3be790b58f
@@ -13840,9 +16692,9 @@ Date:   Thu Oct 7 19:37:53 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=631547
 
- gi/overrides/Gtk.py    |  195
- +++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_overrides.py |  160 ++++++++++++++++++++++++++++++++++++--
+ gi/overrides/Gtk.py    | 195
+ ++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_overrides.py | 160 +++++++++++++++++++++++++++++++++++++--
  2 files changed, 349 insertions(+), 6 deletions(-)
 
 commit acfcc29af727fb67d0dfbbcc7cc14963ef21f1ea
@@ -13851,7 +16703,7 @@ Date:   Sat Oct 16 18:59:25 2010 +1300
 
     Correctly build GIO on windows
 
- setup.py |    6 +++---
+ setup.py | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit 33b59fd7437009b6c3ed43412e171d2cc91ee317
@@ -13860,7 +16712,7 @@ Date:   Sat Oct 16 18:17:28 2010 +1300
 
     Require Python >= 2.6.0 for Windows build
 
- setup.py |    2 +-
+ setup.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 544e0e4de4f5f97b0584eaf72ae8a081eca28ab6
@@ -13869,7 +16721,7 @@ Date:   Sat Oct 16 17:41:01 2010 +1300
 
     Fix depreciation warning in dsextras.py
 
- dsextras.py |   2 +-
+ dsextras.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 239ff961778e4e1587404d8a70dfbe8630ab0623
@@ -13878,9 +16730,9 @@ Date:   Sat Oct 16 17:34:50 2010 +1300
 
     Fix build on windows
 
- gi/pygi-foreign.c |   5 ++++-
- gi/pygi.h        |    5 ++++-
- setup.py         |    4 ++--
+ gi/pygi-foreign.c | 5 ++++-
+ gi/pygi.h        | 5 ++++-
+ setup.py         | 4 ++--
  3 files changed, 10 insertions(+), 4 deletions(-)
 
 commit 9a2f81d63012fef23fdde2b4d903bd69601c07c6
@@ -13889,7 +16741,7 @@ Date:   Sat Oct 16 17:08:11 2010 +1300
 
     Support for GCC4 in Windows distutils build - bug 626548
 
- dsextras.py |   3 ++-
+ dsextras.py | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit 27367c8dc3a3a31fdd778505b319cd3f4afb9e27
@@ -13898,7 +16750,7 @@ Date:   Fri Oct 15 09:39:02 2010 +1300
 
     Remove obsolete comments in dsextras.py
 
- dsextras.py |  11 ++---------
+ dsextras.py | 11 ++---------
  1 file changed, 2 insertions(+), 9 deletions(-)
 
 commit b5f383f854fb8f72677828b029589320c59006d1
@@ -13909,7 +16761,7 @@ Date:   Fri Oct 15 09:21:03 2010 +1300
 
        * Fixes bug 631962
 
- dsextras.py |   2 +-
+ dsextras.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit e1981da105b574e273ae6500fc6d25caf6af6aae
@@ -13938,15 +16790,15 @@ Date: Tue Sep 28 15:31:03 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=630844
 
- gi/gimodule.c              |    2 +-
- gi/pygi.h                  |    5 ++++-
- glib/glibmodule.c          |    2 +-
- glib/pyglib-python-compat.h |  28 ++++++++++++++++++++++++++++
- glib/pyglib.c              |    6 +++---
- glib/pygoptioncontext.c     |   2 +-
- gobject/gobjectmodule.c     |   2 +-
- gobject/pygobject.h        |    6 ++++++
- gobject/pygtype.c          |   10 +++++-----
+ gi/gimodule.c              |  2 +-
+ gi/pygi.h                  |  5 ++++-
+ glib/glibmodule.c          |  2 +-
+ glib/pyglib-python-compat.h | 28 ++++++++++++++++++++++++++++
+ glib/pyglib.c              |  6 +++---
+ glib/pygoptioncontext.c     | 2 +-
+ gobject/gobjectmodule.c     | 2 +-
+ gobject/pygobject.h        |  6 ++++++
+ gobject/pygtype.c          | 10 +++++-----
  9 files changed, 50 insertions(+), 13 deletions(-)
 
 commit 03d2e2924e27a9d6cae89e5748f70e0a51be91c6
@@ -13960,7 +16812,7 @@ Date:   Tue Sep 28 12:44:42 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=630807
 
- gi/module.py |    2 ++
+ gi/module.py | 2 ++
  1 file changed, 2 insertions(+)
 
 commit 28f9366c9cb382801bad080864f667c867daa3c7
@@ -13971,7 +16823,7 @@ Date:   Sat Oct 9 17:40:40 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=631765
 
- gi/overrides/Gtk.py |  12 ++++++++++++
+ gi/overrides/Gtk.py | 12 ++++++++++++
  1 file changed, 12 insertions(+)
 
 commit f01a7d9e8222663ce52100e061033f2745a5e7af
@@ -13982,7 +16834,7 @@ Date:   Thu Oct 7 09:42:24 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=631548
 
- gi/overrides/Gtk.py |  36 ++++++++++++++++++++++--------------
+ gi/overrides/Gtk.py | 36 ++++++++++++++++++++++--------------
  1 file changed, 22 insertions(+), 14 deletions(-)
 
 commit 1e1357f5fa1a034b0b707040d664ac46be6e23f7
@@ -13995,15 +16847,15 @@ Date: Mon Oct 4 12:50:55 2010 -0400
 
     I ment to commit another patch and ended up comitting both
 
- gi/gimodule.c              |    2 +-
- gi/pygi.h                  |    5 +----
- glib/glibmodule.c          |    2 +-
- glib/pyglib-python-compat.h |  19 -------------------
- glib/pyglib.c              |    6 +++---
- glib/pygoptioncontext.c     |   2 +-
- gobject/gobjectmodule.c     |   2 +-
- gobject/pygobject.h        |    6 ------
- gobject/pygtype.c          |   10 +++++-----
+ gi/gimodule.c              |  2 +-
+ gi/pygi.h                  |  5 +----
+ glib/glibmodule.c          |  2 +-
+ glib/pyglib-python-compat.h | 19 -------------------
+ glib/pyglib.c              |  6 +++---
+ glib/pygoptioncontext.c     | 2 +-
+ gobject/gobjectmodule.c     | 2 +-
+ gobject/pygobject.h        |  6 ------
+ gobject/pygtype.c          | 10 +++++-----
  9 files changed, 13 insertions(+), 41 deletions(-)
 
 commit 97774cb149c5b03d5ef82a5af3f19e2ce4d79d0b
@@ -14015,7 +16867,7 @@ Date:   Mon Oct 4 12:43:31 2010 -0400
 
     * see https://bugzilla.gnome.org/show_bug.cgi?id=631158
 
- gi/pygi.h |   2 +-
+ gi/pygi.h | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit f25e763d53e5cdd4de08e90b04aea4b4c4720ac0
@@ -14028,15 +16880,15 @@ Date: Tue Sep 28 15:31:03 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=630844
 
- gi/gimodule.c              |    2 +-
- gi/pygi.h                  |    5 ++++-
- glib/glibmodule.c          |    2 +-
- glib/pyglib-python-compat.h |  19 +++++++++++++++++++
- glib/pyglib.c              |    6 +++---
- glib/pygoptioncontext.c     |   2 +-
- gobject/gobjectmodule.c     |   2 +-
- gobject/pygobject.h        |    6 ++++++
- gobject/pygtype.c          |   10 +++++-----
+ gi/gimodule.c              |  2 +-
+ gi/pygi.h                  |  5 ++++-
+ glib/glibmodule.c          |  2 +-
+ glib/pyglib-python-compat.h | 19 +++++++++++++++++++
+ glib/pyglib.c              |  6 +++---
+ glib/pygoptioncontext.c     | 2 +-
+ gobject/gobjectmodule.c     | 2 +-
+ gobject/pygobject.h        |  6 ++++++
+ gobject/pygtype.c          | 10 +++++-----
  9 files changed, 41 insertions(+), 13 deletions(-)
 
 commit 80b8ccd450fe4e3ea77b27e58bb63cabc2a2bb2b
@@ -14046,7 +16898,7 @@ Date:   Tue Sep 28 15:28:16 2010 -0400
     fix commit 7fe83108 which didn't use the compat functions for
     string handling
 
- glib/glibmodule.c |   2 +-
+ glib/glibmodule.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 9562842907a9d94f6adae2c1bb20d6b1f189abda
@@ -14055,8 +16907,8 @@ Date:   Tue Sep 28 13:15:57 2010 -0400
 
     Python 3 fixes for dsextras and the python.m4 distribution files
 
- dsextras.py  |   13 +++++++------
- m4/python.m4 |    4 ++--
+ dsextras.py  | 13 +++++++------
+ m4/python.m4 |  4 ++--
  2 files changed, 9 insertions(+), 8 deletions(-)
 
 commit 98f69957ee9e3037b0a05a037098e4d2133ca256
@@ -14067,8 +16919,8 @@ Date:   Mon Sep 27 14:01:31 2010 -0400
 
     * update hacking to fill in some holes in the release instructions
 
- HACKING      |    6 ++++--
- configure.ac |    2 +-
+ HACKING      | 6 ++++--
+ configure.ac | 2 +-
  2 files changed, 5 insertions(+), 3 deletions(-)
 
 commit fd38010101411e6bc1ca9314657f418de660fa13
@@ -14077,8 +16929,8 @@ Date:   Mon Sep 27 12:03:10 2010 -0400
 
     update NEWS for release
 
- NEWS |   93
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ NEWS | 93
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 93 insertions(+)
 
 commit 7072d56b6cba13da97a052c75d1ae0c2cc417fd1
@@ -14087,7 +16939,7 @@ Date:   Sun Sep 26 08:37:31 2010 +0200
 
     Pre-release version bump 2.26.0
 
- configure.ac |    4 ++--
+ configure.ac | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit a549f429d2ced7a78d5baa5e2f28f6750b4788f2
@@ -14099,8 +16951,8 @@ Date:   Fri Sep 24 22:44:03 2010 +1200
        * Also tidy up g_get_{cache,config,data}_dir
          to share common code
 
- glib/glibmodule.c |   68
- +++++++++++++++++++++++++++++++++++++++--------------
+ glib/glibmodule.c | 68
+ ++++++++++++++++++++++++++++++++++++++++---------------
  1 file changed, 50 insertions(+), 18 deletions(-)
 
 commit 328aca600714bdca89dfdb531c222ee561ede27e
@@ -14109,7 +16961,7 @@ Date:   Fri Sep 24 12:16:22 2010 -0400
 
     fixed make check and make dist
 
- tests/Makefile.am |   31 ++++++++++++++++++-------------
+ tests/Makefile.am | 31 ++++++++++++++++++-------------
  1 file changed, 18 insertions(+), 13 deletions(-)
 
 commit 27023fd56148dd17b5576c1e81e0fe851d9b8727
@@ -14118,7 +16970,7 @@ Date:   Fri Sep 24 21:20:53 2010 +1200
 
     Disable GI tests when introspection disabled
 
- tests/Makefile.am |   2 ++
+ tests/Makefile.am | 2 ++
  1 file changed, 2 insertions(+)
 
 commit 7fe831081cdd2e26f5d948326b9f89ea0694e752
@@ -14127,10 +16979,10 @@ Date: Sat Jul 18 19:35:08 2009 +0200
 
     Wrap g_uri_list_extract_uris. Fixes bug #584431
 
- glib/glibmodule.c   |  38 ++++++++++++++++++++++++++++++++++++++
- gobject/__init__.py |   2 +-
- tests/Makefile.am   |   3 ++-
- tests/test_uris.py  |  15 +++++++++++++++
+ glib/glibmodule.c   | 38 ++++++++++++++++++++++++++++++++++++++
+ gobject/__init__.py | 2 +-
+ tests/Makefile.am   | 3 ++-
+ tests/test_uris.py  | 15 +++++++++++++++
  4 files changed, 56 insertions(+), 2 deletions(-)
 
 commit d6721a59c294f2471142b8c32de2f647b7084bca
@@ -14139,12 +16991,12 @@ Date: Thu Sep 23 15:38:40 2010 -0400
 
     Fix a few uses of TRUE and FALSE in the docs
 
- docs/reference/pygio-mount.xml                |    5 +++--
- docs/reference/pyglib-functions.xml   |   18 +++++++++---------
- docs/reference/pyglib-maincontext.xml |   12 ++++++------
- docs/reference/pyglib-mainloop.xml    |    6 +++---
- docs/reference/pygobject-functions.xml |    6 +++---
- docs/reference/pygobject.xml          |    4 ++--
+ docs/reference/pygio-mount.xml                |  5 +++--
+ docs/reference/pyglib-functions.xml   | 18 +++++++++---------
+ docs/reference/pyglib-maincontext.xml | 12 ++++++------
+ docs/reference/pyglib-mainloop.xml    |  6 +++---
+ docs/reference/pygobject-functions.xml |  6 +++---
+ docs/reference/pygobject.xml          |  4 ++--
  6 files changed, 26 insertions(+), 25 deletions(-)
 
 commit a08c9fffb4262ae678e17f90bbfb2d5f880cfad0
@@ -14169,9 +17021,9 @@ 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 ++-
+ gi/pygi-invoke.c        | 83
+ +++++++++++++++++++++---------------------------
+ tests/test_everything.py |  4 ++-
  2 files changed, 40 insertions(+), 47 deletions(-)
 
 commit 9714d765a34e246899f11b6792eea3aecce0b7ec
@@ -14182,12 +17034,12 @@ Date: Mon Sep 13 16:36:47 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=629367
 
- 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 +++++++++
+ 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 +++++++++
  5 files changed, 170 insertions(+), 24 deletions(-)
 
 commit fc45abdd9b55ab63556798ab0f04715be79dba08
@@ -14198,7 +17050,7 @@ Date:   Thu Sep 23 10:49:36 2010 -0400
 
     * https://bugzilla.gnome.org/show_bug.cgi?id=627449
 
- glib/option.py |    2 +-
+ glib/option.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 4ed100f3183c6325dd04461484e877bb7d4131b1
@@ -14213,9 +17065,9 @@ Date:   Fri Sep 17 12:08:09 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- configure.ac     |   32 +++++++++++++++++++++++++++++---
- tests/Makefile.am |   35 ++++++++++++++++++++---------------
- tests/runtests.py |   4 ++++
+ configure.ac     | 32 +++++++++++++++++++++++++++++---
+ tests/Makefile.am | 35 ++++++++++++++++++++---------------
+ tests/runtests.py |  4 ++++
  3 files changed, 53 insertions(+), 18 deletions(-)
 
 commit 269ff8564eeb597dc06c27e293354b7ff7a71a82
@@ -14229,7 +17081,7 @@ Date:   Fri Sep 17 15:50:47 2010 +0200
     releases it's planned to become static methods again but for now
     let's fix the tests.
 
- tests/test_gi.py |   14 +++++++-------
+ tests/test_gi.py | 14 +++++++-------
  1 file changed, 7 insertions(+), 7 deletions(-)
 
 commit 2da8da589644d6125101210712defb1272a8abb1
@@ -14240,9 +17092,9 @@ Date:   Thu Sep 9 13:52:14 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=629199
 
- gi/pygi-argument.c     |    4 ++--
- gi/pygi-struct.c       |    2 +-
- gobject/gobjectmodule.c |    2 +-
+ gi/pygi-argument.c     | 4 ++--
+ gi/pygi-struct.c       | 2 +-
+ gobject/gobjectmodule.c | 2 +-
  3 files changed, 4 insertions(+), 4 deletions(-)
 
 commit 6769a4704f0876ac3baacd4da03ff16d9f0906be
@@ -14255,7 +17107,7 @@ Date:   Thu Sep 9 13:55:17 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=629198
 
- gobject/pygtype.c |   9 ---------
+ gobject/pygtype.c | 9 ---------
  1 file changed, 9 deletions(-)
 
 commit 98f54f9d33996baeaa8c8c1240310f5396d03a1d
@@ -14284,10 +17136,10 @@ 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 ++++
+ gi/pygi-argument.c | 182
+ ++++++++++++++++++++++++++++-------------------------
+ gi/pygi-argument.h |  2 +
+ gi/pygi-invoke.c   |  14 +++++
  3 files changed, 112 insertions(+), 86 deletions(-)
 
 commit 5d79498d38b147b66ae72c1481e397160491e8d6
@@ -14298,7 +17150,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 ++++++
+ gi/pygi-foreign-cairo.c | 6 ++++++
  1 file changed, 6 insertions(+)
 
 commit b855562e5c0019cd7e4982fe00c467ede9e3926d
@@ -14314,7 +17166,7 @@ Date:   Thu Sep 9 22:16:58 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gi/pygi-argument.c |  10 +++-------
+ gi/pygi-argument.c | 10 +++-------
  1 file changed, 3 insertions(+), 7 deletions(-)
 
 commit 0e72e28c6c5502c7db5103cf1299c9f0e6689fdd
@@ -14327,7 +17179,7 @@ Date:   Thu Sep 9 18:44:11 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gi/pygi-argument.c |  20 ++++++++++++--------
+ gi/pygi-argument.c | 20 ++++++++++++--------
  1 file changed, 12 insertions(+), 8 deletions(-)
 
 commit d5666d99a1c0396b7da0cb14f9f4ff8892da7e2e
@@ -14340,7 +17192,7 @@ Date:   Thu Sep 9 17:35:10 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gobject/pygtype.c |   29 ++++++++++++++++-------------
+ gobject/pygtype.c | 29 ++++++++++++++++-------------
  1 file changed, 16 insertions(+), 13 deletions(-)
 
 commit 3d431c7dd0de97db10cb0c00c39d9c1837bed2f2
@@ -14349,7 +17201,7 @@ Date:   Fri Sep 17 12:14:56 2010 +0200
 
     Specify encoding of tests/test_gi.py
 
- tests/test_gi.py |    3 ++-
+ tests/test_gi.py | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit a808bdabb9fa6f4a9b9ce42e1cce05fb37403f0f
@@ -14360,7 +17212,7 @@ Date:   Thu Sep 9 13:24:30 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- tests/test_gi.py |    6 +++++-
+ tests/test_gi.py | 6 +++++-
  1 file changed, 5 insertions(+), 1 deletion(-)
 
 commit 928f4485041d80d0c36ff2daeae4bcd09bd0bde4
@@ -14376,9 +17228,9 @@ Date:   Thu Sep 9 12:45:21 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- glib/pygiochannel.c |  30 +++++++++++++++---------------
- glib/pygsource.c    |   4 ++--
- gobject/pygobject.c |   2 +-
+ glib/pygiochannel.c | 30 +++++++++++++++---------------
+ glib/pygsource.c    | 4 ++--
+ gobject/pygobject.c | 2 +-
  3 files changed, 18 insertions(+), 18 deletions(-)
 
 commit b5ee20afa4399c7689fbec8939fa20b927eeb782
@@ -14389,7 +17241,7 @@ Date:   Thu Sep 9 08:04:40 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- glib/pygspawn.c |    4 ++--
+ glib/pygspawn.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit a499b2f0d622b671bd154544f66b73f1278e66ed
@@ -14405,8 +17257,8 @@ Date:   Thu Sep 9 07:56:44 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gi/overrides/Gtk.py |  24 ++++++++++++++++--------
- glib/option.py      |  16 ++++++++++++----
+ gi/overrides/Gtk.py | 24 ++++++++++++++++--------
+ glib/option.py      | 16 ++++++++++++----
  2 files changed, 28 insertions(+), 12 deletions(-)
 
 commit dec9001d26c97949e7b3578086cb35e98075c047
@@ -14429,12 +17281,12 @@ Date: Thu Sep 9 07:36:04 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- tests/compathelper.py   |   18 ++++++++++++++++++
- tests/test_everything.py |    5 +++--
- tests/test_mainloop.py   |    3 ++-
- tests/test_option.py    |    6 ++++--
- tests/test_overrides.py  |    4 ++--
- tests/test_properties.py |    6 +++---
+ tests/compathelper.py   | 18 ++++++++++++++++++
+ tests/test_everything.py |  5 +++--
+ tests/test_mainloop.py   |  3 ++-
+ tests/test_option.py    |  6 ++++--
+ tests/test_overrides.py  |  4 ++--
+ tests/test_properties.py |  6 +++---
  6 files changed, 32 insertions(+), 10 deletions(-)
 
 commit 09a0daeedf49eaf376c1288be5743b57fbc76d51
@@ -14443,7 +17295,7 @@ Date:   Thu Sep 9 16:25:51 2010 -0400
 
     compilation: Fix syntax error
 
- gi/pygi-info.c |    2 +-
+ gi/pygi-info.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 9f7afd6d5afd8c1a5f36bf1295814757b71c8cbc
@@ -14452,7 +17304,7 @@ Date:   Thu Sep 9 22:17:00 2010 +0200
 
     Add missing file
 
- gi/overrides/GLib.py |   48
+ gi/overrides/GLib.py | 48
  ++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 48 insertions(+)
 
@@ -14472,12 +17324,12 @@ Date: Thu Jul 22 13:48:51 2010 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=625050
 
- gi/gimodule.c           |   38 ++++++++++++++++++++++++++++++++++++++
- gi/overrides/Makefile.am |    1 +
- gi/pygi-type.c                  |   15 +++++++++------
- gi/pygi-type.h                  |    2 ++
- gi/types.py             |    1 +
- tests/test_everything.py |    9 +++++++++
+ gi/gimodule.c           | 38 ++++++++++++++++++++++++++++++++++++++
+ gi/overrides/Makefile.am |  1 +
+ gi/pygi-type.c                  | 15 +++++++++------
+ gi/pygi-type.h                  |  2 ++
+ gi/types.py             |  1 +
+ tests/test_everything.py |  9 +++++++++
  6 files changed, 60 insertions(+), 6 deletions(-)
 
 commit 22e53aa2ed9cf6173a877b0af6928d5ab8da2f4f
@@ -14486,7 +17338,7 @@ Date:   Wed Sep 8 13:08:48 2010 -0400
 
     fix for changes in the gi test libraries
 
- tests/test_everything.py |    2 +-
+ tests/test_everything.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 246877074617b0e9c3b2ba2a5395a73e0ed9cd5d
@@ -14495,7 +17347,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 ++++++++--
+ gi/overrides/Gtk.py | 10 ++++++++--
  1 file changed, 8 insertions(+), 2 deletions(-)
 
 commit f92fc48e7e2ec50996e994ccb7d08a61e7374f22
@@ -14512,7 +17364,7 @@ Date:   Wed Sep 8 12:35:09 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=629087
 
- gi/pygi-callbacks.c |   5 +----
+ gi/pygi-callbacks.c | 5 +----
  1 file changed, 1 insertion(+), 4 deletions(-)
 
 commit 8c517de2d278bdef641c72b8f2919a3924290ec1
@@ -14523,9 +17375,9 @@ Date:   Fri Aug 20 14:54:35 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=627494
 
- gi/pygi-property.c      |  156
- +++++++++++++++++++++++++++++++++++-----------
- tests/test_everything.py |   34 ++++++++++
+ gi/pygi-property.c      | 156
+ ++++++++++++++++++++++++++++++++++++-----------
+ tests/test_everything.py |  34 +++++++++++
  2 files changed, 154 insertions(+), 36 deletions(-)
 
 commit 6d183d1fff55d54569ba3e1f90a10284df74fd40
@@ -14556,7 +17408,7 @@ Date:   Fri Sep 3 12:04:16 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gobject/gobjectmodule.c |    2 +-
+ gobject/gobjectmodule.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit b7bf4269682a3335f5e0a52b46fa721af134d09a
@@ -14565,19 +17417,19 @@ Date: Wed Sep 1 11:03:40 2010 +0200
 
     Rename GArgument to GIArgument
 
- 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-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-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-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 +++++++-------
  12 files changed, 94 insertions(+), 94 deletions(-)
 
 commit 7197f85c9be2b03636639ac909ca2c3170653509
@@ -14593,12 +17445,12 @@ Date: Wed Aug 18 10:29:19 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gobject/propertyhelper.py |   16 +++++++++++-----
- tests/compathelper.py    |   32 ++++++++++++++++++++++++++++++++
- tests/test_option.py     |    7 ++++++-
- tests/test_properties.py  |   24 ++++++++++++++----------
- tests/test_signal.py     |   14 +++++++-------
- tests/test_source.py     |    4 ++--
+ gobject/propertyhelper.py | 16 +++++++++++-----
+ tests/compathelper.py    | 32 ++++++++++++++++++++++++++++++++
+ tests/test_option.py     |  7 ++++++-
+ tests/test_properties.py  | 24 ++++++++++++++----------
+ tests/test_signal.py     | 14 +++++++-------
+ tests/test_source.py     |  4 ++--
  6 files changed, 72 insertions(+), 25 deletions(-)
 
 commit 720e614acdbcf734d4bcccc403e639b5a5bcae24
@@ -14622,14 +17474,14 @@ Date: Fri Aug 20 10:58:48 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=627878
 
- 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
- +++++++++-------------------------------------
+ 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
+ +++++++++--------------------------------------
  6 files changed, 93 insertions(+), 267 deletions(-)
 
 commit f6c4d9e58c8f05cb2d82e158c9eb8480308565bd
@@ -14640,8 +17492,8 @@ Date:   Fri Aug 20 10:43:58 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gobject/pygenum.c  |   1 +
- gobject/pygflags.c |   1 +
+ gobject/pygenum.c  | 1 +
+ gobject/pygflags.c | 1 +
  2 files changed, 2 insertions(+)
 
 commit c03e6b482548aee99362356807c804f8834fad2b
@@ -14652,10 +17504,10 @@ 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 +++++++++++++++++++++++------------------
- gobject/pygflags.c |  76
- ++++++++++++++++++++++------------------------------
+ glib/pygspawn.c    |  7 ++---
+ gobject/pygenum.c  | 61 ++++++++++++++++++++++++-------------------
+ gobject/pygflags.c | 76
+ +++++++++++++++++++++++-------------------------------
  3 files changed, 71 insertions(+), 73 deletions(-)
 
 commit 0db676fd2296750a46ba0fb069e472da06ecc53a
@@ -14675,7 +17527,7 @@ Date:   Wed Aug 18 11:03:32 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gi/types.py |  12 ++++++++----
+ gi/types.py | 12 ++++++++----
  1 file changed, 8 insertions(+), 4 deletions(-)
 
 commit 286dcd0c6455961d818ac7f05f80f82435abc1dc
@@ -14686,8 +17538,8 @@ Date:   Tue Aug 17 15:43:42 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gi/Makefile.am                 |    2 +-
- gi/pygi-foreign-cairo.c |   17 +++++++----------
+ gi/Makefile.am                 |  2 +-
+ gi/pygi-foreign-cairo.c | 17 +++++++----------
  2 files changed, 8 insertions(+), 11 deletions(-)
 
 commit bda58ec34fc443fe1108afc8532bec50f6fd0b44
@@ -14698,8 +17550,8 @@ Date:   Tue Aug 17 02:33:45 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gi/module.py |    2 +-
- gi/types.py  |    2 +-
+ gi/module.py | 2 +-
+ gi/types.py  | 2 +-
  2 files changed, 2 insertions(+), 2 deletions(-)
 
 commit 427a3c8053feca35ccd746575760ac8a0ed50a12
@@ -14714,8 +17566,8 @@ Date:   Tue Aug 17 02:24:44 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gi/Makefile.am |    2 +-
- gi/gimodule.c |   24 +++++++++---------------
+ gi/Makefile.am |  2 +-
+ gi/gimodule.c | 24 +++++++++---------------
  2 files changed, 10 insertions(+), 16 deletions(-)
 
 commit 1dee5dcd2b1747b4a4af438c0443d7930e4802db
@@ -14731,9 +17583,9 @@ Date:   Tue Aug 17 02:14:14 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- tests/Makefile.am       |    2 +-
- tests/testhelpermodule.c |  221
- ++++++----------------------------------------
+ tests/Makefile.am       |   2 +-
+ tests/testhelpermodule.c | 221
+ ++++++-----------------------------------------
  2 files changed, 28 insertions(+), 195 deletions(-)
 
 commit 1ff83a2ccb7301c8f675913f1c4f6118ea50b9c7
@@ -14744,11 +17596,11 @@ Date: Mon Aug 16 21:14:27 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gi/pygi-boxed.c      |   43 ++-----------
- gi/pygi-info.c       |  171
- ++++++++++++++++++++------------------------------
- gi/pygi-repository.c |   39 +++---------
- gi/pygi-struct.c     |   45 +++----------
+ gi/pygi-boxed.c      |  43 ++-----------
+ gi/pygi-info.c       | 171
+ ++++++++++++++++++++-------------------------------
+ gi/pygi-repository.c |  39 +++---------
+ gi/pygi-struct.c     |  45 +++-----------
  4 files changed, 88 insertions(+), 210 deletions(-)
 
 commit 1efa2b12913b194d433c17014bc1077271a6ca32
@@ -14765,15 +17617,15 @@ Date: Mon Aug 16 13:51:05 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gi/Makefile.am                     |    2 +-
- 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-struct.c           |    1 +
- glib/pyglib-python-compat.h |   6 +++
+ gi/Makefile.am                     |  2 +-
+ 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-struct.c           |  1 +
+ glib/pyglib-python-compat.h | 6 +++
  8 files changed, 103 insertions(+), 47 deletions(-)
 
 commit 6b902c66200c1684513a9ef31bdef3f2ff64e4fa
@@ -14784,7 +17636,7 @@ Date:   Fri Aug 20 09:28:57 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=627408
 
- glib/option.py |    4 ++--
+ glib/option.py | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 3cefffecc1317b6ad77a5ed936bfb990d16bf9d3
@@ -14798,7 +17650,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 ++
+ glib/pyglib-python-compat.h | 2 ++
  1 file changed, 2 insertions(+)
 
 commit d45c7031876f355e15409f00f3e50e77d18f8f4b
@@ -14807,7 +17659,7 @@ Date:   Thu Aug 19 17:50:35 2010 -0400
 
     pyglib: Fix a compiler warning
 
- glib/pyglib.c |    1 +
+ glib/pyglib.c | 1 +
  1 file changed, 1 insertion(+)
 
 commit 0fe6828ddce187ac1897a1f02ca1c5480796d5b9
@@ -14816,7 +17668,7 @@ Date:   Wed Aug 18 20:36:51 2010 +0200
 
     Don't force gtk 2.0
 
- pygi-convert.sh |   11 +++++++----
+ pygi-convert.sh | 11 +++++++----
  1 file changed, 7 insertions(+), 4 deletions(-)
 
 commit ac59c18a4f2bfff47c862b763aaf1d1cf136a4f5
@@ -14827,7 +17679,7 @@ Date:   Tue Aug 17 14:49:30 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=627143
 
- gi/gimodule.c |    9 +++++++--
+ gi/gimodule.c | 9 +++++++--
  1 file changed, 7 insertions(+), 2 deletions(-)
 
 commit 18ee0db673c2fa42244ab85950bbf4840edb674b
@@ -14836,8 +17688,8 @@ Date:   Thu Aug 12 12:16:31 2010 -0400
 
     handle strings correctly in gio
 
- gio/gappinfo.override |    5 +++++
- gio/pygio-utils.c     |   42 +++++++++++++++++++++++++++++++++++-------
+ gio/gappinfo.override |  5 +++++
+ gio/pygio-utils.c     | 42 +++++++++++++++++++++++++++++++++++-------
  2 files changed, 40 insertions(+), 7 deletions(-)
 
 commit 45ab0c03110c911b47519941dfd753326891b5e0
@@ -14848,8 +17700,8 @@ Date:   Wed Aug 11 16:13:59 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gio/giomodule.c |  153
- ++++++++++++++++++++++++++++---------------------------
+ gio/giomodule.c | 153
+ +++++++++++++++++++++++++++++---------------------------
  1 file changed, 78 insertions(+), 75 deletions(-)
 
 commit c52f8ed3ae8cb66a03b5695e980770c3f467f755
@@ -14861,7 +17713,7 @@ Date:   Wed Aug 11 16:04:48 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- gi/pygi-argument.c |  31 +++++++++++++++++++++++++++----
+ gi/pygi-argument.c | 31 +++++++++++++++++++++++++++----
  1 file changed, 27 insertions(+), 4 deletions(-)
 
 commit de9eae4dfcce856a42cc5c569a5b9683c28d0eeb
@@ -14872,7 +17724,7 @@ Date:   Wed Aug 11 15:03:55 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- glib/pygiochannel.c |  30 ++++++++++++++++++++++++------
+ glib/pygiochannel.c | 30 ++++++++++++++++++++++++------
  1 file changed, 24 insertions(+), 6 deletions(-)
 
 commit 5824ff98175b749dbcfa72d24b994230b6e05377
@@ -14890,25 +17742,25 @@ 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/pyglib.h              |   14 ---
- glib/pygoptioncontext.c     |   4 +-
- glib/pygsource.c           |   16 ++--
- glib/pygspawn.c            |   32 +++----
- gobject/gobjectmodule.c     | 216
- +++++++++++++++++++++----------------------
- gobject/pygboxed.c         |    2 +-
- gobject/pygenum.c          |   84 ++++++++---------
- gobject/pygflags.c         |  122 ++++++++++++------------
- gobject/pygobject-private.h |  12 +--
- gobject/pygobject.c        |   46 ++++-----
- gobject/pygobject.h        |   23 +++++
- gobject/pygparamspec.c      |  24 ++---
- gobject/pygpointer.c       |    2 +-
- gobject/pygtype.c          |  170 +++++++++++++++++-----------------
+ glib/glibmodule.c          |  48 +++++-----
+ 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 +++----
+ gobject/gobjectmodule.c     | 216
+ ++++++++++++++++++++++----------------------
+ gobject/pygboxed.c         |   2 +-
+ gobject/pygenum.c          |  84 ++++++++---------
+ gobject/pygflags.c         | 122 ++++++++++++-------------
+ gobject/pygobject-private.h | 12 +--
+ gobject/pygobject.c        |  46 +++++-----
+ gobject/pygobject.h        |  23 +++++
+ gobject/pygparamspec.c      | 24 ++---
+ gobject/pygpointer.c       |   2 +-
+ gobject/pygtype.c          | 170 +++++++++++++++++-----------------
  18 files changed, 563 insertions(+), 473 deletions(-)
 
 commit 231e934cc01d061e81bb60d35127a133cd0e1793
@@ -14919,7 +17771,7 @@ Date:   Mon Aug 16 10:14:04 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=622606
 
- tests/test_overrides.py |   10 ++++++++++
+ tests/test_overrides.py | 10 ++++++++++
  1 file changed, 10 insertions(+)
 
 commit f07cfde377e42686c6b80f56cac62338ee333e61
@@ -14930,7 +17782,7 @@ Date:   Mon Aug 16 10:08:38 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=622606
 
- gi/overrides/Gtk.py |  13 +++++++++++++
+ gi/overrides/Gtk.py | 13 +++++++++++++
  1 file changed, 13 insertions(+)
 
 commit 65a06a7216163c7e65b32c5b5f3388faa7fda5d6
@@ -14943,8 +17795,8 @@ Date:   Thu Aug 12 16:18:58 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=616732
 
- configure.ac  |   15 ++++++++++++---
- gi/Makefile.am |   20 ++++++++++++--------
+ configure.ac  | 15 ++++++++++++---
+ gi/Makefile.am | 20 ++++++++++++--------
  2 files changed, 24 insertions(+), 11 deletions(-)
 
 commit b83507263231d9bf47f6c8450583e3d03f0a3b5b
@@ -14955,7 +17807,7 @@ Date:   Mon Aug 16 09:55:35 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=626996
 
- gi/pygi.h |   1 +
+ gi/pygi.h | 1 +
  1 file changed, 1 insertion(+)
 
 commit 0dc3656070f496431829c6e8441ca17129c569f8
@@ -14966,19 +17818,19 @@ Date: Mon Aug 9 16:11:55 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=615872
 
- glib/pygiochannel.c    |   18 ++++++----
- glib/pyglib.c          |   85
- +++++++++++++++++++++++++++++++++++++++++++++++
- glib/pyglib.h          |    3 ++
- glib/pygmaincontext.c  |   17 ++++++----
- glib/pygmainloop.c     |   17 ++++++----
- glib/pygoptioncontext.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 +++++++++++----
+ glib/pygiochannel.c    | 18 +++++++----
+ glib/pyglib.c          | 85
+ +++++++++++++++++++++++++++++++++++++++++++++++++
+ glib/pyglib.h          |  3 ++
+ glib/pygmaincontext.c  | 17 ++++++----
+ glib/pygmainloop.c     | 17 ++++++----
+ glib/pygoptioncontext.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 +++++++++++----
  12 files changed, 233 insertions(+), 71 deletions(-)
 
 commit b426e531dc53d4b50e572a2da19733479635e662
@@ -14992,8 +17844,8 @@ Date:   Thu Aug 12 18:09:33 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=625661
 
- autogen.sh |  506
- +++++++-----------------------------------------------------
+ autogen.sh | 506
+ +++++++------------------------------------------------------
  1 file changed, 58 insertions(+), 448 deletions(-)
 
 commit 769645e00d6d055a4cd802454dbfc1bbfcbee691
@@ -15015,8 +17867,8 @@ Date:   Thu Aug 12 14:11:55 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=625437
 
- gio/gio.override |    2 +-
- glib/pyglib.c   |    4 ++--
+ gio/gio.override | 2 +-
+ glib/pyglib.c   | 4 ++--
  2 files changed, 3 insertions(+), 3 deletions(-)
 
 commit e4c4cccb588b258dbcd21702e6cddcfe9ebe4ffc
@@ -15034,7 +17886,7 @@ Date:   Thu Aug 12 11:09:37 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=626684
 
- gi/pygi-invoke.c |    9 ++++++++-
+ gi/pygi-invoke.c | 9 ++++++++-
  1 file changed, 8 insertions(+), 1 deletion(-)
 
 commit 0ab967ca40ddcffc2834d4e656bb2010c6b9bdda
@@ -15048,7 +17900,7 @@ Date:   Thu Aug 12 10:46:17 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=626684
 
- gi/pygi-invoke.c |   14 +++-----------
+ gi/pygi-invoke.c | 14 +++-----------
  1 file changed, 3 insertions(+), 11 deletions(-)
 
 commit e17be9cd288fee5d7cb174d9d577eb9279044c67
@@ -15057,7 +17909,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 +-
+ tests/Makefile.am | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 8be59c37dd57acc51875c7189ca09d728b729013
@@ -15066,9 +17918,9 @@ Date:   Wed Aug 4 13:43:17 2010 +0200
 
     Fix some warnings.
 
- gi/pygi-argument.c |   2 --
- gi/pygi-invoke.c   |   2 +-
- gi/pygi-struct.c   |   1 -
+ gi/pygi-argument.c | 2 --
+ gi/pygi-invoke.c   | 2 +-
+ gi/pygi-struct.c   | 1 -
  3 files changed, 1 insertion(+), 4 deletions(-)
 
 commit 529eca6054e9a7e2267f1529e317c2373932762f
@@ -15077,7 +17929,7 @@ Date:   Fri Jul 30 22:39:40 2010 +0200
 
     Add myself as a maintainer
 
- MAINTAINERS |   4 ++++
+ MAINTAINERS | 4 ++++
  1 file changed, 4 insertions(+)
 
 commit caac75a6ed6f671b37e38a78e71b87906a00ac1b
@@ -15093,11 +17945,11 @@ Date: Fri Jul 30 14:14:16 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=625653
 
- gi/pygi-boxed.c        |   50
- +++++++++++++++++++++++++++++++----------------
- gi/pygi-boxed.h        |   10 ++++++----
- gi/pygi-invoke.c       |   16 ++++++---------
- tests/test_overrides.py |   39 ++++++++++++++++++------------------
+ gi/pygi-boxed.c        | 50
+ ++++++++++++++++++++++++++++++++-----------------
+ gi/pygi-boxed.h        | 10 ++++++----
+ gi/pygi-invoke.c       | 16 ++++++----------
+ tests/test_overrides.py | 39 +++++++++++++++++++-------------------
  4 files changed, 64 insertions(+), 51 deletions(-)
 
 commit 99c7322898c00a576c7319ea0a7c808446253133
@@ -15108,10 +17960,10 @@ Date: Fri Jul 30 15:44:21 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620593
 
- gi/overrides/Gdk.py    |   48
- +++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-invoke.c       |    4 ----
- tests/test_overrides.py |   10 ++++++++++
+ gi/overrides/Gdk.py    | 48
+ ++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-invoke.c       |  4 ----
+ tests/test_overrides.py | 10 ++++++++++
  3 files changed, 58 insertions(+), 4 deletions(-)
 
 commit 55814e722c2ae11310f346790c9221e4fad92b50
@@ -15122,7 +17974,7 @@ Date:   Fri Jul 30 06:30:48 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=625438
 
- gio/gio.override |    5 +++++
+ gio/gio.override | 5 +++++
  1 file changed, 5 insertions(+)
 
 commit 477315465d0a6d84b51e146e86e254873bc564ff
@@ -15137,7 +17989,7 @@ Date:   Fri Jul 30 06:43:06 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=625438
 
- gio/gfile.override |   8 ++++----
+ gio/gfile.override | 8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit faa7d4eece7ddb698725098970c2478a3b45c4d5
@@ -15153,8 +18005,8 @@ Date:   Fri Jul 30 10:56:01 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=625638
 
- demos/gtk-demo/gtk-demo.py |   2 ++
- examples/cairo-demo.py     |   2 ++
+ demos/gtk-demo/gtk-demo.py | 2 ++
+ examples/cairo-demo.py     | 2 ++
  2 files changed, 4 insertions(+)
 
 commit c9da5782e6c633d9af43ee85075e9ee65db09780
@@ -15176,8 +18028,8 @@ Date:   Fri Jul 9 13:14:42 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=623969
 
- gi/pygi-argument.c |  13 +++++--------
- gi/pygi-invoke.c   |  46 ++++++++++++++++++++++++++++++++++++++++------
+ gi/pygi-argument.c | 13 +++++--------
+ gi/pygi-invoke.c   | 46 ++++++++++++++++++++++++++++++++++++++++------
  2 files changed, 45 insertions(+), 14 deletions(-)
 
 commit e0a85305cd107aae5902e524afd074cd8c329927
@@ -15191,7 +18043,7 @@ Date:   Fri Jul 30 10:35:33 2010 +0200
 
     This reverts commit e7bb3954880568884ca66e7751ede689dc2f24f6.
 
- gi/overrides/Gdk.py |  44 --------------------------------------------
+ gi/overrides/Gdk.py | 44 --------------------------------------------
  1 file changed, 44 deletions(-)
 
 commit 61ffb8d6d08fcfe638f71ea97ceac3a366e5536d
@@ -15204,7 +18056,7 @@ Date:   Thu Jul 29 22:55:28 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=625619
 
- examples/cairo-demo.py |    2 +-
+ examples/cairo-demo.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit e7bb3954880568884ca66e7751ede689dc2f24f6
@@ -15215,7 +18067,7 @@ Date:   Tue Jul 27 21:37:16 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620593
 
- gi/overrides/Gdk.py |  44 ++++++++++++++++++++++++++++++++++++++++++++
+ gi/overrides/Gdk.py | 44 ++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 44 insertions(+)
 
 commit 0a9f1da052fd33dcef81d0e267fc7972f02c7888
@@ -15231,25 +18083,25 @@ Date: Wed Jul 28 14:56:00 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=625488
 
- Makefile.am               |    5 ----
- tests/Makefile.am         |   65
- ++++++++++++++++++++------------------------
- tests/common.py           |   47 --------------------------------
- tests/runtests.py         |   43 +++++++++++------------------
- 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_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_subprocess.py   |   5 +---
- tests/test_thread.py      |    5 +++-
- tests/test_unknown.py     |    5 +++-
+ Makefile.am               |  5 ----
+ tests/Makefile.am         | 65
+ +++++++++++++++++++++-------------------------
+ tests/common.py           | 47 ---------------------------------
+ tests/runtests.py         | 43 ++++++++++++------------------
+ 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_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_subprocess.py   |  5 +---
+ tests/test_thread.py      |  5 +++-
+ tests/test_unknown.py     |  5 +++-
  18 files changed, 82 insertions(+), 142 deletions(-)
 
 commit 82f4cb5ebf5d992493b7a2f74cfd5f175e19eb76
@@ -15258,7 +18110,7 @@ Date:   Thu Jul 29 12:34:19 2010 +0200
 
     Add some more transformations to pygi-convert.sh
 
- pygi-convert.sh |   37 +++++++++++++++++++++++++++++--------
+ pygi-convert.sh | 37 +++++++++++++++++++++++++++++--------
  1 file changed, 29 insertions(+), 8 deletions(-)
 
 commit de519adcd21947a0aef7932cdecb78cef200c85e
@@ -15267,8 +18119,8 @@ Date:   Wed Jul 28 14:42:36 2010 +0200
 
     Adapt to API changes: g_irepository_enumerate_versions
 
- gi/importer.py       |    2 +-
- gi/pygi-repository.c |   12 ++++++------
+ gi/importer.py       |  2 +-
+ gi/pygi-repository.c | 12 ++++++------
  2 files changed, 7 insertions(+), 7 deletions(-)
 
 commit 01cd9abb43f93f9a57a5a05b6dc9560614e666e3
@@ -15277,7 +18129,7 @@ Date:   Wed Jul 28 12:26:48 2010 +0200
 
     Add GValue<->GArgument marshalling for some more types
 
- gi/pygi-property.c |  37 ++++++++++++++++++++++++++++++++++++-
+ gi/pygi-property.c | 37 ++++++++++++++++++++++++++++++++++++-
  1 file changed, 36 insertions(+), 1 deletion(-)
 
 commit ddffa70c3ee0e837070f390632bc692430f79171
@@ -15287,7 +18139,7 @@ Date:   Wed Jul 28 11:10:42 2010 +0200
     Chain up with the non-introspection implementation for properties
     if needed
 
- gobject/pygobject.c |   7 ++++++-
+ gobject/pygobject.c | 7 ++++++-
  1 file changed, 6 insertions(+), 1 deletion(-)
 
 commit 045433a1f8167205dc8eae613dcb8835d02c8916
@@ -15297,7 +18149,7 @@ Date:   Wed Jul 28 10:59:49 2010 +0200
     Improve error reporting for missing attributes in introspection
     modules
 
- gi/module.py |    4 ++--
+ gi/module.py | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 6655a79b2f13fe417aefdf6aebab0f2d6162ba00
@@ -15312,16 +18164,16 @@ Date: Tue Jul 27 21:52:49 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620808
 
- gi/Makefile.am                  |    2 +
- gi/gimodule.c           |    2 +
- gi/pygi-argument.c      |    2 +
- gi/pygi-private.h       |    1 +
- gi/pygi-property.c      |  226
- ++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-property.h      |   39 ++++++++
- gi/pygi.h               |   41 +++++++++
- gobject/pygobject.c     |    9 ++
- tests/test_everything.py |   19 ++++
+ gi/Makefile.am                  |   2 +
+ gi/gimodule.c           |   2 +
+ gi/pygi-argument.c      |   2 +
+ gi/pygi-private.h       |   1 +
+ gi/pygi-property.c      | 226
+ +++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-property.h      |  39 ++++++++
+ gi/pygi.h               |  41 +++++++++
+ gobject/pygobject.c     |   9 ++
+ tests/test_everything.py |  19 ++++
  9 files changed, 341 insertions(+)
 
 commit 85f4572b3ffbfa364ebb2e470eab759edc557b36
@@ -15330,7 +18182,7 @@ Date:   Tue Jul 27 21:32:41 2010 +0200
 
     Readd Gdk.Rectangle override for Gtk-2.0
 
- gi/overrides/Gdk.py |  19 +++++++++++++++++++
+ gi/overrides/Gdk.py | 19 +++++++++++++++++++
  1 file changed, 19 insertions(+)
 
 commit 2082ee35e2a33f52bf1e8ec49cb4a43398e91989
@@ -15345,14 +18197,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/module.py                      |   58
- +++++++++++++++++++++++-------------
- gi/overrides/GIMarshallingTests.py |   2 +-
- gi/overrides/Gdk.py               |    2 +-
- gi/overrides/Gtk.py               |    2 +-
- gi/pygi-repository.c              |   56
- +++++++++++++++++++++++++++++++++-
+ 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
@@ -15364,7 +18216,7 @@ Date:   Tue Jul 13 20:27:28 2010 +1000
 
     https://bugzilla.gnome.org/show_bug.cgi?id=624232
 
- gi/pygi-callbacks.c |   3 ++-
+ gi/pygi-callbacks.c | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit 7e9cbd5601ad548b78d106bac1a1576d33b91c65
@@ -15377,7 +18229,7 @@ Date:   Mon Jul 26 17:00:23 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=625326
 
- tests/testhelpermodule.c |    2 +-
+ tests/testhelpermodule.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 5ca2a41f16f4a5fcc3ab4d00bec46b077c7eb384
@@ -15388,8 +18240,8 @@ Date:   Thu Jul 8 11:36:12 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=622584
 
- gi/pygi-argument.c |  23 +++++++++++++++++++++--
- tests/test_gi.py   |   6 ++++--
+ gi/pygi-argument.c | 23 +++++++++++++++++++++--
+ tests/test_gi.py   |  6 ++++--
  2 files changed, 25 insertions(+), 4 deletions(-)
 
 commit 890c3233f8a9f884b045a294bf0122bb3afcd54a
@@ -15400,7 +18252,7 @@ Date:   Sun Jul 25 17:30:40 2010 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=625095
 
- gi/pygi-callbacks.c |   3 ++-
+ gi/pygi-callbacks.c | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit 1162e436273ff8e9e4e24bd8ba74615fd4624753
@@ -15416,9 +18268,9 @@ Date:   Thu Jun 24 10:07:12 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=622605
 
- gi/pygi-argument.c      |    8 +-------
- tests/test_everything.py |   27 +++++++++++++++++++++++++++
- tests/test_overrides.py  |    6 ++----
+ gi/pygi-argument.c      |  8 +-------
+ tests/test_everything.py | 27 +++++++++++++++++++++++++++
+ tests/test_overrides.py  |  6 ++----
  3 files changed, 30 insertions(+), 11 deletions(-)
 
 commit 8becd32fc042445d62b885bac12dac326b2dc1fa
@@ -15427,7 +18279,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 +-
+ tests/runtests.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 3b3c63514f311592e6769a373d37a2bde7ea6b38
@@ -15436,9 +18288,9 @@ Date:   Thu Jul 15 15:17:53 2010 +0200
 
     Actually add the files for GVariant foreign structs
 
- gi/pygi-foreign-gvariant.c |  63
- ++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-foreign-gvariant.h |  41 ++++++++++++++++++++++++++++
+ gi/pygi-foreign-gvariant.c | 63
+ ++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-foreign-gvariant.h | 41 ++++++++++++++++++++++++++++++
  2 files changed, 104 insertions(+)
 
 commit e65275bc57f345c111eb12a6b4476ff1ddc3bc24
@@ -15456,16 +18308,16 @@ Date: Thu Jul 15 13:31:33 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=619501
 
- gi/Makefile.am                  |    2 +
- gi/pygi-argument.c      |    2 +-
- gi/pygi-foreign-cairo.c  |   16 +++----
- gi/pygi-foreign.c       |  107
- ++++++++++++++++++++++++++++------------------
- gi/pygi-foreign.h       |    7 ++-
- gi/pygi-invoke.c        |   18 ++++----
- gi/pygi-struct.c        |   10 ++++-
- gi/pygi.h               |    9 ++--
- tests/test_everything.py |    8 ++++
+ gi/Makefile.am                  |   2 +
+ gi/pygi-argument.c      |   2 +-
+ gi/pygi-foreign-cairo.c  |  16 +++----
+ gi/pygi-foreign.c       | 107
+ +++++++++++++++++++++++++++++------------------
+ gi/pygi-foreign.h       |   7 ++--
+ gi/pygi-invoke.c        |  18 ++++----
+ gi/pygi-struct.c        |  10 ++++-
+ gi/pygi.h               |   9 ++--
+ tests/test_everything.py |   8 ++++
  9 files changed, 110 insertions(+), 69 deletions(-)
 
 commit 3b3bd4da3fbc993fa7f7cfb46ed4e67671c94cc0
@@ -15474,7 +18326,7 @@ Date:   Mon Jul 12 11:19:06 2010 +0200
 
     Add HACKING to MANIFEST.in
 
- MANIFEST.in |   2 +-
+ MANIFEST.in | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 40bf08ff001b119c7daf709197005ef6480216c5
@@ -15483,7 +18335,7 @@ Date:   Mon Jul 12 11:18:04 2010 +0200
 
     Add HACKING file with instructions for releasing
 
- HACKING |   14 ++++++++++++++
+ HACKING | 14 ++++++++++++++
  1 file changed, 14 insertions(+)
 
 commit 3b9dffe7cc3820dfb84fd968fc604899601c5dc4
@@ -15492,7 +18344,7 @@ Date:   Mon Jul 12 11:09:58 2010 +0200
 
     Post release version bump to 2.21.6
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 42a5a0897b38156ae010c396ea254abf502f35de
@@ -15501,7 +18353,7 @@ Date:   Mon Jul 12 11:00:29 2010 +0200
 
     Update NEWS and release PyGObject-2.21.5
 
- NEWS |   17 +++++++++++++++++
+ NEWS | 17 +++++++++++++++++
  1 file changed, 17 insertions(+)
 
 commit 5857f25c1c6e25b79e6134558bd7151bc6c30ef7
@@ -15510,7 +18362,7 @@ Date:   Mon Jul 12 11:00:20 2010 +0200
 
     Pre-release version bump to 2.21.5
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit e500adc3ac19ef6f436809e5a8828ac7e8db28f6
@@ -15523,9 +18375,9 @@ Date:   Sat Jul 10 22:35:13 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=624066
 
- gi/pygi-callbacks.c |   1 -
- gi/pygi-closure.c   |   2 +-
- gi/pygi-invoke.c    |   1 -
+ gi/pygi-callbacks.c | 1 -
+ gi/pygi-closure.c   | 2 +-
+ gi/pygi-invoke.c    | 1 -
  3 files changed, 1 insertion(+), 3 deletions(-)
 
 commit 2efa18afbcc2fac1c90958535b2f80e6e730ee56
@@ -15546,13 +18398,13 @@ 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/pygi-argument.c |  146
- ----------------------------------------------------
- gi/pygi-closure.c  |  10 ----
- gi/pygi-info.c     |  37 -------------
- tests/test_gi.py   |  21 --------
+ configure.ac      |   2 +-
+ gi/importer.py     |  7 +--
+ gi/pygi-argument.c | 146
+ -----------------------------------------------------
+ gi/pygi-closure.c  |  10 ----
+ gi/pygi-info.c     |  37 --------------
+ tests/test_gi.py   |  21 --------
  6 files changed, 5 insertions(+), 218 deletions(-)
 
 commit 27a417c71f8c122e46c7472663bb25c17413f103
@@ -15562,18 +18414,18 @@ Date: Thu Jul 8 16:01:25 2010 -0400
     pass in the demo app so demos can use utility methods like requesting
     file paths
 
- demos/gtk-demo/demos/Entry/entry_buffer.py    |    2 +-
- demos/gtk-demo/demos/Entry/entry_completion.py |    2 +-
- demos/gtk-demo/demos/appwindow.py             |   13 +++++++++++--
- demos/gtk-demo/demos/assistant.py             |    2 +-
- demos/gtk-demo/demos/builder.py               |   14 ++++++++++----
- demos/gtk-demo/demos/button_box.py            |    2 +-
- demos/gtk-demo/demos/clipboard.py             |    8 +-------
- demos/gtk-demo/demos/colorselector.py         |    2 +-
- demos/gtk-demo/demos/combobox.py              |    8 +++++---
- demos/gtk-demo/demos/drawingarea.py           |    2 +-
- demos/gtk-demo/demos/test.py                  |    2 +-
- demos/gtk-demo/gtk-demo.py                    |    6 +++---
+ demos/gtk-demo/demos/Entry/entry_buffer.py    |  2 +-
+ demos/gtk-demo/demos/Entry/entry_completion.py |  2 +-
+ demos/gtk-demo/demos/appwindow.py             | 13 +++++++++++--
+ demos/gtk-demo/demos/assistant.py             |  2 +-
+ demos/gtk-demo/demos/builder.py               | 14 ++++++++++----
+ demos/gtk-demo/demos/button_box.py            |  2 +-
+ demos/gtk-demo/demos/clipboard.py             |  8 +-------
+ demos/gtk-demo/demos/colorselector.py         |  2 +-
+ demos/gtk-demo/demos/combobox.py              |  8 +++++---
+ demos/gtk-demo/demos/drawingarea.py           |  2 +-
+ demos/gtk-demo/demos/test.py                  |  2 +-
+ demos/gtk-demo/gtk-demo.py                    |  6 +++---
  12 files changed, 37 insertions(+), 26 deletions(-)
 
 commit e7daae919c2c6ae35d3927f0006252aacd49ea86
@@ -15586,9 +18438,9 @@ Date:   Thu Jul 8 15:38:07 2010 -0400
     * fix some flag handling
     * use get_indicies_with_depth instead of get_indices for paths
 
- demos/gtk-demo/demos/appwindow.py |   10 +++++++---
- demos/gtk-demo/demos/combobox.py  |   24 ++++++++++++------------
- demos/gtk-demo/gtk-demo.py       |   13 +++++--------
+ demos/gtk-demo/demos/appwindow.py | 10 +++++++---
+ demos/gtk-demo/demos/combobox.py  | 24 ++++++++++++------------
+ demos/gtk-demo/gtk-demo.py       | 13 +++++--------
  3 files changed, 24 insertions(+), 23 deletions(-)
 
 commit 3d9fd6391710cc33058394d6821e4d4e11f09b22
@@ -15597,7 +18449,7 @@ Date:   Thu Jul 8 12:54:43 2010 -0400
 
     override test fixes for new GTK+ annotations
 
- tests/test_overrides.py |   23 +++++++++++++----------
+ tests/test_overrides.py | 23 +++++++++++++----------
  1 file changed, 13 insertions(+), 10 deletions(-)
 
 commit 7a400f8139b70ddfe7c949035e0851689951c647
@@ -15606,7 +18458,7 @@ Date:   Thu Jul 8 12:42:25 2010 +0200
 
     Fix warning.
 
- gi/pygi-argument.c |   4 ++--
+ gi/pygi-argument.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 39fd0a85a3de06b1b877d1125f91036409886373
@@ -15620,8 +18472,8 @@ Date:   Wed Jul 7 15:48:36 2010 -0400
       handle the case where the parameter is followed by a regular
       in parameter
 
- gi/overrides/Gtk.py    |    7 +++----
- tests/test_overrides.py |   21 +++++++++++----------
+ gi/overrides/Gtk.py    |  7 +++----
+ tests/test_overrides.py | 21 +++++++++++----------
  2 files changed, 14 insertions(+), 14 deletions(-)
 
 commit 4d970b75dc5c75c1bec04cb2954c9985b476070c
@@ -15630,8 +18482,8 @@ Date:   Tue Jul 6 17:50:10 2010 -0400
 
     add entry completion demo
 
- demos/gtk-demo/demos/Entry/entry_completion.py |   87
- ++++++++++++++++++++++++
+ demos/gtk-demo/demos/Entry/entry_completion.py | 87
+ ++++++++++++++++++++++++++
  1 file changed, 87 insertions(+)
 
 commit f3531eaa1bfa4e01651d35cd587384d30a398ba8
@@ -15640,7 +18492,7 @@ Date:   Tue Jul 6 17:49:18 2010 -0400
 
     string changes
 
- demos/gtk-demo/demos/Entry/entry_buffer.py |   4 ++--
+ demos/gtk-demo/demos/Entry/entry_buffer.py | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit baf1e9bb550c7bf45e2ac0b70ba29c434ef1ccc6
@@ -15649,8 +18501,8 @@ Date:   Tue Jul 6 17:27:04 2010 -0400
 
     add the Entry demo directory and the entry_buffer demo
 
- demos/gtk-demo/demos/Entry/entry_buffer.py |  73
- ++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/Entry/entry_buffer.py | 73
+ ++++++++++++++++++++++++++++++
  1 file changed, 73 insertions(+)
 
 commit f2b1d222120f055bec9339cca55c9cc90f538c00
@@ -15659,7 +18511,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 +++++++--
+ demos/gtk-demo/gtk-demo.py | 9 +++++++--
  1 file changed, 7 insertions(+), 2 deletions(-)
 
 commit 4f9390fb1892b13ab2ea00ed66c5000a40f09029
@@ -15668,8 +18520,8 @@ Date:   Tue Jul 6 15:56:34 2010 -0400
 
     add the ability to have demos in sub catagories
 
- demos/gtk-demo/gtk-demo.py |  76
- +++++++++++++++++++++++++++++++-------------
+ demos/gtk-demo/gtk-demo.py | 76
+ ++++++++++++++++++++++++++++++++--------------
  1 file changed, 54 insertions(+), 22 deletions(-)
 
 commit dc2249a3ecf339008351316217191d0551ccc588
@@ -15680,7 +18532,7 @@ Date:   Mon Jul 5 14:36:59 2010 -0400
 
     Fixes bug #623486.
 
- gi/module.py |    1 +
+ gi/module.py | 1 +
  1 file changed, 1 insertion(+)
 
 commit 2357bca8d14539894b6bd0acfdc18d30b4bb4db6
@@ -15693,7 +18545,7 @@ Date:   Mon Jul 5 16:11:07 2010 +0200
     to override
     it anymore.
 
- gi/overrides/Gdk.py |  19 -------------------
+ gi/overrides/Gdk.py | 19 -------------------
  1 file changed, 19 deletions(-)
 
 commit daca09dc2c2306d4fa82a68bbdd147d4b170a1e7
@@ -15704,8 +18556,8 @@ Date:   Tue Jun 29 16:37:36 2010 +0100
 
     Closes: bgo#622882
 
- gi/overrides/Gtk.py    |   11 +++++++++--
- tests/test_overrides.py |    5 +++++
+ gi/overrides/Gtk.py    | 11 +++++++++--
+ tests/test_overrides.py |  5 +++++
  2 files changed, 14 insertions(+), 2 deletions(-)
 
 commit bb8adb7f02f0c5494df2cb6e535e44d23902e8f5
@@ -15714,7 +18566,7 @@ Date:   Tue Jun 29 11:27:13 2010 +0200
 
     Update NEWS and release PyGObject-2.21.4
 
- NEWS |   27 +++++++++++++++++++++++++--
+ NEWS | 27 +++++++++++++++++++++++++--
  1 file changed, 25 insertions(+), 2 deletions(-)
 
 commit 2d473ee17be4671244bb4a2a0953a21ccf2a0df6
@@ -15723,8 +18575,8 @@ Date:   Tue Jun 29 10:55:03 2010 +0200
 
     Remove files from the makefiles
 
- gi/Makefile.am      |   4 +---
- gobject/Makefile.am |   3 +--
+ gi/Makefile.am      | 4 +---
+ gobject/Makefile.am | 3 +--
  2 files changed, 2 insertions(+), 5 deletions(-)
 
 commit 89827314fd183eac07443c8e9d275ca9d4ce59df
@@ -15736,16 +18588,16 @@ Date: Tue Jun 29 10:27:39 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=623021
 
- configure.ac           |    2 +
- gi/Makefile.am                 |   38 +++++++++-----
- gi/gimodule.c          |    8 +--
- gi/pygi-argument.c     |   10 +---
- gi/pygi-foreign-cairo.c |   56 +++++++++++++++------
- gi/pygi-foreign-cairo.h |   55 ---------------------
- gi/pygi-foreign.c      |  125
- ++++++++++++++++++++++++++++-------------------
- gi/pygi-foreign.h      |   31 ++++++------
- gi/pygi.h              |   40 +++++++++++++--
+ configure.ac           |   2 +
+ gi/Makefile.am                 |  38 ++++++++++-----
+ gi/gimodule.c          |   8 +---
+ gi/pygi-argument.c     |  10 +---
+ gi/pygi-foreign-cairo.c |  56 ++++++++++++++++------
+ gi/pygi-foreign-cairo.h |  55 ---------------------
+ gi/pygi-foreign.c      | 125
+ ++++++++++++++++++++++++++++--------------------
+ gi/pygi-foreign.h      |  31 ++++++------
+ gi/pygi.h              |  40 ++++++++++++++--
  9 files changed, 196 insertions(+), 169 deletions(-)
 
 commit a6a90551311bc64f037cbd442e13f70c30060871
@@ -15756,18 +18608,18 @@ 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.h                 |    2 +-
- gi/pygi.h              |   54 ++++++++++++++++----------------------
- gobject/Makefile.am    |    6 +++++
- gobject/pygboxed.c     |    2 +-
- gobject/pygenum.c      |    2 +-
- gobject/pygflags.c     |    2 +-
- gobject/pygi-external.h |   67
- -----------------------------------------------
- gobject/pygobject.c    |    2 +-
- gobject/pygpointer.c   |    2 +-
+ gi/gimodule.c          |  8 +++---
+ gi/pygi-type.c                 |  4 +--
+ gi/pygi-type.h                 |  2 +-
+ gi/pygi.h              | 54 ++++++++++++++++-----------------------
+ gobject/Makefile.am    |  6 +++++
+ gobject/pygboxed.c     |  2 +-
+ gobject/pygenum.c      |  2 +-
+ gobject/pygflags.c     |  2 +-
+ gobject/pygi-external.h | 67
+ -------------------------------------------------
+ gobject/pygobject.c    |  2 +-
+ gobject/pygpointer.c   |  2 +-
  11 files changed, 40 insertions(+), 111 deletions(-)
 
 commit 8b3a3baacb45cb3f9112f7597607602fa89c6634
@@ -15783,8 +18635,8 @@ Date:   Fri Jun 25 13:54:57 2010 +0200
        gi/gimodule.c
        tests/test_everything.py
 
- gi/gimodule.c           |   13 -------------
- tests/test_everything.py |    3 ++-
+ gi/gimodule.c           | 13 -------------
+ tests/test_everything.py |  3 ++-
  2 files changed, 2 insertions(+), 14 deletions(-)
 
 commit 0f2a09d7eae63abb71723b7cd8fb290dcba33426
@@ -15796,9 +18648,9 @@ Date:   Fri Jun 25 13:49:04 2010 +0200
     * gi/pygi-argument.c, gi/pygi-info.c: Zero two GArgument instances.
     * gi/pygi-invoke.c: workaround bgo#622711 and zero invocation_state.
 
- gi/pygi-argument.c |   1 +
- gi/pygi-info.c     |   2 ++
- gi/pygi-invoke.c   |   8 ++++++--
+ gi/pygi-argument.c | 1 +
+ gi/pygi-info.c     | 2 ++
+ gi/pygi-invoke.c   | 8 ++++++--
  3 files changed, 9 insertions(+), 2 deletions(-)
 
 commit 63afe55906c8637e913783e65b82b540b81bed65
@@ -15807,8 +18659,8 @@ Date:   Thu Jun 24 16:13:37 2010 -0400
 
     add drawing area demo
 
- demos/gtk-demo/demos/drawingarea.py | 249
- +++++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/drawingarea.py | 249
+ ++++++++++++++++++++++++++++++++++++
  1 file changed, 249 insertions(+)
 
 commit 8bba5f842393a284367cdd15f3d32a8c7745516a
@@ -15817,7 +18669,7 @@ Date:   Thu Jun 24 14:11:00 2010 -0400
 
     sort the demo list
 
- demos/gtk-demo/gtk-demo.py |   2 ++
+ demos/gtk-demo/gtk-demo.py | 2 ++
  1 file changed, 2 insertions(+)
 
 commit b9da82742701ed276b01dee39626cd71cbef8556
@@ -15826,7 +18678,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 ++++++------
+ demos/gtk-demo/gtk-demo.py | 12 ++++++------
  1 file changed, 6 insertions(+), 6 deletions(-)
 
 commit c93935621f2fb1ff5e8c424ae884bd684ea68e50
@@ -15838,7 +18690,7 @@ Date:   Thu Jun 24 13:47:54 2010 -0400
     * Part of buffer API dealing with TextIter now marked (out
     caller-allocates)
 
- demos/gtk-demo/gtk-demo.py |  10 ++++------
+ demos/gtk-demo/gtk-demo.py | 10 ++++------
  1 file changed, 4 insertions(+), 6 deletions(-)
 
 commit 8d9516a593a515290109401a9db7aa259b5aa35c
@@ -15862,9 +18714,9 @@ Date:   Wed Jun 23 17:04:33 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620405
 
- gi/overrides/Gtk.py    |   59 ++++++++++++++++++++++++++++++++++++++++
- tests/test_overrides.py |   69
- +++++++++++++++++++++++++++++++++++++++++++++++
+ gi/overrides/Gtk.py    | 59 ++++++++++++++++++++++++++++++++++++++++++
+ tests/test_overrides.py | 69
+ +++++++++++++++++++++++++++++++++++++++++++++++++
  2 files changed, 128 insertions(+)
 
 commit c305fbeb7bdb44623d5198f4a8f0a374d529fdf4
@@ -15876,7 +18728,7 @@ Date:   Wed Jun 23 14:34:28 2010 -0300
     Since we're no longer pulling in pygobject cflags,
     add this to be able to include pygobject.h
 
- gi/Makefile.am |    3 +++
+ gi/Makefile.am | 3 +++
  1 file changed, 3 insertions(+)
 
 commit 53a093198851e3ba5abd1f6c3314737decd401d8
@@ -15885,7 +18737,7 @@ Date:   Wed Jun 23 18:09:19 2010 +0200
 
     Add unit test for add_actions user data.
 
- tests/test_overrides.py |   20 +++++++++++++++-----
+ tests/test_overrides.py | 20 +++++++++++++++-----
  1 file changed, 15 insertions(+), 5 deletions(-)
 
 commit 7f829af620cba768de619dd9f228d5d2ebf7fee4
@@ -15894,7 +18746,7 @@ Date:   Wed Jun 23 18:06:46 2010 +0200
 
     Pass user_data param when adding actions
 
- gi/overrides/Gtk.py |  12 ++++++------
+ gi/overrides/Gtk.py | 12 ++++++------
  1 file changed, 6 insertions(+), 6 deletions(-)
 
 commit 8f537ccd62f41ebe0db3853e2ae08080666f598f
@@ -15905,7 +18757,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 +++---
+ gi/overrides/Gtk.py | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit f140a8ebf59347162b67b550bd6f62d2eafad29a
@@ -15919,7 +18771,7 @@ Date:   Wed Jun 23 12:31:51 2010 -0300
 
     https://bugzilla.gnome.org/show_bug.cgi?id=622503
 
- configure.ac |    9 +++++----
+ configure.ac | 9 +++++----
  1 file changed, 5 insertions(+), 4 deletions(-)
 
 commit e8bd25355fbe7de38a28b7a0583167a2c0ffc31f
@@ -15934,10 +18786,10 @@ Date: Tue Jun 22 15:03:08 2010 -0400
     * test the ability to send in both None and empty list for arrays
     and lists
 
- gi/pygi-argument.c      |    7 ++--
- tests/test_everything.py |    5 ++-
- tests/test_gi.py        |   84
- +++++++++++++++++++++++-----------------------
+ gi/pygi-argument.c      |  7 ++--
+ tests/test_everything.py |  5 ++-
+ tests/test_gi.py        | 84
+ ++++++++++++++++++++++++------------------------
  3 files changed, 49 insertions(+), 47 deletions(-)
 
 commit f312e6a49505eca07815146cfbdb0e48e5b3b8a8
@@ -15953,14 +18805,14 @@ Date: Wed Jun 23 15:42:29 2010 +0200
      * tests/common.py: Don't add the src dir to the python path
      * tests/runtests.py: Don't pass the src dir to common.py
 
- Makefile.am        |    4 +++-
- gi/Makefile.am      |   1 +
- gio/Makefile.am     |   1 +
- glib/Makefile.am    |   2 +-
- gobject/Makefile.am |   1 +
- tests/Makefile.am   |  17 ++---------------
- tests/common.py     |   3 +--
- tests/runtests.py   |  12 +++++-------
+ Makefile.am        |  4 +++-
+ gi/Makefile.am      | 1 +
+ gio/Makefile.am     | 1 +
+ glib/Makefile.am    | 2 +-
+ gobject/Makefile.am | 1 +
+ tests/Makefile.am   | 17 ++---------------
+ tests/common.py     | 3 +--
+ tests/runtests.py   | 12 +++++-------
  8 files changed, 15 insertions(+), 26 deletions(-)
 
 commit 5f82e7d2909cbbbecbf5dbee2342f516c0d1f371
@@ -15970,11 +18822,11 @@ Date: Wed Jun 23 13:59:14 2010 +0200
     Allow building pygobject without introspection support by providing
     --disable-introspection to configure.
 
- Makefile.am            |    6 +++++-
- configure.ac           |   15 ++++++++-------
- gobject/pygi-external.h |    4 ++--
- tests/Makefile.am      |    8 ++++++--
- tests/runtests.py      |   21 +++++++--------------
+ Makefile.am            |  6 +++++-
+ configure.ac           | 15 ++++++++-------
+ gobject/pygi-external.h |  4 ++--
+ tests/Makefile.am      |  8 ++++++--
+ tests/runtests.py      | 21 +++++++--------------
  5 files changed, 28 insertions(+), 26 deletions(-)
 
 commit cc3ea77318ee572673d2a044deca9001366b0f08
@@ -15986,7 +18838,7 @@ Date:   Wed Jun 23 12:26:51 2010 +0200
     Because Python's optparse will try to do things on it that can
     only be done with list.
 
- gi/overrides/Gtk.py |   2 +-
+ gi/overrides/Gtk.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 3d72b8248cc534a689dee5679a729b2fba56c528
@@ -15996,7 +18848,7 @@ Date:   Wed Jun 23 12:26:02 2010 +0200
     Force loading the GObject typelib so we have available the wrappers
     for base classes such as GInitiallyUnowned.
 
- gi/__init__.py |    3 +++
+ gi/__init__.py | 3 +++
  1 file changed, 3 insertions(+)
 
 commit c7c94ef349c30597f2f10d90f74718d678ec7add
@@ -16007,7 +18859,7 @@ Date:   Tue Jun 22 14:45:48 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=622425
 
- gi/pygi-info.c |    5 +++--
+ gi/pygi-info.c | 5 +++--
  1 file changed, 3 insertions(+), 2 deletions(-)
 
 commit fb1ee243493616d7a7e4f6924c574db39f5a423d
@@ -16023,7 +18875,7 @@ Date:   Tue Jun 22 15:39:46 2010 -0400
 
     remove unneeded TextIter creation in the tests
 
- tests/test_overrides.py |    3 ---
+ tests/test_overrides.py | 3 ---
  1 file changed, 3 deletions(-)
 
 commit 53c355d2cc0894e7f551e9b4eb719b89188a978e
@@ -16041,9 +18893,9 @@ Date:   Mon Jun 21 11:42:12 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620583
 
- gi/overrides/Gtk.py    |   51
- +++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_overrides.py |   25 +++++++++++++++++++++++
+ gi/overrides/Gtk.py    | 51
+ +++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_overrides.py | 25 ++++++++++++++++++++++++
  2 files changed, 76 insertions(+)
 
 commit 1d89a88b212c7411ad28e74eda80ae751de92e50
@@ -16059,8 +18911,8 @@ Date:   Tue Jun 22 12:46:39 2010 -0400
     targets like
       make check.gdb work
 
- configure.ac     |    2 +-
- tests/Makefile.am |   2 +-
+ configure.ac     | 2 +-
+ tests/Makefile.am | 2 +-
  2 files changed, 2 insertions(+), 2 deletions(-)
 
 commit 4fe0d94c219deb69a2309693202309c53a0e5e69
@@ -16083,9 +18935,9 @@ Date:   Tue Jun 22 11:50:30 2010 -0400
       after each override.  This creates distinct blocks of changed text
       which will not conflict
 
- gi/overrides/GIMarshallingTests.py |  10 ++++------
- gi/overrides/Gdk.py               |    8 ++++----
- gi/overrides/Gtk.py               |    7 +++++--
+ gi/overrides/GIMarshallingTests.py | 10 ++++------
+ gi/overrides/Gdk.py               |  8 ++++----
+ gi/overrides/Gtk.py               |  7 +++++--
  3 files changed, 13 insertions(+), 12 deletions(-)
 
 commit 49321b934603e1ec69fb04082c63902970907d2b
@@ -16094,9 +18946,9 @@ Date:   Sun Jun 20 13:27:34 2010 +0200
 
     Override Dialog constructor and add_buttons method
 
- gi/overrides/Gtk.py    |   46
+ gi/overrides/Gtk.py    | 46
  +++++++++++++++++++++++++++++++++++++++++++++-
- tests/test_overrides.py |   16 ++++++++++++++++
+ tests/test_overrides.py | 16 ++++++++++++++++
  2 files changed, 61 insertions(+), 1 deletion(-)
 
 commit acf7b43a41ce814f0c57ce609a090826f04771db
@@ -16105,7 +18957,7 @@ Date:   Mon Jun 21 18:17:38 2010 +0200
 
     Post release version bump to 2.21.4
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit a7fa8b80406227a06cf18f8675dbc1f471283829
@@ -16114,7 +18966,7 @@ Date:   Mon Jun 21 18:10:32 2010 +0200
 
     Update NEWS and release PyGObject-2.21.3
 
- NEWS |    7 +++++++
+ NEWS | 7 +++++++
  1 file changed, 7 insertions(+)
 
 commit 79acac7b86ec52cd3681d94d7f116314c3f00167
@@ -16125,8 +18977,8 @@ Date:   Tue Jul 21 16:28:34 2009 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=589253
 
- codegen/codegen.py       |    2 ++
- codegen/reversewrapper.py |   18 +++++++++++++++---
+ codegen/codegen.py       |  2 ++
+ codegen/reversewrapper.py | 18 +++++++++++++++---
  2 files changed, 17 insertions(+), 3 deletions(-)
 
 commit 259a4b08f009aa01451caed20dbb6e68b402da2a
@@ -16135,7 +18987,7 @@ Date:   Mon Jun 21 17:34:54 2010 +0200
 
     Add *~ and *.orig to .gitignore
 
- .gitignore |   5 ++++-
+ .gitignore | 5 ++++-
  1 file changed, 4 insertions(+), 1 deletion(-)
 
 commit 00a85f6a844714d1715e2f67431747d1a4cdacb1
@@ -16153,15 +19005,15 @@ 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.h     |    1 +
- tests/Makefile.am       |    2 +
- tests/test-floating.c   |   95 ++++++++++++++++++++++++++++++++++++++++
- tests/test-floating.h   |   60 +++++++++++++++++++++++++
- tests/test_gobject.py   |   19 +++++++-
- tests/testhelpermodule.c |  109
- ++++++++++++++++++++++++++++++++++++++++++++++
+ gobject/gobjectmodule.c  |   2 -
+ 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/testhelpermodule.c | 109
+ +++++++++++++++++++++++++++++++++++++++++++++++
  8 files changed, 315 insertions(+), 23 deletions(-)
 
 commit e71238a699ae783fd1a59c8a76e3555d8066cf82
@@ -16172,9 +19024,9 @@ Date:   Mon Jun 21 13:06:13 2010 +0200
 
     This reverts commit 04627488220b4f2a16e11f8982af7866fea9f7eb.
 
- gobject/gobjectmodule.c |    3 ++-
- gobject/pygobject.c    |   42 ++++++++++++++++++++++++++++++++++--------
- gobject/pygobject.h    |    1 -
+ gobject/gobjectmodule.c |  3 ++-
+ gobject/pygobject.c    | 42 ++++++++++++++++++++++++++++++++++--------
+ gobject/pygobject.h    |  1 -
  3 files changed, 36 insertions(+), 10 deletions(-)
 
 commit b2661054d6bde673484eab472e69ca021124528d
@@ -16358,7 +19210,7 @@ Date:   Sun Jun 20 10:49:55 2010 -0300
 
     [giounix] Make it possible to compile on glib 2.20
 
- gio/unix.override |   2 ++
+ gio/unix.override | 2 ++
  1 file changed, 2 insertions(+)
 
 commit 606018a2c551d890fc2bb987d99683f777598bda
@@ -16378,8 +19230,8 @@ Date:   Mon Jun 7 16:32:29 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620898
 
- gi/pygi-argument.c |   9 ++++++++-
- gi/pygi-invoke.c   |  11 +++++++++--
+ gi/pygi-argument.c |  9 ++++++++-
+ gi/pygi-invoke.c   | 11 +++++++++--
  2 files changed, 17 insertions(+), 3 deletions(-)
 
 commit 433ee2aa029a1482961f478252a06492bd3498e6
@@ -16393,7 +19245,7 @@ Date:   Tue Jun 15 11:42:28 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=530935
 
- gobject/pygobject.c |  11 ++++++++++-
+ gobject/pygobject.c | 11 ++++++++++-
  1 file changed, 10 insertions(+), 1 deletion(-)
 
 commit aa1e82c7eb87620bd73e1edb486f5b9e0d49aa96
@@ -16402,8 +19254,8 @@ Date:   Mon Jun 14 18:36:57 2010 -0400
 
     add combobox example
 
- demos/gtk-demo/demos/combobox.py |  282
- ++++++++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/combobox.py | 282
+ +++++++++++++++++++++++++++++++++++++++
  1 file changed, 282 insertions(+)
 
 commit a8668694da59c2dd959c875f13337e64ca22f7e9
@@ -16412,7 +19264,7 @@ Date:   Mon Jun 14 13:43:53 2010 -0400
 
     fix leak in the allow None callbacks patch
 
- gi/pygi-callbacks.c |   4 ++--
+ gi/pygi-callbacks.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 729072e73d65e7fd5b5197ebe5a8c53a449d0ec0
@@ -16434,9 +19286,9 @@ Date:   Mon Jun 7 17:12:09 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620906
 
- gi/pygi-callbacks.c     |    7 +++++++
- gi/pygi-invoke.c        |   14 +++++++++++---
- tests/test_everything.py |    4 ++++
+ gi/pygi-callbacks.c     |  7 +++++++
+ gi/pygi-invoke.c        | 14 +++++++++++---
+ tests/test_everything.py |  4 ++++
  3 files changed, 22 insertions(+), 3 deletions(-)
 
 commit a3eb5c7de5836c37aa7ae01dbe98996ec2632c17
@@ -16445,7 +19297,7 @@ Date:   Mon Jun 14 19:06:45 2010 +0200
 
     Fix to match latest gtk annotations
 
- demos/gtk-demo/demos/appwindow.py |   3 +--
+ demos/gtk-demo/demos/appwindow.py | 3 +--
  1 file changed, 1 insertion(+), 2 deletions(-)
 
 commit 6306dd73cc74aa9202569eac0eaaa5f825c8dc59
@@ -16460,8 +19312,8 @@ Date:   Tue Jun 8 15:03:49 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=621007
 
- gi/overrides/Gdk.py    |   10 +++++-----
- tests/test_overrides.py |    6 +++---
+ gi/overrides/Gdk.py    | 10 +++++-----
+ tests/test_overrides.py |  6 +++---
  2 files changed, 8 insertions(+), 8 deletions(-)
 
 commit d182630e1128fef6f1c2aea28ccd8da4bddd2c8f
@@ -16470,7 +19322,7 @@ Date:   Thu Jun 10 20:23:13 2010 +0200
 
     Post release version bump to 2.21.3
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit c4e64d5d264593051b9a3131e4985a58e8e76f8b
@@ -16479,7 +19331,7 @@ Date:   Thu Jun 10 20:21:13 2010 +0200
 
     Update NEWS and release PyGObject-2.21.2
 
- NEWS |   26 ++++++++++++++++++++++++++
+ NEWS | 26 ++++++++++++++++++++++++++
  1 file changed, 26 insertions(+)
 
 commit e0fe844d5fe8f7e26316f197444fd4143ed36adf
@@ -16493,7 +19345,7 @@ Date:   Thu Jun 10 20:09:07 2010 +0200
           test_gtype.py
           test_subtype.py
 
- tests/Makefile.am |   4 ----
+ tests/Makefile.am | 4 ----
  1 file changed, 4 deletions(-)
 
 commit 495a301cb81c5e914bcef905999265604faa27fc
@@ -16502,7 +19354,7 @@ Date:   Thu Jun 10 19:39:09 2010 +0200
 
     Add myself to the maintainers list in the README
 
- README |    1 +
+ README | 1 +
  1 file changed, 1 insertion(+)
 
 commit 04627488220b4f2a16e11f8982af7866fea9f7eb
@@ -16523,9 +19375,9 @@ Date:   Thu Jun 10 19:24:31 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=583909
 
- gobject/gobjectmodule.c |    3 +--
- gobject/pygobject.c    |   42 ++++++++----------------------------------
- gobject/pygobject.h    |    1 +
+ gobject/gobjectmodule.c |  3 +--
+ gobject/pygobject.c    | 42 ++++++++----------------------------------
+ gobject/pygobject.h    |  1 +
  3 files changed, 10 insertions(+), 36 deletions(-)
 
 commit 07df124dc06cf506634e95d08397f50a2d07fce2
@@ -16545,8 +19397,8 @@ Date:   Mon Jun 7 09:47:23 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620804
 
- gi/pygi-invoke.c        |    3 ++-
- tests/test_everything.py |    6 ++++++
+ gi/pygi-invoke.c        | 3 ++-
+ tests/test_everything.py | 6 ++++++
  2 files changed, 8 insertions(+), 1 deletion(-)
 
 commit b435319fe830a909cc4d414533b3b66574931e24
@@ -16561,7 +19413,7 @@ Date:   Mon Jun 7 09:54:06 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620805
 
- pre-commit.hook |    2 +-
+ pre-commit.hook | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit e9ee2916494eb7654004925c1ee1e94f99b14f1a
@@ -16570,8 +19422,8 @@ Date:   Tue Jun 8 16:55:26 2010 -0400
 
     colorselector demo
 
- demos/gtk-demo/demos/colorselector.py |  121
- +++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/colorselector.py | 121
+ ++++++++++++++++++++++++++++++++++
  1 file changed, 121 insertions(+)
 
 commit ec598128de9e90dccab662ed2f5511c8d659e156
@@ -16580,7 +19432,7 @@ Date:   Tue Jun 8 15:48:33 2010 +0200
 
     Update PyGObject dependency to 2.21.1
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 87774a17bd607724a56e18c2eb1ac71b04b7079d
@@ -16589,8 +19441,8 @@ Date:   Tue Jun 8 10:40:39 2010 +0200
 
     Add myself to maintainers
 
- MAINTAINERS   |    4 ++++
- pygobject.doap |    7 +++++++
+ MAINTAINERS   | 4 ++++
+ pygobject.doap | 7 +++++++
  2 files changed, 11 insertions(+)
 
 commit 46c91a11d448e5e11d142d3362aff1483226bca4
@@ -16606,7 +19458,7 @@ Date:   Wed May 5 13:54:27 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=617796
 
- gobject/pygi-external.h |    2 ++
+ gobject/pygi-external.h | 2 ++
  1 file changed, 2 insertions(+)
 
 commit c1c41576d053cc1cdd8366d8cd1e59fff1c3a9c6
@@ -16615,7 +19467,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 +++++--
+ demos/gtk-demo/demos/clipboard.py | 7 +++++--
  1 file changed, 5 insertions(+), 2 deletions(-)
 
 commit e7fabb5024d94a3166766e5fca740741bc50380a
@@ -16624,8 +19476,8 @@ Date:   Mon Jun 7 16:21:42 2010 -0400
 
     clipboard demo
 
- demos/gtk-demo/demos/clipboard.py |  235
- +++++++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/clipboard.py | 235
+ ++++++++++++++++++++++++++++++++++++++
  1 file changed, 235 insertions(+)
 
 commit e0f1dce5ec58d071759f886697501da6eeea549d
@@ -16634,7 +19486,7 @@ Date:   Sun Jun 6 13:27:46 2010 -0400
 
     set is_fully_bound to false
 
- demos/gtk-demo/demos/button_box.py |   2 +-
+ demos/gtk-demo/demos/button_box.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 986db1c73746d3a8ad7d8d5141c7eed194e7b948
@@ -16643,8 +19495,8 @@ Date:   Sat Jun 5 23:53:36 2010 -0400
 
     new button box demo
 
- demos/gtk-demo/demos/button_box.py |  121
- ++++++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/button_box.py | 121
+ +++++++++++++++++++++++++++++++++++++
  1 file changed, 121 insertions(+)
 
 commit e9f5f8a829121e59367bae690442150f144946ad
@@ -16653,7 +19505,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 +-
+ demos/gtk-demo/demos/builder.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit d9968c3a4dea1d4a73a9376009cf486c80ea3da6
@@ -16662,9 +19514,9 @@ Date:   Sat Jun 5 23:24:36 2010 -0400
 
     fix up formatting in demos
 
- demos/gtk-demo/demos/appwindow.py |   16 ++++++++--------
- demos/gtk-demo/demos/assistant.py |   24 ++++++++++++------------
- demos/gtk-demo/demos/builder.py   |   2 +-
+ demos/gtk-demo/demos/appwindow.py | 16 ++++++++--------
+ demos/gtk-demo/demos/assistant.py | 24 ++++++++++++------------
+ demos/gtk-demo/demos/builder.py   |  2 +-
  3 files changed, 21 insertions(+), 21 deletions(-)
 
 commit ffca02536bafb55e8c3bce31cd992365207429f6
@@ -16673,8 +19525,8 @@ Date:   Sat Jun 5 14:54:47 2010 -0400
 
     add the builder demo
 
- demos/gtk-demo/demos/builder.py |   57
- +++++++++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/builder.py | 57
+ +++++++++++++++++++++++++++++++++++++++++
  1 file changed, 57 insertions(+)
 
 commit a96dbafdf562a2ac6bde4df27919d3628689dbdb
@@ -16683,8 +19535,8 @@ Date:   Fri Jun 4 17:48:24 2010 -0400
 
     add assistant demo
 
- demos/gtk-demo/demos/assistant.py |  134
- +++++++++++++++++++++++++++++++++++++
+ demos/gtk-demo/demos/assistant.py | 134
+ ++++++++++++++++++++++++++++++++++++++
  1 file changed, 134 insertions(+)
 
 commit 7e1b8cf32f33d45603aaec76afb0d14be84ffd94
@@ -16693,7 +19545,7 @@ Date:   Fri Jun 4 16:56:46 2010 -0400
 
     add formatting rules and copyright notice
 
- demos/gtk-demo/demos/appwindow.py |   19 +++++++++++++++++++
+ demos/gtk-demo/demos/appwindow.py | 19 +++++++++++++++++++
  1 file changed, 19 insertions(+)
 
 commit 03b99692b81631d397ab62dcd263341465bcee88
@@ -16708,25 +19560,25 @@ Date: Fri Jun 4 16:26:54 2010 -0400
        - http://bugzilla-attachments.gnome.org/attachment.cgi?id=162682
        - http://bugzilla-attachments.gnome.org/attachment.cgi?id=162764
 
- demos/gtk-demo/demos/appwindow.py               |  393
- ++++++++++++++++++++++
- demos/gtk-demo/demos/data/alphatest.png         |  Bin 0 -> 26529 bytes
- demos/gtk-demo/demos/data/apple-red.png         |  Bin 0 -> 3545 bytes
- demos/gtk-demo/demos/data/background.jpg        |  Bin 0 -> 22219 bytes
- demos/gtk-demo/demos/data/demo.ui               |  258 ++++++++++++++
- demos/gtk-demo/demos/data/floppybuddy.gif       |  Bin 0 -> 5216 bytes
- demos/gtk-demo/demos/data/gnome-applets.png     |  Bin 0 -> 3090 bytes
- demos/gtk-demo/demos/data/gnome-calendar.png    |  Bin 0 -> 2755 bytes
- demos/gtk-demo/demos/data/gnome-foot.png        |  Bin 0 -> 2916 bytes
- demos/gtk-demo/demos/data/gnome-fs-directory.png |  Bin 0 -> 2044 bytes
- demos/gtk-demo/demos/data/gnome-fs-regular.png   |  Bin 0 -> 1795 bytes
- demos/gtk-demo/demos/data/gnome-gimp.png        |  Bin 0 -> 3410 bytes
- demos/gtk-demo/demos/data/gnome-gmush.png       |  Bin 0 -> 3244 bytes
- demos/gtk-demo/demos/data/gnome-gsame.png       |  Bin 0 -> 4263 bytes
- demos/gtk-demo/demos/data/gnu-keys.png                  |  Bin 0 -> 3852 bytes
- 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 +++++++++++++++
+ demos/gtk-demo/demos/appwindow.py               | 393
+ +++++++++++++++++++++++
+ demos/gtk-demo/demos/data/alphatest.png         | Bin 0 -> 26529 bytes
+ demos/gtk-demo/demos/data/apple-red.png         | Bin 0 -> 3545 bytes
+ demos/gtk-demo/demos/data/background.jpg        | Bin 0 -> 22219 bytes
+ demos/gtk-demo/demos/data/demo.ui               | 258 +++++++++++++++
+ demos/gtk-demo/demos/data/floppybuddy.gif       | Bin 0 -> 5216 bytes
+ demos/gtk-demo/demos/data/gnome-applets.png     | Bin 0 -> 3090 bytes
+ demos/gtk-demo/demos/data/gnome-calendar.png    | Bin 0 -> 2755 bytes
+ demos/gtk-demo/demos/data/gnome-foot.png        | Bin 0 -> 2916 bytes
+ demos/gtk-demo/demos/data/gnome-fs-directory.png | Bin 0 -> 2044 bytes
+ demos/gtk-demo/demos/data/gnome-fs-regular.png   | Bin 0 -> 1795 bytes
+ demos/gtk-demo/demos/data/gnome-gimp.png        | Bin 0 -> 3410 bytes
+ demos/gtk-demo/demos/data/gnome-gmush.png       | Bin 0 -> 3244 bytes
+ demos/gtk-demo/demos/data/gnome-gsame.png       | Bin 0 -> 4263 bytes
+ demos/gtk-demo/demos/data/gnu-keys.png                  | Bin 0 -> 3852 bytes
+ 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(+)
 
 commit b3b1f029d8d16cf9bd74160009808147d07e3b3f
@@ -16735,7 +19587,7 @@ Date:   Fri Jun 4 11:25:08 2010 +0200
 
     Update gobject-introspection dependency to 0.6.14
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 45c4e46ae93bd83a0e3f3550df6c64ce96bbedb4
@@ -16744,7 +19596,7 @@ Date:   Fri Jun 4 11:23:41 2010 +0200
 
     Post-release version bump to 0.6.1
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 7a94270dac48b67aabc7dbad156cf1180db9cb5e
@@ -16753,7 +19605,7 @@ Date:   Fri Jun 4 08:29:42 2010 +0200
 
     Pre-release version bump 0.6.0
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 1e42ee6eb25a07a5201f24ffeac18d298a98477e
@@ -16781,9 +19633,9 @@ 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 ++++++++++++++++++
+ gi/pygi-invoke.c        | 73
+ +++++++++++++++++++++++++++++++++++++++++++++---
+ tests/test_everything.py | 28 +++++++++++++++++++
  2 files changed, 97 insertions(+), 4 deletions(-)
 
 commit c3f467e0ae99aa78c2fdb91b973a272d2fe970bd
@@ -16794,7 +19646,7 @@ Date:   Wed Jun 2 14:14:16 2010 -0400
 
     * use from gi.repository import GObject
 
- tests/test_overrides.py |    5 ++---
+ tests/test_overrides.py | 5 ++---
  1 file changed, 2 insertions(+), 3 deletions(-)
 
 commit 46b5133fea4cd5db57a360b3cbe9ee923e27560c
@@ -16805,8 +19657,8 @@ Date:   Tue Jun 1 14:28:57 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=620247
 
- gi/pygi-info.c   |   11 +++++++++++
- tests/test_gi.py |   17 +++++++++++++++++
+ gi/pygi-info.c   | 11 +++++++++++
+ tests/test_gi.py | 17 +++++++++++++++++
  2 files changed, 28 insertions(+)
 
 commit 5f0f9a9c9145a129a063b041424c3109a24d9ead
@@ -16816,8 +19668,8 @@ Date:   Wed May 26 13:20:27 2010 +0200
     Install pre-commit hook that checks the code changes for style
     conformance
 
- autogen.sh     |    7 +++++++
- pre-commit.hook |   39 +++++++++++++++++++++++++++++++++++++++
+ autogen.sh     |  7 +++++++
+ pre-commit.hook | 39 +++++++++++++++++++++++++++++++++++++++
  2 files changed, 46 insertions(+)
 
 commit 1319da5b7f483e48a90b0b7489f77236ba26f479
@@ -16830,25 +19682,25 @@ 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/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.h      |   18 +-
- gi/pygi-foreign-cairo.c |   36 +-
- gi/pygi-foreign-cairo.h |   36 +-
- gi/pygi-foreign.c      |   54 +--
- gi/pygi-foreign.h      |   10 +-
- gi/pygi-info.c                 |  646 +++++++++++++++----------------
- gi/pygi-invoke.c       |  380 +++++++++----------
- gi/pygi-repository.c   |  114 +++---
- gi/pygi-struct.c       |   88 ++---
- gi/pygi-type.c                 |   32 +-
- gi/pygi.h              |   20 +-
- gi/pygobject-external.h |   14 +-
+ 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.h      |  18 +-
+ gi/pygi-foreign-cairo.c |  36 +-
+ gi/pygi-foreign-cairo.h |  36 +-
+ gi/pygi-foreign.c      |  54 +--
+ gi/pygi-foreign.h      |  10 +-
+ gi/pygi-info.c                 | 646 ++++++++++++++++----------------
+ gi/pygi-invoke.c       | 380 +++++++++----------
+ gi/pygi-repository.c   | 114 +++---
+ gi/pygi-struct.c       |  88 ++---
+ gi/pygi-type.c                 |  32 +-
+ gi/pygi.h              |  20 +-
+ gi/pygobject-external.h |  14 +-
  18 files changed, 1544 insertions(+), 1542 deletions(-)
 
 commit 6156f15cb15b4c20e975527227135d49207c520a
@@ -16859,8 +19711,8 @@ Date:   Tue May 25 14:08:51 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=619597
 
- gi/module.py    |    4 ++--
- tests/test_gi.py |    4 +++-
+ gi/module.py    | 4 ++--
+ tests/test_gi.py | 4 +++-
  2 files changed, 5 insertions(+), 3 deletions(-)
 
 commit 097b92983b7a322c58fecb1e691ba6ddf5035548
@@ -16875,7 +19727,7 @@ Date:   Tue May 25 14:17:13 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=619604
 
- gi/types.py |  15 +++++++++++----
+ gi/types.py | 15 +++++++++++----
  1 file changed, 11 insertions(+), 4 deletions(-)
 
 commit 686e10fcdb108af9758eb025a3447813c3513a93
@@ -16886,7 +19738,7 @@ Date:   Thu Apr 29 10:55:13 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=617153
 
- gi/types.py |   3 ++-
+ gi/types.py | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit 9f34d120845d936b04546a5cea599ec67e9181a7
@@ -16903,9 +19755,9 @@ 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 +++++++++++--
- tests/test_overrides.py |   72
- +++++++++++++++++++++++++++++++++++++++++++++--
+ gi/overrides/Gtk.py    | 19 +++++++++++--
+ tests/test_overrides.py | 72
+ ++++++++++++++++++++++++++++++++++++++++++++++---
  2 files changed, 86 insertions(+), 5 deletions(-)
 
 commit 1561d2977691f1cb8684f183a2e274c47960d931
@@ -16918,8 +19770,8 @@ Date:   Mon May 24 18:48:10 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=616849
 
- gi/gimodule.c   |    9 +++++++++
- tests/test_gi.py |   13 ++++++++++++-
+ gi/gimodule.c   |  9 +++++++++
+ tests/test_gi.py | 13 ++++++++++++-
  2 files changed, 21 insertions(+), 1 deletion(-)
 
 commit c9d44d4d46c3da3a445000b1db592baa9c378a92
@@ -16930,9 +19782,8 @@ Date:   Fri Apr 30 18:17:50 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=617054
 
- gi/pygi-invoke.c |   11 +++++++----
- tests/test_gi.py |   50
- ++++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-invoke.c | 11 +++++++----
+ tests/test_gi.py | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
  2 files changed, 57 insertions(+), 4 deletions(-)
 
 commit c171579ee22681e1ee4ad33441c89f1053bdc3d1
@@ -16941,7 +19792,7 @@ Date:   Mon May 24 11:48:16 2010 -0400
 
     check refcounting of callback userdata in unit tests
 
- tests/test_everything.py |   18 ++++++++++++++++++
+ tests/test_everything.py | 18 ++++++++++++++++++
  1 file changed, 18 insertions(+)
 
 commit 8eb809468fe3e1f8e4f92bd7f25d96f9cf802cd4
@@ -16957,9 +19808,9 @@ Date:   Sat May 22 15:12:37 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=617780
 
- gi/pygi-closure.c |  335
- +++++++++++++++++++++++++++++++++++++++++------------
- tests/test_gi.py  |   4 +
+ gi/pygi-closure.c | 335
+ +++++++++++++++++++++++++++++++++++++++++-------------
+ tests/test_gi.py  |   4 +
  2 files changed, 263 insertions(+), 76 deletions(-)
 
 commit 0df0c956bb2476392c9d81f0a243a7e84c067166
@@ -16978,8 +19829,8 @@ Date:   Sun May 23 10:59:27 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=617880
 
- gi/pygi-argument.c      |    5 +++++
- tests/test_everything.py |    6 ++++++
+ gi/pygi-argument.c      | 5 +++++
+ tests/test_everything.py | 6 ++++++
  2 files changed, 11 insertions(+)
 
 commit 60fdf4b8f738dd0f5c190bc18ddf010032d3c5ca
@@ -16998,8 +19849,8 @@ Date:   Sat May 22 14:06:37 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=619007
 
- gi/gimodule.c           |   12 ++++++++++++
- tests/test_everything.py |    3 +++
+ gi/gimodule.c           | 12 ++++++++++++
+ tests/test_everything.py |  3 +++
  2 files changed, 15 insertions(+)
 
 commit 4b369f8aca980fc6a582094d6648f40fe4af5e9f
@@ -17024,8 +19875,8 @@ Date:   Sat May 22 13:21:30 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=619232
 
- gi/pygi-argument.c      |    6 ------
- tests/test_everything.py |    4 ++--
+ gi/pygi-argument.c      | 6 ------
+ tests/test_everything.py | 4 ++--
  2 files changed, 2 insertions(+), 8 deletions(-)
 
 commit 71a2148b00dfdda99e0d961ae39b901608724e59
@@ -17039,7 +19890,7 @@ Date:   Fri May 21 19:05:03 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=619311
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit aa0357e468eb91e0f3707346e9b32f312fbf51d3
@@ -17050,7 +19901,7 @@ Date:   Thu Apr 29 13:06:15 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=617159
 
- gi/gimodule.c |    4 +++-
+ gi/gimodule.c | 4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)
 
 commit ab1aaff108d23aabd28c3634edfb67236eb55460
@@ -17091,8 +19942,8 @@ Date:   Sat May 22 13:09:48 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=619235
 
- gi/pygi-invoke.c        |    6 +++++-
- tests/test_everything.py |    4 ++--
+ gi/pygi-invoke.c        | 6 +++++-
+ tests/test_everything.py | 4 ++--
  2 files changed, 7 insertions(+), 3 deletions(-)
 
 commit e928ea9b1df9d87314ff8e93479530e26be9bd87
@@ -17108,7 +19959,7 @@ Date:   Fri May 14 14:57:27 2010 -0400
       API such as this doesn't need to be used anymore and is a result of
       early GTK development
 
- gi/pygi-argument.c |  14 +++++++++++---
+ gi/pygi-argument.c | 14 +++++++++++---
  1 file changed, 11 insertions(+), 3 deletions(-)
 
 commit d963007aab123f4e53a944a66a935db2d22907c2
@@ -17127,7 +19978,7 @@ Date:   Mon May 17 11:54:34 2010 -0400
       new modified argument list
     * fixes https://bugzilla.gnome.org/show_bug.cgi?id=618889
 
- gi/overrides/Gtk.py |   1 +
+ gi/overrides/Gtk.py | 1 +
  1 file changed, 1 insertion(+)
 
 commit 897420ed97cc4a7b8a806894df5e76ed72617614
@@ -17138,9 +19989,9 @@ Date:   Wed May 12 14:25:32 2010 -0400
 
     * fixes bug https://bugzilla.gnome.org/show_bug.cgi?id=618476
 
- gi/overrides/Gtk.py    |  167
- ++++++++++++++++++++++++++++++++++++++++++++++-
- tests/test_overrides.py |   45 +++++++++++++
+ gi/overrides/Gtk.py    | 167
+ +++++++++++++++++++++++++++++++++++++++++++++++-
+ tests/test_overrides.py |  45 +++++++++++++
  2 files changed, 211 insertions(+), 1 deletion(-)
 
 commit 865939d29c1e9d69dbe6b9cf89477b5516dbff1f
@@ -17149,7 +20000,7 @@ Date:   Thu May 13 01:02:24 2010 -0400
 
     Bump version for development to 0.5.2 (hopefully 0.6)
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 2674a9546b0246d4a75d71cf1708df77dc0173f9
@@ -17160,9 +20011,9 @@ Date:   Wed May 5 15:54:39 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=617757
 
- gi/overrides/Gdk.py    |    2 +-
- tests/Makefile.am      |    3 ++-
- tests/test_overrides.py |   22 ++++++++++++++++++++++
+ gi/overrides/Gdk.py    |  2 +-
+ tests/Makefile.am      |  3 ++-
+ tests/test_overrides.py | 22 ++++++++++++++++++++++
  3 files changed, 25 insertions(+), 2 deletions(-)
 
 commit c20b9f632a35bada1320ccc10fb7d5b2c06b9a88
@@ -17183,11 +20034,11 @@ 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/module.py            |   30 +++++++++++++++
- tests/test_everything.py |    6 +--
- tests/test_gi.py        |   93
- +++++++++++++++++++++++++---------------------
+ gi/importer.py                  |  6 ++--
+ gi/module.py            | 30 ++++++++++++++++
+ tests/test_everything.py |  6 ++--
+ tests/test_gi.py        | 93
+ ++++++++++++++++++++++++++----------------------
  4 files changed, 87 insertions(+), 48 deletions(-)
 
 commit 64324a4c629432b2e688299b6edbfd5da4439a2a
@@ -17196,7 +20047,7 @@ Date:   Fri Apr 30 14:11:55 2010 -0400
 
     override Gdk.Drawable to add cairo_create convinience method
 
- gi/overrides/Gdk.py |   7 ++++++-
+ gi/overrides/Gdk.py | 7 ++++++-
  1 file changed, 6 insertions(+), 1 deletion(-)
 
 commit 17fa1289b1e2ed841dd5de09a2ec7c25d401886e
@@ -17207,10 +20058,10 @@ Date: Mon May 3 19:13:46 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=617551
 
- gi/pygi-callbacks.c     |    3 ++-
- gi/pygi-callbacks.h     |    1 +
- gi/pygi-invoke.c        |    7 +++++--
- tests/test_everything.py |   21 +++++++++++++++++++++
+ gi/pygi-callbacks.c     |  3 ++-
+ gi/pygi-callbacks.h     |  1 +
+ gi/pygi-invoke.c        |  7 +++++--
+ tests/test_everything.py | 21 +++++++++++++++++++++
  4 files changed, 29 insertions(+), 3 deletions(-)
 
 commit f9fff978d56ddf2c012b906169ae16abb7fdc2a5
@@ -17219,7 +20070,7 @@ Date:   Wed May 5 08:06:03 2010 +0200
 
     Avoid freeing garbage
 
- gi/pygi-invoke.c |    6 ++++--
+ gi/pygi-invoke.c | 6 ++++--
  1 file changed, 4 insertions(+), 2 deletions(-)
 
 commit 5e20c018ae09a936f5ff140df5d1c133c98e98ba
@@ -17230,8 +20081,8 @@ Date:   Thu Apr 29 13:09:03 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=617160
 
- gi/types.py     |   10 +++++++++-
- tests/test_gi.py |   10 ++++++++++
+ gi/types.py     | 10 +++++++++-
+ tests/test_gi.py | 10 ++++++++++
  2 files changed, 19 insertions(+), 1 deletion(-)
 
 commit 3e61e7d4450a2bb133c7f3862e0962a35339ce8d
@@ -17242,8 +20093,8 @@ Date:   Mon May 3 18:35:13 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=617542
 
- gi/pygi-invoke.c        |    3 ++-
- tests/test_everything.py |   10 ++++++++++
+ gi/pygi-invoke.c        |  3 ++-
+ tests/test_everything.py | 10 ++++++++++
  2 files changed, 12 insertions(+), 1 deletion(-)
 
 commit 9669acd0fad193013ef3505ae231588307f9834c
@@ -17254,13 +20105,13 @@ Date: Mon May 3 12:23:58 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=617107
 
- gi/Makefile.am    |   2 +
- gi/pygi-info.c    |  884
- ---------------------------------------------------
- gi/pygi-invoke.c  |  909
- +++++++++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-invoke.h  |   37 +++
- gi/pygi-private.h |   1 +
+ gi/Makefile.am    |   2 +
+ gi/pygi-info.c    | 884
+ ----------------------------------------------------
+ gi/pygi-invoke.c  | 909
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-invoke.h  |  37 +++
+ gi/pygi-private.h |   1 +
  5 files changed, 949 insertions(+), 884 deletions(-)
 
 commit 9b923a68dfde06fc2df6321b3f1e53f1c57b3666
@@ -17269,7 +20120,7 @@ Date:   Tue Apr 27 19:13:08 2010 -0400
 
     Add the Gtk.Builder override
 
- gi/overrides/Gtk.py |  37 ++++++++++++++++++++++++++++++++++++-
+ gi/overrides/Gtk.py | 37 ++++++++++++++++++++++++++++++++++++-
  1 file changed, 36 insertions(+), 1 deletion(-)
 
 commit 9fc6783406b8263ebd67ceae2730b4e86689b43e
@@ -17280,8 +20131,8 @@ Date:   Fri Apr 30 15:00:52 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=616236
 
- gi/pygi-closure.c       |    8 +++++++-
- tests/test_everything.py |   16 ++++++++++++++++
+ gi/pygi-closure.c       |  8 +++++++-
+ tests/test_everything.py | 16 ++++++++++++++++
  2 files changed, 23 insertions(+), 1 deletion(-)
 
 commit 5657ccaaec09e2a3194ea2e9a923724bcc66759e
@@ -17292,7 +20143,7 @@ Date:   Thu Apr 29 18:32:50 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=617162
 
- gi/overrides/Gdk.py |  20 +++++++++++++++++++-
+ gi/overrides/Gdk.py | 20 +++++++++++++++++++-
  1 file changed, 19 insertions(+), 1 deletion(-)
 
 commit 4410abd589a2f64cfbd7bbcb4013fae9e4aa734f
@@ -17309,9 +20160,9 @@ Date:   Wed Apr 28 13:19:48 2010 -0400
       against None as well as in __all__
     * went through all the overrides and made __all__ be a list of strings
 
- gi/module.py                      |    9 ++++-----
- gi/overrides/GIMarshallingTests.py |   2 +-
- gi/overrides/Gdk.py               |    2 +-
+ gi/module.py                      | 9 ++++-----
+ gi/overrides/GIMarshallingTests.py | 2 +-
+ gi/overrides/Gdk.py               | 2 +-
  3 files changed, 6 insertions(+), 7 deletions(-)
 
 commit 64fa8f936bad9a90628df446e690d67d947a0a22
@@ -17322,10 +20173,10 @@ Date: Mon Apr 26 11:41:06 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=616357
 
- gi/pygi-callbacks.c |  22 +-
- gi/pygi-callbacks.h |   4 +-
- gi/pygi-info.c      | 582
- +++++++++++++++++++++++++++++----------------------
+ gi/pygi-callbacks.c | 22 +-
+ gi/pygi-callbacks.h |  4 +-
+ gi/pygi-info.c      | 582
+ ++++++++++++++++++++++++++++++----------------------
  3 files changed, 346 insertions(+), 262 deletions(-)
 
 commit 7fc5528273edae5ecdd5d8bdf0e5b898eec7a624
@@ -17340,8 +20191,8 @@ Date:   Tue Apr 20 23:23:38 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=616357
 
- gi/pygi-info.c |  417
- +++++++++++++++++++++++++++++---------------------------
+ gi/pygi-info.c | 417
+ +++++++++++++++++++++++++++++----------------------------
  1 file changed, 214 insertions(+), 203 deletions(-)
 
 commit 1d9c6b6d76a3e27f66e6f0cfc7b16c5191e4fc22
@@ -17352,8 +20203,8 @@ Date:   Tue Apr 27 10:24:35 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=616674
 
- gi/types.py     |    4 ++--
- tests/test_gi.py |   15 +++++++++++++++
+ gi/types.py     |  4 ++--
+ tests/test_gi.py | 15 +++++++++++++++
  2 files changed, 17 insertions(+), 2 deletions(-)
 
 commit 8a0c48f4dd512797e5cf132f8ec6fb6d4d1e7aaa
@@ -17368,8 +20219,8 @@ Date:   Sun Apr 25 15:09:08 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=616786
 
- gi/pygi-closure.c       |    3 +++
- tests/test_everything.py |   13 +++++++++++++
+ gi/pygi-closure.c       |  3 +++
+ tests/test_everything.py | 13 +++++++++++++
  2 files changed, 16 insertions(+)
 
 commit 2b12049306bf57513c43d08017185468bf897a4a
@@ -17383,7 +20234,7 @@ Date:   Tue Apr 20 22:57:14 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=616356
 
- gi/pygi-closure.c |   4 ++--
+ gi/pygi-closure.c | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 8240320d0b67074ce91bdf7aadcf5951c5a8c45a
@@ -17403,8 +20254,8 @@ Date:   Tue Apr 20 23:53:57 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=616043
 
- gi/pygi-info.c   |    1 +
- tests/test_gi.py |    3 +++
+ gi/pygi-info.c   | 1 +
+ tests/test_gi.py | 3 +++
  2 files changed, 4 insertions(+)
 
 commit 10e558ca283cdd06725bb0d24b5071ccbecc7d13
@@ -17421,7 +20272,7 @@ Date:   Tue Apr 20 22:57:14 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=616356
 
- gi/pygi-closure.c |   3 ++-
+ gi/pygi-closure.c | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit d3b5fae9d609dbcd83deb0fa9102b24faf76787c
@@ -17433,9 +20284,9 @@ Date:   Tue Apr 20 22:43:20 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=616343
 
- gi/pygi-closure.c       |   10 +++++-----
- gi/pygi-info.c                  |    9 +++++++--
- tests/test_everything.py |    9 +++++++++
+ gi/pygi-closure.c       | 10 +++++-----
+ gi/pygi-info.c                  |  9 +++++++--
+ tests/test_everything.py |  9 +++++++++
  3 files changed, 21 insertions(+), 7 deletions(-)
 
 commit 3ba666b7ab9c393963922c272e7d87bff50a93f9
@@ -17446,13 +20297,13 @@ 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-info.c     |  94
- +++++++++++++++++++++++++++++++++++++++++++++++-----
- gi/pygi-info.h     |   1 +
- tests/test_gi.py   |  56 +++++++++++++++++++++++++++++++
+ gi/module.py      |  3 +-
+ gi/pygi-argument.c | 24 +++-----------
+ gi/pygi-boxed.c    | 18 +++++++++--
+ gi/pygi-info.c     | 94
+ ++++++++++++++++++++++++++++++++++++++++++++++++------
+ gi/pygi-info.h     |  1 +
+ tests/test_gi.py   | 56 ++++++++++++++++++++++++++++++++
  6 files changed, 165 insertions(+), 31 deletions(-)
 
 commit af9e4e086d160fe7fb24758ed81753e784b198a8
@@ -17465,8 +20316,8 @@ Date:   Fri Jan 22 22:16:32 2010 +0100
     keep PyGI
     backward-compatible.
 
- configure.ac     |    2 +-
- gi/pygi-private.h |   20 --------------------
+ configure.ac     |  2 +-
+ gi/pygi-private.h | 20 --------------------
  2 files changed, 1 insertion(+), 21 deletions(-)
 
 commit c0f40de5648e2ebc556c449342a0025ffce2e33b
@@ -17477,8 +20328,8 @@ Date:   Sun Apr 18 11:50:14 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=616108
 
- gi/pygi-info.c |  360
- ++++++++++++++++++++++++++------------------------------
+ gi/pygi-info.c | 360
+ +++++++++++++++++++++++++++------------------------------
  1 file changed, 168 insertions(+), 192 deletions(-)
 
 commit 24bb89f1310dc2fc8ee6ddaf945342ebf80055cd
@@ -17489,7 +20340,7 @@ Date:   Tue Apr 20 15:12:47 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=616279
 
- gi/pygi-closure.c |   9 +++++----
+ gi/pygi-closure.c | 9 +++++----
  1 file changed, 5 insertions(+), 4 deletions(-)
 
 commit d1ba23cdd05686ea721425f233371d573a2e9cce
@@ -17498,7 +20349,7 @@ Date:   Thu Apr 22 19:57:17 2010 +0200
 
     Rename variable with a very generic name
 
- gi/module.py |   28 ++++++++++++++--------------
+ gi/module.py | 28 ++++++++++++++--------------
  1 file changed, 14 insertions(+), 14 deletions(-)
 
 commit 391640b30ede50af3667b1019edb72bd79f2c68c
@@ -17509,10 +20360,10 @@ Date: Thu Apr 22 19:53:06 2010 +0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=616520
 
- gi/module.py      |    6 +++++-
- gi/pygi-argument.c |  22 +++++++++++++++++++++-
- gi/types.py       |   14 ++++++++++++++
- tests/test_gi.py   |  30 ++++++++++++++++++++++++++++--
+ gi/module.py      |  6 +++++-
+ gi/pygi-argument.c | 22 +++++++++++++++++++++-
+ gi/types.py       | 14 ++++++++++++++
+ tests/test_gi.py   | 30 ++++++++++++++++++++++++++++--
  4 files changed, 68 insertions(+), 4 deletions(-)
 
 commit 89704f60ddae0c81f1383d86491ef2785590a353
@@ -17527,7 +20378,7 @@ Date:   Tue Apr 20 22:20:42 2010 -0400
     not the version after.  Thus after a release you make a new commit
     bumping to the next development version.
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit e203dc7c8f524c16aa52e15758dc3a2b09fbac75
@@ -17536,7 +20387,7 @@ Date:   Tue Apr 20 20:40:02 2010 -0400
 
     Added missing , to keyword list of gio.GFile.set_attribute
 
- gio/gresolver.override |    2 +-
+ gio/gresolver.override | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 0b222f01ac9ceea1d127083623ad532ecc75bf7e
@@ -17545,8 +20396,8 @@ Date:   Tue Apr 20 20:37:12 2010 -0400
 
     Fix arg conversion in gio.GFile.set_attribute
 
- gio/gfile.override |  232
- ++++++++++++++++++++++++++++++++++++++++++++++++++--
+ gio/gfile.override | 232
+ +++++++++++++++++++++++++++++++++++++++++++++++++++--
  1 file changed, 227 insertions(+), 5 deletions(-)
 
 commit a579ccc8bea90937bf970be3d461e2b650b0c7d6
@@ -17555,7 +20406,7 @@ Date:   Tue Apr 20 20:01:53 2010 -0400
 
     Set constants under python 2.5 or before
 
- gobject/gobjectmodule.c |    8 ++++++++
+ gobject/gobjectmodule.c | 8 ++++++++
  1 file changed, 8 insertions(+)
 
 commit 11fa39a861abf679e01b5f0da97be93ae0adf0f0
@@ -17571,7 +20422,7 @@ Date:   Sun Apr 18 20:22:21 2010 -0400
        and will
        not make the parsing crash.
 
- codegen/docextract_to_xml.py |    4 ++--
+ codegen/docextract_to_xml.py | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 8dbc2cb016acef7b364804cd9bc8f0b1da37e84b
@@ -17580,8 +20431,8 @@ Date:   Sun Apr 18 14:32:06 2010 -0400
 
     Bump version for release 0.5.0
 
- HACKING      |    7 +++++++
- configure.ac |    4 ++--
+ HACKING      | 7 +++++++
+ configure.ac | 4 ++--
  2 files changed, 9 insertions(+), 2 deletions(-)
 
 commit 3293c91d90c5c497b45e42a527d7f79f7435823e
@@ -17590,7 +20441,7 @@ Date:   Sun Apr 18 14:28:13 2010 -0400
 
     One more missing file...
 
- examples/Makefile.am |    2 ++
+ examples/Makefile.am | 2 ++
  1 file changed, 2 insertions(+)
 
 commit 1dc575af19fe985cc3fa3ec0cf18aeab1f43c16d
@@ -17599,8 +20450,8 @@ Date:   Sun Apr 18 14:18:44 2010 -0400
 
     Add more stuff to the tarballs
 
- Makefile.am  |    8 +++++++-
- configure.ac |    1 +
+ Makefile.am  | 8 +++++++-
+ configure.ac | 1 +
  2 files changed, 8 insertions(+), 1 deletion(-)
 
 commit 8a9bb04755057e934b7f46c917af6ef281a2fedd
@@ -17609,7 +20460,7 @@ Date:   Sun Apr 18 13:48:45 2010 -0400
 
     Add one more missing file to tarballs
 
- gi/overrides/Makefile.am |    1 +
+ gi/overrides/Makefile.am | 1 +
  1 file changed, 1 insertion(+)
 
 commit 979e01852fc7f830ee91093accdc387fa535075f
@@ -17618,7 +20469,7 @@ Date:   Sun Apr 18 13:45:29 2010 -0400
 
     Add missing file to tarballs
 
- tests/Makefile.am |   1 +
+ tests/Makefile.am | 1 +
  1 file changed, 1 insertion(+)
 
 commit 8b70faa7a9a32b9ea8862f28a503e38f496cfd89
@@ -17629,17 +20480,17 @@ Date: Sun Apr 18 13:11:11 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=602736
 
- gi/gimodule.c      |   89
- +++++++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-argument.c  |   1 +
- gi/pygi-callbacks.c |   3 +-
- 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 +++++++++++
+ gi/gimodule.c      | 89
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-argument.c  | 1 +
+ gi/pygi-callbacks.c | 3 +-
+ 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 +++++++++++
  9 files changed, 227 insertions(+), 21 deletions(-)
 
 commit e239faacb4798fe2d166233ca1a19a843a6225e3
@@ -17648,7 +20499,7 @@ Date:   Sun Apr 18 11:59:06 2010 -0400
 
     Fix a typo in pygi-callbacks.c header
 
- gi/pygi-callbacks.c |   2 +-
+ gi/pygi-callbacks.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 79aa416ae8632b123da61d79fb820d9e2704209c
@@ -17659,11 +20510,10 @@ Date: Sat Apr 17 12:00:05 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=616035
 
- gi/pygi-argument.c      |   43
- +++++++++++++++++++++++++++++++++++++------
- gi/pygi-argument.h      |    3 ++-
- gi/pygi-info.c                  |   19 +++++++++++++------
- tests/test_everything.py |   28 ++++++++++++++++++++++++++++
+ gi/pygi-argument.c      | 43 +++++++++++++++++++++++++++++++++++++------
+ gi/pygi-argument.h      |  3 ++-
+ gi/pygi-info.c                  | 19 +++++++++++++------
+ tests/test_everything.py | 28 ++++++++++++++++++++++++++++
  4 files changed, 80 insertions(+), 13 deletions(-)
 
 commit 7d533b8893bc4a8a82fd9708278fa1dce5d3551e
@@ -17672,10 +20522,10 @@ Date: Sat Apr 17 12:56:19 2010 -0400
 
     Move some tests from test_gi to test_everything
 
- tests/test_everything.py |   60
- ++++++++++++++++++++++++++++++++++++++++++++
- tests/test_gi.py        |   62
- +---------------------------------------------
+ tests/test_everything.py | 60
+ ++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_gi.py        | 62
+ +-----------------------------------------------
  2 files changed, 61 insertions(+), 61 deletions(-)
 
 commit a90298cc9e6c0f336f887a71d80b1efd07ec2811
@@ -17684,8 +20534,8 @@ Date:   Sun Apr 18 10:44:35 2010 -0400
 
     Update to latest version of the pygi-convert.sh script
 
- pygi-convert.sh |  193
- +++++++++++++++++++++++++++++++++++++++----------------
+ pygi-convert.sh | 193
+ ++++++++++++++++++++++++++++++++++++++++----------------
  1 file changed, 137 insertions(+), 56 deletions(-)
 
 commit 34a39318c674737c6d64f2430456daef86ba1626
@@ -17694,8 +20544,8 @@ Date:   Sun Apr 18 10:40:44 2010 -0400
 
     Add Tomeu's prototype script for converting pygtk to pygi
 
- pygi-convert.sh |   71
- +++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ pygi-convert.sh | 71
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 71 insertions(+)
 
 commit a3afdb5fd33de0bf11d63857a245a8f5edec242c
@@ -17704,7 +20554,7 @@ Date:   Sun Apr 18 13:01:58 2010 +0200
 
     Fix doap file
 
- pygi.doap |   4 ++++
+ pygi.doap | 4 ++++
  1 file changed, 4 insertions(+)
 
 commit 0de73d0bba79f92af22f43693f3575c596712416
@@ -17713,7 +20563,7 @@ Date:   Sat Apr 17 16:01:31 2010 -0400
 
     Add Zach Goldberg as a pygi maintainer
 
- pygi.doap |   5 +++++
+ pygi.doap | 5 +++++
  1 file changed, 5 insertions(+)
 
 commit a0e22e36e8cf0c1e0da3c0ec48c821fdb5a07ccd
@@ -17722,7 +20572,7 @@ Date:   Sat Apr 17 11:47:54 2010 -0400
 
     Require PyCairo
 
- configure.ac |    7 +------
+ configure.ac | 7 +------
  1 file changed, 1 insertion(+), 6 deletions(-)
 
 commit 2778f8a1bf6379a46beec6546c8efcb0fec2d7ad
@@ -17731,8 +20581,8 @@ Date:   Sat Apr 17 11:40:14 2010 -0400
 
     Add examples/cairo-demo.py
 
- examples/cairo-demo.py |  121
- ++++++++++++++++++++++++++++++++++++++++++++++++
+ examples/cairo-demo.py | 121
+ +++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 121 insertions(+)
 
 commit 610dd1eec87fab5c8c3badb4d104cba74477c745
@@ -17755,18 +20605,18 @@ Date: Sat Apr 17 09:17:14 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=603095
 
- configure.ac       |    2 +
- gi/Makefile.am      |   4 +
- gi/pygi-argument.c  |  12 ++-
- gi/pygi-callbacks.c | 216
- +++++++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-callbacks.h |  47 +++++++++++
- gi/pygi-closure.c   | 205
- ++++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-closure.h   |  57 ++++++++++++++
- gi/pygi-info.c      |  49 ++++++++++--
- gi/pygi-private.h   |   2 +
- tests/test_gi.py    |  64 ++++++++++++++-
+ configure.ac       |   2 +
+ gi/Makefile.am      |  4 +
+ gi/pygi-argument.c  | 12 ++-
+ gi/pygi-callbacks.c | 216
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-callbacks.h | 47 ++++++++++++
+ gi/pygi-closure.c   | 205
+ +++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-closure.h   | 57 ++++++++++++++
+ gi/pygi-info.c      | 49 ++++++++++--
+ gi/pygi-private.h   |  2 +
+ tests/test_gi.py    | 64 +++++++++++++++-
  10 files changed, 648 insertions(+), 10 deletions(-)
 
 commit a34cb9f0038a6c89e5e6c5f7761d48a5a833044f
@@ -17777,17 +20627,17 @@ Date: Sat Apr 17 10:54:45 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=603712
 
- 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.c       |  123
- ++++++++++++++++++++++++++++++++++++++++++++++
- gi/pygi-foreign.h       |   52 ++++++++++++++++++++
- gi/pygi-private.h       |    1 +
- tests/test_everything.py |   48 ++++++++++++++++++
+ 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.c       | 123
+ +++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-foreign.h       |  52 ++++++++++++++++++++
+ gi/pygi-private.h       |   1 +
+ tests/test_everything.py |  48 ++++++++++++++++++
  10 files changed, 428 insertions(+), 4 deletions(-)
 
 commit e73b6f6fe8b5f23a2a390ae0a6bbced593ded155
@@ -17798,8 +20648,8 @@ Date:   Fri Apr 16 14:35:13 2010 -0400
 
     https://bugzilla.gnome.org/show_bug.cgi?id=603537
 
- gi/pygi-struct.c |    6 ------
- tests/test_gi.py |    3 ++-
+ gi/pygi-struct.c | 6 ------
+ tests/test_gi.py | 3 ++-
  2 files changed, 2 insertions(+), 7 deletions(-)
 
 commit fc9ff02e53aacf9e77625c70985e99813544912a
@@ -17808,9 +20658,9 @@ Date:   Fri Apr 16 10:40:40 2010 -0400
 
     Add gdb and valgrind variants for the tests
 
- HACKING          |   19 +++++++++++++++++++
- Makefile.am      |   12 ++++++++++++
- tests/Makefile.am |   14 +++++++++++++-
+ HACKING          | 19 +++++++++++++++++++
+ Makefile.am      | 12 ++++++++++++
+ tests/Makefile.am | 14 +++++++++++++-
  3 files changed, 44 insertions(+), 1 deletion(-)
 
 commit 695ac7bc5c60371a32538d690c7a15509f3c9637
@@ -17819,8 +20669,8 @@ Date:   Fri Apr 16 14:36:11 2010 +1200
 
     Add build docs for windows
 
- Makefile.am  |    1 +
- README.win32 |   24 ++++++++++++++++++++++++
+ Makefile.am  |  1 +
+ README.win32 | 24 ++++++++++++++++++++++++
  2 files changed, 25 insertions(+)
 
 commit e580da87f0b2fd36cb5d8008fb2fb0c3b01f456a
@@ -17832,9 +20682,8 @@ Date:   Thu Apr 15 13:40:39 2010 +1200
      * Remove local doc install, point to website instead
      * link to versioned docs
 
- pygobject_postinstall.py |   43
- ++++++++++++++++++++++++++-----------------
- setup.py                |   39 ++++++++++++++-------------------------
+ pygobject_postinstall.py | 43 ++++++++++++++++++++++++++-----------------
+ setup.py                | 39 ++++++++++++++-------------------------
  2 files changed, 40 insertions(+), 42 deletions(-)
 
 commit 69ecd506c83ddf180c6cc9a2a8dc753a02543959
@@ -17847,7 +20696,7 @@ Date:   Sat Jul 25 14:12:30 2009 +1200
     no harm on linux as multiple calls to init
     are OK
 
- gio/giomodule.c |    3 +++
+ gio/giomodule.c | 3 +++
  1 file changed, 3 insertions(+)
 
 commit 5d159a13d89587cba189a0ca3203ac003e2f1f2b
@@ -17860,14 +20709,14 @@ 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/constants.py        |   83
- ++++++++++++++++++++++++++++++++++++++++++
- gobject/constants.py.in      |   50 -------------------------
- gobject/generate-constants.c |   44 ----------------------
- gobject/gobjectmodule.c      |   35 ++++++++++++++++++
- setup.py                    |    2 +-
- tests/runtests.py           |    3 +-
+ gobject/Makefile.am         | 16 +--------
+ gobject/constants.py        | 83
+ ++++++++++++++++++++++++++++++++++++++++++++
+ gobject/constants.py.in      | 50 --------------------------
+ gobject/generate-constants.c | 44 -----------------------
+ gobject/gobjectmodule.c      | 35 +++++++++++++++++++
+ setup.py                    |  2 +-
+ tests/runtests.py           |  3 +-
  7 files changed, 121 insertions(+), 112 deletions(-)
 
 commit 6d7a3ab9ce352692d0faccbf106974d264fa953d
@@ -17881,9 +20730,9 @@ Date:   Thu Apr 15 22:49:17 2010 +1200
     * Modernise setup.py and add more util functions
       to dsextras
 
- dsextras.py |  32 ++++++++++++++++---
- setup.py    | 102
- +++++++++++++++++++++++++++++++++++++++++++++++++++--------
+ dsextras.py | 32 ++++++++++++++++---
+ setup.py    | 102
+ +++++++++++++++++++++++++++++++++++++++++++++++++++---------
  2 files changed, 116 insertions(+), 18 deletions(-)
 
 commit d11ef47072acae5801ce25c68d1289e425eb9fc2
@@ -17892,7 +20741,7 @@ Date:   Thu Apr 15 22:48:28 2010 +1200
 
     Include pygsource.h
 
- glib/pygiochannel.c |   1 +
+ glib/pygiochannel.c | 1 +
  1 file changed, 1 insertion(+)
 
 commit c5f6af4844c74354abc508d17969d9d45153acf2
@@ -17901,7 +20750,7 @@ Date:   Thu Apr 15 14:25:59 2010 -0400
 
     Add metadata to the .doap file
 
- pygi.doap |   3 +++
+ pygi.doap | 3 +++
  1 file changed, 3 insertions(+)
 
 commit 81796cb77cbe6b9598a652bd63c047af93e747ee
@@ -17910,8 +20759,8 @@ Date:   Wed Apr 14 12:01:43 2010 -0400
 
     override that wasn't checked in - fixes some test cases
 
- gi/overrides/GIMarshallingTests.py |  69
- ++++++++++++++++++++++++++++++++++++
+ gi/overrides/GIMarshallingTests.py | 69
+ ++++++++++++++++++++++++++++++++++++++
  1 file changed, 69 insertions(+)
 
 commit de5d2ea1584b01af809346316c7fbd4955a9db1d
@@ -17928,7 +20777,7 @@ Date:   Wed Apr 14 10:06:07 2010 -0400
     owned by Automake. Use all-local instead to append things to
     the end of the normal build.
 
- gi/Makefile.am |   15 +++++++++------
+ gi/Makefile.am | 15 +++++++++------
  1 file changed, 9 insertions(+), 6 deletions(-)
 
 commit 5a47e96e3f580c973e6880dafa747f54c144c760
@@ -17954,7 +20803,7 @@ Date:   Tue Apr 13 13:33:12 2010 -0400
        * codegen/docextract_to_xml.py: Replace &nbsp; which also causes
        errors with a regular space.
 
- codegen/docextract_to_xml.py |    1 +
+ codegen/docextract_to_xml.py | 1 +
  1 file changed, 1 insertion(+)
 
 commit bd4e7f2459e34957aaae59b9be807d6dff5ec1eb
@@ -17966,7 +20815,7 @@ Date:   Tue Apr 13 12:28:10 2010 -0400
        * codegen/docextract_to_xml.py (escape_text): Replace some &..;
        expressions that cause errors with more appropriate output.
 
- codegen/docextract_to_xml.py |    4 ++++
+ codegen/docextract_to_xml.py | 4 ++++
  1 file changed, 4 insertions(+)
 
 commit f00b9ce91fc9c3aabd4af4132fc112d9e415e12e
@@ -17982,7 +20831,7 @@ Date:   Sun Apr 11 17:46:40 2010 -0400
        show up when the descriptions that include C++ code with C++
        multi-line comments are used in Doxygen blocks.
 
- codegen/docextract_to_xml.py |    9 +++++++++
+ codegen/docextract_to_xml.py | 9 +++++++++
  1 file changed, 9 insertions(+)
 
 commit a2fcdecbb5e109da5568084d7acb2332af83b6f5
@@ -17999,7 +20848,7 @@ Date:   Sun Apr 11 16:15:01 2010 -0400
        return ('Returns ...') which leads to annotation extraction
        errors.
 
- codegen/docextract.py |    4 ++++
+ codegen/docextract.py | 4 ++++
  1 file changed, 4 insertions(+)
 
 commit 825fd305f03b726665edca34963978ce27448182
@@ -18093,9 +20942,9 @@ Date:   Sun Apr 11 15:45:09 2010 -0400
        annotations but this would only be exhibited if annotation xml is
        requested.
 
- codegen/docextract.py       |  439
- +++++++++++++++++++++++++++++++++---------
- codegen/docextract_to_xml.py |   87 ++++++---
+ codegen/docextract.py       | 439
+ ++++++++++++++++++++++++++++++++++---------
+ codegen/docextract_to_xml.py |  87 ++++++---
  2 files changed, 414 insertions(+), 112 deletions(-)
 
 commit 9fef1acb42cd900d4a814a7378f60bc189121785
@@ -18104,7 +20953,7 @@ Date:   Fri Apr 9 13:47:03 2010 +0200
 
     Always create the .so link
 
- gi/Makefile.am |    2 +-
+ gi/Makefile.am | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit e9f7fd414e94595e40eb1ba0fc471ca69136d82f
@@ -18115,10 +20964,10 @@ Date: Thu Apr 8 11:52:25 2010 +0200
 
     Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
 
- docs/reference/pygio-file.xml       |   58
- +++++++++++++++++-----------------
- docs/reference/pygio-inputstream.xml |   22 ++++++-------
- docs/reference/pygio-mount.xml       |   10 +++---
+ docs/reference/pygio-file.xml       | 58
+ ++++++++++++++++++------------------
+ docs/reference/pygio-inputstream.xml | 22 +++++++-------
+ docs/reference/pygio-mount.xml       | 10 +++----
  3 files changed, 45 insertions(+), 45 deletions(-)
 
 commit 4cbd9941c5705970a9f7a429e236e1203d3155a1
@@ -18130,11 +20979,11 @@ Date: Mon Apr 5 18:10:42 2010 +0200
 
     move tests that require pygtk to pygtk itself
 
- tests/test_conversion.py |   83 -------------
- tests/test_enum.py      |  234 -------------------------------------
- tests/test_gtype.py     |  112 ------------------
- tests/test_subtype.py   |  289
- ----------------------------------------------
+ tests/test_conversion.py |  83 --------------
+ tests/test_enum.py      | 234 --------------------------------------
+ tests/test_gtype.py     | 112 ------------------
+ tests/test_subtype.py   | 289
+ -----------------------------------------------
  4 files changed, 718 deletions(-)
 
 commit ef0ceb266a45715ece58642fb0042e3376416755
@@ -18143,9 +20992,9 @@ Date:   Wed Feb 3 20:33:03 2010 +0100
 
     Add modelines and copyright information to overrides modules
 
- gi/overrides/Gdk.py   |   21 +++++++++++++++++++++
- gi/overrides/Gtk.py   |   21 +++++++++++++++++++++
- gi/overrides/TestGI.py |   20 ++++++++++++++++++++
+ gi/overrides/Gdk.py   | 21 +++++++++++++++++++++
+ gi/overrides/Gtk.py   | 21 +++++++++++++++++++++
+ gi/overrides/TestGI.py | 20 ++++++++++++++++++++
  3 files changed, 62 insertions(+)
 
 commit 5106523a4b8378997a1e6cb0488398aa73e7d9d5
@@ -18158,9 +21007,9 @@ Date:   Wed Feb 3 20:29:55 2010 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=602830
 
- gi/overrides/TestGI.py |   49
- ++++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_gi.py      |    8 +++++++-
+ gi/overrides/TestGI.py | 49
+ +++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_gi.py      |  8 +++++++-
  2 files changed, 56 insertions(+), 1 deletion(-)
 
 commit 23fc0f615d87994acafd9d39e92dd92b587fc2eb
@@ -18171,10 +21020,10 @@ Date: Thu Jan 21 17:30:51 2010 +0100
 
     http://bugzilla.gnome.org/show_bug.cgi?id=607674
 
- gobject/pygboxed.c     |    6 +-----
- gobject/pygi-external.h |    1 -
- gobject/pygobject.c    |    6 +-----
- gobject/pygpointer.c   |    6 +-----
+ gobject/pygboxed.c     | 6 +-----
+ gobject/pygi-external.h | 1 -
+ gobject/pygobject.c    | 6 +-----
+ gobject/pygpointer.c   | 6 +-----
  4 files changed, 3 insertions(+), 16 deletions(-)
 
 commit aefac8c5f64bf059dd6652f8a843d17b34fa0854
@@ -18190,13 +21039,13 @@ Date: Fri Jan 22 22:22:37 2010 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=607759
 
- gi/pygi-argument.c |  586 ++++------------------------------------------
- gi/pygi-argument.h |   1 -
- gi/pygi-info.c     |   8 +-
- tests/libtestgi.c  |  660
- ----------------------------------------------------
- tests/libtestgi.h  |  86 -------
- tests/test_gi.py   |  144 ------------
+ gi/pygi-argument.c | 586 ++++-------------------------------------------
+ gi/pygi-argument.h |  1 -
+ gi/pygi-info.c     |  8 +-
+ tests/libtestgi.c  | 660
+ -----------------------------------------------------
+ tests/libtestgi.h  |  86 -------
+ tests/test_gi.py   | 144 ------------
  6 files changed, 47 insertions(+), 1438 deletions(-)
 
 commit eaf7cb8ebb7e34f9493ac83b2f04af4dcf45f40f
@@ -18219,15 +21068,15 @@ Date: Fri Jan 22 13:41:21 2010 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=602830
 
- gi/importer.py      |  40 +++++++-------------
- gi/module.py       |   43 ++++++++++++++-------
- 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 ++++++++++++++++++
+ gi/importer.py      | 40 +++++++-------------
+ gi/module.py       |  43 ++++++++++++++-------
+ 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 ++++++++++++++++++
  8 files changed, 273 insertions(+), 64 deletions(-)
 
 commit 289d641775d1ea52d2a5379126b70b7fcee46683
@@ -18238,7 +21087,7 @@ Date:   Sun Jan 10 21:01:59 2010 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=606582
 
- gio/gcancellable.override |   1 +
+ gio/gcancellable.override | 1 +
  1 file changed, 1 insertion(+)
 
 commit b11cf2595987c1f0fc4ffd834f07c98b92aa2355
@@ -18247,8 +21096,8 @@ Date:   Fri Jan 8 21:10:28 2010 +0100
 
     Initialize struct fields to 0 when allocating
 
- gi/pygi-struct.c |    2 +-
- tests/test_gi.py |    5 +++++
+ gi/pygi-struct.c | 2 +-
+ tests/test_gi.py | 5 +++++
  2 files changed, 6 insertions(+), 1 deletion(-)
 
 commit b4189be2b2d3c350fdf33e27309bee5a72e4f72a
@@ -18267,10 +21116,10 @@ Date: Fri Jan 8 20:33:44 2010 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=603536
 
- gi/types.py      |   35 +++++++----------------------------
- tests/libtestgi.c |   33 ---------------------------------
- tests/libtestgi.h |   7 -------
- tests/test_gi.py  |   21 ++++++++++-----------
+ gi/types.py      | 35 +++++++----------------------------
+ tests/libtestgi.c | 33 ---------------------------------
+ tests/libtestgi.h |  7 -------
+ tests/test_gi.py  | 21 ++++++++++-----------
  4 files changed, 17 insertions(+), 79 deletions(-)
 
 commit 4db68b958ea11bd2c3a88067cae03fd6bdd1d24b
@@ -18279,9 +21128,9 @@ Date:   Tue Jan 5 13:36:44 2010 +0100
 
     Suppress compilation warnings
 
- gi/pygi-argument.c     |    3 ++-
- gi/pygi-boxed.c        |    2 --
- gi/pygobject-external.h |    2 +-
+ gi/pygi-argument.c     | 3 ++-
+ gi/pygi-boxed.c        | 2 --
+ gi/pygobject-external.h | 2 +-
  3 files changed, 3 insertions(+), 4 deletions(-)
 
 commit 4e2efa91d101bf755739e1cca8eee41eb0ad20fd
@@ -18292,7 +21141,7 @@ Date:   Mon Jan 4 08:35:14 2010 +0100
 
     Committed a patch from Kevin Pyle
 
- Makefile.am |  27 +++++++++++++--------------
+ Makefile.am | 27 +++++++++++++--------------
  1 file changed, 13 insertions(+), 14 deletions(-)
 
 commit 8ddcbca0e98e0b0c082170a2b2b6cfcbd7864b40
@@ -18305,8 +21154,8 @@ Date:   Fri Dec 11 22:24:30 2009 +0100
     loaded from the
     system's default site-package directory.
 
- tests/runtests.py |   1 -
- tests/test_gi.py  |   3 +++
+ tests/runtests.py | 1 -
+ tests/test_gi.py  | 3 +++
  2 files changed, 3 insertions(+), 1 deletion(-)
 
 commit 284a1e1c0143c95d3007cf58e6c248b5d11fb4d1
@@ -18315,10 +21164,10 @@ Date: Sun Jan 3 11:02:57 2010 +0100
 
     Wrap gio.Cancellable.make_pollfd() and add a test
 
- gio/Makefile.am           |    1 +
- gio/gcancellable.override  |  37 +++++++++++++++++++++++++++++++++++++
- gio/gio.override          |    3 +++
- tests/test_gcancellable.py |  15 +++++++++++++++
+ gio/Makefile.am           |  1 +
+ gio/gcancellable.override  | 37 +++++++++++++++++++++++++++++++++++++
+ gio/gio.override          |  3 +++
+ tests/test_gcancellable.py | 15 +++++++++++++++
  4 files changed, 56 insertions(+)
 
 commit 82d7bcbf37200ee2ef5892dd12bebd2f39965c56
@@ -18327,8 +21176,8 @@ Date:   Sat Jan 2 23:15:56 2010 +0100
 
     Make cancellable an optional parameter in many methods
 
- gio/gio.defs |  102
- +++++++++++++++++++++++++++++-----------------------------
+ gio/gio.defs | 102
+ +++++++++++++++++++++++++++++------------------------------
  1 file changed, 51 insertions(+), 51 deletions(-)
 
 commit 49a078cd22d55dc33a03ecfda235d63955edc741
@@ -18337,7 +21186,7 @@ Date:   Sat Jan 2 23:15:21 2010 +0100
 
     Post release version bump to 2.21.2
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 4f9f1f43ab4e2cfb204ffa0e257a34cfd95d84e2
@@ -18346,7 +21195,7 @@ Date:   Sat Jan 2 22:58:36 2010 +0100
 
     Update NEWS and release PyGObject-2.21.1
 
- NEWS |   55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ NEWS | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 55 insertions(+)
 
 commit c1f34be73bd186d7b4682dfef133da2c4229d213
@@ -18355,8 +21204,8 @@ Date:   Fri Jan 1 20:25:35 2010 +0100
 
     Wrap gio.Volume.eject_with_operation()
 
- gio/gvolume.override |   54
- ++++++++++++++++++++++++++++++++++++++++++++++++++
+ gio/gvolume.override | 54
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 54 insertions(+)
 
 commit 9b76fbff6f6897aaf26ed4644c1f19efc2826917
@@ -18365,7 +21214,7 @@ Date:   Fri Jan 1 20:22:21 2010 +0100
 
     gio.Mount.unmount_with_operation() fix a copy/paste leftover
 
- gio/gmount.override |   4 ++--
+ gio/gmount.override | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 6f459786dd641cd49d81eba403d940620f961cab
@@ -18374,8 +21223,8 @@ Date:   Fri Jan 1 20:21:05 2010 +0100
 
     Wrap gio.Mount.eject_with_operation()
 
- gio/gmount.override |  54
- +++++++++++++++++++++++++++++++++++++++++++++++++++
+ gio/gmount.override | 54
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 54 insertions(+)
 
 commit d4b5d1b4839364e5676eb2da28f1d21db7e2552d
@@ -18384,8 +21233,8 @@ Date:   Fri Jan 1 20:15:38 2010 +0100
 
     Wrap gio.Mount.unmount_mountable_with_operation()
 
- gio/gmount.override |  54
- +++++++++++++++++++++++++++++++++++++++++++++++++++
+ gio/gmount.override | 54
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 54 insertions(+)
 
 commit e919d47c2430451b436cec955e9b99237f97028c
@@ -18394,8 +21243,8 @@ Date:   Fri Jan 1 18:22:46 2010 +0100
 
     Wrap File.unmount_mountable_with_operation()
 
- gio/gfile.override |  54
- ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gio/gfile.override | 54
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 54 insertions(+)
 
 commit 5a614df9c5507d67f240462f7bf71b4cd411addf
@@ -18404,7 +21253,7 @@ Date:   Fri Jan 1 18:14:11 2010 +0100
 
     Wrap gio.File.stop_mountable()
 
- gio/gfile.override |  52
+ gio/gfile.override | 52
  ++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 52 insertions(+)
 
@@ -18414,7 +21263,7 @@ Date:   Fri Jan 1 18:10:49 2010 +0100
 
     Wrap gio.File.start_mountable()
 
- gio/gfile.override |  52
+ gio/gfile.override | 52
  ++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 52 insertions(+)
 
@@ -18424,8 +21273,8 @@ Date:   Fri Jan 1 18:02:46 2010 +0100
 
     Wrap gio.File.replace_readwrite_async()
 
- gio/gfile.override |  55
- ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gio/gfile.override | 55
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 55 insertions(+)
 
 commit 92662f129fc728258fd5e34f53dcb081e3715017
@@ -18434,7 +21283,7 @@ Date:   Fri Jan 1 17:00:26 2010 +0100
 
     Wrap gio.File.poll_mountable()
 
- gio/gfile.override |  41 +++++++++++++++++++++++++++++++++++++++++
+ gio/gfile.override | 41 +++++++++++++++++++++++++++++++++++++++++
  1 file changed, 41 insertions(+)
 
 commit 99902b786500948c3278779841e4db54223b9256
@@ -18443,7 +21292,7 @@ Date:   Fri Jan 1 16:56:26 2010 +0100
 
     Wrap gio.File.open_readwrite_async()
 
- gio/gfile.override |  44 ++++++++++++++++++++++++++++++++++++++++++++
+ gio/gfile.override | 44 ++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 44 insertions(+)
 
 commit 8cff5d53183ae81364ac74a34a1d52e55e082eb4
@@ -18452,8 +21301,8 @@ Date:   Fri Jan 1 16:50:15 2010 +0100
 
     Wrap gio.File.eject_mountable_with_operation()
 
- gio/gfile.override |  54
- ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gio/gfile.override | 54
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 54 insertions(+)
 
 commit ca436fe7785fd24b0f0e65f2f8c9fa6478277682
@@ -18462,9 +21311,9 @@ Date:   Fri Jan 1 13:30:24 2010 +0100
 
     Wrap gio.File.create_readwrite_async() and add a test
 
- gio/gfile.override |  51
+ gio/gfile.override | 51
  +++++++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_gio.py  |  24 ++++++++++++++++++++++++
+ tests/test_gio.py  | 24 ++++++++++++++++++++++++
  2 files changed, 75 insertions(+)
 
 commit f72c5e451dfaeb01b3c3d9243fed2732d3620462
@@ -18473,8 +21322,8 @@ Date:   Fri Jan 1 13:20:11 2010 +0100
 
     Wrap gio.Drive.stop()
 
- gio/gdrive.override |  52
- +++++++++++++++++++++++++++++++++++++++++++++++++++
+ gio/gdrive.override | 52
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 52 insertions(+)
 
 commit 29043bade408338cefa13fb4b0c875aabd3ef05e
@@ -18483,8 +21332,8 @@ Date:   Fri Jan 1 13:00:42 2010 +0100
 
     Wrap gio.Drive.start()
 
- gio/gdrive.override |  52
- +++++++++++++++++++++++++++++++++++++++++++++++++++
+ gio/gdrive.override | 52
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 52 insertions(+)
 
 commit dff374287bbecc8af782bbc726fad86c6c867754
@@ -18493,7 +21342,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 +++
+ gio/gsocket.override | 3 +++
  1 file changed, 3 insertions(+)
 
 commit b8c7e996498bd72df551011af85ff05ef7335b4f
@@ -18502,9 +21351,9 @@ 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 ++++++++++++++
+ gio/gsocket.override  | 86
+ +++++++++++++++++++++++++++++++++++++++++++++++++--
+ tests/test_gsocket.py | 24 ++++++++++++++
  2 files changed, 108 insertions(+), 2 deletions(-)
 
 commit a5ae2d5ba3db34967fe07a3cc97b75df2793988c
@@ -18513,8 +21362,8 @@ Date:   Fri Jan 1 12:28:53 2010 +0100
 
     Wrap gio.SocketListener.accept_finish() and add a test
 
- gio/gsocket.override  |   44 ++++++++++++++++++++++++++++++++++++++++++--
- tests/test_gsocket.py |   24 ++++++++++++++++++++++++
+ gio/gsocket.override  | 44 ++++++++++++++++++++++++++++++++++++++++++--
+ tests/test_gsocket.py | 24 ++++++++++++++++++++++++
  2 files changed, 66 insertions(+), 2 deletions(-)
 
 commit a5ab26cc1bb3e9dd57e2fdb26ef5c02e8066d097
@@ -18523,7 +21372,7 @@ Date:   Fri Jan 1 11:19:34 2010 +0100
 
     Wrap gio.SocketListener.accept_async()
 
- gio/gsocket.override |   42 ++++++++++++++++++++++++++++++++++++++++++
+ gio/gsocket.override | 42 ++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 42 insertions(+)
 
 commit c9496b29ef9ef232020a4044577d2947353953a5
@@ -18532,9 +21381,9 @@ Date:   Fri Jan 1 11:14:35 2010 +0100
 
     Wrap gio.SocketListener.accept_socket() and add a test
 
- gio/gsocket.override  |   48
+ gio/gsocket.override  | 48
  +++++++++++++++++++++++++++++++++++++++++++++++-
- tests/test_gsocket.py |   13 +++++++++++++
+ tests/test_gsocket.py | 13 +++++++++++++
  2 files changed, 60 insertions(+), 1 deletion(-)
 
 commit 1aa5e301c49f11e1c5ef58de44b4b03f714d1a70
@@ -18543,9 +21392,8 @@ Date:   Thu Dec 31 16:35:18 2009 +0100
 
     Wrap gio.SocketListener.accept() and add a test
 
- gio/gsocket.override  |   46
- +++++++++++++++++++++++++++++++++++++++++++++-
- tests/test_gsocket.py |   13 +++++++++++++
+ gio/gsocket.override  | 46 +++++++++++++++++++++++++++++++++++++++++++++-
+ tests/test_gsocket.py | 13 +++++++++++++
  2 files changed, 58 insertions(+), 1 deletion(-)
 
 commit aaedcf166c78baf5449ef59d0ade4a29077fedc7
@@ -18554,7 +21402,7 @@ Date:   Thu Dec 31 16:25:33 2009 +0100
 
     Make cancellable optional in gio.SocketClient.connect_to_host()
 
- gio/gio.defs |    2 +-
+ gio/gio.defs | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 3829d7667b19126fb74562b28d271e616b154c99
@@ -18563,9 +21411,9 @@ Date:   Thu Dec 31 15:25:10 2009 +0100
 
     Wrap gio.SocketListener.add_address() and add a test
 
- gio/gsocket.override  |   57
- ++++++++++++++++++++++++++++++++++++++++++++++++-
- tests/test_gsocket.py |    9 ++++++++
+ gio/gsocket.override  | 57
+ ++++++++++++++++++++++++++++++++++++++++++++++++++-
+ tests/test_gsocket.py |  9 ++++++++
  2 files changed, 65 insertions(+), 1 deletion(-)
 
 commit 5bec72f34ea75bc56158cae5c39d61a2a4e7e601
@@ -18574,7 +21422,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 ++++++++
+ gio/gsocket.override | 8 ++++++++
  1 file changed, 8 insertions(+)
 
 commit b08b20f2b1a57bcbf400d6fe8e87cf052bdb719d
@@ -18583,8 +21431,7 @@ Date:   Thu Dec 31 10:16:18 2009 +0100
 
     Wrap gio.SocketClient.connect_to_service_async()
 
- gio/gsocket.override |   47
- +++++++++++++++++++++++++++++++++++++++++++++++
+ gio/gsocket.override | 47 +++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 47 insertions(+)
 
 commit 116ea1bfe32946e67aa54eb8dc7b977e57f254c2
@@ -18593,7 +21440,7 @@ Date:   Thu Dec 31 10:10:43 2009 +0100
 
     Wrap gio.SocketClient.connect_to_host_async()
 
- gio/gsocket.override |   48
+ gio/gsocket.override | 48
  ++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 48 insertions(+)
 
@@ -18603,7 +21450,7 @@ Date:   Thu Dec 31 09:59:46 2009 +0100
 
     Wrap gio.SocketClient.connect_async()
 
- gio/gsocket.override |   45 +++++++++++++++++++++++++++++++++++++++++++++
+ gio/gsocket.override | 45 +++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 45 insertions(+)
 
 commit dff024256295c15e49888ad9d5fef74a7746edd7
@@ -18612,8 +21459,8 @@ Date:   Wed Dec 30 23:44:25 2009 +0100
 
     Wrap gio.SocketAddressEnumerator.next_async() and add a test
 
- gio/gsocket.override  |   42 ++++++++++++++++++++++++++++++++++++++++++
- tests/test_gsocket.py |   16 ++++++++++++++++
+ gio/gsocket.override  | 42 ++++++++++++++++++++++++++++++++++++++++++
+ tests/test_gsocket.py | 16 ++++++++++++++++
  2 files changed, 58 insertions(+)
 
 commit e2330bd0d6cbc49b0ecb27b30e3b0593935ce229
@@ -18622,8 +21469,8 @@ Date:   Wed Dec 30 23:43:14 2009 +0100
 
     Add a missing object gio.InetSocketAddress new in GIO 2.22
 
- gio/gio-types.defs |   7 +++++++
- gio/gio.defs      |   31 +++++++++++++++++++++++++++++++
+ gio/gio-types.defs |  7 +++++++
+ gio/gio.defs      | 31 +++++++++++++++++++++++++++++++
  2 files changed, 38 insertions(+)
 
 commit 6040b33467ea381c6cb02f6a5efc0745fa8fa47b
@@ -18632,7 +21479,7 @@ Date:   Wed Dec 30 22:54:47 2009 +0100
 
     Make cancellable optional for gio.SocketAddressEnumerator.next()
 
- gio/gio.defs |    2 +-
+ gio/gio.defs | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit b19f59790b9de943d69b6c5e483928e0443c3d20
@@ -18641,7 +21488,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 +++++
+ gio/gsocket.override | 5 +++++
  1 file changed, 5 insertions(+)
 
 commit 771a7c3fdef7b2e98e509293a8376a81c1282286
@@ -18650,8 +21497,8 @@ Date:   Wed Dec 30 17:20:35 2009 +0100
 
     Wrap gio.Socket.condition_wait() and add a test
 
- gio/gsocket.override  |   27 +++++++++++++++++++++++++++
- tests/test_gsocket.py |    6 +++++-
+ gio/gsocket.override  | 27 +++++++++++++++++++++++++++
+ tests/test_gsocket.py |  6 +++++-
  2 files changed, 32 insertions(+), 1 deletion(-)
 
 commit 50960656815b0897a5ebe5f011537b8dcbdc857e
@@ -18660,10 +21507,10 @@ Date: Wed Dec 30 16:21:49 2009 +0100
 
     Wrap gio.Socket.condition_check() and add a test
 
- gio/Makefile.am       |    1 +
- gio/gio.override      |    1 +
- gio/gsocket.override  |   41 +++++++++++++++++++++++++++++++++++++++++
- tests/test_gsocket.py |   21 +++++++++++++++++++++
+ gio/Makefile.am       |  1 +
+ gio/gio.override      |  1 +
+ gio/gsocket.override  | 41 +++++++++++++++++++++++++++++++++++++++++
+ tests/test_gsocket.py | 21 +++++++++++++++++++++
  4 files changed, 64 insertions(+)
 
 commit de7a359e81792ae8573ac944455ea289985449ed
@@ -18672,8 +21519,8 @@ Date:   Wed Dec 30 14:07:52 2009 +0100
 
     Wrap gio.Resolver.lookup_service_finish() and add a test
 
- gio/gresolver.override  |   37 +++++++++++++++++++++++++++++++++++++
- tests/test_gresolver.py |   13 +++++++++++++
+ gio/gresolver.override  | 37 +++++++++++++++++++++++++++++++++++++
+ tests/test_gresolver.py | 13 +++++++++++++
  2 files changed, 50 insertions(+)
 
 commit 308421789ce849040d645077c41c80b6e2e65e83
@@ -18682,7 +21529,7 @@ Date:   Wed Dec 30 14:00:22 2009 +0100
 
     Wrap gio.Resolver.lookup_service_async()
 
- gio/gresolver.override |   48
+ gio/gresolver.override | 48
  ++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 48 insertions(+)
 
@@ -18692,8 +21539,8 @@ Date:   Wed Dec 30 11:11:32 2009 +0100
 
     Wrap gio.Resolver.lookup_service() and add a test
 
- gio/gresolver.override  |   42 ++++++++++++++++++++++++++++++++++++++++++
- tests/test_gresolver.py |    5 +++++
+ gio/gresolver.override  | 42 ++++++++++++++++++++++++++++++++++++++++++
+ tests/test_gresolver.py |  5 +++++
  2 files changed, 47 insertions(+)
 
 commit 7fc71f490494dae73a5264869a97a9d30814930e
@@ -18702,9 +21549,9 @@ Date:   Tue Dec 29 22:12:50 2009 +0100
 
     Wrap gio.Resolver.lookup_by_address_async() and add a test
 
- gio/gresolver.override  |   46
+ gio/gresolver.override  | 46
  ++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_gresolver.py |   14 ++++++++++++++
+ tests/test_gresolver.py | 14 ++++++++++++++
  2 files changed, 60 insertions(+)
 
 commit c91656dbe56f07d3ebbad5113467c22427cf212a
@@ -18713,9 +21560,9 @@ Date:   Tue Dec 29 21:41:30 2009 +0100
 
     Wrap gio.Resolver.lookup_by_name_finish() and add a test
 
- gio/gresolver.override  |   82
- +++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_gresolver.py |   16 +++++++--
+ gio/gresolver.override  | 82
+ +++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_gresolver.py | 16 ++++++++--
  2 files changed, 96 insertions(+), 2 deletions(-)
 
 commit 45b477342fa1c2435917c6d97745ad57665c4734
@@ -18724,8 +21571,8 @@ Date:   Tue Dec 29 17:15:44 2009 +0100
 
     Wrap gio.Drive.eject_with_data()
 
- gio/gdrive.override |  54
- +++++++++++++++++++++++++++++++++++++++++++++++++++
+ gio/gdrive.override | 54
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 54 insertions(+)
 
 commit 635227480f9659a1f91ab1ec12536d3ed012a976
@@ -18734,8 +21581,8 @@ Date:   Tue Dec 29 17:06:52 2009 +0100
 
     Deprecate old gio.Drive methods
 
- gio/gdrive.override |   7 ++++++-
- gio/gio.defs       |    1 +
+ gio/gdrive.override | 7 ++++++-
+ gio/gio.defs       | 1 +
  2 files changed, 7 insertions(+), 1 deletion(-)
 
 commit 3c0cbc95af29b1e192ed4b5963e96e39c70b349c
@@ -18744,7 +21591,7 @@ Date:   Tue Dec 29 13:51:54 2009 +0100
 
     Small fix in the header
 
- gio/gdrive.override |   2 +-
+ gio/gdrive.override | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 7589128515b79d836365247dc876538c6352da23
@@ -18753,11 +21600,11 @@ Date: Tue Dec 29 12:40:50 2009 +0100
 
     Wrap gio.Resolver.lookup_by_name() and add a couple of tests
 
- gio/Makefile.am        |    1 +
- gio/gio.override       |    1 +
- gio/gresolver.override  |   57
- +++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_gresolver.py |   21 +++++++++++++++++
+ gio/Makefile.am        |  1 +
+ gio/gio.override       |  1 +
+ gio/gresolver.override  | 57
+ +++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_gresolver.py | 21 ++++++++++++++++++
  4 files changed, 80 insertions(+)
 
 commit 604d2bf220b1fefa415baaedbdb2882dbaf9e07e
@@ -18767,7 +21614,7 @@ Date:   Tue Dec 29 12:39:13 2009 +0100
     Make cancellable an optional parameter in
     gio.Resolver.lookup_by_address()
 
- gio/gio.defs |    2 +-
+ gio/gio.defs | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 00029145f4cd10759b37b38fb9f72435bf26b28b
@@ -18776,8 +21623,8 @@ Date:   Tue Dec 29 10:15:14 2009 +0100
 
     Strip g_ prefix for many other functions
 
- gio/gio.defs |   94
- +++++++++++++++++++++++++++++-----------------------------
+ gio/gio.defs | 94
+ ++++++++++++++++++++++++++++++------------------------------
  1 file changed, 47 insertions(+), 47 deletions(-)
 
 commit 56d5dfc4fd862e32c19f944a0feb7a00a9154f06
@@ -18786,7 +21633,7 @@ Date:   Tue Dec 29 10:12:53 2009 +0100
 
     Strip g_prefix from InetAddress functions
 
- gio/gio.defs |    8 ++++----
+ gio/gio.defs | 8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit 1d360301d51a587a36a59f5d62e354484bbd2b31
@@ -18797,7 +21644,7 @@ Date:   Tue Dec 29 10:03:59 2009 +0100
 
     Strip the g_ prefix from function name
 
- gio/gio.defs |    2 +-
+ gio/gio.defs | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 0fe00109c4f6fc27cbaae9b0a24ecfac71355d2f
@@ -18806,11 +21653,11 @@ Date: Tue Dec 29 09:54:05 2009 +0100
 
     Wrap gio.FileIOStream.query_info_async() and add a test
 
- gio/Makefile.am           |    1 +
- gio/gfileiostream.override |  68
- ++++++++++++++++++++++++++++++++++++++++++++
- gio/gio.override          |    1 +
- tests/test_gio.py         |   18 ++++++++++++
+ gio/Makefile.am           |  1 +
+ gio/gfileiostream.override | 68
+ ++++++++++++++++++++++++++++++++++++++++++++++
+ gio/gio.override          |  1 +
+ tests/test_gio.py         | 18 ++++++++++++
  4 files changed, 88 insertions(+)
 
 commit 86783c695f3641b9491962e8f95a4dcb91f4017c
@@ -18821,8 +21668,8 @@ Date:   Tue Dec 29 13:08:29 2009 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=603534
 
- gobject/pygenum.c  |  20 ++++++++++++++------
- gobject/pygflags.c |  19 +++++++++++++------
+ gobject/pygenum.c  | 20 ++++++++++++++------
+ gobject/pygflags.c | 19 +++++++++++++------
  2 files changed, 27 insertions(+), 12 deletions(-)
 
 commit b90c01cff5ff5cb2796182f2ffd7b5248eaeed6a
@@ -18831,11 +21678,11 @@ Date: Mon Dec 28 22:41:54 2009 +0100
 
     Wrap GIOStream.close_async() and add a test
 
- gio/Makefile.am       |    1 +
- gio/gio.override      |    1 +
- gio/giostream.override |   68
- ++++++++++++++++++++++++++++++++++++++++++++++++
- tests/test_gio.py     |   21 +++++++++++++++
+ gio/Makefile.am       |  1 +
+ gio/gio.override      |  1 +
+ gio/giostream.override | 68
+ ++++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_gio.py     | 21 ++++++++++++++++
  4 files changed, 91 insertions(+)
 
 commit 0bff01bcee73a0e0d18342331136119c4e8bf151
@@ -18844,7 +21691,7 @@ Date:   Mon Dec 28 22:39:09 2009 +0100
 
     Make cancellable an optional parameter in GFile.create_readwrite()
 
- gio/gio.defs |    2 +-
+ gio/gio.defs | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 1cabd733cde269ce3164834933f4a226673ecb0b
@@ -18853,7 +21700,7 @@ Date:   Mon Dec 28 21:39:50 2009 +0100
 
     Remove a duplicate entry in gio.defs
 
- gio/gio.defs |    9 ---------
+ gio/gio.defs | 9 ---------
  1 file changed, 9 deletions(-)
 
 commit 9ac372ad0bcfdec4bb1c96bc152246542a59a9b1
@@ -18862,8 +21709,8 @@ Date:   Mon Dec 28 21:37:49 2009 +0100
 
     Wrap gio.FileInfo.set_modification_time and add a test
 
- gio/gfileinfo.override |   33 ++++++++++++++++++++++++++++++++-
- tests/test_gio.py     |    7 ++++++-
+ gio/gfileinfo.override | 33 ++++++++++++++++++++++++++++++++-
+ tests/test_gio.py     |  7 ++++++-
  2 files changed, 38 insertions(+), 2 deletions(-)
 
 commit 7bc2673f92138b1804d8eba091942d14d8884f90
@@ -18872,8 +21719,8 @@ Date:   Mon Dec 28 18:28:03 2009 +0100
 
     Wrap gio.EmblemedIcon.get_emblems() and add a test
 
- gio/gicon.override  |  14 ++++++++++++++
- tests/test_gicon.py |   7 +++++++
+ gio/gicon.override  | 14 ++++++++++++++
+ tests/test_gicon.py | 7 +++++++
  2 files changed, 21 insertions(+)
 
 commit 3d5056ad766d6856d8d6459fe9b377de2f0fd172
@@ -18882,8 +21729,8 @@ Date:   Sat Dec 26 22:27:48 2009 +0100
 
     Update Enums and Flags with new API
 
- gio/gio-types.defs |  153
- ++++++++++++++++++++++++++++++++++++++++++++++++++--
+ gio/gio-types.defs | 153
+ +++++++++++++++++++++++++++++++++++++++++++++++++++--
  1 file changed, 149 insertions(+), 4 deletions(-)
 
 commit 62a9d660a4a2d5fab1d57c6c96c984ff02d25ccd
@@ -18892,7 +21739,7 @@ Date:   Fri Dec 25 18:06:39 2009 +0100
 
     Post release version bump to 2.21.1
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 2bd92cba5b028f0f78c35ecb34e648e95248f9d3
@@ -18904,7 +21751,7 @@ Date:   Fri Aug 14 15:10:26 2009 +0200
     Set the value by g_value_set_uchar and allow to use integer types
     from python.
 
- gobject/pygtype.c |   15 +++++++++++----
+ gobject/pygtype.c | 15 +++++++++++----
  1 file changed, 11 insertions(+), 4 deletions(-)
 
 commit 828d0f042b59ea0319f33a23803c179af34ef2f1
@@ -18928,13 +21775,13 @@ 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 ++++++++++--
- tests/libtestgi.c  |  60
- ++++++++++++++++++++++++++++++++++++++++++++++++++++
- tests/libtestgi.h  |   4 ++++
- tests/test_gi.py   |  15 +++++++++++++
+ gi/pygi-argument.c | 11 +++++++++-
+ gi/pygi-argument.h |  3 ++-
+ gi/pygi-info.c     | 14 +++++++++++--
+ tests/libtestgi.c  | 60
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/libtestgi.h  |  4 ++++
+ tests/test_gi.py   | 15 ++++++++++++++
  6 files changed, 103 insertions(+), 4 deletions(-)
 
 commit 867536c6734e606d045760837ed22583da06566e
@@ -18943,8 +21790,8 @@ Date:   Fri Dec 18 10:50:09 2009 +0100
 
     Update NEWS and README, release pygobject 2.21.0
 
- NEWS  |   18 ++++++++++++++++++
- README |    6 +++---
+ NEWS  | 18 ++++++++++++++++++
+ README |  6 +++---
  2 files changed, 21 insertions(+), 3 deletions(-)
 
 commit f50fbd24fa61863aaefa4ae1e12e0b314ecd43ae
@@ -18953,7 +21800,7 @@ Date:   Fri Dec 18 10:31:48 2009 +0100
 
     Add pygi-external.h into Makefile SOURCES
 
- gobject/Makefile.am |   3 ++-
+ gobject/Makefile.am | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit 108c03b78f04b4bcfe066a6cb4d941e172bd32fe
@@ -18962,7 +21809,7 @@ Date:   Fri Dec 18 01:20:34 2009 +0100
 
     Bug 598435 - No wrapping for g_find_program_in_path ()
 
- glib/glibmodule.c |   20 ++++++++++++++++++++
+ glib/glibmodule.c | 20 ++++++++++++++++++++
  1 file changed, 20 insertions(+)
 
 commit d3d5cb3a4a2c2cb2bd0c2571304d59e19bc08452
@@ -18971,10 +21818,10 @@ Date: Thu Dec 17 21:54:36 2009 +0100
 
     Wrap new API added in GIO-UNIX 2.22
 
- gio/unix-types.defs |  22 ++++++++++
- gio/unix.defs      |  115
- ++++++++++++++++++++++++++++++++++++++++++++++++++-
- gio/unix.override   |   8 ++++
+ gio/unix-types.defs | 22 ++++++++++
+ gio/unix.defs      | 115
+ +++++++++++++++++++++++++++++++++++++++++++++++++++-
+ gio/unix.override   |  8 ++++
  3 files changed, 144 insertions(+), 1 deletion(-)
 
 commit c87c8a81947a68507e8f3bcaf8e0e969b3e5331b
@@ -18987,7 +21834,7 @@ Date:   Thu Dec 17 21:52:11 2009 +0100
     branch.
     Without the patch the unix module will fail, so I'm forced to bump.
 
- configure.ac |    6 +++---
+ configure.ac | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit b630c8d4b1e55938dac89729768c4a877b305215
@@ -18996,7 +21843,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 ++++++------
+ gio/gio-types.defs | 12 ++++++------
  1 file changed, 6 insertions(+), 6 deletions(-)
 
 commit e955b931b07113c7432f7a85f882f69f12d263ad
@@ -19009,8 +21856,8 @@ Date:   Mon Nov 30 22:01:25 2009 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=603411
 
- configure.ac     |    2 +-
- gi/pygi-private.h |   19 +++++++++++++++++++
+ configure.ac     |  2 +-
+ gi/pygi-private.h | 19 +++++++++++++++++++
  2 files changed, 20 insertions(+), 1 deletion(-)
 
 commit 542fdf6da4ad8f2d28d0d50152bd93cb4d8ee39a
@@ -19022,8 +21869,8 @@ Date:   Sat Nov 28 18:48:19 2009 +0000
 
     https://bugzilla.gnome.org/show_bug.cgi?id=602384
 
- gi/pygi-argument.c |  14 +++++++-------
- tests/test_gi.py   |  18 +++++++++---------
+ gi/pygi-argument.c | 14 +++++++-------
+ tests/test_gi.py   | 18 +++++++++---------
  2 files changed, 16 insertions(+), 16 deletions(-)
 
 commit 38e89942d29f2a1dba47ab4a8d5edc84322707cd
@@ -19034,7 +21881,7 @@ Date:   Mon Nov 30 00:10:56 2009 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=603355
 
- gobject/generate-constants.c |   32 ++++++++++++++++----------------
+ gobject/generate-constants.c | 32 ++++++++++++++++----------------
  1 file changed, 16 insertions(+), 16 deletions(-)
 
 commit cfa7d005487e17e8f7c1ceb14282d3a5baadb736
@@ -19044,9 +21891,9 @@ Date:   Sat Nov 28 00:22:21 2009 +0100
     Remove global checks for pointers and move them in type cases that
     need them
 
- gi/pygi-argument.c |  516
- ++++++++++++++++++++++++++++++++++++++++++----------
- gi/pygi-info.c     |  333 +++++++++++++++++----------------
+ gi/pygi-argument.c | 516
+ +++++++++++++++++++++++++++++++++++++++++++----------
+ gi/pygi-info.c     | 333 +++++++++++++++++-----------------
  2 files changed, 596 insertions(+), 253 deletions(-)
 
 commit d1ae73f3cf7cebdb74c9ec56b08928a2a53b9de6
@@ -19057,7 +21904,7 @@ Date:   Mon Nov 23 15:58:17 2009 -0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=602830
 
- gi/types.py |   8 ++++----
+ gi/types.py | 8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit a8660621679c629fc81320a8ddf5bf2c7ee1f177
@@ -19068,7 +21915,7 @@ Date:   Tue Nov 24 10:36:18 2009 -0200
 
     https://bugzilla.gnome.org/show_bug.cgi?id=602830
 
- gi/module.py |    4 ++--
+ gi/module.py | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit 66c34805223af9e63c7d61f21a3dbd7505a8f256
@@ -19079,20 +21926,20 @@ Date: Mon Nov 30 10:03:34 2009 +0000
 
     https://bugzilla.gnome.org/show_bug.cgi?id=602735
 
- gi/Makefile.am     |   2 +
- gi/gimodule.c     |    1 +
- gi/module.py      |    2 +-
- gi/pygi-argument.c |  14 +++-
- gi/pygi-boxed.c    |  184
- ++++++++++++++++++++++++++++++++++++++++++++++++++++
- 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/test_gi.py   |  47 ++++++++------
+ gi/Makefile.am     |  2 +
+ gi/gimodule.c     |   1 +
+ gi/module.py      |   2 +-
+ gi/pygi-argument.c |  14 +++-
+ gi/pygi-boxed.c    | 184
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 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/test_gi.py   |  47 ++++++++------
  13 files changed, 321 insertions(+), 86 deletions(-)
 
 commit e7e2fccae36c28c7e9f288fcd4c90a001140e307
@@ -19104,8 +21951,8 @@ Date:   Mon Nov 30 10:53:57 2009 +0000
 
     This reverts commit 05a2ed55f3e5d2620de8b3b6b0d99e928ef3b041.
 
- gi/pygi-argument.c |  14 +++++++-------
- tests/test_gi.py   |  18 +++++++++---------
+ gi/pygi-argument.c | 14 +++++++-------
+ tests/test_gi.py   | 18 +++++++++---------
  2 files changed, 16 insertions(+), 16 deletions(-)
 
 commit 05a2ed55f3e5d2620de8b3b6b0d99e928ef3b041
@@ -19117,8 +21964,8 @@ Date:   Sat Nov 28 18:48:19 2009 +0000
 
     https://bugzilla.gnome.org/show_bug.cgi?id=602384
 
- gi/pygi-argument.c |  14 +++++++-------
- tests/test_gi.py   |  18 +++++++++---------
+ gi/pygi-argument.c | 14 +++++++-------
+ tests/test_gi.py   | 18 +++++++++---------
  2 files changed, 16 insertions(+), 16 deletions(-)
 
 commit e24d155dd7b4a5b9c25c054137d1370c369d3192
@@ -19129,7 +21976,7 @@ Date:   Sat Nov 28 18:45:54 2009 +0000
 
     https://bugzilla.gnome.org/show_bug.cgi?id=603244
 
- gobject/generate-constants.c |   17 ++++++++++++++++-
+ gobject/generate-constants.c | 17 ++++++++++++++++-
  1 file changed, 16 insertions(+), 1 deletion(-)
 
 commit 3a295cb7ffaaaf29c71b8833cf0ee5ec7ceaa909
@@ -19138,7 +21985,7 @@ Date:   Sat Nov 28 18:48:49 2009 +0100
 
     Fix bad name when rebuilding the unix source module
 
- gio/Makefile.am |    2 +-
+ gio/Makefile.am | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit a8cbb6fb72dbe6630d1265b18095c9a96f496b86
@@ -19160,9 +22007,9 @@ Date:   Sat Nov 28 11:03:51 2009 +0000
 
     https://bugzilla.gnome.org/show_bug.cgi?id=601181
 
- tests/libtestgi.c |   23 +++++++++++++++++++++++
- tests/libtestgi.h |   16 ++++++++++++++++
- tests/test_gi.py  |   21 +++++++++++++++++++++
+ tests/libtestgi.c | 23 +++++++++++++++++++++++
+ tests/libtestgi.h | 16 ++++++++++++++++
+ tests/test_gi.py  | 21 +++++++++++++++++++++
  3 files changed, 60 insertions(+)
 
 commit 076ba3156c13375a75983cef7a409c8c8afea119
@@ -19186,8 +22033,8 @@ Date:   Thu Nov 26 23:50:54 2009 +0100
     notably tests
     that methods don't get overridden by the metaclass.
 
- gi/types.py     |    5 +++--
- tests/test_gi.py |   19 +++++++++++++++++++
+ gi/types.py     |  5 +++--
+ tests/test_gi.py | 19 +++++++++++++++++++
  2 files changed, 22 insertions(+), 2 deletions(-)
 
 commit ac80e64c9f7d257865aa820753e52d56cf2871c8
@@ -19198,10 +22045,10 @@ Date: Fri Nov 27 12:06:59 2009 +0000
 
     https://bugzilla.gnome.org/show_bug.cgi?id=602709
 
- gi/pygi-argument.c |  29 ++++++++++++++++++++++++-----
- tests/libtestgi.c  |  23 ++++++++++++++++++++++-
- tests/libtestgi.h  |   7 +++++--
- tests/test_gi.py   |   8 ++++++++
+ gi/pygi-argument.c | 29 ++++++++++++++++++++++++-----
+ tests/libtestgi.c  | 23 ++++++++++++++++++++++-
+ tests/libtestgi.h  |  7 +++++--
+ tests/test_gi.py   |  8 ++++++++
  4 files changed, 59 insertions(+), 8 deletions(-)
 
 commit 4a373b8ad6ec137e911b92a3e745e0fd76541292
@@ -19210,7 +22057,7 @@ Date:   Wed Nov 25 16:53:55 2009 +0100
 
     Use the right variable when looking up in sys.modules
 
- gi/importer.py |    2 +-
+ gi/importer.py | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit fc3dca018e85aee34ade79d104ebd8cdd1dd5968
@@ -19221,10 +22068,10 @@ Date: Tue Nov 24 15:52:47 2009 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=602638
 
- gi/pygi-argument.c |  19 ++++++++++++++++++-
- tests/libtestgi.c  |   6 ++++++
- tests/libtestgi.h  |   1 +
- tests/test_gi.py   |   1 +
+ gi/pygi-argument.c | 19 ++++++++++++++++++-
+ tests/libtestgi.c  |  6 ++++++
+ tests/libtestgi.h  |  1 +
+ tests/test_gi.py   |  1 +
  4 files changed, 26 insertions(+), 1 deletion(-)
 
 commit 33081c29a1c2fdec2b8bfe17ae0a72b8db7a8d84
@@ -19233,7 +22080,7 @@ Date:   Tue Nov 24 13:10:11 2009 +0100
 
     Add stuff to .gitignore
 
- .gitignore |   7 +++++++
+ .gitignore | 7 +++++++
  1 file changed, 7 insertions(+)
 
 commit 5c010fe673d9bd01c27c8d7d312064665275888c
@@ -19278,7 +22125,7 @@ Date:   Mon Nov 23 15:32:16 2009 -0200
     for the overridden modules to be able to access the auto-generated
     ones.
 
- gi/importer.py |   34 +++++++++++++++++++++-------------
+ gi/importer.py | 34 +++++++++++++++++++++-------------
  1 file changed, 21 insertions(+), 13 deletions(-)
 
 commit fad89e12a744b57e6348968f351d25d167de8248
@@ -19289,10 +22136,10 @@ Date: Sun Nov 22 17:56:20 2009 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=601253
 
- gi/pygi-argument.c |  20 ++++++++++++--------
- tests/libtestgi.c  |   5 +++++
- tests/libtestgi.h  |   5 +++++
- tests/test_gi.py   |   5 +++++
+ gi/pygi-argument.c | 20 ++++++++++++--------
+ tests/libtestgi.c  |  5 +++++
+ tests/libtestgi.h  |  5 +++++
+ tests/test_gi.py   |  5 +++++
  4 files changed, 27 insertions(+), 8 deletions(-)
 
 commit 1dc62a998dd8d2a0a397f8309011a8d79cb56034
@@ -19303,8 +22150,8 @@ Date:   Sun Nov 22 17:25:04 2009 +0100
 
     https://bugzilla.gnome.org/show_bug.cgi?id=601181
 
- gi/gimodule.c |   33 +++++++++++++++++++++++++++++++++
- gi/types.py   |    5 ++++-
+ gi/gimodule.c | 33 +++++++++++++++++++++++++++++++++
+ gi/types.py   |  5 ++++-
  2 files changed, 37 insertions(+), 1 deletion(-)
 
 commit d67d5afb5115c1d8294415b2e1a82af2c737ba17
@@ -19313,7 +22160,7 @@ Date:   Sun Nov 22 18:23:02 2009 +0200
 
     Ignore one more file.
 
- .gitignore |   1 +
+ .gitignore | 1 +
  1 file changed, 1 insertion(+)
 
 commit 408b2186aea58a41ec26b9d0ca29ecd42df5ef7e
@@ -19324,8 +22171,8 @@ Date:   Sun Nov 22 18:22:23 2009 +0200
 
     Bug #587637.  Test the fix.
 
- gobject/propertyhelper.py |   5 +++--
- tests/test_properties.py  |   6 ++++++
+ gobject/propertyhelper.py | 5 +++--
+ tests/test_properties.py  | 6 ++++++
  2 files changed, 9 insertions(+), 2 deletions(-)
 
 commit 6ccf58afcf58e118903ced0135f0fe69b00e09ad
@@ -19334,7 +22181,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 +++
+ gi/pygi-argument.c | 3 +++
  1 file changed, 3 insertions(+)
 
 commit e6f730d6e1431e36bd5f6b503a1038617f8d1e7d
@@ -19343,7 +22190,7 @@ Date:   Sat Nov 14 21:42:43 2009 +0100
 
     Import pygtk properly to avoid failure on some setups
 
- tests/test_gi.py |    3 +++
+ tests/test_gi.py | 3 +++
  1 file changed, 3 insertions(+)
 
 commit e604a89e9dc1a79687ef5fb94af7a2182be07dfb
@@ -19359,7 +22206,7 @@ Date:   Sat Nov 14 21:39:15 2009 +0100
 
     Signed-off-by: Simon van der Linden <svdlinden@src.gnome.org>
 
- configure.ac |    7 +++++--
+ configure.ac | 7 +++++--
  1 file changed, 5 insertions(+), 2 deletions(-)
 
 commit 4a887cfabb326cb99dc65073d592c03f59e2f141
@@ -19368,7 +22215,7 @@ Date:   Sat Nov 14 21:36:19 2009 +0100
 
     Fix silent rules setup
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 602afea88c338a38327cd84e08703c5daa384ec6
@@ -19380,9 +22227,9 @@ Date:   Tue Nov 10 22:32:33 2009 +0200
     Retain in original place for backward compatibility, but remove it
     from the docs.
 
- docs/reference/pygobject-functions.xml |   36
- +++++++-------------------------
- glib/glibmodule.c                     |   16 ++++++++++++++
+ docs/reference/pygobject-functions.xml | 36
+ +++++++---------------------------
+ glib/glibmodule.c                     | 16 +++++++++++++++
  2 files changed, 23 insertions(+), 29 deletions(-)
 
 commit 734755912fff11332dc0e96317b7d6b7c4014e6a
@@ -19391,12 +22238,12 @@ Date: Mon Nov 9 22:44:12 2009 +0100
 
     Remove PyGObject patches since they've been merged to master
 
- ...pytype-aware-of-the-interface-enum-flags-.patch |  78 --------
- patches/0002-Fix-girpository-build-setup.patch     |  186
- ------------------
- ...capabilities-to-import-wrappers-from-pygi.patch |  200
- --------------------
- ...ances-by-calling-tp_alloc-rather-than-PyO.patch |  29 ---
+ ...pytype-aware-of-the-interface-enum-flags-.patch |  78 --------
+ patches/0002-Fix-girpository-build-setup.patch     | 186
+ -------------------
+ ...capabilities-to-import-wrappers-from-pygi.patch | 200
+ ---------------------
+ ...ances-by-calling-tp_alloc-rather-than-PyO.patch |  29 ---
  4 files changed, 493 deletions(-)
 
 commit 6a69288941e65312fe82649ec72d2f21b2dc618f
@@ -19412,7 +22259,7 @@ Date:   Sat Nov 7 23:42:07 2009 +0100
     PyGBoxed subtypes, so the subtype's allocation function must be
     called instead.
 
- gobject/pygboxed.c |   3 ++-
+ gobject/pygboxed.c | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit 000f7c36e667c6e078e3370769ea868e56a1b4ee
@@ -19431,12 +22278,12 @@ Date: Sat Nov 7 16:43:35 2009 +0100
     function and
     API definition had to be copied in this tree.
 
- configure.ac           |    8 ++++++
- gobject/pygboxed.c     |   10 +++++++
- gobject/pygi-external.h |   66
- +++++++++++++++++++++++++++++++++++++++++++++++
- gobject/pygobject.c    |   10 +++++++
- gobject/pygpointer.c   |   11 ++++++++
+ 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(+)
 
 commit fdfbc90dbc9e305646b62d73de506b5e0e99cc91
@@ -19447,9 +22294,9 @@ Date:   Sun Nov 8 20:03:58 2009 +0100
 
     A file, pygi-external.h, was missing in patch #3.
 
- ...capabilities-to-import-wrappers-from-pygi.patch |  74
- ++++++++++++++++++--
- ...ances-by-calling-tp_alloc-rather-than-PyO.patch |   2 +-
+ ...capabilities-to-import-wrappers-from-pygi.patch | 74
+ ++++++++++++++++++++--
+ ...ances-by-calling-tp_alloc-rather-than-PyO.patch |  2 +-
  2 files changed, 69 insertions(+), 7 deletions(-)
 
 commit 8f53ca8a72f9958711765281dd5c5bdfb7042d7d
@@ -19458,7 +22305,7 @@ Date:   Sun Nov 8 16:52:18 2009 +0100
 
     Add myself to pygi.doap
 
- pygi.doap |   5 +++++
+ pygi.doap | 5 +++++
  1 file changed, 5 insertions(+)
 
 commit 6f50d5102aec9288e1851f12e9d232b9c141d524
@@ -19467,7 +22314,7 @@ Date:   Sun Nov 8 15:40:51 2009 +0100
 
     Add a doap file
 
- pygi.doap |   17 +++++++++++++++++
+ pygi.doap | 17 +++++++++++++++++
  1 file changed, 17 insertions(+)
 
 commit ce673b9027868e6add4eeb438bc707eb40bfd046
@@ -19476,11 +22323,11 @@ Date: Sun Nov 8 13:06:54 2009 +0100
 
     Add PyGObject patches
 
- ...pytype-aware-of-the-interface-enum-flags-.patch |  78 ++++++++
- patches/0002-Fix-girpository-build-setup.patch     |  186
- ++++++++++++++++++++
- ...capabilities-to-import-wrappers-from-pygi.patch |  138 +++++++++++++++
- ...ances-by-calling-tp_alloc-rather-than-PyO.patch |  29 +++
+ ...pytype-aware-of-the-interface-enum-flags-.patch |  78 +++++++++
+ patches/0002-Fix-girpository-build-setup.patch     | 186
+ +++++++++++++++++++++
+ ...capabilities-to-import-wrappers-from-pygi.patch | 138 +++++++++++++++
+ ...ances-by-calling-tp_alloc-rather-than-PyO.patch |  29 ++++
  4 files changed, 431 insertions(+)
 
 commit b24fd9633cabe1d95cde173a04e9a49833b06a26
@@ -19531,10 +22378,10 @@ Date: Sat Nov 7 13:23:53 2009 +0100
 
     Fix girpository build setup
 
- configure.ac            |   21 +++++++----
- girepository/Makefile.am |   13 +++----
- m4/introspection.m4     |   92
- ++++++++++++++++++++++++++++++++++++++++++++++
+ configure.ac            | 21 ++++++-----
+ girepository/Makefile.am | 13 ++++---
+ m4/introspection.m4     | 92
+ ++++++++++++++++++++++++++++++++++++++++++++++++
  3 files changed, 111 insertions(+), 15 deletions(-)
 
 commit 421c03b1c5b69f90c778663df901b45ca3ee8ba5
@@ -19544,7 +22391,7 @@ Date:   Fri Nov 6 19:17:36 2009 +0100
     Make GType.pytype aware of the interface, enum, flags, pointer and
     boxed wrappers
 
- gobject/pygtype.c |   39 +++++++++++++++++++++++++++++++++------
+ gobject/pygtype.c | 39 +++++++++++++++++++++++++++++++++------
  1 file changed, 33 insertions(+), 6 deletions(-)
 
 commit a9c168c58cc6a449b51653417bf3f58bdd41457c
@@ -19555,8 +22402,8 @@ Date:   Wed Oct 21 18:01:16 2009 +0200
 
     Fixes bug #481569
 
- glib/pygmainloop.c |  95
- +++++++++++++++++++++++++++-------------------------
+ glib/pygmainloop.c | 95
+ ++++++++++++++++++++++++++++--------------------------
  1 file changed, 50 insertions(+), 45 deletions(-)
 
 commit c6a5750379354c12e2599b3c73b4f9a23fd39114
@@ -19565,7 +22412,7 @@ Date:   Fri Sep 25 20:12:21 2009 +0200
 
     Post release version bump to 2.21.0
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 33920eb013628a5e22b7b32403fb965ae3210f47
@@ -19574,7 +22421,7 @@ Date:   Wed Sep 23 21:52:04 2009 +0200
 
     Update NEWS and release 2.20.0
 
- NEWS |    6 ++++++
+ NEWS | 6 ++++++
  1 file changed, 6 insertions(+)
 
 commit 66b12f7d2f54143ea80b4f8aec863b26800363d6
@@ -19583,7 +22430,7 @@ Date:   Wed Sep 23 21:51:43 2009 +0200
 
     Bump version to 2.20.0
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 7bf87338a026ac82f908aa5fddf2bfea2daf6617
@@ -19593,7 +22440,7 @@ Date:   Wed Sep 23 12:11:50 2009 -0500
     Updated uninstalled.pc file so that it contains the right paths for
     defsdir files and codegen files.  See bug #596023.
 
- pygobject-2.0-uninstalled.pc.in |    4 ++--
+ pygobject-2.0-uninstalled.pc.in | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit d042402b7c649b2bed7f20038eb82518ec7cc9b3
@@ -19604,7 +22451,7 @@ Date:   Tue Sep 22 22:02:27 2009 +0300
 
     Bug #579406, second change.
 
- glib/pygmainloop.c |   1 +
+ glib/pygmainloop.c | 1 +
  1 file changed, 1 insertion(+)
 
 commit 640be8109d066e85ed77c810830a5f73c750415b
@@ -19617,7 +22464,7 @@ Date:   Sun Aug 30 16:46:02 2009 +0200
     .devhelp
     file that is produced when using ref-html-style.xsl.
 
- docs/xsl/devhelp.xsl |    2 +-
+ docs/xsl/devhelp.xsl | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit c888b5ca722fcad6a03de585606c677c2969ebd6
@@ -19626,7 +22473,7 @@ Date:   Thu Aug 13 21:32:07 2009 +0200
 
     Allow to use automake 1.11
 
- autogen.sh |  13 +++++++------
+ autogen.sh | 13 +++++++------
  1 file changed, 7 insertions(+), 6 deletions(-)
 
 commit 30deaba4bd1e199aab75cb346ee9237237807fbd
@@ -19635,7 +22482,7 @@ Date:   Tue Aug 11 22:19:50 2009 +0200
 
     Update README
 
- README |   10 ++++++++--
+ README | 10 ++++++++--
  1 file changed, 8 insertions(+), 2 deletions(-)
 
 commit af165d350d0d1bb493be5140bf84376d3da1e4d8
@@ -19644,7 +22491,7 @@ Date:   Tue Aug 11 22:16:52 2009 +0200
 
     Update AUTHORS
 
- AUTHORS |    8 +++++---
+ AUTHORS | 8 +++++---
  1 file changed, 5 insertions(+), 3 deletions(-)
 
 commit 5f9f87f276b97964b525a501d8584ea8b4d8bfd2
@@ -19653,8 +22500,8 @@ Date:   Tue Aug 11 22:11:43 2009 +0200
 
     Add myself and Paul as maintainers
 
- MAINTAINERS   |    8 ++++++++
- pygobject.doap |   14 ++++++++++++++
+ MAINTAINERS   |  8 ++++++++
+ pygobject.doap | 14 ++++++++++++++
  2 files changed, 22 insertions(+)
 
 commit 3bfae47fbcb5523d91fb2d1ed7ea347eeddd1775
@@ -19663,7 +22510,7 @@ Date:   Tue Aug 11 20:52:44 2009 +0200
 
     Update NEWS release 2.19.0
 
- NEWS |   29 +++++++++++++++++++++++++++++
+ NEWS | 29 +++++++++++++++++++++++++++++
  1 file changed, 29 insertions(+)
 
 commit e82a1841f31ad54dd50569d0d45290713409e0bf
@@ -19672,8 +22519,8 @@ Date:   Tue Aug 11 00:04:31 2009 -0700
 
     Add macros to help with Python list to/from GList/GSList conversions.
 
- gobject/pygobject.h | 242
- ++++++++++++++++++++++++++++++++++++++++++++++++++-
+ gobject/pygobject.h | 242
+ +++++++++++++++++++++++++++++++++++++++++++++++++++-
  1 file changed, 241 insertions(+), 1 deletion(-)
 
 commit f1fad96da2c531fbd3218923baa4fe806a2942d4
@@ -19682,7 +22529,7 @@ Date:   Sat Aug 8 21:37:54 2009 +0200
 
     Bug 590063 – GFileInfo.list_attributes should accept None/NULL
 
- gio/gfileinfo.override |    4 ++--
+ gio/gfileinfo.override | 4 ++--
  1 file changed, 2 insertions(+), 2 deletions(-)
 
 commit b7907cf6ff6ccf8d38b5206f09f5c864c205e5de
@@ -19691,8 +22538,8 @@ Date:   Fri Jul 24 14:30:37 2009 -0300
 
     Remove myself as a maintainer
 
- MAINTAINERS   |    4 ----
- pygobject.doap |    7 -------
+ MAINTAINERS   | 4 ----
+ pygobject.doap | 7 -------
  2 files changed, 11 deletions(-)
 
 commit be6eb21320b4688bcfcd8cbea33f7be29a76f2a2
@@ -19702,7 +22549,7 @@ Date:   Wed Jul 8 15:47:44 2009 -0700
            * codegen/defsgen.py (clean_patterns): Strip out Windows
            DLL API macros.
 
- codegen/defsgen.py |   6 +++---
+ codegen/defsgen.py | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit 2214cad3529979e29342a7e1fdc2915b90ce9c10
@@ -19711,14 +22558,12 @@ Date: Tue Jun 23 21:18:23 2009 +0200
 
     Fix the gio.unix namespace in docs
 
- docs/Makefile.am                         |    2 ++
- docs/reference/pygio-classes.xml         |    2 --
- docs/reference/pygio-unixinputstream.xml  |   26
- +++++++++++++-------------
- docs/reference/pygio-unixoutputstream.xml |   26
- +++++++++++++-------------
- docs/reference/pygiounix-classes.xml     |   13 +++++++++++++
- docs/reference/pygobject-ref.xml         |    1 +
+ docs/Makefile.am                         |  2 ++
+ docs/reference/pygio-classes.xml         |  2 --
+ docs/reference/pygio-unixinputstream.xml  | 26 +++++++++++++-------------
+ docs/reference/pygio-unixoutputstream.xml | 26 +++++++++++++-------------
+ docs/reference/pygiounix-classes.xml     | 13 +++++++++++++
+ docs/reference/pygobject-ref.xml         |  1 +
  6 files changed, 42 insertions(+), 28 deletions(-)
 
 commit c0acaedfe7f4e488a490e07e3184f0709e1fadc2
@@ -19727,10 +22572,10 @@ Date: Mon Jun 22 23:13:36 2009 +0200
 
     Add docs for gio functions (mostly for content types)
 
- docs/Makefile.am                  |    2 +
- docs/reference/pygio-classes.xml   |   1 +
- docs/reference/pygio-functions.xml |  395
- ++++++++++++++++++++++++++++++++++++
+ docs/Makefile.am                  |   2 +
+ docs/reference/pygio-classes.xml   |  1 +
+ docs/reference/pygio-functions.xml | 395
+ +++++++++++++++++++++++++++++++++++++
  3 files changed, 398 insertions(+)
 
 commit ebddee47fb7f3e06f9e0a7a14b9532d5cf8a3881
@@ -19739,12 +22584,12 @@ Date: Sun Jun 21 18:35:56 2009 +0200
 
     Add docs for gio.Unix[In|Out]putStream classes
 
- docs/Makefile.am                         |    4 +
- docs/reference/pygio-classes.xml         |    2 +
- docs/reference/pygio-unixinputstream.xml  |  202
- +++++++++++++++++++++++++++++
- docs/reference/pygio-unixoutputstream.xml |  202
- +++++++++++++++++++++++++++++
+ docs/Makefile.am                         |   4 +
+ docs/reference/pygio-classes.xml         |   2 +
+ docs/reference/pygio-unixinputstream.xml  | 202
+ ++++++++++++++++++++++++++++++
+ docs/reference/pygio-unixoutputstream.xml | 202
+ ++++++++++++++++++++++++++++++
  4 files changed, 410 insertions(+)
 
 commit 5b71e58117c85634d95d08449eb54079b246e5be
@@ -19753,7 +22598,7 @@ Date:   Sun Jun 21 16:50:03 2009 +0300
 
     Document that many functions got moved gobject -> glib
 
- docs/reference/pygobject-functions.xml |    7 +++++++
+ docs/reference/pygobject-functions.xml | 7 +++++++
  1 file changed, 7 insertions(+)
 
 commit b270dc43f2cef5260b0bbc71356fd8e6a2b7f754
@@ -19762,10 +22607,10 @@ Date: Sat Jun 20 19:23:25 2009 +0200
 
     Add docs for class gio.DataOutputStream
 
- docs/Makefile.am                         |    2 +
- docs/reference/pygio-classes.xml         |    1 +
- docs/reference/pygio-dataoutputstream.xml |  504
- +++++++++++++++++++++++++++++
+ docs/Makefile.am                         |   2 +
+ docs/reference/pygio-classes.xml         |   1 +
+ docs/reference/pygio-dataoutputstream.xml | 504
+ ++++++++++++++++++++++++++++++
  3 files changed, 507 insertions(+)
 
 commit 549313fc4886fa3deb31761de6f5400708165d86
@@ -19775,7 +22620,7 @@ Date:   Thu Jun 18 18:48:37 2009 +0200
     Allow h2def.py to work when there are tabs or multiple spaces after
     the struct keyword.
 
- codegen/h2def.py |    8 ++++----
+ codegen/h2def.py | 8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit 5c36ef20dca8cd1793f2d3e88949675299097f40
@@ -19784,11 +22629,11 @@ Date: Mon Jun 15 23:02:34 2009 +0200
 
     Add dpcs for class gio.DataInputStream
 
- docs/Makefile.am                        |    2 +
- docs/reference/pygio-classes.xml        |    1 +
- docs/reference/pygio-constants.xml      |   66 +++
- docs/reference/pygio-datainputstream.xml |  799
- ++++++++++++++++++++++++++++++
+ docs/Makefile.am                        |   2 +
+ docs/reference/pygio-classes.xml        |   1 +
+ docs/reference/pygio-constants.xml      |  66 +++
+ docs/reference/pygio-datainputstream.xml | 799
+ +++++++++++++++++++++++++++++++
  4 files changed, 868 insertions(+)
 
 commit a8b36c343c6850af929c1d5a930f923831b4e637
@@ -19799,7 +22644,7 @@ Date:   Mon Jun 15 23:25:01 2009 +0300
 
     Bug #585817.
 
- girepository/Makefile.am |    2 +-
+ girepository/Makefile.am | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 9d9ae97b8a49836ec1f3b8d6529bafe1cc06d4d7
@@ -19811,9 +22656,9 @@ Date:   Mon Jun 15 23:19:47 2009 +0300
     Add optional 'origin' parameter.  Expand gio.Emblem documentation and
     mark gio.emblem_new_with_origin as sort-of-deprecated.
 
- docs/reference/pygio-emblem.xml |   51
- +++++++++++++++++++++++++++++++++++++--
- gio/gio.defs                   |    5 ++--
+ docs/reference/pygio-emblem.xml | 51
+ +++++++++++++++++++++++++++++++++++++++--
+ gio/gio.defs                   |  5 ++--
  2 files changed, 52 insertions(+), 4 deletions(-)
 
 commit 268e1681fd5b46e6412d3a8db84f3f1cb02fdbde
@@ -19822,10 +22667,10 @@ Date: Sat Jun 13 14:44:47 2009 +0200
 
     Add docs for gio.BufferedOutputStream class
 
- docs/Makefile.am                             |   96 ++++-----
- docs/reference/pygio-bufferedoutputstream.xml |  275
- +++++++++++++++++++++++++
- docs/reference/pygio-classes.xml             |    1 +
+ docs/Makefile.am                             |  96 ++++-----
+ docs/reference/pygio-bufferedoutputstream.xml | 275
+ ++++++++++++++++++++++++++
+ docs/reference/pygio-classes.xml             |   1 +
  3 files changed, 325 insertions(+), 47 deletions(-)
 
 commit a6e25aaa7c8f27d62f2917b06728d7ccfcd46416
@@ -19836,8 +22681,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
- ++++++++++++++++++++++++--
+ docs/reference/pygio-bufferedinputstream.xml | 34
+ ++++++++++++++++++++++++++--
  1 file changed, 32 insertions(+), 2 deletions(-)
 
 commit a9b13b60a5aad726d7d7dd7fdc5153b1561fb591
@@ -19846,10 +22691,10 @@ Date: Sat Jun 13 01:25:06 2009 +0200
 
     Add docs for gio.BufferedInputStream
 
- docs/Makefile.am                            |    2 +
- docs/reference/pygio-bufferedinputstream.xml |  431
- ++++++++++++++++++++++++++
- docs/reference/pygio-classes.xml            |    1 +
+ docs/Makefile.am                            |   2 +
+ docs/reference/pygio-bufferedinputstream.xml | 431
+ +++++++++++++++++++++++++++
+ docs/reference/pygio-classes.xml            |   1 +
  3 files changed, 434 insertions(+)
 
 commit 7766daa59b0e2b85413cee368bf2ebd2afe198e1
@@ -19861,13 +22706,13 @@ 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/gfileenumerator.override |    6 +-
- gio/ginputstream.override    |    2 +-
- gio/gio.override            |  204
- ------------------------------------------
- gio/gmount.override         |  204
- ++++++++++++++++++++++++++++++++++++++++++
+ gio/gfile.override          |  20 ++---
+ gio/gfileenumerator.override |   6 +-
+ gio/ginputstream.override    |   2 +-
+ gio/gio.override            | 204
+ -------------------------------------------
+ gio/gmount.override         | 204
+ +++++++++++++++++++++++++++++++++++++++++++
  5 files changed, 218 insertions(+), 218 deletions(-)
 
 commit 07e9c18dc092f6546230168b6b69c1b3454e120a
@@ -19878,8 +22723,8 @@ Date:   Sun May 31 18:56:55 2009 +0300
 
     Part of bug #584289.
 
- codegen/codegen.py    |    9 +++++----
- codegen/definitions.py |   10 +++++++++-
+ codegen/codegen.py    |  9 +++++----
+ codegen/definitions.py | 10 +++++++++-
  2 files changed, 14 insertions(+), 5 deletions(-)
 
 commit 235fde85d015382f2ba38b21968e82b3ac0b6612
@@ -19888,7 +22733,7 @@ Date:   Fri Jun 12 00:12:17 2009 +0200
 
     Fix object type in gio.BufferedInputStream_fill_async
 
- gio/gbufferedinputstream.override |   2 +-
+ gio/gbufferedinputstream.override | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 407b0e909056f15960e6a4e549896d786ce0a0b2
@@ -19899,11 +22744,11 @@ Date: Tue Jun 9 00:08:21 2009 +0200
 
     Wrap the method gio.BufferedInputStream.fill_async and add a test
 
- gio/Makefile.am                  |    1 +
- gio/gbufferedinputstream.override |   70
- +++++++++++++++++++++++++++++++++++++
- gio/gio.override                 |    1 +
- tests/test_gio.py                |   25 +++++++++++++
+ gio/Makefile.am                  |  1 +
+ gio/gbufferedinputstream.override | 70
+ +++++++++++++++++++++++++++++++++++++++
+ gio/gio.override                 |  1 +
+ tests/test_gio.py                | 25 ++++++++++++++
  4 files changed, 97 insertions(+)
 
 commit b7c96b41b287685fe57504e0add3a6f16e649975
@@ -19913,7 +22758,7 @@ Date:   Mon Jun 8 15:42:40 2009 +0200
     Add gio.BufferedOutputStream which was forgotten in the types
     definition
 
- gio/gio-types.defs |   7 +++++++
+ gio/gio-types.defs | 7 +++++++
  1 file changed, 7 insertions(+)
 
 commit 3666f75af4ef2c8e038116aee5afada59d59f689
@@ -19922,10 +22767,10 @@ Date: Mon Jun 8 14:20:02 2009 +0200
 
     Add docs for gio.MemoryOutputStream
 
- docs/Makefile.am                           |    2 +
- docs/reference/pygio-classes.xml           |    1 +
- docs/reference/pygio-memoryoutputstream.xml | 175
- +++++++++++++++++++++++++++
+ docs/Makefile.am                           |   2 +
+ docs/reference/pygio-classes.xml           |   1 +
+ docs/reference/pygio-memoryoutputstream.xml | 175
+ ++++++++++++++++++++++++++++
  3 files changed, 178 insertions(+)
 
 commit 6eb5e3988cbddb4afb3d5747364d6eb80370bb78
@@ -19934,11 +22779,11 @@ Date: Mon Jun 8 13:30:15 2009 +0200
 
     Split overrides for gio.MemoryOutputStream
 
- gio/Makefile.am                 |    1 +
- gio/gio.override                |    1 +
- gio/gmemoryoutputstream.override |   45
- ++++++++++++++++++++++++++++++++++++++
- gio/goutputstream.override      |   24 --------------------
+ gio/Makefile.am                 |  1 +
+ gio/gio.override                |  1 +
+ gio/gmemoryoutputstream.override | 45
+ ++++++++++++++++++++++++++++++++++++++++
+ gio/goutputstream.override      | 24 ---------------------
  4 files changed, 47 insertions(+), 24 deletions(-)
 
 commit dfbdf23633a772e78b47b0e7b0c3e3b87855d9ff
@@ -19950,15 +22795,15 @@ Date: Mon Jun 8 11:45:11 2009 +0200
     Add the wrapper for gio.memory_input_stream_new_from_data including
     docs and a test.
 
- docs/Makefile.am                          |    4 +-
- docs/reference/pygio-classes.xml          |    1 +
- docs/reference/pygio-memoryinputstream.xml |  151
- ++++++++++++++++++++++++++++
- gio/Makefile.am                           |    1 +
- gio/ginputstream.override                 |   34 -------
- gio/gio.override                          |    1 +
- gio/gmemoryinputstream.override           |   91 +++++++++++++++++
- tests/test_gio.py                         |    4 +
+ docs/Makefile.am                          |   4 +-
+ docs/reference/pygio-classes.xml          |   1 +
+ docs/reference/pygio-memoryinputstream.xml | 151
+ +++++++++++++++++++++++++++++
+ gio/Makefile.am                           |   1 +
+ gio/ginputstream.override                 |  34 -------
+ gio/gio.override                          |   1 +
+ gio/gmemoryinputstream.override           |  91 +++++++++++++++++
+ tests/test_gio.py                         |   4 +
  8 files changed, 252 insertions(+), 35 deletions(-)
 
 commit fcc3cb0e167789746a1a9db0cba54ea7a97c7259
@@ -19967,12 +22812,12 @@ Date: Mon Jun 8 19:15:24 2009 +0200
 
     Fixes whitespaces style issues with girepository.
 
- girepository/Makefile.am      |    2 +-
- girepository/bank-repository.c |   67
- ++++++++++++++++++++--------------------
- girepository/bank.h           |    2 +-
- girepository/btypes.py                |    6 ++--
- girepository/module.py                |    2 +-
+ girepository/Makefile.am      |  2 +-
+ girepository/bank-repository.c | 67
+ +++++++++++++++++++++---------------------
+ girepository/bank.h           |  2 +-
+ girepository/btypes.py                |  6 ++--
+ girepository/module.py                |  2 +-
  5 files changed, 39 insertions(+), 40 deletions(-)
 
 commit fb4b2c8cdad2853e6bfe9526529e3a3ab052c5e0
@@ -19981,7 +22826,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 +-------------------------
+ tests/test_girepository.py | 26 +-------------------------
  1 file changed, 1 insertion(+), 25 deletions(-)
 
 commit abe4828f52c7eb3a08f5b592e7ced1e97a58ef5c
@@ -19990,10 +22835,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
@@ -20002,8 +22847,8 @@ Date:   Tue Jun 2 23:40:41 2009 +0200
 
     Disables the tests that fail in tests/test_girepository.py.
 
- tests/test_girepository.py |  242
- +++++++++++++++++++++++++++++++++-----------
+ tests/test_girepository.py | 242
+ ++++++++++++++++++++++++++++++++++-----------
  1 file changed, 182 insertions(+), 60 deletions(-)
 
 commit a4469a3f7d32a25156bae5e7aef9ec4ae5f6e140
@@ -20013,8 +22858,8 @@ Date:   Tue Jun 2 23:03:26 2009 +0200
     Imports test_girepository.py from former PyBank's
     everything_unittest.py.
 
- tests/test_girepository.py |  288
- ++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_girepository.py | 288
+ +++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 288 insertions(+)
 
 commit e4f2a5ef8734cf40cf8345d442612db1f6c62d5a
@@ -20046,7 +22891,7 @@ Date:   Tue Jun 2 18:28:22 2009 +0200
 
     Fix the docs for gio.FilterOutputStream
 
- docs/reference/pygio-filteroutputstream.xml |   6 +++---
+ docs/reference/pygio-filteroutputstream.xml | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)
 
 commit fded60d8376fc45d19bf6cd8be6b927cc3f2e8c6
@@ -20055,10 +22900,10 @@ Date: Tue Jun 2 18:27:00 2009 +0200
 
     Add gio.FilterOutputStream docs
 
- docs/Makefile.am                           |    2 +
- docs/reference/pygio-classes.xml           |    1 +
- docs/reference/pygio-filteroutputstream.xml | 152
- +++++++++++++++++++++++++++
+ docs/Makefile.am                           |   2 +
+ docs/reference/pygio-classes.xml           |   1 +
+ docs/reference/pygio-filteroutputstream.xml | 152
+ ++++++++++++++++++++++++++++
  3 files changed, 155 insertions(+)
 
 commit e2c31f916967229b6547e68013628ce0082cf875
@@ -20067,10 +22912,10 @@ Date: Tue Jun 2 13:29:59 2009 +0200
 
     Add gio.FilterInputStream docs
 
- docs/Makefile.am                          |    2 +
- docs/reference/pygio-classes.xml          |    1 +
- docs/reference/pygio-filterinputstream.xml |  152
- ++++++++++++++++++++++++++++
+ docs/Makefile.am                          |   2 +
+ docs/reference/pygio-classes.xml          |   1 +
+ docs/reference/pygio-filterinputstream.xml | 152
+ +++++++++++++++++++++++++++++
  3 files changed, 155 insertions(+)
 
 commit 49a467eee445bc75554db0374006722ac075194b
@@ -20079,7 +22924,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 ++++++++++++++++++++++++++++++
+ gio/gio.defs | 30 ++++++++++++++++++++++++++++++
  1 file changed, 30 insertions(+)
 
 commit 180c157f2a20b7d2dd9af05bfb5f515fd23870a0
@@ -20091,14 +22936,14 @@ Date: Tue Jun 2 10:41:26 2009 +0200
     Add the wrapper for gio.FileOutputStream.query_info_async
     including docs and a test.
 
- docs/Makefile.am                         |    2 +
- docs/reference/pygio-classes.xml         |    1 +
- docs/reference/pygio-fileoutputstream.xml |  257
- +++++++++++++++++++++++++++++
- gio/Makefile.am                          |    3 +-
- gio/gfileoutputstream.override                   |   68 ++++++++
- gio/gio.override                         |    1 +
- tests/test_gio.py                        |   27 +++
+ docs/Makefile.am                         |   2 +
+ docs/reference/pygio-classes.xml         |   1 +
+ docs/reference/pygio-fileoutputstream.xml | 257
+ ++++++++++++++++++++++++++++++
+ gio/Makefile.am                          |   3 +-
+ gio/gfileoutputstream.override                   |  68 ++++++++
+ gio/gio.override                         |   1 +
+ tests/test_gio.py                        |  27 ++++
  7 files changed, 358 insertions(+), 1 deletion(-)
 
 commit 4673577d1f6c3d54423808dd575987092fb05ad2
@@ -20109,7 +22954,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 +++++++++----------------
+ docs/reference/pygio-fileinputstream.xml | 25 +++++++++----------------
  1 file changed, 9 insertions(+), 16 deletions(-)
 
 commit 1e1cad02879d514745b5233658654cbe944530a5
@@ -20118,7 +22963,7 @@ Date:   Mon Jun 1 22:54:26 2009 +0200
 
     Fix the method name
 
- gio/gfileinputstream.override |   14 +++++++-------
+ gio/gfileinputstream.override | 14 +++++++-------
  1 file changed, 7 insertions(+), 7 deletions(-)
 
 commit f605811afe8c91f121e89b6f9ec28c70b62f4110
@@ -20130,14 +22975,14 @@ Date: Mon Jun 1 22:40:56 2009 +0200
     Add the wrapper for gio.FileInputStream.query_async including docs and
     a test.
 
- docs/Makefile.am                        |    2 +
- docs/reference/pygio-classes.xml        |    1 +
- docs/reference/pygio-fileinputstream.xml |  221
- ++++++++++++++++++++++++++++++
- gio/Makefile.am                         |    1 +
- gio/gfileinputstream.override           |   68 +++++++++
- gio/gio.override                        |    1 +
- tests/test_gio.py                       |   27 ++++
+ docs/Makefile.am                        |   2 +
+ docs/reference/pygio-classes.xml        |   1 +
+ docs/reference/pygio-fileinputstream.xml | 221
+ +++++++++++++++++++++++++++++++
+ gio/Makefile.am                         |   1 +
+ gio/gfileinputstream.override           |  68 ++++++++++
+ gio/gio.override                        |   1 +
+ tests/test_gio.py                       |  27 ++++
  7 files changed, 321 insertions(+)
 
 commit 08623e54a426377c1504b5c364aabae5a17f8ad8
@@ -20148,10 +22993,10 @@ Date: Sun May 31 17:43:16 2009 +0300
 
     Also add shebang where it was missing.  Bug #583979.
 
- codegen/Makefile.am     |   23 ++++++++++++-----------
- codegen/code-coverage.py |    2 ++
- codegen/codegen.py      |    2 ++
- codegen/defsconvert.py   |    2 ++
+ codegen/Makefile.am     | 23 ++++++++++++-----------
+ codegen/code-coverage.py |  2 ++
+ codegen/codegen.py      |  2 ++
+ codegen/defsconvert.py   |  2 ++
  4 files changed, 18 insertions(+), 11 deletions(-)
 
 commit 833d4da202bcfcb01a414f8aec4b751ec8e1ccb2
@@ -20165,13 +23010,13 @@ Date: Sat May 30 16:57:49 2009 +0300
     functions there.  Add unit tests.  Re-enable synchronous read_line
     unit test and adjust it for new official GIO behavior.  Bug #584285.
 
- gio/Makefile.am              |    1 +
- gio/gdatainputstream.override |  250
- +++++++++++++++++++++++++++++++++++++++++
- gio/ginputstream.override     |   65 -----------
- gio/gio.defs                 |    4 +-
- gio/gio.override             |    1 +
- tests/test_gio.py            |   51 ++++++++-
+ gio/Makefile.am              |   1 +
+ gio/gdatainputstream.override | 250
+ ++++++++++++++++++++++++++++++++++++++++++
+ gio/ginputstream.override     |  65 -----------
+ gio/gio.defs                 |   4 +-
+ gio/gio.override             |   1 +
+ tests/test_gio.py            |  51 ++++++++-
  6 files changed, 300 insertions(+), 72 deletions(-)
 
 commit 2cb569c0ced49f9ed5ca83292d5f15c837066688
@@ -20182,7 +23027,7 @@ Date:   Sat May 30 17:24:15 2009 +0300
 
     Bug #584290.
 
- gio/goutputstream.override |   8 ++++----
+ gio/goutputstream.override | 8 ++++----
  1 file changed, 4 insertions(+), 4 deletions(-)
 
 commit e43fa429f6b4019a432acb481bbc07c8201cc46d
@@ -20191,7 +23036,7 @@ Date:   Wed May 27 21:19:27 2009 +0300
 
     Code maintenance: ignore one more file created by unit tests
 
- tests/.gitignore |    1 +
+ tests/.gitignore | 1 +
  1 file changed, 1 insertion(+)
 
 commit 76e9dc74ac706a9207f9d31f887d6e38df2a678f
@@ -20200,10 +23045,10 @@ Date: Mon May 25 20:20:38 2009 +0200
 
     Update the docs with new 2.20 API
 
- docs/reference/pygio-appinfo.xml |  115 ++++++++++++++++++++++++++++
- docs/reference/pygio-icon.xml   |   99 +++++++++++++++++++++++-
- docs/reference/pygio-mount.xml   |  156
- ++++++++++++++++++++++++++++++++++++++
+ docs/reference/pygio-appinfo.xml | 115 +++++++++++++++++++++++++++++
+ docs/reference/pygio-icon.xml   |  99 ++++++++++++++++++++++++-
+ docs/reference/pygio-mount.xml   | 156
+ +++++++++++++++++++++++++++++++++++++++
  3 files changed, 367 insertions(+), 3 deletions(-)
 
 commit 8e40d71ac23deb7d91789486ee8cad440a6be1dd
@@ -20214,9 +23059,9 @@ Date:   Mon May 25 01:33:08 2009 +0200
 
     add the new API added in gio 2.20, some needs to be wrapped manually
 
- gio/gio.defs  |  106
- +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- gio/unix.defs |   48 +++++++++++++++++++++-----
+ gio/gio.defs  | 106
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gio/unix.defs |  48 +++++++++++++++++++++-----
  2 files changed, 146 insertions(+), 8 deletions(-)
 
 commit 0d08df42514fba6abc896814abfee0d2d083c29e
@@ -20225,7 +23070,7 @@ Date:   Mon May 25 00:14:21 2009 +0200
 
     Post release version bump 2.19.0
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit edfb09e3de7baf294b3beba84b4ecb94e1f16764
@@ -20234,8 +23079,8 @@ Date:   Sun May 24 23:56:29 2009 +0200
 
     Update NEWS, release 2.18.0
 
- NEWS        |   14 ++++++++++++++
- configure.ac |    4 ++--
+ NEWS        | 14 ++++++++++++++
+ configure.ac |  4 ++--
  2 files changed, 16 insertions(+), 2 deletions(-)
 
 commit e0648ea435e0b309cdd5bb0ebe56d4534efd26e4
@@ -20250,10 +23095,10 @@ Date: Sun May 24 22:18:40 2009 +0200
     classes
     are in place so we can ship a (almost) complete reference.
 
- docs/Makefile.am                     |    2 +
- docs/reference/pygio-classes.xml      |    3 +-
- docs/reference/pygio-outputstream.xml |  140
- +++++++++++++++++++++++++++++++++
+ docs/Makefile.am                     |   2 +
+ docs/reference/pygio-classes.xml      |   3 +-
+ docs/reference/pygio-outputstream.xml | 140
+ ++++++++++++++++++++++++++++++++++
  3 files changed, 144 insertions(+), 1 deletion(-)
 
 commit 11524cdf6472d9115a812ce431f6767aec5627bc
@@ -20264,9 +23109,9 @@ Date:   Sun May 24 22:12:04 2009 +0200
 
     wrap gio.OutputStream.splice_async() and add a test.
 
- gio/goutputstream.override |  58
- +++++++++++++++++++++++++++++++++++++++++++-
- tests/test_gio.py         |   20 +++++++++++++++
+ gio/goutputstream.override | 58
+ +++++++++++++++++++++++++++++++++++++++++++++-
+ tests/test_gio.py         | 20 ++++++++++++++++
  2 files changed, 77 insertions(+), 1 deletion(-)
 
 commit 82ad6b8c8ea4d6694126f5e0e67b826717e38f19
@@ -20278,10 +23123,10 @@ Date: Sun May 24 22:55:16 2009 +0300
     Do this now, while no-one (as far as we know) links to the library
     besides PyGObject itself.  Bug #550235.
 
- configure.ac       |    2 ++
- gio/Makefile.am     |   2 +-
- glib/Makefile.am    |  10 +++++-----
- gobject/Makefile.am |   2 +-
+ configure.ac       |  2 ++
+ gio/Makefile.am     | 2 +-
+ glib/Makefile.am    | 10 +++++-----
+ gobject/Makefile.am | 2 +-
  4 files changed, 9 insertions(+), 7 deletions(-)
 
 commit 59da8cd24ea390b6c983995833ec6b0e5d028b35
@@ -20292,9 +23137,9 @@ Date:   Sun May 24 11:44:24 2009 +0200
 
     wrap gio.OutputStream.flush_async() and add a test.
 
- gio/goutputstream.override |  47
- +++++++++++++++++++++++++++++++++++++++++++-
- tests/test_gio.py         |   11 +++++++++++
+ gio/goutputstream.override | 47
+ +++++++++++++++++++++++++++++++++++++++++++++-
+ tests/test_gio.py         | 11 +++++++++++
  2 files changed, 57 insertions(+), 1 deletion(-)
 
 commit 84ab6178ed0033f69932df5bc73c86bdff80c953
@@ -20309,10 +23154,10 @@ Date: Sun May 17 17:29:37 2009 +0200
     classes
     are in place so we can ship a (almost) complete reference.
 
- docs/Makefile.am                    |    2 +
- docs/reference/pygio-classes.xml     |    1 +
- docs/reference/pygio-filemonitor.xml |  128
- ++++++++++++++++++++++++++++++++++
+ docs/Makefile.am                    |   2 +
+ docs/reference/pygio-classes.xml     |   1 +
+ docs/reference/pygio-filemonitor.xml | 128
+ +++++++++++++++++++++++++++++++++++
  3 files changed, 131 insertions(+)
 
 commit 629496a5617d30e4dfa494b05a62c85a6af77b9a
@@ -20323,8 +23168,8 @@ Date:   Sun May 17 18:03:44 2009 +0300
 
     Correction for patch in bug #550231.
 
- pygobject-2.0-uninstalled.pc.in |    3 ++-
- pygobject-2.0.pc.in            |    3 ++-
+ pygobject-2.0-uninstalled.pc.in | 3 ++-
+ pygobject-2.0.pc.in            | 3 ++-
  2 files changed, 4 insertions(+), 2 deletions(-)
 
 commit 90cd8b7c4a25cd2ecb751f8337b401c98538272b
@@ -20337,9 +23182,9 @@ Date:   Wed May 13 21:54:39 2009 +0200
     forgotten while
     wrapping the gio API. This should probably be done in gio itself.
 
- gio/gfileinfo.override |   24 ++++++++++++++++++++++--
- gio/gio-types.defs    |    7 +++++++
- gio/gio.override      |    2 ++
+ gio/gfileinfo.override | 24 ++++++++++++++++++++++--
+ gio/gio-types.defs    |  7 +++++++
+ gio/gio.override      |  2 ++
  3 files changed, 31 insertions(+), 2 deletions(-)
 
 commit e707447d9313f2f2ecba395cfe3682d5a5e859f4
@@ -20351,8 +23196,8 @@ Date:   Wed May 13 22:06:25 2009 +0300
     Additionally fix glib.IOChannel.set_close_on_unref: was marked
     METH_NOARGS but actually accepted arguments.  Fixes bug #582427.
 
- glib/pygiochannel.c |  83
- +++++++++++++--------------------------------------
+ glib/pygiochannel.c | 83
+ +++++++++++++----------------------------------------
  1 file changed, 20 insertions(+), 63 deletions(-)
 
 commit 002915e5f458fec5a89766a54e8119a70a80caa7
@@ -20367,10 +23212,10 @@ Date: Tue May 12 20:37:24 2009 +0200
     classes
     are in place so we can ship a (almost) complete reference.
 
- docs/Makefile.am                 |    2 +
- docs/reference/pygio-classes.xml  |   1 +
- docs/reference/pygio-fileinfo.xml |  346
- +++++++++++++++++++++++++++++++++++++
+ docs/Makefile.am                 |   2 +
+ docs/reference/pygio-classes.xml  |   1 +
+ docs/reference/pygio-fileinfo.xml | 346
+ ++++++++++++++++++++++++++++++++++++++
  3 files changed, 349 insertions(+)
 
 commit 8cd25c871609580425c6c4c9e5bc6ec8d40862a1
@@ -20396,7 +23241,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 ++-
+ gio/ginputstream.override | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)
 
 commit ed6b06315c17441b41c001d38537c904b8fe18de
@@ -20405,10 +23250,10 @@ Date: Sat May 9 00:02:33 2009 +0200
 
     Add docs for the gio.InputStream class
 
- docs/Makefile.am                    |    2 +
- docs/reference/pygio-classes.xml     |    1 +
- docs/reference/pygio-inputstream.xml |  730
- ++++++++++++++++++++++++++++++++++
+ docs/Makefile.am                    |   2 +
+ docs/reference/pygio-classes.xml     |   1 +
+ docs/reference/pygio-inputstream.xml | 730
+ +++++++++++++++++++++++++++++++++++
  3 files changed, 733 insertions(+)
 
 commit d58322b84d47da7905f95b43e9e0daf9f7c4b507
@@ -20419,9 +23264,9 @@ Date:   Mon May 4 23:40:28 2009 +0200
 
     wrap gio.InputStream.skip_async() and add a test.
 
- gio/ginputstream.override |   50
- ++++++++++++++++++++++++++++++++++++++++++++-
- tests/test_gio.py        |   20 ++++++++++++++++++
+ gio/ginputstream.override | 50
+ ++++++++++++++++++++++++++++++++++++++++++++++-
+ tests/test_gio.py        | 20 +++++++++++++++++++
  2 files changed, 69 insertions(+), 1 deletion(-)
 
 commit 2311187824d1b48a996ee2620fd3c9a63e3edd66
@@ -20433,9 +23278,9 @@ Date:   Mon May 4 15:46:49 2009 +0430
 
     Patch from bug #579275
 
- ChangeLog       |    8 ++++
- codegen/h2def.py |  133
- ++++++++++++++++++++++++++++++++++++++++++++----------
+ ChangeLog       |   8 ++++
+ codegen/h2def.py | 133
+ +++++++++++++++++++++++++++++++++++++++++++++----------
  2 files changed, 117 insertions(+), 24 deletions(-)
 
 commit 442ec5bb997bb7dab55baeea6e54e79d3ce0d3c1
@@ -20446,7 +23291,7 @@ Date:   Sat May 2 23:54:52 2009 +0300
 
     Fixes bug #581082.
 
- glib/glibmodule.c |   2 +-
+ glib/glibmodule.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit f466dca880cc6ea68b9fe236943eea7a07d33520
@@ -20455,10 +23300,10 @@ Date: Sun May 3 11:03:25 2009 +0200
 
     Add docs for the gio.LoadableIcon class
 
- docs/Makefile.am                     |    2 +
- docs/reference/pygio-classes.xml      |    1 +
- docs/reference/pygio-loadableicon.xml |  198
- +++++++++++++++++++++++++++++++++
+ docs/Makefile.am                     |   2 +
+ docs/reference/pygio-classes.xml      |   1 +
+ docs/reference/pygio-loadableicon.xml | 198
+ ++++++++++++++++++++++++++++++++++
  3 files changed, 201 insertions(+)
 
 commit eab4ebf7f6c82580b61205f34e1cfe535aeada60
@@ -20467,10 +23312,10 @@ Date: Sun May 3 01:21:55 2009 +0200
 
     Add docs for the gio.ThemedIcon class
 
- docs/Makefile.am                   |    2 +
- docs/reference/pygio-classes.xml    |   1 +
- docs/reference/pygio-themedicon.xml | 204
- +++++++++++++++++++++++++++++++++++
+ docs/Makefile.am                   |   2 +
+ docs/reference/pygio-classes.xml    |  1 +
+ docs/reference/pygio-themedicon.xml | 204
+ ++++++++++++++++++++++++++++++++++++
  3 files changed, 207 insertions(+)
 
 commit 22d7de8b620055f14b30f9c3c99160c8b4ebe672
@@ -20479,7 +23324,7 @@ Date:   Sat May 2 12:25:19 2009 +0200
 
     post release version bump to 2.17.1
 
- configure.ac |    2 +-
+ configure.ac | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit 282ac3c76e1e3513bd76f819f320ec56aba15d9e
@@ -20488,7 +23333,7 @@ Date:   Fri May 1 23:40:31 2009 +0200
 
     Fix the class title
 
- docs/reference/pygio-mountoperation.xml |    2 +-
+ docs/reference/pygio-mountoperation.xml | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)
 
 commit d8b70dec1e5c09b73ae277f4f5b246315841fb8e
@@ -20497,11 +23342,11 @@ Date: Fri May 1 22:24:33 2009 +0200
 
     Add docs for the gio.MountOperation class
 
- docs/Makefile.am                       |    2 +
- docs/reference/pygio-classes.xml       |    1 +
- docs/reference/pygio-constants.xml     |  107 +++++
- docs/reference/pygio-mountoperation.xml |  726
- +++++++++++++++++++++++++++++++
+ docs/Makefile.am                       |   2 +
+ docs/reference/pygio-classes.xml       |   1 +
+ docs/reference/pygio-constants.xml     | 107 +++++
+ docs/reference/pygio-mountoperation.xml | 726
+ ++++++++++++++++++++++++++++++++
  4 files changed, 836 insertions(+)
 
 commit fceea8e843e880f0469e454df23141e7dd2bc0cf
@@ -20510,8 +23355,8 @@ Date:   Thu Apr 30 22:13:06 2009 +0200
 
     Update NEWS, release 2.17.0
 
- NEWS |   93
- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ NEWS | 93
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  1 file changed, 93 insertions(+)
 
 commit 47389217d1a65a8e3f404d486c508cf5d3164756
@@ -20523,5 +23368,5 @@ Date:   Thu Apr 30 22:47:19 2009 +0300
     After the recent patch it would leak exception data if old argument
     order was used.  Properly decref the objects.
 
- gio/gfile.override |   4 ++++
+ gio/gfile.override | 4 ++++
  1 file changed, 4 insertions(+)
diff --git a/ChangeLog.pre-2.18 b/ChangeLog.pre-2.18
deleted file mode 100644 (file)
index 2fb8ef4..0000000
+++ /dev/null
@@ -1,3608 +0,0 @@
-=== ChangeLog discontinued ===
-
-2009-05-04  Siavash Safi  <siavash@siavashs.org>
-
-       Bug 579275 – Patch which removes dll api in headers and adds
-       a namespace option
-
-       * codegen/h2def.py: Add -n --namespace option and the code to remove
-       dll API in headers, Added documentation
-
-2009-04-17  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       Bug 568499 – CellRendererPixbuf stock-size property has wrong type
-
-       * gobject/pygtype.c (pyg_enum_get_value): Also accept long
-       integers.
-
-2009-04-15  Götz Waschk  <waschk@mandriva.org>
-
-       Bug 550231 – missing dep on libffi in pygobject-2.0.pc
-
-       * configure.ac: Define `LIBFFI_PC' subst.
-
-       * pygobject-2.0.pc.in:
-       * pygobject-2.0-uninstalled.pc.in: Use it.
-
-2009-04-15  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       Bug 555613 – gio.VolumeMonitor segfaults
-
-       * gio/gvolumemonitor.override (_wrap_g_volume_monitor_tp_new): New
-       function, return the singleton object.
-
-2009-04-14  James Westby  <jw+debian@jameswestby.net>
-
-       Bug 573753 – DeprecationWarning under python 2.6
-
-       * codegen/definitions.py (ReturnType.__init__): Don't pass
-       'type_name' argument to super __init__.
-
-2009-04-14  Krzesimir Nowak  <krnowak@svn.gnome.org>
-
-       Bug 576566 – several scripts from codegen directory are not
-       distributed
-
-       * codegen/Makefile.am (codegen_PYTHON): List several missing
-       scripts.
-
-2009-04-14  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       * gio/gfile.override: (_wrap_g_file_copy_async) change argument order
-       to keep it consistent with the other methods.
-
-2009-04-13  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       Bug 578870 – memory leak in gio.File.copy_async
-
-       * gio/gio.override (PyGIONotify): Add 'slaves' field.
-       (pygio_notify_new_slave): New function.
-       (pygio_notify_reference_callback): Recurse for slaves, if any.
-       (pygio_notify_free): Likewise.
-
-       * gio/gfile.override (file_progress_callback_marshal): Use new
-       chaining functionality to avoid leaking the second PyGIONotify
-       structure.  Rename 'callback' as 'progress_callback' for clarity.
-
-2009-04-12  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       * gio/gio.defs: (g_file_monitor) should accept None
-       for cancellable and set the default flag to G_FILE_MONITOR_NONE.
-
-2009-04-09  Jonathan Matthew  <jonathan@d14n.org>
-
-       Bug 575781 – pyg_notify_free needs to ensure it has GIL before calling
-       Py_XDECREF
-
-       * gio/gio.override:  Ensure we're holding the GIL before potentially
-       destroying the callback and data.
-
-2009-04-05  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       * gio/gfile.override:
-       (_wrap_g_file_set_display_name_async) Wrap new GFile method.
-       
-       * tests/test_gio.py: Test the above methods.
-
-2009-04-05  Tristan Hill  <stan@saticed.me.uk>
-
-       reviewed by: Gustavo J. A. M. Carneiro.
-
-       * glib/pygoptioncontext.c (pyg_option_get_context): Add a
-       semi-private method to return the option context C object from an
-       option context wrapper.  Used in gnome-python for fixing Bug
-       #507174.
-
-2009-04-05  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * gobject/pygtype.c (pyg_value_from_pyobject): Bug 577999 –
-       converting a negative long Python value to a GUINT64 GValue
-       doesn't error out as it should.
-
-2009-04-04  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       * gio/gfile.override:
-       (_wrap_g_file_set_attributes_async)
-       (_wrap_g_file_set_attributes_finish) Wrap new GFile methods.
-       
-       * tests/test_gio.py: Test the above methods.
-
-2009-03-31  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       * gio/gfile.override:
-       (_wrap_g_file_query_filesystem_info_async) Fix a typo.
-
-2009-03-31  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       * gio/gfile.override:
-       (_wrap_g_file_query_filesystem_info_async) Wrap new GFile method.
-
-2009-03-31  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       * gio/gio.defs: Add missing g_file_query_filesystem_info_async and
-       g_file_query_filesystem_info_finish
-
-2009-03-30  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       * gio/gfile.override: (_wrap_g_file_mount_mountable)
-       Swap kwargs names to reflect the code.
-
-2009-03-30  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       * gio/gfile.override: (_wrap_g_file_mount_enclosing_volume)
-       Swap kwargs names to reflect the code.
-
-2009-03-30  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       * gio/gfile.override:
-       (_wrap_g_file_find_enclosing_mount_async) Wrap new GFile method.
-
-2009-03-30  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       * gio/gfile.override:
-       (_wrap_g_file_eject_mountable) Wrap new GFile method.
-
-2009-03-30  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       * gio/gfile.override: (_wrap_g_file_copy) revert previous commit.
-
-2009-03-30  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       * gio/gfile.override: (_wrap_g_file_copy) callback cannot be optional.
-
-2009-03-29  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       * gio/gvolume.override: (_wrap_g_volume_mount) should accept None
-       for mount_operation.
-
-2009-03-29  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       * gio/gvolume.override: Swap kwargs names to reflect the code.
-
-2009-03-29  Tobias Mueller  <tobiasmue@gnome.org>
-
-       * ltihooks.py:
-       * pygtk.py:
-       * COPYING:
-       * gobject/pygparamspec.h:
-       * gobject/pygpointer.c:
-       * gobject/ffi-marshaller.h:
-       * gobject/pygtype.c:
-       * gobject/__init__.py:
-       * gobject/pygpointer.h:
-       * gobject/pygtype.h:
-       * gobject/pygflags.c:
-       * gobject/pyginterface.c:
-       * gobject/pygflags.h:
-       * gobject/pygboxed.c:
-       * gobject/gobjectmodule.c:
-       * gobject/pygenum.c:
-       * gobject/pyginterface.h:
-       * gobject/pygboxed.h:
-       * gobject/pygobject.c:
-       * gobject/constants.py.in:
-       * gobject/pygenum.h:
-       * gobject/propertyhelper.py:
-       * gobject/pygparamspec.c:
-       * gobject/ffi-marshaller.c:
-       * glib/pygmainloop.c:
-       * glib/pygoptioncontext.h:
-       * glib/pygmainloop.h:
-       * glib/pyglib-private.h:
-       * glib/__init__.py:
-       * glib/pygoptiongroup.c:
-       * glib/pygspawn.c:
-       * glib/pygmaincontext.c:
-       * glib/pygoptiongroup.h:
-       * glib/pygspawn.h:
-       * glib/pygmaincontext.h:
-       * glib/option.py:
-       * glib/pygsource.c:
-       * glib/glibmodule.c:
-       * glib/pygiochannel.h:
-       * glib/pygsource.h:
-       * glib/pyglib.c:
-       * glib/pyglib.h:
-       * glib/pyglib-python-compat.h:
-       * glib/pygoptioncontext.c:
-       * gio/gfileinfo.override:
-       * gio/gappinfo.override:
-       * gio/__init__.py:
-       * gio/gfileattribute.override:
-       * gio/gvolume.override:
-       * gio/gio.override:
-       * gio/ginputstream.override:
-       * gio/goutputstream.override:
-       * gio/unix.override:
-       * gio/gfile.override:
-       * gio/gvolumemonitor.override:
-       * gio/gapplaunchcontext.override:
-       * gio/giomodule.c:
-       * gio/gfileenumerator.override:
-       * gio/pygio-utils.c:
-       * gio/unixmodule.c:
-       * gio/pygio-utils.h:
-       * gio/gicon.override:
-       Update the address of the FSF, by replacing old bits of the address 
-       with new ones.
-       Fixes bug 577134
-
-2009-03-29  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       * gio/gio.defs: Add g_volume_should_automount
-
-2009-03-28  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       * gio/pygio-utils.[hc]: (strv_to_pylist) (pylist_to_strv) add a couple
-       of convinence functions to convert from/to a python list and an array
-       of strings.
-
-       * gio/Makefile.am
-       * gio/gdrive.override:
-       * gio/gio.override: Strip GDrive overrides and
-       wrap g_drive_enumerate_identifiers
-       
-       * tests/test_gio.py:
-       * gio/gvolume.override: wrap g_volume_enumerate_identifiers
-
-       * gio/gio.defs: add missing g_drive_get_identifier and
-       g_drive_enumerate_identifiers
-
-2009-03-22  Mark Lee  <marklee@svn.gnome.org>
-
-       Bug 559001 – Allow setting pytype wrapper class
-
-       initial patch by: John Ehresman  <jpe@wingware.com>
-
-       * gobject/pygtype.c (_wrap_g_type_wrapper__set_pytype): New function.
-
-       * tests/test_gtype.py (GTypeTest.assertPyType),
-       (GTypeTest.setInvalidPyType), (GTypeTest.testPyType),
-       (GTypeTest.testInvalidPyType): Two new testcases to test the above,
-       with accompanying helper methods.
-
-2009-03-22  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       * gio/gio.defs: Add g_file_enumerator_get_container, new in 2.18
-
-2009-03-22  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       * gio/gfileenumerator.override (_wrap_g_file_enumerator_close_async)
-       wrap new method.
-
-       * tests/test_gio.py (TestGFileEnumerator.testCloseFilesAsync):
-       Test the above.
-
-2009-03-09  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       * docs/reference/Changelog: Create a dedicated Changelog for the docs
-       and move the latest entries in there.
-
-2009-02-20  James Henstridge  <james@jamesh.id.au>
-
-       * ltihooks.py: pull in changes from pygtk (updating license header
-       from GPL to LGPL).
-
-2009-02-18  Andre Klapper  <a9016009@gmx.de>
-
-       * gobject/pygobject.h:
-       Change comment to avoid false positives when grep'ing for 
-       deprecated gtk functions
-
-2009-02-17  Gustavo J. A. M. Carneiro  <gjc@inescporto.pt>
-
-       * gio/gfile.override, gio/gio.defs, gio/gio.override: Bug 556250
-       again.  I screwed up and gave misinformation about how to fix it.
-       It must be pyg_begin/end_allow_threads, pyg_block/unblock_threads
-       is only to be used for async callbacks.
-
-2009-02-10  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       Bug 556250 – non-async functions don't release python locks before
-       calling blocking C functions
-
-       * gio/gio.override:
-       * gio/gfile.override:
-       * gio/gio.defs: release the thread lock.
-
-2009-02-10  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       * gio/gio.defs:
-       * gio/gio-types.defs:
-       * gio/unix.defs: Add 2.18 gio API.
-
-2009-02-08  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       Bug 568427 – "gio.Error: Too many open files" without too many
-       open files
-       
-       * gobject/pygtype.c (_wrap_g_type_wrapper__get_name):
-       * gobject/gobjectmodule.c (get_type_name_for_class):
-       * gobject/pygobject.c (build_parameter_list), (PyGProps_length):
-       * gio/gfileinfo.override (_wrap_g_file_info_list_attributes):
-       * gio/gio.override (_wrap_g_content_type_guess):
-       * gio/gfile.override (_wrap__file_init), (_wrap_g_file_load_contents)
-       (_wrap_g_file_load_contents_finish): Remove some memory leaks.
-       
-       * gio/gio.defs: add (caller-owns-return #t) all over the place to
-       prevent memory leaks.
-       
-       patch contributed by Paul Pogonyshev, Paolo Borelli and
-       Gian Mario Tagliaretti.
-
-2009-02-06  Murray Cumming  <murrayc@murrayc.com>
-
-       * codegen/h2def.py DefsWriter::write_enum_defs(): Prevent an exception 
-       when the prefix is empty.
-
-2009-01-29  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       Bug 569350 – Inconsistent use of tabs and spaces in pygtk.py
-
-       * pygtk.py: Replace all tabs with spaces.
-
-2009-01-29  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       Bug 567792 – gio.InputStream.read_async can cause memory
-       corruption
-
-       * gio/gio.override (py_decref_callback): Remove (unused now).
-       (pygio_notify_allocate_buffer, pygio_notify_attach_to_result)
-       (pygio_notify_get_attached): New functions.
-       (async_result_callback_marshal): Attach to the result object if
-       asked and then don't free self.  Fix reference leak (spotted by
-       Gustavo).
-
-       * gio/ginputstream.override (async_result_callback_marshal_read):
-       Remove.  Use new attachment functionality in
-       async_result_callback_marshal() instead.
-       (_wrap_g_input_stream_read_async): Use the new functions (also
-       those mentioned in the cleanup log below).
-       (_wrap_g_input_stream_read_finish): Use the new functions.
-
-2009-01-27  Daniel Elstner  <danielk@openismus.com>
-
-       * codegen/docextract_to_xml.py (escape_text): Do not escape the
-       ampersand "&" in entity references (bug #568485).  Replace some
-       unusual entity references in the output with their literal values.
-
-2009-01-14  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       Bug 566571 – gtk.Buildable interface method override is not
-       recognized
-
-       * gobject/gobjectmodule.c (pyg_type_add_interfaces): New function,
-       break out code repetition out of pyg_type_register().
-
-       * tests/test_subtype.py
-       (TestSubType.test_gtk_buildable_virtual_method): New test
-       case (inactive).
-
-2009-01-14  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       Bug 566706 – cleanup GIO overrides
-
-       * gio/gio.override (pygio_notify_new)
-       (pygio_notify_using_optional_callback)
-       (pygio_notify_callback_is_valid_full)
-       (pygio_notify_callback_is_valid)
-       (pygio_notify_reference_callback): New functions.
-       (pygio_notify_free): Rename from pygio_free_notify() and extend.
-       (async_result_callback_marshal): Warn if new `referenced' field is
-       not set (programming error).
-       (_wrap_g_drive_eject, _wrap_g_drive_poll_for_media)
-       (_wrap_g_mount_unmount, _wrap_g_mount_eject)
-       (_wrap_g_mount_remount): Lots of cleanup: use new functions
-       instead of repeating code, unify and fix error handling.
-
-       * gio/gfile.override (_wrap_g_file_read_async)
-       (_wrap_g_file_load_contents_async)
-       (_wrap_g_file_enumerate_children_async)
-       (_wrap_g_file_mount_mountable, _wrap_g_file_unmount_mountable)
-       (_wrap_g_file_mount_enclosing_volume, _wrap_g_file_copy)
-       (_wrap_g_file_copy_async, _wrap_g_file_move)
-       (_wrap_g_file_append_to_async, _wrap_g_file_create_async)
-       (_wrap_g_file_replace_async, _wrap_g_file_query_info_async)
-       (_wrap_g_file_replace_contents_async): Similar cleanup.
-
-       * gio/gfileenumerator.override
-       (_wrap_g_file_enumerator_next_files_async): Similar cleanup.
-
-       * gio/gicon.override (_wrap_g_loadable_icon_load_async): Similar
-       cleanup.
-
-       * gio/ginputstream.override (_wrap_g_input_stream_close_async):
-       Similar cleanup.
-
-       * gio/goutputstream.override (_wrap_g_output_stream_write_async)
-       (_wrap_g_output_stream_close_async): Similar cleanup.
-
-       * gio/gvolume.override (_wrap_g_volume_mount)
-       (_wrap_g_volume_eject): Similar cleanup.
-
-       * tests/test_gio.py (TestFile.test_copy_async): Fix the test.
-
-2009-01-09  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * gobject/gobjectmodule.c (pyg_type_register): Add a comment
-       explaining why the two for loops for registering interfaces.
-
-2009-01-07  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       Bug 566744 – _wrap_g_input_stream_read_async() argument parsing
-       has incorrect keyword args
-
-       * gio/ginputstream.override (_wrap_g_input_stream_read_async): Fix
-       keyword list to be in sync with positional arguments.
-
-2009-01-06  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       Bug 566737 – Bad -I ordering can break build
-
-       * Makefile.am:
-       * gobject/Makefile.am:
-       * gio/Makefile.am:
-       * tests/Makefile.am:
-       Commit a patch from [dmacks at netspace dot org]
-
-2009-01-04  Mads Chr. Olesen  <gnome-bugzilla@shiyee.dk>
-
-       * gio/gio.defs (gio.File.copy_async, gio.File.copy_finish): Define
-       methods.
-
-       * gio/gfile.override (_wrap_g_file_copy_async): New function.
-
-       * tests/test_gio.py (TestFile.test_copy_async): Test the methods.
-
-2009-01-04  Przemysław Grzegorczyk  <pgrzegorczyk@gmail.com>
-
-       Bug 563714 – GNOME Goal: Clean up GLib and GTK+ includes
-
-       * gobject/generate-constants.c:
-       * glib/pygspawn.c: Only include toplevel <glib.h>.
-
-2009-01-04  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       Bug 564018 – pygobject libtool-2.2 patch
-
-       * configure.ac: Apply the patch provided by Cygwin Ports
-       maintainer.
-
-2009-01-04  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       * configure.ac: Branch, bump version to 2.17.0.
-
-=== 2.16.0 ===
-2008-12-24  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       Bug 547119 – gobject.timeout_add_seconds() not found in docs
-
-       * docs/reference/pyglib-functions.xml (glib.timeout_add_seconds):
-       Describe.
-
-2008-12-21  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       Bug 564102 – _wrap_g_output_stream_write_async not adding a
-       reference to the buffer passed
-
-       * gio/gio.override (pygio_notify_copy_buffer): New function.
-       (pygio_free_notify): Free new `buffer' field if it is set.
-
-       * gio/goutputstream.override (_wrap_g_output_stream_write_async):
-       Copy the buffer with new pygio_notify_copy_buffer() and use the
-       copy for g_output_stream_write_async() call.
-
-       * gio/gfile.override (_wrap_g_file_replace_contents_async): Same
-       as for _wrap_g_output_stream_write_async().
-
-2008-12-03  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       * glib/pyglib.c (pyglib_error_check): Test if `domain' is not-null
-       before using it (avoids segfaults, see bug #561826).
-
-2008-10-31  John Finlay  <finlay@moeraki.com>
-
-       * codegen/__init__.py (__all__): Add defsgen to __all__ list.
-
-       * codegen/h2def.py (find_enum_defs): Strip out # directives from
-       enum defintions.
-       (clean_func): Change ' * G_CONST_RETURN * ' to '** '
-
-       * codegen/Makefile.am (codegen_PYTHON): Add defsgen.py
-
-       * codegen/defsgen.py (typecode): Use the passed in prefix as a
-       hint when creating a typecode.
-       (split_prefix,write_enum_defs,_write_obj_helper): Add function to
-       use passed in prefix as a hint when splitting an object name into
-       module and name.
-
-       * codegen/h2def.py (DefsWriter.write_enum_defs): Make sure the
-       prefix ends with a _ i.e. really handle the GDK_FONT_FONT,
-       GDK_FONT_FONTSET case.
-
-2008-09-12  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       * gio/goutputstream.override
-       (g_output_stream_write_all): use gsize instead of gssize.
-
-2008-09-10  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       Bug 530935 – pygobject_set_properties doesnt release the GIL
-
-       * gobject/pygobject.c (pygobject_set_properties): Reuse
-       set_property_from_pspec() which release GIL for us.  Also make
-       sure that g_object_thaw_notify() is called even after error.
-
-2008-09-09  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       Bug 549517 – add __repr__ to gio.Drive, gio.Mount and gio.Volume
-
-       * gio/gio.override (_wrap_g_drive_tp_repr, _wrap_g_mount_tp_repr):
-       New functions.
-
-       * gio/gvolume.override (_wrap_g_volume_tp_repr): New function.
-
-2008-09-09  Loïc Minier  <lool@dooz.org>
-
-       Bug 551227 – Missing AC_CONFIG_MACRO_DIR([m4])
-
-       * configure.ac: Add AC_CONFIG_MACRO_DIR.
-
-2008-09-08  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       Bug 551056 – make codegen not import when corresponding argument
-       types are not registered
-
-       * codegen/override.py (import_pat): Add support for optional 'for'
-       clause.
-       (Overrides.__parse_override): Handle it.
-
-       * codegen/codegen.py (SourceWriter.write_imports)
-       (SourceWriter.write_object_imports): Adapt for changes in
-       get_imports() return value.
-       (is_registered_object): New function.
-
-2008-09-07  Frederic Peters  <fpeters@0d.be>
-
-       * gio/gfile.override (_wrap_g_file_load_contents)
-       (_wrap_g_file_load_contents_finish): Fix typos breaking
-       compilation (bug #551212).
-
-2008-09-07  Jonathan Matthew  <jonathan@d14n.org>
-
-       Bug 551059 – GFile load_contents methods chop data at first \0
-
-       * gio/gfile.override:
-       Use 's#' (length specified) rather than 's' when constructing
-       result values in load_contents and load_contents_finish.
-
-2008-09-03  Johan Dahlin  <johan@gnome.org>
-
-       * configure.ac:
-       Post release version bump
-
-=== 2.15.4 ===
-2008-09-03  Johan Dahlin  <johan@gnome.org>
-
-       * NEWS: Update
-
-2008-09-03  Loïc Minier  <lool@dooz.org>
-
-       * gobject/pygpointer.c: (pyg_register_pointer):
-       Fix typo (s/&type/type) introduced in r886 causing weird crashes on
-       x86-64; bug #550463.
-
-2008-09-01  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       * codegen/argtypes.py: add G_TYPE_CLOSURE boxed type in codegen.
-
-2008-08-31  Johan Dahlin  <johan@gnome.org>
-
-       * configure.ac:
-       Post release version bump
-
-=== 2.15.3 ===
-2008-08-31  Johan Dahlin  <johan@gnome.org>
-
-       * NEWS: Update
-
-2008-08-30  Gustavo J. A. M. Carneiro  <gjc@inescporto.pt>
-
-       * glib/pyglib.h: * gobject/pygobject.c: Fix memory problems
-       reported by valgrind due to invalid tp_basicsize in
-       PyGPropsDescr_Type.  Closes #549945.
-
-2008-08-28  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       Bug 549191 – Constructor of gtk.TreeView raises TypeError when
-       model is None
-
-       * gobject/pygtype.c (pyg_value_from_pyobject): Handle None in
-       G_TYPE_INTERFACE branch.
-
-2008-08-28  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       Bug 549351 – an unitialized variable in PyGLib
-
-       * glib/pygmainloop.c (pyg_main_loop_init): Initialize
-       `is_running'.
-
-2008-08-28  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       Bug 547633 – cannot create new threads when pygtk is used
-
-       * glib/pyglib.c (_pyglib_notify_on_enabling_threads): New
-       function.
-       (pyglib_enable_threads): Invoke all callbacks added with new
-       _pyglib_notify_on_enabling_threads().
-
-       * gobject/gobjectmodule.c (pyg_note_threads_enabled): New
-       function (callback for new _pyglib_notify_on_enabling_threads()).
-       (PYGLIB_MODULE_START): Initialize
-       'pygobject_api_functions.threads_enabled' and also watch for
-       thread being enabled later on.
-
-2008-08-28  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       Bug 547088 – wrap g_content_types_get_registered()
-
-       * gio/gio.override (_wrap_g_drive_get_volumes): Fix refleak.
-       (_wrap_g_content_types_get_registered): New function.
-
-       * gio/gfileenumerator.override (_wrap_g_file_enumerator_next_files_finish):
-       Fix refleak.
-
-       * gio/gvolumemonitor.override (_wrap_g_volume_monitor_get_connected_drives):
-       Fix refleak.
-       (_wrap_g_volume_monitor_get_volumes): Likewise.
-       (_wrap_g_volume_monitor_get_mounts): Likewise.
-
-2008-08-28  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       Bug 547494 – gio.InputStream.read() looks broken
-
-       * gio/gio.defs (gio.InputStream.read_part): Rename from read(),
-       document.
-       (gio.InputStream.read): Rename from read_all(), document.
-       (gio.OutputStream.write_part): Rename from write(), document.
-       (gio.OutputStream.write): Rename from write_all(), document.
-
-       * gio/ginputstream.override (_wrap_g_input_stream_read): Fix
-       several bugs.
-       (_wrap_g_input_stream_read_all): New function.
-
-       * gio/goutputstream.override (_wrap_g_output_stream_write_all):
-       New function.
-
-       * tests/test_gio.py (TestInputStream.testRead): Add more tests.
-       (TestInputStream.test_read_part): New test.
-       (TestInputStream._read_in_loop): New helper method.
-       (TestOutputStream.test_write_part): New test.
-
-2008-08-16  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       * gio/gfile.override (_wrap_g_file_enumerate_children_async): Fix
-       keywords getting out of sync with actual argument order.
-
-2008-08-13  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       Bug 547495 – wrap four important asynchronous methods in gio.Drive
-       and gio.Mount
-
-       * gio/gio.defs (gio.Drive.eject, gio.Drive.poll_for_media)
-       (gio.Mount.remount): Document.
-
-       * gio/gio.override (_wrap_g_drive_eject)
-       (_wrap_g_drive_poll_for_media, _wrap_g_mount_eject)
-       (_wrap_g_mount_remount): New functions.
-
-2008-08-12  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       Bug 547484 – wrap gio.DataInputStream.read_line and ...read_until
-
-       * tests/test_gio.py (TestDataInputStream): New test case.
-
-       * gio/gio.defs (gio.DataInputStream.read_line)
-       (gio.DataInputStream.read_until): Document.
-
-       * gio/ginputstream.override (_wrap_g_data_input_stream_read_line)
-       (_wrap_g_data_input_stream_read_until): New functions.
-
-2008-08-12  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       Bug 547354 – wrap a few memory stream methods
-
-       * gio/ginputstream.override (_wrap_g_memory_input_stream_add_data):
-       New function.
-
-       * gio/gio.defs (gio.MemoryOutputStream.get_contents): Rename from
-       get_data() to avoid name clash.
-
-       * gio/goutputstream.override (_wrap_g_memory_output_stream_new)
-       (_wrap_g_memory_output_stream_get_data): New functions.
-
-       * tests/test_gio.py (TestMemoryInputStream)
-       (TestMemoryOutputStream): New test cases.
-
-2008-08-12  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       * gio/gio.override: Ignore `g_io_module*' and `g_io_scheduler_*'.
-
-2008-08-11  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       Bug 540376 – No TypeError raised when type is None
-
-       * gobject/gobjectmodule.c (pyg_signal_new): Add check on second
-       argument type.
-
-       * tests/test_signal.py (TestSignalCreation): New test case.
-
-2008-08-11  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       Bug 547104 – improve type wrapper creation
-
-       * gio/gappinfo.override (_wrap_g_app_info_tp_richcompare)
-       (_wrap_g_app_info_tp_repr): New functions.
-
-       * tests/test_gio.py (TestAppInfo.test_eq): New test.
-
-2008-08-11  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       Bug 547104 – improve type wrapper creation
-
-       * gobject/pygobject.c (pygobject_register_class): Use new
-       pygobject_inherit_slots() to propagate custom slots in normal
-       types too.
-       (pygobject_inherit_slots): New function, break out of
-       pygobject_new_with_interfaces() and rewrite a bit.
-       (pygobject_find_slot_for): Add new argument that can forbid
-       overriding non-NULL slots.
-
-       * gio/gicon.override (pygio_do_icon_richcompare): Remove, the code
-       is now directly in _wrap_g_icon_tp_richcompare().
-       (_wrap_g_file_icon_tp_richcompare, _wrap_g_file_icon_tp_hash)
-       (_wrap_g_themed_icon_tp_richcompare, _wrap_g_themed_icon_tp_hash):
-       Remove, duplicating code in this way is not needed anymore.
-
-2008-08-10  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       Bug 546120 – make gio.File more Pythonic
-
-       * gio/gfile.override (_wrap_g_file_tp_richcompare)
-       (_wrap_g_file_tp_hash, _wrap_g_file_tp_repr): New functions.
-
-       * tests/test_gio.py (TestFile.test_eq, TestFile.test_hash): New
-       tests.
-
-2008-08-10  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       Bug 547104 – improve runtime type wrapper creation
-
-       * gobject/pygobject.c (pygobject_new_with_interfaces): Use new
-       pygobject_find_slot_for() for `tp_richcompare', `tp_compare`,
-       `tp_hash', `tp_iter', `tp_repr', `tp_str' and `tp_print'.
-       (pygobject_find_slot_for): New static function.
-
-2008-08-10  Jonathan Matthew  <jonathan@d14n.org>
-
-       Bug 547134 – fix docstring line length
-
-       * gio/gio.defs:
-       Fix docstring line lengths so they don't wrap across lines in an 80
-       column terminal.
-
-2008-08-10  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       * gio/gio.defs:
-       Add GFile.query_default_handler which was missing from the defs.
-
-2008-08-10  Jonathan Matthew  <jonathan@d14n.org>
-
-       Bug 547067 – add File.replace_contents, replace_contents_async,
-       replace_contents_finish.
-
-       * gio/gfile.override:
-       * gio/gio.defs:
-       * tests/test_gio.py:
-       Add overrides, docs, and tests for File.replace_contents,
-       replace_contents_async, and replace_contents_finish.
-
-2008-08-09  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       * tests/test_gicon.py (TestThemedIcon.test_constructor): Fix to
-       not use `use_default_fallbacks' property (it's new).
-
-2008-08-09  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       Bug 546135 – GIcon and implementations improvements
-
-       * gio/gio.defs (g_file_icon_new): Change from method of gio.File
-       to constructor of gio.FileIcon.
-
-       * tests/test_gicon.py (TestIcon.test_eq, Test_Eq.test_hash)
-       (TestLoadableIcon.setUp): Adapt accordingly.
-       (TestFileIcon): New test case.
-
-2008-08-09  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       Bug 546591 – File.copy progress_callback does not work
-
-       * gio/gfile.override (file_progress_callback_marshal): Use
-       PyObject_CallFunction() instead of PyEval_CallFunction().  Use "K"
-       instead of "k" (the latter is not correct for 32-bit platforms).
-       Don't free 'notify' here.
-       (_wrap_g_file_copy): Free 'notify'.
-       (_wrap_g_file_move): Likewise.
-
-       * gio/gio.override (pygio_free_notify): New function.
-       (async_result_callback_marshal): Use it.
-
-       * tests/test_gio.py (TestFile.test_copy_progress.progress): New
-       test.
-
-2008-08-09  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       Bug 546135 – GIcon and implementations improvements
-
-       * gio/gio.defs (gio.LoadableIcon.load)
-       (gio.LoadableIcon.load_async, gio.LoadableIcon.load_finish):
-       Document.
-
-       * gio/Makefile.am:
-       * gio/gicon.override: New file: parts of 'gio.override', three
-       methods of gio.LoadableIcon and gio.ThemedIcon constructor.
-
-       * gio/gio.override: Move over all icon-related overrides to
-       'gicon.override'.
-
-       * tests/Makefile.am:
-       * tests/test_gicon.py: New file: parts of 'test_gio.py' and
-       several new gio.Icon tests.
-
-       * tests/test_gio.py (TestThemedIcon): Move over to
-       'test_gicon.py'.
-
-2008-08-07  Jonathan Matthew  <jonathan@d14n.org>
-
-       Bug 546734 – Missing Py_INCREFs for some file async methods
-
-       * gio/gfile.override:
-       Increment refcounts on callbacks and callback data for
-       append_to_async, create_async, replace_async, query_info_async and
-       load_contents_async as for all other async methods.
-
-2008-08-06  Johan Dahlin  <johan@gnome.org>
-
-       * gio/gfile.override:
-       * gio/gio.defs:
-       Move the progress callback for move/copy so it's consistent with
-       the documentation and positional arguments. Update documentation as well
-
-2008-08-06  Johan Dahlin  <johan@gnome.org>
-
-       * glib/pyglib.c (pyglib_enable_threads):
-       * gobject/gobjectmodule.c (pyg_threads_init),
-       (pygobject_enable_threads):
-       Add a pygobject_enable_threads wrapper around pyglib_threads_enable
-       and return 0/-1 which existing gobject based applications expect.
-
-2008-08-06  Johan Dahlin  <johan@gnome.org>
-
-       * glib/pyglib.c (pyglib_init):
-       return in case of error instead of trying to access the internal
-       types.
-
-2008-08-06  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       * gio/gio.override: Add 'pygio_do_icon_richcompare' prototype to
-       header.
-       (_wrap_g_file_icon_tp_repr, _wrap_g_themed_icon_tp_repr): Fix
-       return value type in signature.
-
-2008-08-05  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       Bug 546135 – GIcon and implementations improvements
-
-       * gio/gio-types.defs (FileIcon): New 'define-object'.
-
-       * gio/gio.override (pygio_do_icon_richcompare)
-       (_wrap_g_icon_tp_richcompare, _wrap_g_icon_tp_hash)
-       (_wrap_g_file_icon_tp_richcompare, _wrap_g_file_icon_tp_hash)
-       (_wrap_g_file_icon_tp_repr, _wrap_g_themed_icon_tp_richcompare)
-       (_wrap_g_themed_icon_tp_hash, _wrap_g_themed_icon_tp_repr): New
-       functions.
-
-2008-08-03  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       Bug 546046 – Wrap GFile.replace_async and query_info_async
-
-       * tests/test_gio.py:
-       * gio/gfile.override:
-       * gio/gio.defs:
-       Wrap GFile.replace_async and query_info_async with docs and test.
-
-2008-08-03  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       * glib/pyglib.h:
-       * glib/pyglib.c (pyglib_enable_threads): Change return value from
-       'gboolean' to 'int' and changed semantics to Pythonic: restores
-       backwards compatibility.
-
-       * gobject/gobjectmodule.c (pyg_threads_init): Treat return value
-       accordingly (bug #544946).
-
-2008-08-02  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       Bug 546020 – Wrap GFile.create_async
-
-       * tests/test_gio.py:
-       * gio/gfile.override:
-       * gio/gio.defs:
-       Wrap GFile.create_async with docs and test
-
-2008-08-02  Johan Dahlin  <johan@gnome.org>
-
-       * codegen/docgen.py:
-       Remove SGML support, require python 2.4, modernize,
-       PEP-8ify. Make it run on gio.
-
-       * codegen/definitions.py:
-       Make property iterable
-
-       * gio/gio.defs:
-       Include the gio-types.defs file.
-
-2008-08-02  Johan Dahlin  <johan@gnome.org>
-
-       * glib/glibmodule.c (pyglib_set_prgname):
-       * glib/pygoptioncontext.c (pyg_option_context_init),
-       (pyg_option_context_set_help_enabled),
-       (pyg_option_context_set_ignore_unknown_options),
-       (pyg_option_context_set_main_group),
-       (pyg_option_context_add_group):
-       * glib/pygoptiongroup.c (arg_func), (pyg_option_group_add_entries),
-       (pyg_option_group_set_translation_domain),
-       (pyg_option_group_compare), (pyglib_option_group_register_types):
-       Fix compilation warnings, clean up style and indentation.
-
-2008-08-02  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       Bug 545959 – Wrap GFile.append_to_async
-
-       * tests/test_gio.py:
-       * gio/gfile.override:
-       * gio/gio.defs:
-       Wrap GFile.append_to_async with docs and test
-
-2008-08-02  Johan Dahlin  <johan@gnome.org>
-
-       * gio/gfileinfo.override:
-       * gio/gio.override:
-       * glib/glibmodule.c (pyglib_get_current_time):
-       * glib/pyglib.c (pyglib_float_from_timeval):
-       * glib/pyglib.h:
-       Add pyglib_float_from_timeval and use it
-
-2008-08-02  Johan Dahlin  <johan@gnome.org>
-
-       * docs/Makefile.am:
-       * docs/reference/pyglib-constants.xml:
-       * docs/reference/pyglib-functions.xml:
-       * docs/reference/pyglib-maincontext.xml:
-       * docs/reference/pyglib-mainloop.xml:
-       * docs/reference/pygobject-classes.xml:
-       * docs/reference/pygobject-constants.xml:
-       * docs/reference/pygobject-functions.xml:
-       * docs/reference/pygobject-maincontext.xml:
-       * docs/reference/pygobject-mainloop.xml:
-       Separate the glib and gobject bindings in the manual.
-
-2008-08-02  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       Bug 545920 – Wrap GFile.query_writable_namespaces
-
-       * tests/test_gio.py:
-       * gio/gfile.override:
-       * gio/gio.defs:
-       Wrap GFile.query_writable_namespaces with docs and test
-
-2008-08-02  Johan Dahlin  <johan@gnome.org>
-
-       * gio/gio.defs:
-       * gio/gfile.override:
-       * tests/test_gio.py:
-       Wrap gio.File.move
-
-2008-08-02  Johan Dahlin  <johan@gnome.org>
-
-       * gio/Makefile.am:
-       * gio/gfile.override:
-       * gio/gio.defs:
-       * gio/gio.override:
-       * gio/gvolume.override:
-       Wrap gio.Volume.mount and gio.Volume.eject
-
-2008-08-01  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       * gio/gio.defs:
-       Add docstring for gio.FileInfo.list_attributes
-
-2008-08-01  Johan Dahlin  <johan@gnome.org>
-
-       Bug 545861 – g_file_info_get_modification_time is missing
-       * gio/gfileinfo.override:
-       * gio/gio.defs:
-       * tests/test_gio.py:
-       Wrap, add test and documentation
-
-2008-08-01  Johan Dahlin  <johan@gnome.org>
-
-       Bug 545846 – g_vfs_get_supported_uri_schemes is missing
-
-       * gio/gio.defs:
-       * gio/gio.override:
-       * tests/test_gio.py:
-       Wrap, add test and documentation
-
-2008-08-01  Johan Dahlin  <johan@gnome.org>
-
-       * glib/glibmodule.c (pyglib_set_application_name):
-       Use %r instead of %s, this is not python!
-
-2008-07-31  Johan Dahlin  <johan@gnome.org>
-
-       * glib/glibmodule.c (pyglib_set_prgname)
-       (pyglib_set_application_name): Use METH_O instead of METH_VARARGS.
-       (_glib_functions): Add doc strings for idle_add, timeout_add,
-       timeout_add_seconds, io_add_watch, child_watch_add, source_remove,
-       main_depth and main_context_default.
-
-2008-07-29  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       * tests/test_gio.py:
-       * gio/gfileattribute.override:
-       * gio/gio.override:
-       * gio/gio.defs:
-       * gio/gfile.override:
-       * gio/Makefile.am: Wrap new object gio.FileAttributeInfo,
-       g_file_set_attribute and g_file_query_settable_attributes methods.
-
-2008-07-29  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       * gio/unix-types.defs: Wrap gio.unix.DesktopAppInfo
-
-       * gio/gappinfo.override:
-       * gio/gio.override:
-       * gio/gio.defs:
-       * gio/gapplaunchcontext.override:
-       * gio/Makefile.am: Wrap g_app_info_launch_uris,
-       g_app_info_launch, g_app_launch_context_get_display and
-       g_app_launch_context_get_startup_notify_id
-
-       * gio/pygio-utils.c:
-       * gio/pygio-utils.h: Add a couple of useful function to reduce the
-       code in wrapped methods.
-
-2008-07-29  Johan Dahlin  <johan@gnome.org>
-
-       * examples/gio/downloader.py:
-       * gio/giomodule.c (init_gio):
-       Add gio.FILE_ATTRIBUTE_* constants and update the examples to use them.
-
-2008-07-29  Johan Dahlin  <johan@gnome.org>
-
-       * examples/gio/downloader.py:
-       Add a new example
-
-       * gio/ginputstream.override:
-       Use a string internally instead of a PyStringObject when
-       in read_async. Create a new python string in finish and
-       honor the number of bytes read.
-
-2008-07-28  Johan Dahlin  <johan@gnome.org>
-
-       * glib/pyglib-python-compat.h:
-       * gobject/pygobject-private.h:
-       Move all compatibility into the same place, fixes build
-       on python 2.4.
-
-2008-07-27  Johan Dahlin  <johan@gnome.org>
-
-       * glib/option.py:
-       Remove tabs. Use sys.exc_info()[1] to fetch the exception value
-
-       * gobject/__init__.py:
-       * gobject/propertyhelper.py:
-       Import gobject._gobject instead of just gobject.
-
-       * gobject/Makefile.am:
-       * gobject/constants.py.in:
-       * gobject/generate-constants.c (main):
-       Don't add long suffix if python >= 3.0
-
-2008-07-27  Johan Dahlin  <johan@gnome.org>
-
-       * glib/pyglib-python-compat.h:
-       * gobject/gobjectmodule.c (pyg_object_new),
-       (pyg__install_metaclass):
-       * gobject/pygboxed.c (pyg_boxed_dealloc), (pyg_boxed_init),
-       (pyg_register_boxed):
-       * gobject/pygenum.c (pyg_enum_reduce):
-       * gobject/pyginterface.c (pyg_interface_init),
-       (pyg_register_interface):
-       * gobject/pygobject.c (pygobject_get_inst_data),
-       (pygobject_register_class), (pygobject_new_with_interfaces),
-       (pygobject_dealloc), (pygobject_repr), (pygobject_emit),
-       (pygobject_chain_from_overridden), (pygobject_weak_ref_notify):
-       * gobject/pygparamspec.c (pygobject_paramspec_register_types):
-       * gobject/pygpointer.c (pyg_pointer_dealloc), (pyg_pointer_init),
-       (pyg_register_pointer):
-       * gobject/pygtype.c (pyg_type_from_object),
-       (pyg_value_array_from_pyobject), (pyg_value_from_pyobject),
-       (pyg_object_descr_doc_get):
-       Use the Py_TYPE macro everywhere.
-
-2008-07-27  Johan Dahlin  <johan@gnome.org>
-
-       * glib/pyglib-python-compat.h:
-       Add a Py_TYPE macro for accessing ob_type.
-       * glib/glibmodule.c (pyglib_register_constants):
-       * gobject/gobjectmodule.c (pygobject__g_instance_init),
-       (pyg_integer_richcompare):
-       * gobject/pygenum.c (pyg_enum_repr), (pyg_enum_from_gtype),
-       (pyg_enum_add), (pyg_enum_get_value_name),
-       (pyg_enum_get_value_nick):
-       * gobject/pygflags.c (pyg_flags_repr), (pyg_flags_from_gtype),
-       (pyg_flags_add), (pyg_flags_and), (pyg_flags_or), (pyg_flags_xor),
-       (pyg_flags_get_first_value_name), (pyg_flags_get_first_value_nick),
-       (pyg_flags_get_value_names), (pyg_flags_get_value_nicks):
-       Use Py_TYPE and PyLong macros to access struct fields
-
-2008-07-27  Johan Dahlin  <johan@gnome.org>
-
-       * gobject/gobjectmodule.c (pyg_param_spec_from_object),
-       (add_properties), (pyg_signal_new), (pyg_signal_list_ids),
-       (pyg_signal_lookup), (pyg_signal_query):
-       * gobject/pygenum.c (pyg_enum_richcompare), (pyg_enum_new),
-       (pyg_enum_from_gtype), (pyg_enum_add), (pyg_enum_reduce),
-       (pygobject_enum_register_types):
-       * gobject/pygflags.c (pyg_flags_richcompare), (pyg_flags_new),
-       (pyg_flags_from_gtype), (pyg_flags_add), (pyg_flags_and),
-       (pyg_flags_or), (pyg_flags_xor), (pygobject_flags_register_types):
-       * gobject/pygobject-private.h:
-       * gobject/pygobject.c (pygobject_disconnect_by_func),
-       (pygobject_handler_block_by_func),
-       (pygobject_handler_unblock_by_func), (pygobject_get_refcount):
-       * gobject/pygparamspec.c (pyg_param_spec_getattr):
-       * gobject/pygtype.c (_wrap_g_type_wrapper__get_depth),
-       (pyg_type_from_object), (pyg_enum_get_value),
-       (pyg_flags_get_value), (pyg_value_from_pyobject),
-       (pyg_value_as_pyobject):
-       Use _PyLong macros.
-
-2008-07-27  Johan Dahlin  <johan@gnome.org>
-
-       * gobject/pygboxed.c (pygobject_boxed_register_types):
-       * gobject/pygenum.c (pygobject_enum_register_types):
-       * gobject/pygflags.c (pygobject_flags_register_types):
-       * gobject/pygobject.c (pygobject_object_register_types):
-       * gobject/pygparamspec.c (pygobject_paramspec_register_types):
-       * gobject/pygpointer.c (pygobject_pointer_register_types):
-       * gobject/pygtype.c (pygobject_type_register_types):
-       Use PYGLIB_DEFINE_TYPE macro and move struct field initialization
-       to the registration methods.
-
-2008-07-27  Johan Dahlin  <johan@gnome.org>
-
-       * glib/pyglib-python-compat.h:
-       Add _PyUnicode_Type macro
-
-       * gobject/gobjectmodule.c (pyg_type_name), (pyg_type_from_name),
-       (_pyg_signal_accumulator), (add_signals), (add_properties),
-       (get_type_name_for_class), (pyg_signal_list_names),
-       (pyg_signal_name), (pyg_signal_query), (pyg_object_new),
-       (pyg_add_emission_hook), (pyg_remove_emission_hook):
-       * gobject/pygboxed.c (pyg_boxed_repr):
-       * gobject/pygenum.c (pyg_enum_repr), (pyg_enum_add),
-       (pyg_enum_get_value_name), (pyg_enum_get_value_nick):
-       * gobject/pygflags.c (pyg_flags_repr), (pyg_flags_add),
-       (pyg_flags_get_first_value_name), (pyg_flags_get_first_value_nick),
-       (pyg_flags_get_value_names), (pyg_flags_get_value_nicks):
-       * gobject/pygobject.c (build_parameter_list), (PyGProps_getattro),
-       (PyGProps_setattro), (pygobject_register_class), (pygobject_repr),
-       (pygobject_init), (pygobject_get_properties),
-       (pygobject_set_properties), (pygobject_connect),
-       (pygobject_connect_after), (pygobject_connect_object),
-       (pygobject_connect_object_after), (pygobject_emit),
-       (pygobject_stop_emission), (pygobject_disconnect_by_func),
-       (pygobject_handler_block_by_func),
-       (pygobject_handler_unblock_by_func),
-       (pygobject_object_register_types):
-       * gobject/pygparamspec.c (pyg_param_spec_repr),
-       (pyg_param_spec_getattr):
-       * gobject/pygpointer.c (pyg_pointer_repr):
-       * gobject/pygtype.c (pyg_type_wrapper_repr),
-       (_wrap_g_type_wrapper__get_name), (pyg_type_from_object),
-       (pyg_enum_get_value), (pyg_flags_get_value),
-       (pyg_value_from_pyobject), (pyg_value_as_pyobject),
-       (object_doc_descr_get), (_pyg_strv_from_gvalue),
-       (_pyg_strv_to_gvalue):
-
-       Use _PyUnicode_* macros in the gobject module
-
-2008-07-27  Johan Dahlin  <johan@gnome.org>
-
-       * gobject/Makefile.am:
-       * gobject/gobjectmodule.c (PYGLIB_MODULE_START):
-       * gobject/pygobject-private.h:
-       Use glib macros to define the module, update export regexp.
-
-2008-07-27  Johan Dahlin  <johan@gnome.org>
-
-       * gobject/Makefile.am:
-       * gobject/gobjectmodule.c (init_gobject):
-       * gobject/pygboxed.c (pygobject_boxed_register_types):
-       * gobject/pygboxed.h:
-       * gobject/pygenum.c (pygobject_enum_register_types):
-       * gobject/pygenum.h:
-       * gobject/pygflags.c (pygobject_flags_register_types):
-       * gobject/pygflags.h:
-       * gobject/pygpointer.c (pygobject_pointer_register_types):
-       * gobject/pygpointer.h:
-       Split out quark and type registration to the respective
-       implementation source files, add headers.
-
-2008-07-27  Johan Dahlin  <johan@gnome.org>
-
-       * gobject/Makefile.am:
-       * gobject/gobjectmodule.c (pygobject_register_api),
-       (pygobject_register_constants), (pygobject_register_features),
-       (pygobject_register_version_tuples), (pygobject_register_warnings),
-       (init_gobject):
-       * gobject/pygobject-private.h:
-       * gobject/pygobject.c (pyobject_copy), (pyobject_free),
-       (pygobject_object_register_types):
-       * gobject/pygtype.c (_pyg_strv_from_gvalue), (_pyg_strv_to_gvalue),
-       (pygobject_type_register_types):
-       * gobject/pygtype.h:
-       Move off a bit more to separate functions, cleaning up the init_glib
-       a bit more.
-
-2008-07-27  Johan Dahlin  <johan@gnome.org>
-
-       * gobject/Makefile.am:
-       * gobject/gobjectmodule.c (init_gobject):
-       * gobject/pygobject-private.h:
-       * gobject/pygobject.c:
-       * gobject/pygparamspec.c (pygobject_paramspec_register_types):
-       * gobject/pygparamspec.h:
-       * gobject/pygtype.c:
-       Move paramspec registration to a separate file, add a header
-       for the internal API.
-
-2008-07-27  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       * gobject/pygtype.c (pyg_enum_get_value): Issue warning if 'obj'
-       is a PyGEnum of wrong type, i.e. not matching 'enum_type' (bug
-       #503771).
-
-2008-07-26  Johan Dahlin  <johan@gnome.org>
-
-       reviewed by: <delete if not using a buddy>
-
-       * glib/pyglib-python-compat.h:
-       * glib/pyglib.h:
-       Make a few macros public
-
-       * gobject/Makefile.am:
-       * gobject/gobjectmodule.c (init_gobject):
-       * gobject/pyginterface.c (pyg_interface_init),
-       (pyg_interface_free), (pyg_register_interface),
-       (pyg_register_interface_info), (pyg_lookup_interface_info),
-       (pygobject_interface_register_types):
-       * gobject/pyginterface.h:
-       * gobject/pygobject-private.h:
-       * gobject/pygobject.c:
-       Move GInterface wrapper into its own file
-
-2008-07-26  Johan Dahlin  <johan@gnome.org>
-
-       * glib/Makefile.am:
-       Also export PyInit_glib
-       * glib/__init__.py:
-       import glib._glib instead of just _glib
-       * glib/pyglib-python-compat.h:
-       * glib/pygoptioncontext.c (pyg_option_context_parse):
-       * glib/pygsource.c (source_repr), (pyg_source_attach),
-       (pyg_source_get_priority), (pyg_source_set_priority),
-       (pyg_source_get_id), (pyg_source_prepare), (pyg_poll_fd_repr):
-       * glib/pygspawn.c (pyg_pid_close), (pyg_pid_free), (pyg_pid_new),
-       (pyglib_spawn_async), (pyglib_spawn_register_types):
-       Go over the rest and replace missing symbols on python3.
-       the glib module successfully compiles and runs now.
-
-2008-07-26  Johan Dahlin  <johan@gnome.org>
-
-       * glib/pygiochannel.c (py_io_channel_shutdown),
-       (py_io_channel_set_buffer_size), (py_io_channel_get_buffer_size),
-       (py_io_channel_set_buffered), (py_io_channel_get_buffered),
-       (py_io_channel_set_encoding), (py_io_channel_get_encoding),
-       (py_io_channel_read_chars), (py_io_channel_write_chars),
-       (py_io_channel_write_lines), (py_io_channel_flush),
-       (py_io_channel_set_flags), (py_io_channel_get_flags),
-       (py_io_channel_get_buffer_condition),
-       (py_io_channel_set_close_on_unref), (py_io_channel_add_watch),
-       (py_io_channel_win32_poll), (py_io_channel_win32_make_pollfd),
-       (py_io_channel_read_line), (py_io_channel_read_lines),
-       (py_io_channel_seek), (py_io_channel_init):
-       * glib/pyglib.c (pyglib_gerror_exception_check):
-       * glib/pygoptioncontext.c (pyg_option_context_init):
-       * glib/pygoptiongroup.c (check_if_owned):
-       * glib/pygsource.c (pyg_idle_init), (pyg_timeout_init),
-       (pyg_poll_fd_init):
-       gobject -> glib
-
-2008-07-26  Johan Dahlin  <johan@gnome.org>
-
-       * glib/pygmaincontext.c (pyglib_maincontext_register_types):
-       * glib/pygmainloop.c (pyg_main_loop_init),
-       (pyglib_mainloop_register_types):
-       * glib/pygoptioncontext.c (pyg_option_context_set_main_group),
-       (pyglib_option_context_register_types):
-       * glib/pygoptiongroup.c (pyglib_option_group_register_types):
-       * glib/pygspawn.c (pyglib_spawn_register_types):
-       Convert the pid/mainloop/maincontext/optiongroup/optioncontext.
-
-2008-07-26  Johan Dahlin  <johan@gnome.org>
-
-       * glib/pygsource.c (pyglib_source_register_types):
-       Convert the source objects to use macros, saves ~150 lines of code!
-
-2008-07-26  Johan Dahlin  <johan@gnome.org>
-
-       * glib/glibmodule.c (get_handler_priority), (pyglib_idle_add),
-       (pyglib_timeout_add), (pyglib_timeout_add_seconds),
-       (pyglib_io_add_watch), (pyglib_child_watch_add),
-       (pyglib_markup_escape_text), (pyglib_main_depth),
-       (pyglib_filename_from_utf8), (pyglib_get_application_name),
-       (pyglib_get_prgname), (PYGLIB_MODULE_START):
-       * glib/pygiochannel.c (py_io_channel_next),
-       (py_io_channel_shutdown), (py_io_channel_get_buffer_size),
-       (py_io_channel_get_buffered), (py_io_channel_get_encoding),
-       (py_io_channel_read_chars), (py_io_channel_write_chars),
-       (py_io_channel_write_lines), (py_io_channel_flush),
-       (py_io_channel_set_flags), (py_io_channel_get_flags),
-       (py_io_channel_get_buffer_condition), (py_io_channel_win32_poll),
-       (py_io_channel_read_line), (py_io_channel_read_lines),
-       (py_io_channel_seek), (pyglib_iochannel_register_types):
-       * glib/pyglib-private.h:
-       * glib/pyglib-python-compat.h:
-       * glib/pyglib.c (pyglib_init), (pyglib_error_check),
-       (pyglib_gerror_exception_check),
-       (pyglib_register_exception_for_domain):
-       Add macros for supporting additional python versions.
-       Start using them for the glib module. Tested on python 2.5 and 3.0.
-
-2008-07-26  Johan Dahlin  <johan@gnome.org>
-
-       * configure.ac:
-       * m4/python.m4:
-       Add macros which are compatible with python > 2.6.
-
-2008-07-26  Johan Dahlin  <johan@gnome.org>
-
-       * configure.ac:
-       Post release version bump
-
-=== 2.15.2 ===
-2008-07-26  Johan Dahlin  <johan@gnome.org>
-
-       * NEWS: Update
-
-2008-07-26  Johan Dahlin  <johan@gnome.org>
-
-       * gobject/Makefile.am (_gobject_la_SOURCES): Build fix, remove
-       extra \
-
-       * examples/gio/directory-async.py:
-       * gio/Makefile.am:
-       * gio/giomodule.c (init_gio):
-       * glib/pyglib.c (pyglib_error_check),
-       (pyglib_register_exception_for_domain):
-       * glib/pyglib.h:
-       * tests/test_gio.py:
-       Add a new API for registering exceptions for a GError domain.
-       Register a new exception for G_IO_ERROR, update tests
-       and examples to use the new exception.
-
-2008-07-26  Johan Dahlin  <johan@gnome.org>
-
-       * glib/pygoptioncontext.c (pyg_option_context_set_main_group),
-       (pyg_option_context_add_group):
-       Send in a PyObject instead of a PyGOptionGroup object.
-
-2008-07-26  Johan Dahlin  <johan@gnome.org>
-
-       * glib/Makefile.am:
-       * glib/glibmodule.c (pyglib_register_constants), (init_glib):
-       * glib/option.py:
-       * glib/pyglib.c (pyglib_init),
-       (pyglib_option_group_transfer_group), (pyglib_option_group_new),
-       (pyglib_option_context_new):
-       * glib/pyglib.h:
-       * glib/pygoptioncontext.c (pyg_option_context_parse),
-       (pyg_option_context_set_main_group),
-       (pyg_option_context_add_group),
-       (pyglib_option_context_register_types):
-       * glib/pygoptioncontext.h:
-       * glib/pygoptiongroup.c (arg_func),
-       (pyglib_option_group_register_types):
-       * glib/pygoptiongroup.h:
-       * gobject/Makefile.am:
-       * gobject/__init__.py:
-       * gobject/gobjectmodule.c (init_gobject):
-       * gobject/option.py:
-       * gobject/pygobject-private.h:
-       * gobject/pygoptioncontext.c:
-       * gobject/pygoptiongroup.c:
-       Move option over from gobject to glib.
-
-2008-07-26  Johan Dahlin  <johan@gnome.org>
-
-       * tests/common.py:
-       * tests/test_conversion.py:
-       * tests/test_enum.py:
-       * tests/test_interface.py:
-       * tests/test_option.py:
-       * tests/test_source.py:
-       * tests/test_subprocess.py:
-       * tests/test_subtype.py:
-       * tests/test_thread.py:
-       * tests/test_unknown.py:
-       Run pyflakes on the testsuite, remove unused imports
-       and reorganize others.
-
-2008-07-26  Johan Dahlin  <johan@gnome.org>
-
-       * glib/glibmodule.c (pyglib_register_constants), (init_glib):
-       * gobject/__init__.py:
-       * gobject/gobjectmodule.c (init_gobject):
-       Move over glib constants to gobject
-       * tests/test_gio.py:
-       * tests/test_mainloop.py:
-       * tests/test_source.py:
-       * tests/test_subprocess.py:
-       * tests/test_thread.py:
-       Update tests to refer to glib when appropriate
-
-2008-07-26  Johan Dahlin  <johan@gnome.org>
-
-       * README:
-       * configure.ac:
-       Bump required glib version to 2.10
-
-2008-07-26  Johan Dahlin  <johan@gnome.org>
-
-       * glib/glibmodule.c (child_watch_dnotify),
-       (pyglib_child_watch_add):
-       * glib/pygiochannel.c (pyg_iowatch_data_free),
-       (py_io_channel_add_watch):
-       * glib/pygspawn.c (_pyg_spawn_async_callback),
-       (pyglib_spawn_async):
-       Use g_slice_new instead of g_new
-
-2008-07-25  Johan Dahlin  <johan@gnome.org>
-
-       * gobject/Makefile.am:
-       * tests/Makefile.am:
-       Make distcheck pass
-
-2008-07-25  Johan Dahlin  <johan@gnome.org>
-
-       * gobject/gobjectmodule.c (init_gobject):
-       * gobject/pygobject-private.h:
-       Remove private structures which moved to pyglib.
-
-2008-07-24  Johan Dahlin  <johan@gnome.org>
-
-       Bug 544600 – pygobject building failed since 839 revision,
-       error : "Py_ssize_t" undeclared
-
-       * glib/pyglib-private.h: Add backward compatibility macros for
-       python 2.4.
-
-       * gio/gfile.override:
-       * gio/gfileenumerator.override:
-       * gio/ginputstream.override:
-       * gio/gio.defs:
-       * gio/gio.override:
-       * gio/goutputstream.override:
-       * tests/test_gio.py:
-       Wrap gio.File.copy, add tests and documentation.
-       Rename PyGAsyncRequestNotify to PyGIONotify and reuse it.
-
-2008-07-23  Johan Dahlin  <johan@gnome.org>
-
-       * glib/pyglib.c (_pyglib_destroy_notify):
-       Rename the function too, not just the prototype!
-
-2008-07-21  Johan Dahlin  <johan@gnome.org>
-
-       * glib/glibmodule.c (pyglib_idle_add), (pyglib_timeout_add),
-       (pyglib_timeout_add_seconds), (pyglib_io_add_watch):
-       * glib/pyglib-private.h:
-       * glib/pyglib.c (pyglib_destroy_notify), (_pyglib_handler_marshal):
-       * glib/pyglib.h:
-       * glib/pygsource.c (pyg_source_set_callback):
-       Make pyglib_destroy_notify and pyglib_handler_marshal private.
-       Add a few public prototypes.
-
-2008-07-21  Johan Dahlin  <johan@gnome.org>
-
-       * glib/glibmodule.c (pyglib_idle_add), (pyglib_timeout_add),
-       (pyglib_timeout_add_seconds), (pyglib_io_add_watch),
-       (pyglib_source_remove), (pyglib_child_watch_add),
-       (pyglib_markup_escape_text), (pyglib_get_current_time),
-       (pyglib_main_depth), (pyglib_filename_display_name),
-       (pyglib_filename_display_basename), (pyglib_filename_from_utf8),
-       (pyglib_get_application_name), (pyglib_set_application_name),
-       (pyglib_get_prgname), (pyglib_set_prgname), (pyglib_register_api),
-       (pyglib_register_error):
-       Mark as static, rename from pyg_* -> pyglib_*. Fill in api struct,
-       rename struct and remove function suffix.
-
-2008-07-21  Johan Dahlin  <johan@gnome.org>
-
-       * glib/Makefile.am:
-       * glib/glibmodule.c (pyg_idle_add), (pyg_timeout_add),
-       (pyg_timeout_add_seconds), (pyg_io_add_watch),
-       (pyglib_register_api), (pyglib_register_error),
-       (pyglib_register_version_tuples), (init_glib):
-       * glib/pygiochannel.c (py_io_channel_next),
-       (py_io_channel_shutdown), (py_io_channel_set_encoding),
-       (py_io_channel_read_chars), (py_io_channel_write_chars),
-       (py_io_channel_write_lines), (py_io_channel_flush),
-       (py_io_channel_set_flags), (py_io_channel_read_line),
-       (py_io_channel_read_lines), (py_io_channel_seek),
-       (py_io_channel_init), (pyglib_iochannel_register_types):
-       * glib/pygiochannel.h:
-       * glib/pyglib-private.h:
-       * glib/pyglib.c (pyglib_threads_enabled),
-       (pyglib_gil_state_ensure), (pyglib_gil_state_release),
-       (pyglib_enable_threads), (pyglib_block_threads),
-       (pyglib_unblock_threads), (pyglib_set_thread_block_funcs),
-       (pyglib_handler_marshal), (pyglib_destroy_notify):
-       * glib/pyglib.h:
-       * glib/pygsource.c (pyg_source_set_callback),
-       (pyglib_source_register_types):
-       * glib/pygsource.h:
-       * glib/pygspawn.c (pyglib_spawn_register_types):
-       * glib/pygspawn.h:
-       * gobject/Makefile.am:
-       * gobject/__init__.py:
-       * gobject/gobjectmodule.c (pyg_set_thread_block_funcs),
-       (init_gobject):
-       * gobject/pygiochannel.c:
-       * gobject/pygobject-private.h:
-       * gobject/pygsource.c:
-       Move over Source, IOChannel, Idle, Timeout and PollFD to glib from
-       gobject.
-       Clean up and add a bit of new api for glib.
-
-2008-07-21  Johan Dahlin  <johan@gnome.org>
-
-       * configure.ac:
-       Use yes/no instead of true/false. Avoid bashism.
-       Fix another logic bug, and let's hope I didn't break anything
-
-2008-07-20  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       * configure.ac (pygobject_CODEGEN_DEFINES): Fix libffi check
-       logic.
-
-2008-07-20  Johan Dahlin  <johan@gnome.org>
-
-       * glib/Makefile.am:
-       * glib/glibmodule.c (pyglib_main_context_default), (init_glib):
-       * glib/pyglib.c (pyglib_init), (pyglib_threads_enabled),
-       (pyglib_main_context_new):
-       * glib/pyglib.h:
-       * glib/pygmaincontext.c (_wrap_g_main_context_iteration),
-       (pyglib_maincontext_register_types):
-       * glib/pygmaincontext.h:
-       * glib/pygmainloop.c (pyg_signal_watch_prepare),
-       (pyg_signal_watch_check), (pyg_main_loop_new),
-       (_wrap_g_main_loop_get_context), (_wrap_g_main_loop_run),
-       (pyglib_mainloop_register_types):
-       * glib/pygmainloop.h:
-       * gobject/Makefile.am:
-       * gobject/__init__.py:
-       * gobject/gobjectmodule.c (pyg_destroy_notify), (pyobject_free),
-       (pyg_object_set_property), (pyg_object_get_property),
-       (_pyg_signal_accumulator), (pygobject__g_instance_init),
-       (pyg_handler_marshal), (pygobject_gil_state_ensure),
-       (pygobject_gil_state_release), (marshal_emission_hook),
-       (_log_func), (init_gobject):
-       * gobject/pygboxed.c (pyg_boxed_dealloc), (pyg_boxed_new):
-       * gobject/pygenum.c (pyg_enum_add):
-       * gobject/pygflags.c (pyg_flags_add):
-       * gobject/pygiochannel.c (pyg_iowatch_marshal):
-       * gobject/pygmaincontext.c:
-       * gobject/pygmainloop.c:
-       * gobject/pygobject-private.h:
-       * gobject/pygobject.c (pygobject_data_free), (pyg_toggle_notify),
-       (pygobject_new_with_interfaces), (pygobject_weak_ref_notify):
-       * gobject/pygobject.h:
-       * gobject/pygoptiongroup.c (destroy_g_group), (arg_func):
-       * gobject/pygpointer.c (pyg_pointer_new):
-       * gobject/pygsource.c (pyg_source_get_context),
-       (pyg_source_prepare), (pyg_source_check), (pyg_source_dispatch),
-       (pyg_source_finalize):
-       * gobject/pygtype.c (pyg_closure_invalidate),
-       (pyg_closure_marshal), (pyg_signal_class_closure_marshal):
-       * tests/common.py:
-
-       Move maincontext and mainloop over to glib.
-       Update the threadstate api to use the variant in glib.
-
-2008-07-20  Johan Dahlin  <johan@gnome.org>
-
-       * glib/Makefile.am:
-       * gobject/Makefile.am:
-       * gobject/__init__.py:
-       * gobject/gobjectmodule.c (pyg_threads_init), (pyg_error_check),
-       (pyg_gerror_exception_check), (init_gobject):
-       * gobject/option.py:
-       Install the glib module, the helper library and the headers.
-       Use it from gobject and remove the old glib specific code from there.
-
-2008-07-20  Johan Dahlin  <johan@gnome.org>
-
-       * configure.ac:
-       * gobject/Makefile.am:
-       Use pkg-config to check for libffi again.
-
-2008-07-20  Johan Dahlin  <johan@gnome.org>
-
-       * glib/Makefile.am:
-       * glib/glibmodule.c (pyg_main_context_default):
-       * glib/pyglib.c (pyglib_gerror_exception_check):
-       * glib/pyglib.h:
-       Rename helper library to libpyglib-2.0.
-       Move over pyg_gerror_exception_check as well.
-
-2008-07-20  Johan Dahlin  <johan@gnome.org>
-
-       * Makefile.am:
-       * configure.ac:
-       * glib/Makefile.am:
-       * glib/__init__.py:
-       * glib/glibmodule.c (pyg_destroy_notify), (get_handler_priority),
-       (pyg_handler_marshal), (pyg_idle_add), (pyg_timeout_add),
-       (pyg_timeout_add_seconds), (iowatch_marshal), (pyg_io_add_watch),
-       (pyg_source_remove), (pyg_main_context_default),
-       (child_watch_func), (child_watch_dnotify), (pyg_child_watch_add),
-       (pyg_markup_escape_text), (pyg_get_current_time), (pyg_main_depth),
-       (pyg_filename_display_name), (pyg_filename_display_basename),
-       (pyg_filename_from_utf8), (pyg_get_application_name),
-       (pyg_set_application_name), (pyg_get_prgname), (pyg_set_prgname),
-       (pyg_register_api), (pyg_register_error),
-       (pyg_register_version_tuples), (init_glib):
-       * glib/pyglib-private.h:
-       * glib/pyglib.c (pyglib_init), (pyglib_init_internal),
-       (pyglib_gil_state_ensure), (pyglib_gil_state_release),
-       (pyglib_enable_threads), (pyglib_gil_state_ensure_py23),
-       (pyglib_gil_state_release_py23), (pyglib_error_check):
-       * glib/pyglib.h:
-       * glib/pygspawn.c (pyg_pid_close), (pyg_pid_free),
-       (pyg_pid_tp_init), (pyg_pid_new), (_pyg_spawn_async_callback),
-       (pyglib_spawn_async), (pyg_spawn_register_types):
-       * glib/pygspawn.h:
-       Add glib bindings, currently not installed or used.
-       Add some internal API and move over a couple of functions
-       from the gobject module. Still very much a work in progress.
-
-2008-07-19  Johan Dahlin  <johan@gnome.org>
-
-       * gio/gio.override:
-       Ignore a bunch of functions which are not relevant.
-
-2008-07-19  Johan Dahlin  <johan@gnome.org>
-
-       * gio/gfile.override:
-       * gio/gio.defs:
-       * gio/gio.override:
-       * tests/test_gio.py:
-       Bind gio.Mount.unmount, gio.File.mount_mountable,
-       gio.File.unmount_mountable and gio.File.mount_enclosing_volume.
-       Add documents and tests.
-
-2008-07-19  Johan Dahlin  <johan@gnome.org>
-
-       * gio/gio.override: Set module name back to
-       gio, as setting it to gio._gio breaks pydoc.
-
-       * gio/gio.defs:
-       Use property based constructors when possible.
-
-2008-07-19  Johan Dahlin  <johan@gnome.org>
-
-       * examples/gio/directory-async.py:
-       * gio/gfileenumerator.override:
-       * gio/gio.defs:
-       * tests/test_gio.py:
-       Wrap gio.FileEnumerator.next_files_async/next_files_done.
-       Update the example to use them instead of the synchronous versions,
-       add documentation and tests.
-
-2008-07-19  Johan Dahlin  <johan@gnome.org>
-
-       * examples/gio/directory-async.py:
-       Only fetch name, saves a couple of syscalls.
-       * gio/gio.override:
-       Set name to gio._gio so pychecker/pydoc works.
-
-2008-07-18  Johan Dahlin  <johan@gnome.org>
-
-       * examples/gio/directory-async.py:
-       * gio/gfile.override:
-       * gio/gfileenumerator.override:
-       * gio/gio.defs:
-       * tests/test_gio.py:
-       Wrap gio.File.enumerate_children_async, add tests, docstring
-       and an example.
-       Also document gio.File.enumerate while we're at it.
-
-2008-07-18  Johan Dahlin  <johan@gnome.org>
-
-       * gio/gfile.override:
-       Use %zd instead of %d since it's a Py_ssize_t and not an int.
-
-2008-07-18  Johan Dahlin  <johan@gnome.org>
-
-       * gio/pygio-utils.h:
-       define NO_IMPORT_PYGOBJECT before including pygobject.h
-
-2008-07-18  Johan Dahlin  <johan@gnome.org>
-
-       * gio/giomodule.c (init_gio):
-       Require pygobject 2.15.2
-
-2008-07-17  Johan Dahlin  <johan@gnome.org>
-
-       * gio/giomodule.c (init_gio):
-       Add a pygio_version module attribute
-       (DL_EXPORT): The module is called gio._gio, not just _gio.
-
-2008-07-17  Johan Dahlin  <johan@gnome.org>
-
-       * gio/gio-types.defs:
-       Rename gio.IOErrorEnum to gio.ErrorEnum
-
-2008-07-17  Johan Dahlin  <johan@gnome.org>
-
-       * gio/giomodule.c (init_gio):
-       Add gio.ERROR which maps to the G_IO_ERROR quark.
-
-2008-07-17  Johan Dahlin  <johan@gnome.org>
-
-       * gio/giomodule.c (init_gio):
-       Use the prefix G_IO_ for stripping constants instead of just G_
-       * gobject/gobjectmodule.c (pyg_constant_strip_prefix):
-       Check so the fist part of name and strip_prefix are the same,
-       if they don't, just strip of the part of strip_prefix which
-       matches.
-
-       This removes the initial IO_* prefix for some constants in gio.
-       Eg, gio.IO_ERROR_* -> gio.ERROR_*
-
-2008-07-16  Johan Dahlin  <johan@gnome.org>
-
-       * configure.ac: Post release version bump
-
-=== 2.15.1 ===
-2008-07-16  Johan Dahlin  <johan@gnome.org>
-
-       * NEWS: Update
-
-2008-07-15  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       * codegen/pygobject-codegen-2.0.in: Rename from
-       'pygtk-codegen-2.0.in'.
-
-       * configure.ac:
-       * codegen/Makefile.am: Update accordingly.
-
-2008-07-15  Johan Dahlin  <johan@gnome.org>
-
-       * configure.ac: Post release version bump
-
-=== 2.15.0 ===
-2008-07-15  Johan Dahlin  <johan@gnome.org>
-
-       New version
-
-       * NEWS: Update
-
-       * tests/Makefile.am:
-       Make sure we can distcheck the gio module properly
-
-2008-07-15  Johan Dahlin  <johan@gnome.org>
-
-       Bug 450659 – h2def.py - export 'typedef struct' object definitions not
-       working
-
-       * codegen/h2def.py:
-       Patch by Lauro Moura
-
-2008-07-14  Johan Dahlin  <johan@gnome.org>
-
-       Bug 471559 – add AM_PROG_CC_C_O to configure.ac for recent automake
-
-       * configure.ac:
-       Patch by Tim Mooney
-
-2008-07-14  Johan Dahlin  <johan@gnome.org>
-
-       Bug 448173 – use python-config to get python includes
-
-       * configure.ac:
-       Really close the by, patch by Matthias Klose
-
-2008-07-14  Johan Dahlin  <johan@gnome.org>
-
-       Bug 378704 – OptionParser.parse_args() returns unexpected results
-
-       * gobject/option.py:
-       Patch by Johannes Hölzl
-
-2008-07-14  Johan Dahlin  <johan@gnome.org>
-
-       Bug 491773 – autoconf failure: .m4 files cannot be found
-
-       * Makefile.am:
-       Patch by macks@netspace.org
-
-2008-07-14  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       * gio/gfile.override: wrap File.load_contents_async and
-       File.load_contents_finish
-
-       * gio/gio.defs: Add docstring for the above methods.
-
-       * tests/test_gio.py: Add a test for the above methods.
-
-2008-07-14  Johan Dahlin  <johan@gnome.org>
-
-       Bug 487523 – Add xslfiles variable to .pc.in files
-
-       * pygobject-2.0-uninstalled.pc.in:
-       Add xslfiles variable, patch by Damien Carbery
-
-2008-07-14  Johan Dahlin  <johan@gnome.org>
-
-       * gio/gio.defs:
-       Remove g_file_input_stream_seek and g_file_output_stream_seek,
-       they already implement the seekable interface.
-
-2008-07-14  Johan Dahlin  <johan@gnome.org>
-
-       Bug 504337 - crash bug in gobject.Timeout and gobject.Idle
-
-       * gobject/pygsource.c:
-       * tests/test_source.py:
-       Fix crash in Timeout and Idle, patch by Bryan Silverthorn.
-
-2008-07-14  Johan Dahlin  <johan@gnome.org>
-
-       * codegen/argtypes.py:
-       Map GSeekType to an int
-
-       * gio/gfileinfo.override:
-       * gio/ginputstream.override:
-       * gio/goutputstream.override:
-       Add comments for missing API
-
-2008-07-14  Johan Dahlin  <johan@gnome.org>
-
-       * gio/Makefile.am:
-       * gio/gfile.override:
-       * gio/ginputstream.override:
-       * gio/gio.override:
-       * gio/goutputstream.override:
-       * gio/pygio-utils.c (pygio_check_cancellable):
-       * gio/pygio-utils.h:
-       Refactor cancellable check to a utility function, avoids
-       plenty of code duplication.
-
-2008-07-14  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       * codegen/definitions.py (ReturnType): New class.
-       (MethodDefBase.__init__): Make 'self.ret' a 'ReturnType' instance,
-       not string.  Accept 'optional' flag.
-
-       * codegen/argtypes.py (ArgMatcher.get_reverse_ret): Test if
-       'ptype' has true 'optional' attribute and copy it to 'props' then.
-
-       * codegen/reversewrapper.py (ReturnType.support_optional): New
-       class field, False by default.
-       (GObjectReturn.support_optional, GObjectReturn.write_decl)
-       (GObjectReturn.write_conversion): Support optional return.
-
-       * pygobject-2.0.pc.in: Add 'codegendir' variable.
-       * codegen/pygtk-codegen-2.0.in: Make 'codegendir' refer to
-       PyGObject's codegen, not PyGTK's one --- the latter will be
-       removed (first part of bug #542821).
-
-2008-07-08  Murray Cumming  <murrayc@murrayc.com>
-
-       * codegen/h2def.py: clean_func(): Strip GSEAL out, to avoid us
-       thinking that there are many functions called GSEAL (merge from
-       PyGTK).
-
-2008-01-29  Olivier Crete  <tester@tester.ca>
-
-       * codegen/h2def.py (DefsWriter.__init__): Fix copy-paste
-       typos (merge from PyGTK).
-
-2008-07-11  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       * gio/gfile.override: wrap File.load_contents, fix a typo.
-
-       * gio/gio.defs: Add docstring for File.load_contents.
-
-       * tests/test_gio.py: Add a test for the above method.
-
-2008-07-09  Juha Sahakangas  <voas0113@saunalahti.fi>
-
-       * gobject/gobjectmodule.c (pyg_io_add_watch): Fix error message
-       referencing wrong argument.
-
-2008-06-29  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * gobject/gobjectmodule.c (pyg_markup_escape_text): text_size
-       should be Py_ssize_t instead of int.
-       Bug 540696 – gobject.markup_escape_text() causes python to segfault.
-
-2008-06-28  Johan Dahlin  <jdahlin@async.com.br>
-
-       * docs/reference/pygobject.xml:
-       Document GObject.handler_block_by_func/handler_unblock_by_func
-
-2008-06-17  Johan Dahlin  <jdahlin@async.com.br>
-
-       * gio/gio-types.defs:
-       * tests/test_gio.py:
-       Sort out confusion between interfaces and objects, add test.
-       Fixes #538601
-
-2008-06-09  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       * gobject/pygobject.c (pygobject_copy, pygobject_deepcopy): New
-       functions, unconditionally raise TypeError.
-       (pygobject_methods): Hook them up. (bug #482370)
-
-2008-05-31  Johan Dahlin  <johan@gnome.org>
-
-    * setup.py: set FFI_LIBS to '', since this is mostly used on win32.
-
-2008-05-30  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * gobject/gobjectmodule.c (init_gobject): Call PyType_Ready for
-       PyGParamSpec_Type, and add it to the module dict.
-
-2008-05-23  Johan Dahlin  <jdahlin@async.com.br>
-
-       * gio/gio.defs:
-       Add default values for all GSeekType variables.
-
-2008-05-21  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * gobject/gobjectmodule.c (pyg_spawn_async): Accept None for the
-       child_setup parameter of gobject.spawn_async().  Also check that
-       it is callable.
-
-2008-04-27  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       * gobject/pygenum.c (pyg_enum_richcompare): Fix: raise warning as
-       exception if asked by PyErr_Warn().
-
-       * gobject/pygflags.c (pyg_flags_richcompare):  Don't return NULL
-       after warning; more useful warning message.
-
-       (#480424, borrowing code by Mark Doffman)
-
-2008-04-21  Johan Dahlin  <johan@gnome.org>
-
-       * codegen/h2def.py: Update link to defs format discussion
-
-2008-04-15  Johan Dahlin  <johan@gnome.org>
-
-       * gobject/gobjectmodule.c (init_gobject): Set
-       gobject.GObject.__module__ to gobject._gobject, this
-       helps pylint to check public methods of GObject subclasses
-
-       * tests/Makefile.am (tests):
-       * tests/test_gobject.py (TestGObjectAPI.testGObjectModule):
-       Add a test for this
-
-       (#523821, Simon Schampijer)
-
-2008-04-11  Johan Dahlin  <jdahlin@async.com.br>
-
-       * gio/gio.defs (write_async): document.
-       Add default values to all flags parameters.
-
-2008-04-11  Johan Dahlin  <johan@gnome.org>
-
-       * gio/gio.defs (read_async, read): document.
-       Set io_priority default to G_PRIORITY_DEFAULT.
-
-2008-04-11  Johan Dahlin  <jdahlin@async.com.br>
-
-       * gio/gfile.override:
-       * gio/ginputstream.override:
-       * gio/goutputstream.override:
-       * tests/test_gio.py:
-       Move around the order of the callback argument to async methods,
-       so it comes before priority and cancellable, which can have default
-       values.
-
-2008-04-08  Johan Dahlin  <jdahlin@async.com.br>
-
-       * gio/Makefile.am:
-       * gio/__init__.py:
-       * gio/gappinfo.override:
-       * gio/gio.defs:
-       * gio/gio.override:
-       * tests/test_gio.py:
-       Implement GAppInfo constructor, add tests.
-
-2008-04-08  Johan Dahlin  <jdahlin@async.com.br>
-
-       * gio/Makefile.am:
-       * gio/gfileinfo.override:
-       * gio/gio.defs:
-       * gio/gio.override:
-       * tests/test_gio.py:
-       Wrap GFileInfo.list_attributes(), add tests and
-       set the default of GFileQueryInfoFlags args to G_FILE_QUERY_INFO_NONE.
-
-2008-04-08  Johan Dahlin  <jdahlin@async.com.br>
-
-       * gobject/option.py: Fix a typo
-       * tests/test_option.py:
-       Update the tests after the latest "refactoring".
-       The testsuite should run fine now again, finally.
-
-2008-04-08  Johan Dahlin  <johan@gnome.org>
-
-       * tests/test_gio.py (TestOutputStream.testWriteAsyncError):
-       (TestInputStream._testCloseAsync.callback):
-       Disable these tests until we can figure why they freeze during
-       make check.
-
-2008-04-08  Johan Dahlin  <jdahlin@async.com.br>
-
-       * gio/gio.defs:
-       * gio/gio.override:
-       * tests/test_gio.py:
-       Add bindings for content_type_guess.
-       Based on patch by Thomas Leonard (#525113)
-
-2008-04-08  Johan Dahlin  <jdahlin@async.com.br>
-
-       * gio/gio-types.defs:
-       * gio/gio.defs:
-       * gio/gio.override:
-       * tests/test_gio.py:
-       Add basic support for GThemedIcon, based on patch by
-       Thomas Leonard (#521883)
-
-2008-04-08  Johan Dahlin  <jdahlin@async.com.br>
-
-       * gobject/pygsource.c:
-       * tests/test_source.py:
-       Unbreak Source.prepare (#523075, Bryan Silverthorn)
-
-2008-04-08  Johan Dahlin  <johan@gnome.org>
-
-       * gio/gfile.override (_wrap__install_file_meta): Fix a couple of
-       silly typos and use gio.File instead of GFile in exceptions.
-
-2008-04-07  Johan Dahlin  <johan@gnome.org>
-
-       * gio/__init__.py:
-       * gio/gfile.override:
-       * gio/gio-types.defs:
-       * gio/gio.override:
-       * tests/test_gio.py:
-       Make gio.File() (calling on an interface) a factory for creating
-       files. Add tests and a docstring.
-
-2008-04-07  Johan Dahlin  <johan@gnome.org>
-
-       * gio/Makefile.am (pygiodir): Install gio in the right location
-
-2008-04-06  Johan Dahlin  <johan@gnome.org>
-
-       * tests/test_gio.py: Add tests for recently added features.
-
-       * gio/goutputstream.override:
-       (_wrap_g_output_stream_write_asyn,_wrap_g_output_stream_close_async):
-       * gio/ginputstream.override (async_result_callback_marshal_read):
-       Add wrappers.
-
-       * gio/gio.override: Ignore vararg functions and remove a couple
-       of left overs in the generic marshaller.
-
-       * gio/gio.defs: Remove g_file_output_stream_truncate,
-       g_file_output_stream_tell and g_file_input_stream_tell
-
-       * Makefile.am:
-       * gio/gfileenumerator.override (_wrap_g_file_enumerator_tp_iter):
-       Implement the python iteration protocol on GFileEnumerator
-
-       * codegen/argtypes.py (arg): Add goffset to the int64 arg type
-
-2008-04-02  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       * gobject/pygenum.c: bug #428732
-       (pyg_enum_new): Fix two wrong assertions about '__enum_values__'
-       size and contents.
-       (pyg_enum_reduce): New function (based on patch by Phil Dumont).
-       (pyg_enum_methods): Hook it up.
-
-2008-03-24  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       * gobject/pygenum.c (pyg_enum_richcompare): Don't return NULL
-       after warning; more useful warning message (bug #519631).
-
-2008-03-22  Johan Dahlin  <johan@gnome.org>
-
-       * gio/ginputstream.override:
-       * gio/gio.override:
-       * tests/test_gio.py:
-
-       Make read_finish() return the string, remove the get_buffer method.
-       This is more pythonic, as it mimics the normal read() behavior of
-       python.
-       Update the tests and use a separate marshaller for read.
-
-2008-03-21  Johan Dahlin  <johan@gnome.org>
-
-       * gobject/__init__.py:
-       * tests/test_properties.py:
-       Allow gobject.property work with subclasses. Add tests.
-
-       (#523352, Tomeu Vizoso)
-
-2008-03-10  Johan Dahlin  <johan@gnome.org>
-
-       * configure.ac: Require gio and giounix 2.15.7.
-
-2008-03-09  Johan Dahlin  <johan@gnome.org>
-
-       * gio/gio-types.defs:
-       * gio/gio.defs:
-       * tests/test_gio.py:
-       Update to SVN of gio:
-       g_file_contains_file -> g_file_has_prefix
-       can_seek and can_truncate are now only on the GSeekable interface
-       Add tests
-
-       (#521207, Thomas Leonard)
-
-2008-03-08  Johan Dahlin  <jdahlin@async.com.br>
-
-       * gio/ginputstream.override:
-       Pass in l instead of i to PyArg_ParseTupleAndKeywords when
-       parsing a long. Fixes the build on 64-bit systems.
-       (#521165, Thomas Leonard)
-
-2008-03-02  Johan Dahlin  <johan@gnome.org>
-
-       * Makefile.am: Dist .m4 files.
-       (#496011, Ed Catmur)
-
-2008-03-02  Paul Pogonyshev  <pogonyshev@gmx.net>
-
-       * gobject/gobjectmodule.c (REGISTER_TYPE): Never override customly
-       set 'tp_new' and 'tp_alloc'.
-
-2008-02-01  Dan Winship  <danw@gnome.org>
-
-       * pygobject-2.0.pc.in (defsdir): Add this so other bindings can
-       find gio.defs
-
-2008-01-21  Johan Dahlin  <johan@gnome.org>
-
-       * gio/gio.override (async_result_callback_marshal):
-       Don't assume the buffer is set, use Py_XINCREF instead of Py_INCREF.
-
-       * gio/Makefile.am:
-       * gio/ginputstream.override:
-       * gio/goutputstream.override:
-       * gio/gvolumemonitor.override:
-       * gio/gfile.override:
-       * tests/test_gio.py:
-       Implement and test GFile.read_async. Use try/finally to always quit
-       the mainloop, even if the test fail.
-       Update source comment headers.
-
-2008-01-20  Johan Dahlin  <johan@gnome.org>
-
-       * tests/test_gio.py (TestVolumeMonitor): New test
-
-       * gio/Makefile.am:
-       * gio/ginputstream.override:
-       * gio/gio.override:
-       * gio/giomodule.c:
-       * gio/goutputstream.override:
-       * gio/gvolumemonitor.override:
-       * gio/unix.override:
-       * gio/unixmodule.c:
-
-       Split out overrides into more files. Fix up module description in
-       comments
-
-2008-01-20  Johan Dahlin  <johan@gnome.org>
-
-       * gio/gio.override (_wrap_g_simple_async_result_get_buffer): Add
-       a new method, to fetch the buffer
-       (_wrap_g_input_stream_read_async): Save a reference to the buffer.
-       * tests/test_gio.py (TestInputStream.testReadAsync.callback):
-       Check the content
-
-       * tests/test_gio.py (TestInputStream.testReadAsyncError):
-       New function to test error condition of async read.
-
-       * gio/gio.override (async_result_callback_marshal): Grab a reference
-       to callback/data.
-
-2008-01-19  Johan Dahlin  <johan@gnome.org>
-
-       * gio/gio.override (_wrap_g_output_stream_write): Impl.
-       * gio/gio.override:
-       * gio/unix.defs:
-       Add GUnixInputStream type and methods
-
-       * tests/common.py:
-       * tests/test_gio.py:
-       Add GIO tests.
-
-       * gio/gio.override (_wrap_g_app_info_get_all_for_type),
-       (_wrap_g_app_info_get_all),
-       (_wrap_g_drive_get_volumes): Implement.
-
-       * gio/gio.override (async_result_callback_marshal): New marshaller
-       for async results
-       (_wrap_g_input_stream_read_async): Impl.
-       * gio/gio-types.defs: Add SimpleAsyncRequest
-       * gio/giomodule.c: Register enums/constants
-
-       * gio/gio.override: Fix a silly bug so it possible to read files
-       larger than 8192 bytes.
-
-       * gio/gio.defs: Set null-ok for all cancelable as well.
-
-       * gio/__init__.py: set gio.unix to None if it's not available
-
-       * gio/gio.override: Implement InputStream.read efficiently without
-       copying the strings, based on the standard libararys file.read()
-       implementation.
-
-       * gio/gio-types.defs (Cancellable): Add wrapper.
-
-       * gio/gio.defs (replace): Do not require cancellable argument
-       to be specified, default to NULL if not.
-
-       * Makefile.am:
-       * codegen/Makefile.am:
-       * codegen/README.defs:
-       * codegen/__init__.py:
-       * codegen/argtypes.py:
-       * codegen/code-coverage.py:
-       * codegen/codegen.py:
-       * codegen/createdefs.py:
-       * codegen/definitions.py:
-       * codegen/defsconvert.py:
-       * codegen/defsgen.py:
-       * codegen/defsparser.py:
-       * codegen/docextract.py:
-       * codegen/docextract_to_xml.py:
-       * codegen/docgen.py:
-       * codegen/h2def.py:
-       * codegen/mergedefs.py:
-       * codegen/missingdefs.py:
-       * codegen/mkskel.py:
-       * codegen/override.py:
-       * codegen/pygtk-codegen-2.0.in:
-       * codegen/reversewrapper.py:
-       * codegen/scanvirtuals.py:
-       * codegen/scmexpr.py:
-
-       * configure.ac:
-       * gio/Makefile.am:
-       * gio/__init__.py:
-       * gio/gio-types.defs:
-       * gio/gio.defs:
-       * gio/gio.override:
-       * gio/giomodule.c: (init_gio):
-       * gio/unix-types.defs:
-       * gio/unix.defs:
-       * gio/unix.override:
-       * gio/unixmodule.c: (initunix):
-
-       Import codegen from pygtk.
-       Add initial gio and gio.unix bindings.
-
-2008-01-11  Johan Dahlin  <johan@gnome.org>
-
-       * configure.ac: Don't link against libffi if we cannot find libffi
-       on the system. (#496006, Ed Catmur)
-
-2008-01-03  Johan Dahlin  <johan@gnome.org>
-
-       Reviewed by: Gustavo
-
-       * configure.ac:
-       * gobject/pygmainloop.c (pyg_signal_watch_prepare): Optinally
-       use PySignal_SetWakeupFd to avoid having to do a timeout to find
-       out if there are any pending signals from python.
-       Fixes #481569
-
-       * configure.ac (CPPFLAGS):
-       Include -Wall and -Werror when checking for PySignal_SetWakeupFd
-
-2008-01-02  Sebastian Rittau  <srittau@jroger.in-berlin.de>
-
-       * gobject/gobjectmodule.c
-       * gobject/gobjectmodule.c (pyg_get_application_name)
-       (pyg_get_prgname): Add wrappers for g_get_application_name and
-       g_get_prgname.
-
-2007-11-30  Rafael Villar Burke  <pachi@rvburke.com>
-
-       * docs/reference/pygobject.xml: Add props attribute
-
-2007-11-24  Paolo Borelli  <pborelli@katamail.com>
-
-       * gobject/gobjectmodule.c (pyg_type_register): check for NULL before
-       dereferencing.
-
-2007-11-24  Paolo Borelli  <pborelli@katamail.com>
-
-       * gobject/gobjectmodule.c (pyg_type_register): do not use a
-       potentially uninitialized variable. Bug #499334.
-
-2007-11-12  Johan Dahlin  <johan@gnome.org>
-
-       * gobject/option.py (OptionParser.parse_args):
-       Set the default value of old_args to 0, so we don't end
-       up slicing with None. Fixes #496278 (Vincent Untz)
-
-2007-11-06  Johan Dahlin  <johan@gnome.org>
-
-       * gobject/option.py (OptionParser.parse_args): Merge in values
-       from all groups to the global option group. Slice up args
-       so it doesn't return too much.
-
-       * tests/test_option.py: Refactor to be unittesty,
-       Add new tests to test what options returns.
-
-2007-11-05  Johan Dahlin  <johan@gnome.org>
-
-       * gobject/pygobject.h:
-       * gobject/gobjectmodule.c:
-       Add pyg_option_group_new to the public API
-
-       * configure.ac: Branch, bump version to 2.15.0.
-
-2007-10-16  Damien Carbery   <damien.carbery@sun.com>
-
-       reviewed by: Johan Dahlin.
-
-       * pygobject-2.0-uninstalled.pc.in: uninstalled.pc file missing
-       'datadir' value. Fixes #486876.
-
-2007-09-16  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * configure.ac: Post-relase version bump.
-
-=== 2.14.0 ===
-2007-09-16  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * configure.ac: Bump version to 2.14.0.
-
-       * NEWS: Update NEWS for next release.
-
-2007-09-06  John Finlay  <finlay@moeraki.com>
-
-       * docs/xsl/fixxref.py.in: Remove DATADIR substitution since it now
-       gets substituted as ${prefix}/share which doesn't work in a Python
-       script.
-
-2007-08-27  Johan Dahlin  <jdahlin@async.com.br>
-
-       * gobject/propertyhelper.py (property.__metaclass__.__repr__): Avoid
-       exporting the metaclass, just define it where it will be used.
-
-       * gobject/__init__.py (GObjectMeta._install_properties):
-       Refactor a bit to make sure that it is possible to use in subclasses,
-       fixes #470718 (Marco Giusti)
-
-2007-08-27   Marco Giusti  <marco.giusti@gmail.com>
-
-       reviewed by: Gustavo J. A. M. Carneiro
-
-       * gobject/propertyhelper.py:
-       * tests/test_properties.py:
-       Bug 470230 – check for default value in boolean type is wrong.
-
-2007-08-27  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * tests/Makefile.am,
-       * gobject/Makefile.am: Remove -D_XOPEN_SOURCE=600
-       -D__EXTENSIONS__, no longer needed.
-
-       * configure.ac: Don't add -std=c9x CFLAG on Solaris.  Fixes
-       #339924 again.
-
-       * gobject/pygtype.c (pyg_type_wrapper_repr): Typecast self->type
-       to (unsigned long int) to fix a compilation warning.
-
-2007-08-14   Ed Catmur   <ed@catmur.co.uk>
-
-       reviewed by: Gustavo J. A. M. Carneiro
-
-       * gobject/pygobject.c (pygobject_new_full, pygobject_clear),
-       (pygobject_get_dict): Bug 466082 – pygobject_new_full not fully
-       initialising PyGObject, chaos results.
-
-2007-08-13  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * tests/test_subtype.py (TestSubType.testGetDict): Add unit test
-       exercising a bug when GObject.__dict__ is accessed directly.
-
-2007-07-08  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * gobject/gobjectmodule.c (pygobject_functions)
-       (pyg_timeout_add_seconds): Wrap g_timeout_add_seconds,
-       conditionally compiled if glib version >= 2.13.5.
-
-2007-07-08   Johannes Hölzl   <johannes.hoelzl@gmx.de>
-
-       reviewed by: Gustavo Carneiro
-
-       * gobject/gobjectmodule.c (build_gerror, init_gobject): Work
-       around the deprecation warning of BaseException.message in Python
-       2.6+ affecting GError exceptions.  Fixes #342948.
-
-2007-07-07  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * configure.ac: Post-release version bump.
-
-=== 2.13.2 ===
-2007-07-07  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * NEWS: Update.
-
-2007-07-07  Damien Carbery   <damien.carbery@sun.com>
-
-       reviewed by: Gustavo Carneiro.
-
-       * configure.ac: Bug 339924 – pygobject doesn't compile on opensolaris.
-
-2007-04-30  Johannes Hölzl  <johannes.hoelzl@gmx.de>
-
-       * gobject/gobjectmodule.c (init_gobjectmodule),
-       * gobject/pygoptiongroup.c (arg_func),
-       * gobject/option.py (OptionParser._parse_args, OptionGroup._to_goptiongroup),
-       * tests/test_option.py: OptParse-Exceptions in GOption-callbacks
-       are now convertet into an GError.  GError from the
-       GOptionGroup.run is convertet into an OptParse-Exception.
-       Fixes #342948.
-
-2007-07-06  Ed Catmur  <ed@catmur.co.uk>
-
-       * gobject/pygtype.c (pyg_param_gvalue_from_pyobject),
-       (pyg_param_gvalue_as_pyobject): Applied patch from Ed Catmur to
-       support G_TYPE_VALUE boxed args/signals, and add a test, Fixes
-       #351072
-
-2007-07-06  Carlos Martin  <inean@users.sf.net>
-
-       * tests/test_gtype.py:
-       * tests/testhelpermodule.c: add test for #351072
-
-2007-07-04  Murray Cumming  <murrayc@murrayc.com>
-
-       * gobject/pygobject.c: (pygobject_switch_to_toggle_ref):
-       * gobject/pygobject.h: Rename the private struct field to
-       private_flags, because private is a C++ keyword, so this broke
-       builds of some C++ applications, such as Glom.
-
-2007-07-02  Sebastian Granjoux  <seb.sfo@free.fr>
-
-       reviewed by: Johan Dahlin
-
-       * gobject/gobjectmodule.c: (pyg_gerror_exception_check):
-       * tests/test_gtype.py:
-       * tests/testhelpermodule.c: (_wrap_test_gerror_exception):
-
-       Fix a bug in pyg_error_exception_check, add a test, Fixes #449879
-
-2007-06-17  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * gobject/pygobject.h: Add a flags field to PyGObject; uses
-       structure space formerly occupied by the now stale "GSList
-       *closures" field.
-
-       * gobject/pygobject.c (pygobject_switch_to_toggle_ref): Do nothing
-       if the wrapper is already in toggle reference mode.  Closes #447271.
-
-       * tests/test_subtype.py: Test case for #447271.
-
-2007-06-17  Sebastien Bacher  <seb128@ubuntu.com>
-
-       * m4/python.m4: use python-config to get python includes
-          (Closes #448173)
-
-2007-06-16  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * gobject/propertyhelper.py,
-       * tests/test_properties.py: Support type=GObject or
-       type=TYPE_OBJECT in the new properties API.
-
-2007-06-06  Yevgen Muntyan  <muntyan@tamu.edu>
-
-       OK'd by Johan
-
-       * gobject/generate-constants.c: Return 0 from main().
-
-       * gobject/Makefile.am: use generate-constants$(EXEEXT) instead
-       of generate-constants in the constants.py target rule.
-
-2007-05-30  Yevgen Muntyan  <muntyan@tamu.edu>
-
-       reviewed by: Gustavo Carneiro
-
-       * autogen.sh: Allow running autogen.sh from outside $srcdir.
-
-2007-05-09  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * tests/Makefile.am (INCLUDES): Idem.
-
-       * gobject/Makefile.am (INCLUDES): Add -D_XOPEN_SOURCE=600 and
-       -D__EXTENSIONS__ to make it compile with c99 and Sun C compiler.
-
-       Fixes #339924: gnome-python doesn't compile on opensolaris.
-
-2007-05-02  Johan Dahlin  <jdahlin@async.com.br>
-
-       * configure.ac: Post-release version bump.
-
-=== 2.13.1 ===
-2007-05-02  Johan Dahlin  <jdahlin@async.com.br>
-
-       * pygobject-2.0-uninstalled.pc.in: Add libdir.
-       Fixes #435132 (Luca Ferretti)
-
-2007-05-01  Johan Dahlin  <johan@gnome.org>
-
-       * gobject/propertyhelper.py:
-       * tests/test_properties.py:
-
-       Store property values in the descriptor per instance, add a test.
-
-       * examples/properties.py:
-       * gobject/Makefile.am:
-       * gobject/__init__.py:
-       * gobject/constants.py.in:
-       * gobject/generate-constants.c: (main):
-       * gobject/propertyhelper.py:
-       * tests/Makefile.am:
-       * tests/test_enum.py:
-       * tests/test_interface.py:
-       * tests/test_properties.py:
-
-       Add a property helper, fixes #338098
-
-2007-04-30  Gustavo J. A. M. Carneiro  <gjc@inescporto.pt>
-
-       * tests/common.py (importModules): Import testhelper first so that
-       g_thread_init is called before init_pygobject.
-
-       * tests/testhelpermodule.c (inittesthelper): Call g_thread_init
-       before init_pygobject.
-
-       * tests/test_subtype.py (TestSubType.testDescriptor): Unit test
-       for the bug below.
-
-       * gobject/pygobject.c (pygobject_setattro): Account for the case
-       when attribute setting doesn't actually create an instance
-       dictionary, in which case pygobject_switch_to_toggle_ref would be
-       called twice, thereby causing gobject error.
-       Fixes #434659
-
-2007-04-29  James Livingstone  <doclivingstone@gmail.com>
-
-       reviewed by: Johan Dahlin  <johan@gnome.org>
-
-       * gobject/pygtype.c: (pyg_value_from_pyobject):
-       * tests/test_signal.py:
-
-       Add a missing else to avoid throwing a TypeError.
-       Includes a test written by Ed Catmur.
-       Fixes #374653
-
-2007-04-29  Johan Dahlin  <johan@gnome.org>
-
-       * gobject/pygtype.c: (pyg_value_array_from_pyobject):
-       * tests/test_gtype.py:
-       * tests/testhelpermodule.c: (_wrap_test_value_array):
-
-       Treat None in a GValueArray as pointer/NULL, patch by
-       Ed Catmur, fixes #352209.
-
-2007-04-29  Loïc Minier  <lool+gnome@via.ecp.fr>
-
-       reviewed by: Johan Dahlin  <johan@gnome.org>
-
-       * autogen.sh:
-
-       Use dirname $0 instead of pwd to compute srcdir in autogen,
-       fixes #409234
-
-2007-04-29  Damien Carbery <damien.carbery@sun.com>
-
-       reviewed by: Johan Dahlin  <johan@gnome.org>
-
-       * tests/test-unknown.c: (test_interface_iface_method):
-
-       Do not return in a void function, fixes #385127
-
-2007-04-29  Johan Dahlin  <johan@gnome.org>
-
-       * gobject/pygflags.c: (pyg_flags_from_gtype):
-       Fix leak, patch by Daniel Berrange. Fixes #428726 (Phil Dumont)
-
-2007-04-29  Damien Carbery <damien.carbery@sun.com>
-
-       reviewed by: Johan Dahlin  <johan@gnome.org>
-
-       * configure.ac:
-       * pygobject-2.0-uninstalled.pc.in:
-
-       Add an uninstalled pkg-config file, fixes #385129
-
-2007-04-29  Johan Dahlin  <johan@gnome.org>
-
-       * README:
-       * configure.ac:
-       * gobject/Makefile.am:
-       * gobject/ffi-marshaller.c: (g_value_to_ffi_type),
-       (g_value_from_ffi_type), (g_cclosure_marshal_generic_ffi):
-       * gobject/ffi-marshaller.h:
-       * gobject/gobjectmodule.c: (create_signal), (init_gobject):
-       * pygobject-2.0.pc.in:
-       * tests/test_signal.py:
-       * tests/testhelpermodule.c: (test1_callback),
-       (test1_callback_swapped), (test2_callback), (test3_callback),
-       (test4_callback), (test_float_callback), (test_double_callback),
-       (test_string_callback), (test_object_callback), (connectcallbacks),
-       (_wrap_connectcallbacks), (inittesthelper):
-
-       Add a generic CClosure marshaller based on ffi.
-       This makes it possible to connect to signals on PyGObjects from C.
-       libffi is now an optional dependency
-       Fixes #353816 (Edward Hervey)
-
-2007-04-23  Gustavo J. A. M. Carneiro  <gjc@inescporto.pt>
-
-       * configure.ac: Post-release version bump.
-
-=== 2.13.0 ===
-2007-04-23  Gustavo J. A. M. Carneiro  <gjc@inescporto.pt>
-
-       * configure.ac: Bump version to 2.13.0.
-
-       * tests/test_properties.py (TestProperties.testMulti): Unit test
-       for get/set_properties.
-
-2007-04-23  Gian Mario Tagliaretti  <gianmt@gnome.org>
-
-       * gobject/pygobject.c: Implemented pygobject_set_properties and
-       pygobject_get_properties in order to set multiple properties using
-       keyword arguments. Fixes 403212
-
-       * docs/reference/pygobject.xml: Docs for the above new methods.
-
-2007-04-14  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * gobject/gobjectmodule.c, gobject/pygobject.h: Add a new
-       pyg_gerror_exception_check API.  Fixes #425242.
-
-       * gobject/gobjectmodule.c (pyg_set_application_name)
-       (pyg_set_prgname): Add wrappers for g_set_application_name and
-       g_set_prgname.  Patch by Havoc Pennington.  Fixes #415853.
-
-       * gobject/pygobject.h: Bug #419379: Modernize init_pygobject: use
-       static inline functions instead of macros.
-
-       * gobject/gobjectmodule.c (init_gobject):
-       * gobject/pygobject-private.h:
-       * gobject/pygobject.c (pygobject_data_free, pygobject_data_new),
-       (pygobject_get_inst_data, pyg_toggle_notify),
-       (pygobject_switch_to_toggle_ref),
-       (pygobject_register_wrapper_full, pygobject_register_wrapper),
-       (pygobject_new_full, pygobject_unwatch_closure),
-       (pygobject_watch_closure, pygobject_dealloc, pygobject_repr),
-       (pygobject_traverse, pygobject_clear, pygobject_weak_ref),
-       (pygobject_setattro, pygobject_weak_ref_traverse),
-       (pygobject_weak_ref_notify, pygobject_weak_ref_clear),
-       (pygobject_weak_ref_dealloc, pygobject_weak_ref_new),
-       (pygobject_weak_ref_unref, pygobject_weak_ref_call):
-       * gobject/pygobject.h:
-       * gobject/pygtype.c (gclosure_from_pyfunc):
-       * tests/test_subtype.py:
-       Bug #320428: Break PyGObject<->GObject reference cycle (patch
-       v7.1; thanks John Ehresman for the help with this patch).
-
-2007-03-17  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * gobject/pygobject.c (pygobject_emit): Fix %ld vs int warning.
-       (pygobject_chain_from_overridden): Idem.
-
-2007-03-06  Richard Hult  <richard@imendio.com>
-
-       * configure.ac: Fix the docs option so that it's possible to disable
-       building the docs.
-
-2007-03-03  Edward Hervey  <edward@fluendo.com>
-
-       * gobject/pygobject.c: (set_property_from_pspec):
-       Release the GIL when calling g_object_set_property, since setting a
-       property might trigger some code that might come back in python land.
-       Fixes #395048
-
-2007-01-09  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * configure.ac:  Turn the option --disable-docs into --enable-docs.
-       * docs/Makefile.am:  Tread --enable-docs like --enable-gtk-doc in
-       gtk+, i.e. do not ever build docs unless requested, but always
-       install them if they are found already built.
-
-2006-12-14  Kjartan Maraas  <kmaraas@gnome.org>
-
-       * autogen.sh: Make this work with automake 1.10 too.
-
-2006-11-18  Johan Dahlin  <jdahlin@async.com.br>
-
-       * configure.ac: Post release version bump
-
-=== 2.12.3 ===
-2006-11-18  Johan Dahlin  <jdahlin@async.com.br>
-
-       * NEWS: Update
-
-       * gobject/pygoptiongroup.c (pyg_option_group_dealloc):
-       * tests/test_option.py (TestOption.testBadConstructor):
-       Make sure an exception is raised when we pass in invalid arguments
-       to the optiongroup constructor, add a test. #364576 (Laszlo Pandy)
-
-       * gobject/pygobject.c (pygobject_register_class): set __module__ on
-       gobject derived types, fixes #376099 (Osmo Salomaa)
-
-2006-11-18  Yevgen Muntyan  <muntyan@tamu.edu>
-
-       reviewed by: Johan Dahlin  <johan@gnome.org>
-
-       * gobject/gobjectmodule.c: (create_property):
-       * gobject/pygparamspec.c: (pyg_param_spec_getattr):
-       * tests/test_properties.py:
-
-       Avoid truncating in pyg_param_spec_getattr, add test for all non-float
-       numeric types. Fixes #353943
-
-2006-11-18  Johan Dahlin  <jdahlin@async.com.br>
-
-       * gobject/pygtype.c (gclosure_from_pyfunc): Use PyObject_Cmp instead
-       of comparing function closure addresses, which makes it possible
-       to use any callable and not just functions.
-       Fixes #375589 (Dima)
-
-2006-10-13  John Finlay  <finlay@moeraki.com>
-
-       * docs/Makefile.am (HTML_FILES): Remove
-       html/pygobject-reference-copyright.html.
-       Fixes #361906 (Marc-Andre Lureau)
-
-2006-10-11  John Finlay  <finlay@moeraki.com>
-
-       * docs/reference/pygobject-introduction.xml: Remove Copyright and
-       License section.
-
-       * docs/reference/pygobject-ref.xml: Remove author info
-
-2006-10-05  Cedric Gustin  <cedric.gustin@gmail.com>
-
-       * dsextras.py (Template) (TemplateExtension): Add
-       py_ssize_t_clean flag to be passed to codegen.SourceWriter.
-
-2006-10-04  Cedric Gustin  <cedric.gustin@gmail.com>
-
-       * Makefile.am: Add pygobject_postinstall.py to EXTRA_DIST.
-
-2006-10-03  Johan Dahlin  <jdahlin@async.com.br>
-
-       * configure.ac: Post release version bump
-
-=== 2.12.2 ===
-2006-10-03  Johan Dahlin  <jdahlin@async.com.br>
-
-       * NEWS:
-       * configure.ac: 2.12.2
-
-2006-10-03  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * gobject/Makefile.am:
-       * gobject/gobjectmodule.c: (add_signals), (add_properties),
-       (pyg_signal_new), (pyg_object_new), (get_handler_priority),
-       (pyg_io_add_watch), (pyg_spawn_async), (pyg_add_emission_hook),
-       (pyg_remove_emission_hook), (pyg_filename_from_utf8),
-       (_pyg_strv_to_gvalue):
-       * gobject/pygiochannel.c: (py_io_channel_write_chars),
-       (py_io_channel_write_lines):
-       * gobject/pygobject-private.h:
-       * gobject/pygobject.c: (PyGProps_length), (pygobject_init),
-       (pygobject_connect), (pygobject_connect_after),
-       (pygobject_connect_object), (pygobject_connect_object_after),
-       (pygobject_disconnect), (pygobject_handler_is_connected),
-       (pygobject_handler_block), (pygobject_handler_unblock),
-       (pygobject_emit), (pygobject_chain_from_overridden):
-       * gobject/pygoptioncontext.c: (pyg_option_context_parse):
-       * gobject/pygtype.c: (pyg_value_from_pyobject):
-
-       Python 2.5 and 64 bits fixes (Py_ssize_t), closes bug #338487.
-
-       * gobject/pygenum.c (pyg_enum_repr): Const warning fix.
-
-2006-09-29  Johan Dahlin  <jdahlin@async.com.br>
-
-       * pygtk.py: LGPL, not GPL header
-
-2006-09-24  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * gobject/pygobject.h (init_pygobject_check): Add parentheses
-       "around && within ||" to please gcc.
-
-2006-09-21  Cedric Gustin  <cedric.gustin@gmail.com>
-
-       * dsextras.py: Catch ImportError exception when codegen is not
-       available: disable Template and TemplateExtension, redirect the
-       user to the pygtk installer and raise a NameError
-       exception. check_date has also been rewritten and now uses
-       distutils.dep_util.newer_group(). defs files can also be built
-       using createdefs by passing tuples as keyword argument to Template
-       (see for example the gdk and gtk templates in setup.py).
-       * setup.py: Changed the way the VERSION macro is defined on win32.
-       Also install the html reference documentation, the xsl files and
-       fixxref.
-       * pygobject_postinstall.py: Set the value of DATADIR in
-       fixxref.py. Add functions to install shortcuts in the Start menu
-       to the reference manual (currently disabled: see bug #353849).
-
-2006-09-16  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * tests/test_signal.py (TestEmissionHook.testCallbackReturnFalse)
-       (TestEmissionHook.testCallbackReturnTrue)
-       (TestEmissionHook.testCallbackReturnTrueButRemove): Add a few more
-       emission hook tests.
-
-       * gobject/gobjectmodule.c (pyg_add_emission_hook): One too many
-       DECREF on 'extra_args'.
-
-2006-09-12  John Ehresman  <jpe@wingware.com>
-
-       * gobject/pygobject.h (init_pygobject_check): Declare variables
-       at start of code block
-
-2006-09-06  Johan Dahlin  <jdahlin@async.com.br>
-
-       * gobject/pygmainloop.c (pyg_signal_watch_prepare): Increase the timeout
-       to 1000ms instead of 100.
-
-=== 2.12.1 ===
-2006-09-04  Johan Dahlin  <jdahlin@async.com.br>
-
-       * gobject/pygobject.h (_PYGOBJECT_H_): Corrected version check,
-       (Sebastian Dröge, #354364)
-
-       * configure.ac: Post release version bump
-
-=== 2.12.0 ===
-2006-09-04  Johan Dahlin  <jdahlin@async.com.br>
-
-       * NEWS:
-       * configure.ac: 2.12.0
-
-2006-08-28  Johan Dahlin  <jdahlin@async.com.br>
-
-       * docs/Makefile.am: Install html files regardless even when passing
-       in --disable-docs, fixes #353159 (Matthias Clasen)
-
-2006-08-27  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * configure.ac: Post-release version bump.
-
-=== 2.11.4 ===
-2006-08-27  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * NEWS: Update.
-
-       * gobject/gobjectmodule.c (pyg_type_register): Correct a bug in
-       the code that checks if parent already implements an interface or not.
-
-       * tests/test-unknown.c (test_interface_base_init),
-       (test_interface_get_type): Add a property to the interface, for
-       better testing.
-       (test_unknown_get_property),
-       (test_unknown_set_property, test_unknown_class_init): Add a
-       property to the class as required by the interface.
-
-       * tests/test_interface.py: More thorough interface testing, with
-       properties and test both the case of implementing an interface
-       from scratch, and re-implementing and interface that a parent
-       already implements.
-
-2006-08-27  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * gobject/gobjectmodule.c (pygobject__g_instance_init): If
-       necessary, attach the GObject to the PyGObject here.
-       (pygobject_constructv): Cope with the fact that wrapper->obj may
-       have already been set due to the change above.
-
-       * tests/test_signal.py: Add test case fixed by the changes above,
-       basically calling self.emit() inside do_set_property called
-       implicitly by the constructor due to a CONSTRUCT property.
-
-       Fixes bug 353039: "Failure in signal emission during
-       do_set_property invoked from constructor".
-
-2006-08-26  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * gobject/gobjectmodule.c (pyg_type_register): Fix type
-       registration once more to account for all corner cases.  This time
-       we register interfaces in two stages: first, before properties and
-       signals are registered, we register the interfaces that are
-       already implemented in the parent type and are being overridden;
-       second, after registration of properties and signals, we register
-       the remaining interfaces.
-
-2006-08-21  Johan Dahlin  <jdahlin@async.com.br>
-
-       * docs/Makefile.am (EXTRA_DIST): Remove build_stamp, include generated .html
-       in the distributed tarball. Remove builddate.xml, reference directory and fixxref.py
-       dependencies to avoid regenerating the tarball when it's not needed.
-
-       * configure.ac: Post release version bump
-
-=== 2.11.3 ===
-2006-08-21  Johan Dahlin  <jdahlin@async.com.br>
-
-       * NEWS: Update
-
-       * Makefile.am:
-       * docs/Makefile.am:
-       Always install the xsl files & css files, regardless if the
-       documentation was actually built or not. Also clean it up considerably.
-
-2006-08-17  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * gobject/gobjectmodule.c (pyg_type_register): Move the interface
-       registration code up, to run before properties and signals
-       registration, because glib doesn't allow us to add interfaces
-       after the first call to g_class_ref.
-
-2006-08-16  John Finlay  <finlay@moeraki.com>
-
-       * docs/reference/pygobject-functions.xml: Update docs for
-       gobject functions.
-
-2006-08-15  Murray Cumming  <murrayc@murrayc.com>
-
-       * gobject/pygobject-private.h:
-       * gobject/pygobject.h:
-       Replace uses of typename with type_name, because that is a
-       reserved C++ keyword. This was breaking compilation of Glom
-       due its use in the new type_register_custom function pointer in
-       pygobject.h.
-
-2006-08-12  John Finlay  <finlay@moeraki.com>
-
-       * pygobject-2.0.pc.in: Add reference to installed pygobject docs
-       * docs/Makefile.am: Add install of style.css
-       * docs/xsl/html.xsl: Define stylesheet as style.css
-       * docs/style.css: Add.
-
-2006-08-10  John Finlay  <finlay@moeraki.com>
-
-       * docs/reference/entities.docbook.in:
-       * docs/reference/pygobject-ref.xml:
-       * docs/Makefile.am:
-       * configure.ac:
-       Use builddate.xml for the builddate entity and have builddate.xml be
-       updated when the docs are built not during configure time.
-
-2006-08-08  Johan Dahlin  <jdahlin@async.com.br>
-
-       * configure.ac:  Post release version bump.
-
-=== 2.11.2 ===
-2006-08-08  Johan Dahlin  <jdahlin@async.com.br>
-
-       * NEWS: Update
-
-2006-08-07  Johan Dahlin  <jdahlin@async.com.br>
-
-       * docs/Makefile.am ($(HTML_DATA)): Fix parallel build
-       (#350225, Ed Catmur)
-
-2006-08-06  Johan Dahlin  <johan@gnome.org>
-
-       * m4/as-expand.m4: New file to workaround automake silliness
-
-       * docs/xsl/fixxref.py.in: New script
-
-       * docs/Makefile.am (XSLFILES): Add fixxref.py script, moved in from
-       PyGTK.
-
-       * docs/xsl/html.xsl: Do not use shade.verbatim, set the background
-       color and border as a normal html tag to avoid an external
-       stylesheet.
-
-2006-08-04  Johan Dahlin  <jdahlin@async.com.br>
-
-       * configure.ac: Post release version bump
-
-=== 2.11.1 ===
-2006-08-04  Johan Dahlin  <jdahlin@async.com.br>
-
-       * NEWS: Update
-
-       * README: Update, some s/PyGTK/PyGObject/
-
-       * configure.ac:
-       * docs/Makefile.am:
-       * docs/reference/.cvsignore:
-       * docs/reference/entities.docbook.in:
-       * docs/reference/pygobject-ref.xml:
-       Clean up the build date/version mess I created.
-       Now it's created during configure time and properly included in
-       the docbook files. Also make sure distcheck passes
-
-2006-08-04  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * configure.in: Add hack to disable libtool checking for g++ and
-       g77 (copied from libglade).
-
-2006-07-29  John Finlay  <finlay@moeraki.com>
-
-       * gobject/pygobject.h (pyg_param_gvalue_from_pyobject): Fix define
-       to point to the correct function pointer field.
-
-2006-07-29  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * gobject/pygflags.c (pyg_flags_add): idem.
-
-       * gobject/pygenum.c (pyg_enum_add): Give a more explicit error
-       message when the gtype is not an enum.
-
-2006-07-25  Johan Dahlin  <jdahlin@async.com.br>
-
-       * gobject/pygobject.h (init_pygobject_check): Add a macro to easily
-       check the installed pygobject version.
-
-       * gobject/pygflags.c (pyg_flags_add)
-       * gobject/pygenum.c (pyg_enum_add): Duplicate the string before
-       sending it to python. Fixes GCC warnings.
-
-2006-07-24  John Finlay  <finlay@moeraki.com>
-
-       * gobject/pygflags.c (pyg_flags_get_first_value_name)
-       (pyg_flags_get_first_value_nick): Avoid segfault when
-       g_flags_get_first_value returns NULL.
-
-2006-07-20  John Finlay  <finlay@moeraki.com>
-
-       * docs/Makefile.am: Make version.xml dependent on config.h
-       Make builddate.xml dependent on REFERENCE_DEPS. Add builddate.xml to
-       build_stamp and pdf dependencies. Add pdf files to cleanup.
-
-2006-07-20  Johan Dahlin  <jdahlin@async.com.br>
-
-       * configure.ac:
-       * docs/Makefile.am:
-       * docs/reference/.cvsignore:
-       * docs/reference/version.xml.in:
-       Generate builddate.xml and version.xml at build time instead on
-       configure time, add proper dependencies.
-
-2006-07-19  John Finlay  <finlay@moeraki.com>
-
-       * docs/Makefile.am: Use more portable date generator.
-
-       * docs/xsl/ref-html-style.xsl: Add book to list of indexed items.
-
-       * docs/xsl/html.xsl: Output xref links for unknown links.
-
-       * docs/xsl/ref-html-style.xsl: Include refsect1 and refsect2 in
-       indexed items but only if they have ids.
-
-       * configure.ac (AC_CONFIG_FILES) : Add docs/reference/version.xml
-
-       * docs/reference/pygobject-ref.xml: Add pygobject-introduction.xml
-       and version and builddate entities. Remove commented out items.
-
-       * docs/Makefile.am: Add reference/pygobject-introduction.xml and
-        reference/version.xml.in
-
-2006-07-18  Johan Dahlin  <johan@gnome.org>
-
-       * docs/Makefile.am (HTMLdir): Install book in $datadir/gtk-doc/html
-
-2006-07-13  Johan Dahlin  <jdahlin@async.com.br>
-
-       * gobject/gobjectmodule.c: (pyg_type_from_name),
-       (get_type_name_for_class):
-       * gobject/pygobject-private.h:
-       * gobject/pygobject.c: (pygobject_new_with_interfaces),
-       (pygobject_lookup_class), (pygobject_emit):
-       * gobject/pygobject.h:
-       * gobject/pygtype.c: (_wrap_g_type_from_name),
-       (pyg_type_from_object), (pyg_type_register_custom_callback),
-       (pyg_type_get_custom), (_pyg_type_from_name):
-       Add infrastructure for lazy type registration, fixes #346947
-
-2006-07-13  Gustavo J. A. M. Carneiro  <gjc@inescporto.pt>
-
-       * m4/python.m4: Properly quote AM_CHECK_PYMOD definition.
-
-       * gobject/pygoptioncontext.c (pyg_option_context_parse): Fix mem
-       leak.
-
-2006-07-12  Johan Dahlin  <jdahlin@async.com.br>
-
-       * Makefile.am:
-       * configure.ac:
-       * docs/.cvsignore:
-       * docs/Makefile.am:
-       * docs/common.xsl:
-       * docs/devhelp.xsl:
-       * docs/html.xsl:
-       * docs/pdf-style.xsl:
-       * docs/pdf.xsl:
-       * docs/ref-html-style.xsl:
-       * docs/reference/.cvsignore:
-       * docs/reference/pygobject-classes.xml:
-       * docs/reference/pygobject-constants.xml:
-       * docs/reference/pygobject-functions.xml:
-       * docs/reference/pygobject-gboxed.xml:
-       * docs/reference/pygobject-ginterface.xml:
-       * docs/reference/pygobject-gpointer.xml:
-       * docs/reference/pygobject-maincontext.xml:
-       * docs/reference/pygobject-mainloop.xml:
-       * docs/reference/pygobject-ref.xml:
-       * docs/reference/pygobject.xml:
-       Import GObject part of John Finlay's PyGTK Reference Manual, copy
-       over infrastructure from the pygtk-web module.
-
-2006-07-12  Gustavo J. A. M. Carneiro  <gjc@inescporto.pt>
-
-       * configure.ac: Post-release version bump to 2.11.1.
-
-=== PyGObject 2.11.0 ===
-2006-07-09  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * gobject/gobjectmodule.c (pyg_type_register): Make interface_data
-       point to the python type before adding the interface to the new
-       type.  This should fix interface implementation (actually I
-       thought such code had already been added earlier but can't find it
-       now and it is obviously needed...)
-       (pyg_type_register): move the code that needs g_type_class_ref
-       until after interface registration (more code that I already wrote
-       in the past but got lost).
-
-2006-07-05  John Finlay  <finlay@moeraki.com>
-
-       * gobject/pygiochannel.c (py_io_channel_init): Fix message typo.
-
-2006-06-28  Cedric Gustin  <cedric.gustin@gmail.com>
-
-       * dsextras.py (InstallData): Set datarootdir in .pc file.
-
-       * pygobject_postinstall.py (replace_prefix): Do not parse
-       pygtk-codegen-2.0 as it is part of pygtk.
-
-       * setup.py: Create gobject extension as gobject._gobject. Add
-       pygoptioncontext.c and pygoptiongroup.c to the list of source
-       files. Add option.py to the module files. Changed name of
-       distutils package from pygtk to pygobject.
-
-2006-06-24  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * gobject/gobjectmodule.c (pyg_filename_from_utf8): Wrap
-       g_filename_from_utf8.
-
-       * tests/test_signal.py (TestClosures.testGString): Add unit test
-       for signals using the type TYPE_GSTRING.
-
-       * gobject/pygtype.c (pyg_value_as_pyobject)
-       (pyg_value_from_pyobject): Implement conversion code for the type
-       G_TYPE_GSTRING.
-
-       * gobject/gobjectmodule.c (pyg_filename_display_basename)
-       (pyg_filename_display_name): Add bindings for
-       g_filename_display_basename and g_filename_display_name.
-       (init_gobject): Add a TYPE_GSTRING definition.
-
-       * gobject/pygobject.h,
-       * gobject/pygobject-private.h: Make pyg_constant_strip_prefix
-       receive and return const gchar*, to indicate it does not change
-       the string.  Unfortunately since PyModule_AddIntConst is broken in
-       python < 2.5 this introduces const warnings elsewhere :-(
-
-       * gobject/gobjectmodule.c (pyg_flags_add_constants)
-       (pyg_enum_add_constants): Fix const warnings.
-
-2006-06-23  John Finlay  <finlay@moeraki.com>
-
-       * gobject/gobjectmodule.c (pyg_object_class_list_properties)
-       (pyg_signal_list_ids, pyg_signal_lookup, pyg_signal_query): Add
-       support for retrieving signal and propertie info from interface types.
-
-2006-06-04  Johan Dahlin  <johan@gnome.org>
-
-       * gobject/gobjectmodule.c (pyg_spawn_async)
-       (pyg_signal_new): Fix two leaks in error cases, found by
-       Coverity.
-
-2006-05-28  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * tests/test_subtype.py: Uncomment Johan's "subsubtype" test case.
-
-       * gobject/gobjectmodule.c (pygobject__g_instance_init): Pass the
-       g_class to pygobject_new_full, because during the instance init
-       function instances are temporarily assigned the parent's GType.
-
-       * gobject/pygobject-private.h,
-       * gobject/pygobject.c (pygobject_new_full): Make
-       pygobject_new_full accept an optional g_class parameter; If
-       present, the GType is extracted from the class instead of from the
-       instance.
-
-2006-05-20  Yevgen Muntyan  <muntyan@tamu.edu>
-
-       reviewed by: Gustavo Carneiro
-
-       * gobject/pygobject.c (pygobject_init, pygobject_get_property),
-       (pygobject_set_property): Bug 341174: Be more specific in
-       set/get_property error messages.
-
-2006-05-07  Yevgen Muntyan  <muntyan@tamu.edu>
-
-       reviewed by: Gustavo Carneiro
-
-       * gobject/gobjectmodule.c (_log_func, add_warning_redirection),
-       (remove_handler, disable_warning_redirections, init_gobject):
-       * gobject/pygobject.h:  Add new pyg_add_warning_redirection and
-       pyg_disable_warning_redirections APIs (bug #323786 again).
-
-2006-05-07  Johan Dahlin  <johan@gnome.org>
-
-       * Makefile.am (CLEANFILES): Remove pygtk.py, it's not
-       auto-generated any longer. Thanks to Kjartan for noticing.
-
-2006-05-07  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * gobject/pygoptioncontext.c:
-       s/sizeof(PyGMainContext)/sizeof(PyGOptionContext)/ (copy-paste error).
-
-2006-05-01  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * gobject/gobjectmodule.c (pyg_pid_close): Add a close() method
-       to the GPid wrapper.
-
-       * gobject/gobjectmodule.c (pyg_pid_free, pyg_pid_new),
-       (pyg_spawn_async, init_gobject): Wrap GPid in an object whose
-       destructor calls g_spawn_close_pid.  Fixes #340160.
-
-2006-04-29  Johannes Hölzl <johannes.hoelzl@gmx.de>
-
-       reviewed by: Johan Dahlin  <jdahlin@async.com.br>
-
-       * examples/Makefile.am:
-       * examples/option.py:
-       * gobject/Makefile.am:
-       * gobject/gobjectmodule.c: (init_gobject):
-       * gobject/option.py:
-       * gobject/pygobject-private.h:
-       * gobject/pygoptioncontext.c: (pyg_option_context_init),
-       (pyg_option_context_dealloc), (pyg_option_context_parse),
-       (pyg_option_context_set_help_enabled),
-       (pyg_option_context_get_help_enabled),
-       (pyg_option_context_set_ignore_unknown_options),
-       (pyg_option_context_get_ignore_unknown_options),
-       (pyg_option_context_set_main_group),
-       (pyg_option_context_get_main_group),
-       (pyg_option_context_add_group), (pyg_option_context_compare),
-       (pyg_option_context_new):
-       * gobject/pygoptiongroup.c: (check_if_owned), (destroy_g_group),
-       (pyg_option_group_init), (pyg_option_group_dealloc), (arg_func),
-       (pyg_option_group_add_entries),
-       (pyg_option_group_set_translation_domain),
-       (pyg_option_group_compare), (pyg_option_group_transfer_group),
-       (pyg_option_group_new):
-       * tests/test_option.py:
-
-       Add support for GOption, fixes #163645
-
-2006-04-29  Johan Dahlin  <jdahlin@async.com.br>
-
-       * gobject/pygtype.c (gclosure_from_pyfunc):
-
-       * gobject/pygobject.c (pygobject_disconnect_by_func)
-       (pygobject_handler_block_by_func)
-       (pygobject_handler_unblock_by_func):
-
-       * tests/test_signal.py (TestEmissionHook._callback):
-
-       Fix #154845, add tests and a private method.
-
-2006-04-23  John Ehresman   <jpe@wingware.com>
-
-       reviewed by: Gustavo
-
-       * Makefile.am:
-       * pygtk.py:
-       * pygtk.py.in:
-       Bug 338945: Make pygtk.py relocatable
-
-2006-04-18  John Ehresman   <jpe@wingware.com>
-
-       * dsextras.py: Add compiler / linker flags from pkgconfig-2.0.pc
-       by default, with an override mechanism.  Filter out -lc & -lm if
-       compiling with msvc.
-
-       * setup.py: Change C extension name to _gobject and don't use the
-       pkgconfig-2.0.pc when compiling
-
-2006-04-15  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * gobject/__init__.py (_PyGObject_API): Copy _PyGObject_API from
-       gobject._gobject into gobject in order to preserve binary
-       compatibility with 3rd party modules.
-
-       * gobject/pygobject.h (init_pygobject): Import gobject, gobject._gobject.
-
-       * gobject/Makefile.am: Fix pygobject installation dir: install
-       both _gobject.la and __init__.py into
-       $(pyexecdir)/gtk-2.0/gobject.
-
-2006-04-11  Johan Dahlin  <jdahlin@async.com.br>
-
-       * gobject/gobjectmodule.c (init_gobject):
-       * gobject/__init__.py:
-       Move over almost all GType constants from C to Python.
-
-2006-04-11  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * gobject/__init__.py:
-       * gobject/gobjectmodule.c (_wrap_pyg_type_register),
-       (pyg__install_metaclass, init_gobject):  GObjectMeta now moved to
-       python-land (__init__.py).
-
-       * gobject/pygobject-private.h:
-       * gobject/pygobject.c (pygobject_register_class):
-       PyGObject_MetaType is now a pointer, not structure.
-
-       * gobject/gobjectmodule.c (_wrap_pyg_type_register): Add optional
-       type name parameter.
-
-       * tests/common.py (importModule): Include original exception
-       string in the raised SystemExit.
-
-2006-04-11  Johan Dahlin  <jdahlin@async.com.br>
-
-       * gobject/.cvsignore:
-       * gobject/Makefile.am:
-       * gobject/__init__.py:
-       * gobject/gobjectmodule.c: (init_gobject):
-       * gobject/pygobject.h:
-       * tests/Makefile.am:
-       * tests/common.py:
-
-       Turn gobject into a package; move _gobject to gobject._gobject and
-       add gobject/__init__.py. Update macros and testsuite.
-
-2006-04-11  Johan Dahlin  <jdahlin@async.com.br>
-
-       * configure.ac: Post release version bump
-
-=== PyGObject 2.10.1 ===
-2006-04-11  Johan Dahlin  <jdahlin@async.com.br>
-
-       * NEWS: Update
-
-2006-04-11  Andy Wingo  <wingo@pobox.com>
-
-       reviewed by: Johan Dahlin  <jdahlin@async.com.br>
-
-       * gobject/gobjectmodule.c (create_property): Parse unsigned int64
-       constraints in param spec declaration using the "K" ParseTuple
-       format unit, not L -- allows the full range of the datatype to be
-       parsed. K format unit added in python 2.3.
-
-2006-04-01  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * tests/test_properties.py: Add test for #335854.
-
-       * pygtk.py.in (require): For version == '2.0', use a hardcoded
-       pygtk path, recorded during build.
-
-       * gobject/gobjectmodule.c (_pyg_strv_to_gvalue): Don't allow
-       arbitrary sequences, only tuple or list, since a string is a
-       sequence too.
-       (pyg_object_new): Add a bit more detail to the exception string.
-
-2006-01-16  Johan Dahlin  <johan@gnome.org>
-
-       * Makefile.am: Include dsextras.py in the dist and install it.
-
-2006-03-19  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * gobject/pygobject.c (pygobject_new_with_interfaces): Remove
-       comment "It will currently not filter out interfaces already
-       implemented by it parents.", since it is no longer true since
-       2006-01-13.
-
-=== PyGObject 2.10.0 ===
-2006-01-16  Johan Dahlin  <johan@gnome.org>
-
-       * NEWS: Update
-
-2006-03-09 Michael Smith  <msmith@fluendo.com>
-
-       reviewed by: Johan Dahlin  <jdahlin@async.com.br>
-
-       * gobject/pygenum.c: (pyg_enum_new), (pyg_enum_from_gtype),
-       (pyg_enum_add):
-       * gobject/pygflags.c: (pyg_flags_new), (pyg_flags_from_gtype),
-       (pyg_flags_add):
-       Plug a couple of leaks, fixes #334027.
-
-2006-01-19  Johan Dahlin  <johan@gnome.org>
-
-       * configure.ac (export_dynamic):
-       * Makefile.am (egg):
-       Add a make egg target
-
-2006-01-16  Johan Dahlin  <johan@gnome.org>
-
-       * configure.ac: Post release version bump
-
-=== PyGObject 2.9.1 ===
-2006-01-16  Johan Dahlin  <johan@gnome.org>
-
-       * NEWS: Update
-
-2006-01-15  Christopher Aillon  <caillon@redhat.com>
-
-       * gobject/gobjectmodule.c (pyg_strv_to_gvalue):
-       Don't call g_value_init since the other *_to_gvalue
-       methods expect an already inited GValue
-
-2006-01-14  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * gobject/gobjectmodule.c (iowatch_marshal): Warn if io callback
-       returns None: almost always this is an error.
-
-2006-01-13  Gustavo J. A. M. Carneiro  <gjc@gnome.org>
-
-       * gobject/pygobject.c (pygobject_register_class): Change strategy
-       a bit: don't ignore bases; use but augment it with missing bases
-       extracted in runtime.
-
-       * gobject/pygobject.c (pygobject_register_class): Don't use the
-       passed in 'bases' parameter; instead find out in runtime the bases
-       for any given gtype.
-       (pyg_type_get_bases, pygobject_new_with_interfaces): Refactor code
-       that dynamically discovers bases into a separate function;
-       Override tp_dealloc, tp_alloc, tp_free, tp_traverse, and tp_clear,
-       inherit them again from the parent type, since type_new inside
-       Python core sets them to hardcoded functions subtype_xxx.  Also
-       call py_parent_type->ob_type, instead of fixed &PyType_Type.
-       (pygobject_clear): Change a g_message to g_warning.
-
-2006-01-13  Johan Dahlin  <jdahlin@async.com.br>
-
-       * gobject/gobjectmodule.c: (pyg_io_add_watch),
-       (marshal_emission_hook), (pyg_add_emission_hook),
-       (pyg_remove_emission_hook):
-       * gobject/pygobject.c:
-       * tests/test_signal.py:
-
-       Add add/remove_emission_hook and tests. Fixes #325977
-
-2006-01-11  Gustavo J. A. M. Carneiro  <gjc@inescporto.pt>
-
-       * gobject/gobjectmodule.c (_pyg_signal_accumulator),
-       (create_signal, pyg_signal_accumulator_true_handled),
-       (initgobject): Bug 155380 -- Add support for signal accumulators.
-
-       * tests/runtests.py: Add 'test_enum', 'test_conversion' to
-       SKIP_FILES, since they depend on pygtk modules so don't work
-       anymore.  This should be eventually fixed, though.
-
-       * tests/test_signal.py: Test signal accumulators.
-
-       * gobject/pygtype.c (object_doc_descr_get): Reorder
-       properties/signals documentation more nicely: signals + properties
-       from each type are presented, with types ranging from the leaf
-       types to the base types.
-
-       * configure.ac: Branch, bump version to 2.9.1.
-
-=== PyGObject 2.8.0 ===
-2006-01-09  Johan Dahlin  <jdahlin@async.com.br>
-
-       * MANIFEST.in:
-       * Makefile.am:
-       * tests/Makefile.am:
-
-       Make dist/distcheck work again
-
-2006-01-09  Johan Dahlin  <jdahlin@async.com.br>
-
-       * setup.py: Add distutils support
-
-       * dsextras.py (get_m4_define): Check for configure.ac aswell.
-
-       * .cvsignore:
-       * AUTHORS:
-       * COPYING:
-       * INSTALL:
-       * Makefile.am:
-       * PKG-INFO.in:
-       * README:
-       * autogen.sh:
-       * configure.ac:
-       * examples/.cvsignore:
-       * examples/Makefile.am:
-       * gobject/gobjectmodule.c: (initgobject):
-       * m4/jhflags.m4:
-       * m4/python.m4:
-       * pygobject-2.0.pc.in:
-       * tests/Makefile.am:
-       * tests/common.py:
-       * tests/leak.glade:
-       * tests/runtests.py:
-       * tests/test_actiongroup.py:
-       * tests/test_dialog.py:
-       * tests/test_gdk.py:
-       * tests/test_gdkevent.py:
-       * tests/test_glade.py:
-       * tests/test_gtype.py:
-       * tests/test_liststore.py:
-       * tests/test_radiobutton.py:
-       * tests/test_signal.py:
-       * tests/test_subtype.py:
-       * tests/test_textview.py:
-       * tests/test_thread.py:
-       * tests/testhelpermodule.c: (test_type_get_type),
-       (_wrap_test_g_object_new):
-       * tests/testmodule.py:
-
-       Split out PyGObject from PyGTK.
diff --git a/INSTALL b/INSTALL
index 23e5f25..d60e29a 100644 (file)
--- a/INSTALL
+++ b/INSTALL
 Installation Instructions
 *************************
 
-Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
-Software Foundation, Inc.
+Copyright (C) 1994-1996, 1999-2002, 2004-2012 Free Software Foundation,
+Inc.
 
-This file is free documentation; the Free Software Foundation gives
-unlimited permission to copy, distribute and modify it.
+   Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.  This file is offered as-is,
+without warranty of any kind.
 
 Basic Installation
 ==================
 
-These are generic installation instructions.
+   Briefly, the shell commands './configure; make; make install' should
+configure, build, and install this package.  The following
+more-detailed instructions are generic; see the 'README' file for
+instructions specific to this package.  Some packages provide this
+'INSTALL' file but do not implement all of the features documented
+below.  The lack of an optional feature in a given package is not
+necessarily a bug.  More recommendations for GNU packages can be found
+in *note Makefile Conventions: (standards)Makefile Conventions.
 
-   The `configure' shell script attempts to guess correct values for
+   The 'configure' shell script attempts to guess correct values for
 various system-dependent variables used during compilation.  It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions.  Finally, it creates a shell script `config.status' that
+those values to create a 'Makefile' in each directory of the package.
+It may also create one or more '.h' files containing system-dependent
+definitions.  Finally, it creates a shell script 'config.status' that
 you can run in the future to recreate the current configuration, and a
-file `config.log' containing compiler output (useful mainly for
-debugging `configure').
+file 'config.log' containing compiler output (useful mainly for
+debugging 'configure').
 
-   It can also use an optional file (typically called `config.cache'
-and enabled with `--cache-file=config.cache' or simply `-C') that saves
-the results of its tests to speed up reconfiguring.  (Caching is
+   It can also use an optional file (typically called 'config.cache'
+and enabled with '--cache-file=config.cache' or simply '-C') that saves
+the results of its tests to speed up reconfiguring.  Caching is
 disabled by default to prevent problems with accidental use of stale
-cache files.)
+cache files.
 
    If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
+to figure out how 'configure' could check whether to do them, and mail
+diffs or instructions to the address given in the 'README' so they can
 be considered for the next release.  If you are using the cache, and at
-some point `config.cache' contains results you don't want to keep, you
+some point 'config.cache' contains results you don't want to keep, you
 may remove or edit it.
 
-   The file `configure.ac' (or `configure.in') is used to create
-`configure' by a program called `autoconf'.  You only need
-`configure.ac' if you want to change it or regenerate `configure' using
-a newer version of `autoconf'.
+   The file 'configure.ac' (or 'configure.in') is used to create
+'configure' by a program called 'autoconf'.  You need 'configure.ac' if
+you want to change it or regenerate 'configure' using a newer version
+of 'autoconf'.
 
-The simplest way to compile this package is:
+   The simplest way to compile this package is:
 
-  1. `cd' to the directory containing the package's source code and type
-     `./configure' to configure the package for your system.  If you're
-     using `csh' on an old version of System V, you might need to type
-     `sh ./configure' instead to prevent `csh' from trying to execute
-     `configure' itself.
+  1. 'cd' to the directory containing the package's source code and type
+     './configure' to configure the package for your system.
 
-     Running `configure' takes awhile.  While running, it prints some
-     messages telling which features it is checking for.
+     Running 'configure' might take a while.  While running, it prints
+     some messages telling which features it is checking for.
 
-  2. Type `make' to compile the package.
+  2. Type 'make' to compile the package.
 
-  3. Optionally, type `make check' to run any self-tests that come with
-     the package.
+  3. Optionally, type 'make check' to run any self-tests that come with
+     the package, generally using the just-built uninstalled binaries.
 
-  4. Type `make install' to install the programs and any data files and
-     documentation.
+  4. Type 'make install' to install the programs and any data files and
+     documentation.  When installing into a prefix owned by root, it is
+     recommended that the package be configured and built as a regular
+     user, and only the 'make install' phase executed with root
+     privileges.
 
-  5. You can remove the program binaries and object files from the
-     source code directory by typing `make clean'.  To also remove the
-     files that `configure' created (so you can compile the package for
-     a different kind of computer), type `make distclean'.  There is
-     also a `make maintainer-clean' target, but that is intended mainly
+  5. Optionally, type 'make installcheck' to repeat any self-tests, but
+     this time using the binaries in their final installed location.
+     This target does not install anything.  Running this target as a
+     regular user, particularly if the prior 'make install' required
+     root privileges, verifies that the installation completed
+     correctly.
+
+  6. You can remove the program binaries and object files from the
+     source code directory by typing 'make clean'.  To also remove the
+     files that 'configure' created (so you can compile the package for
+     a different kind of computer), type 'make distclean'.  There is
+     also a 'make maintainer-clean' target, but that is intended mainly
      for the package's developers.  If you use it, you may have to get
      all sorts of other programs in order to regenerate files that came
      with the distribution.
 
+  7. Often, you can also type 'make uninstall' to remove the installed
+     files again.  In practice, not all packages have tested that
+     uninstallation works correctly, even though it is required by the
+     GNU Coding Standards.
+
+  8. Some packages, particularly those that use Automake, provide `make
+     distcheck', which can by used by developers to test that all other
+     targets like 'make install' and 'make uninstall' work correctly.
+     This target is generally not run by end users.
+
 Compilers and Options
 =====================
 
-Some systems require unusual options for compilation or linking that the
-`configure' script does not know about.  Run `./configure --help' for
-details on some of the pertinent environment variables.
+   Some systems require unusual options for compilation or linking that
+the 'configure' script does not know about.  Run './configure --help'
+for details on some of the pertinent environment variables.
 
-   You can give `configure' initial values for configuration parameters
+   You can give 'configure' initial values for configuration parameters
 by setting variables in the command line or in the environment.  Here
 is an example:
 
-     ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
+     ./configure CC=c99 CFLAGS=-g LIBS=-lposix
 
    *Note Defining Variables::, for more details.
 
 Compiling For Multiple Architectures
 ====================================
 
-You can compile the package for more than one kind of computer at the
+   You can compile the package for more than one kind of computer at the
 same time, by placing the object files for each architecture in their
-own directory.  To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'.  `cd' to the
+own directory.  To do this, you can use GNU 'make'.  'cd' to the
 directory where you want the object files and executables to go and run
-the `configure' script.  `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
+the 'configure' script.  'configure' automatically checks for the
+source code in the directory that 'configure' is in and in '..'.  This
+is known as a "VPATH" build.
+
+   With a non-GNU 'make', it is safer to compile the package for one
+architecture at a time in the source code directory.  After you have
+installed the package for one architecture, use 'make distclean' before
+reconfiguring for another architecture.
 
-   If you have to use a `make' that does not support the `VPATH'
-variable, you have to compile the package for one architecture at a
-time in the source code directory.  After you have installed the
-package for one architecture, use `make distclean' before reconfiguring
-for another architecture.
+   On MacOS X 10.5 and later systems, you can create libraries and
+executables that work on multiple system types--known as "fat" or
+"universal" binaries--by specifying multiple '-arch' options to the
+compiler but only a single '-arch' option to the preprocessor.  Like
+this:
+
+     ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
+                 CPP="gcc -E" CXXCPP="g++ -E"
+
+   This is not guaranteed to produce working output in all cases, you
+may have to build one architecture at a time and combine the results
+using the 'lipo' tool if you have problems.
 
 Installation Names
 ==================
 
-By default, `make install' installs the package's commands under
-`/usr/local/bin', include files under `/usr/local/include', etc.  You
-can specify an installation prefix other than `/usr/local' by giving
-`configure' the option `--prefix=PREFIX'.
+   By default, 'make install' installs the package's commands under
+'/usr/local/bin', include files under '/usr/local/include', etc.  You
+can specify an installation prefix other than '/usr/local' by giving
+'configure' the option '--prefix=PREFIX', where PREFIX must be an
+absolute file name.
 
    You can specify separate installation prefixes for
 architecture-specific files and architecture-independent files.  If you
-pass the option `--exec-prefix=PREFIX' to `configure', the package uses
+pass the option '--exec-prefix=PREFIX' to 'configure', the package uses
 PREFIX as the prefix for installing programs and libraries.
 Documentation and other data files still use the regular prefix.
 
    In addition, if you use an unusual directory layout you can give
-options like `--bindir=DIR' to specify different values for particular
-kinds of files.  Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them.
-
-   If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
+options like '--bindir=DIR' to specify different values for particular
+kinds of files.  Run 'configure --help' for a list of the directories
+you can set and what kinds of files go in them.  In general, the
+default for these options is expressed in terms of '${prefix}', so that
+specifying just '--prefix' will affect all of the other directory
+specifications that were not explicitly provided.
+
+   The most portable way to affect installation locations is to pass the
+correct locations to 'configure'; however, many packages provide one or
+both of the following shortcuts of passing variable assignments to the
+'make install' command line to change installation locations without
+having to reconfigure or recompile.
+
+   The first method involves providing an override variable for each
+affected directory.  For example, `make install
+prefix=/alternate/directory' will choose an alternate location for all
+directory configuration variables that were expressed in terms of
+'${prefix}'.  Any directories that were specified during 'configure',
+but not in terms of '${prefix}', must each be overridden at install
+time for the entire installation to be relocated.  The approach of
+makefile variable overrides for each directory variable is required by
+the GNU Coding Standards, and ideally causes no recompilation.
+However, some platforms have known limitations with the semantics of
+shared libraries that end up requiring recompilation when using this
+method, particularly noticeable in packages that use GNU Libtool.
+
+   The second method involves providing the 'DESTDIR' variable.  For
+example, 'make install DESTDIR=/alternate/directory' will prepend
+'/alternate/directory' before all installation names.  The approach of
+'DESTDIR' overrides is not required by the GNU Coding Standards, and
+does not work on platforms that have drive letters.  On the other hand,
+it does better at avoiding recompilation issues, and works well even
+when some directory options were not specified in terms of '${prefix}'
+at 'configure' time.
 
 Optional Features
 =================
 
-Some packages pay attention to `--enable-FEATURE' options to
-`configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-is something like `gnu-as' or `x' (for the X Window System).  The
-`README' should mention any `--enable-' and `--with-' options that the
+   If the package supports it, you can cause programs to be installed
+with an extra prefix or suffix on their names by giving 'configure' the
+option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'.
+
+   Some packages pay attention to '--enable-FEATURE' options to
+'configure', where FEATURE indicates an optional part of the package.
+They may also pay attention to '--with-PACKAGE' options, where PACKAGE
+is something like 'gnu-as' or 'x' (for the X Window System).  The
+'README' should mention any '--enable-' and '--with-' options that the
 package recognizes.
 
-   For packages that use the X Window System, `configure' can usually
+   For packages that use the X Window System, 'configure' can usually
 find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
+you can use the 'configure' options '--x-includes=DIR' and
+'--x-libraries=DIR' to specify their locations.
+
+   Some packages offer the ability to configure how verbose the
+execution of 'make' will be.  For these packages, running `./configure
+--enable-silent-rules' sets the default to minimal output, which can be
+overridden with 'make V=1'; while running `./configure
+--disable-silent-rules' sets the default to verbose, which can be
+overridden with 'make V=0'.
+
+Particular systems
+==================
+
+   On HP-UX, the default C compiler is not ANSI C compatible.  If GNU
+CC is not installed, it is recommended to use the following options in
+order to use an ANSI C compiler:
+
+     ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
+
+and if that doesn't work, install pre-built binaries of GCC for HP-UX.
+
+   HP-UX 'make' updates targets which have the same time stamps as
+their prerequisites, which makes it generally unusable when shipped
+generated files such as 'configure' are involved.  Use GNU 'make'
+instead.
+
+   On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
+parse its '<wchar.h>' header file.  The option '-nodtk' can be used as
+a workaround.  If GNU CC is not installed, it is therefore recommended
+to try
+
+     ./configure CC="cc"
+
+and if that doesn't work, try
+
+     ./configure CC="cc -nodtk"
+
+   On Solaris, don't put '/usr/ucb' early in your 'PATH'.  This
+directory contains several dysfunctional programs; working variants of
+these programs are available in '/usr/bin'.  So, if you need '/usr/ucb'
+in your 'PATH', put it _after_ '/usr/bin'.
+
+   On Haiku, software installed for all users goes in '/boot/common',
+not '/usr/local'.  It is recommended to use the following options:
+
+     ./configure --prefix=/boot/common
 
 Specifying the System Type
 ==========================
 
-There may be some features `configure' cannot figure out automatically,
-but needs to determine by the type of machine the package will run on.
-Usually, assuming the package is built to be run on the _same_
-architectures, `configure' can figure that out, but if it prints a
-message saying it cannot guess the machine type, give it the
-`--build=TYPE' option.  TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name which has the form:
+   There may be some features 'configure' cannot figure out
+automatically, but needs to determine by the type of machine the package
+will run on.  Usually, assuming the package is built to be run on the
+_same_ architectures, 'configure' can figure that out, but if it prints
+message saying it cannot guess the machine type, give it the
+'--build=TYPE' option.  TYPE can either be a short name for the system
+type, such as 'sun4', or a canonical name which has the form:
 
      CPU-COMPANY-SYSTEM
 
 where SYSTEM can have one of these forms:
 
-     OS KERNEL-OS
+     OS
+     KERNEL-OS
 
-   See the file `config.sub' for the possible values of each field.  If
-`config.sub' isn't included in this package, then this package doesn't
+   See the file 'config.sub' for the possible values of each field.  If
+'config.sub' isn't included in this package, then this package doesn't
 need to know the machine type.
 
    If you are _building_ compiler tools for cross-compiling, you should
-use the option `--target=TYPE' to select the type of system they will
+use the option '--target=TYPE' to select the type of system they will
 produce code for.
 
    If you want to _use_ a cross compiler, that generates code for a
 platform different from the build platform, you should specify the
 "host" platform (i.e., that on which the generated programs will
-eventually be run) with `--host=TYPE'.
+eventually be run) with '--host=TYPE'.
 
 Sharing Defaults
 ================
 
-If you want to set default values for `configure' scripts to share, you
-can create a site shell script called `config.site' that gives default
-values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists.  Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all `configure' scripts look for a site script.
+   If you want to set default values for 'configure' scripts to share,
+you can create a site shell script called 'config.site' that gives
+default values for variables like 'CC', 'cache_file', and 'prefix'.
+'configure' looks for 'PREFIX/share/config.site' if it exists, then
+'PREFIX/etc/config.site' if it exists.  Or, you can set the
+'CONFIG_SITE' environment variable to the location of the site script.
+A warning: not all 'configure' scripts look for a site script.
 
 Defining Variables
 ==================
 
-Variables not defined in a site shell script can be set in the
-environment passed to `configure'.  However, some packages may run
+   Variables not defined in a site shell script can be set in the
+environment passed to 'configure'.  However, some packages may run
 configure again during the build, and the customized values of these
 variables may be lost.  In order to avoid this problem, you should set
-them in the `configure' command line, using `VAR=value'.  For example:
+them in the 'configure' command line, using 'VAR=value'.  For example:
 
      ./configure CC=/usr/local2/bin/gcc
 
-causes the specified `gcc' to be used as the C compiler (unless it is
-overridden in the site shell script).  Here is a another example:
+causes the specified 'gcc' to be used as the C compiler (unless it is
+overridden in the site shell script).
 
-     /bin/bash ./configure CONFIG_SHELL=/bin/bash
+Unfortunately, this technique does not work for 'CONFIG_SHELL' due to
+an Autoconf limitation.  Until the limitation is lifted, you can use
+this workaround:
 
-Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
-configuration-related scripts to be executed by `/bin/bash'.
+     CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash
 
-`configure' Invocation
+'configure' Invocation
 ======================
 
-`configure' recognizes the following options to control how it operates.
+   'configure' recognizes the following options to control how it
+operates.
+
+'--help'
+'-h'
+     Print a summary of all of the options to 'configure', and exit.
 
-`--help'
-`-h'
-     Print a summary of the options to `configure', and exit.
+'--help=short'
+'--help=recursive'
+     Print a summary of the options unique to this package's
+     'configure', and exit.  The 'short' variant lists options used
+     only in the top level, while the 'recursive' variant lists options
+     also present in any nested packages.
 
-`--version'
-`-V'
-     Print the version of Autoconf used to generate the `configure'
+'--version'
+'-V'
+     Print the version of Autoconf used to generate the 'configure'
      script, and exit.
 
-`--cache-file=FILE'
+'--cache-file=FILE'
      Enable the cache: use and save the results of the tests in FILE,
-     traditionally `config.cache'.  FILE defaults to `/dev/null' to
+     traditionally 'config.cache'.  FILE defaults to '/dev/null' to
      disable caching.
 
-`--config-cache'
-`-C'
-     Alias for `--cache-file=config.cache'.
+'--config-cache'
+'-C'
+     Alias for '--cache-file=config.cache'.
 
-`--quiet'
-`--silent'
-`-q'
+'--quiet'
+'--silent'
+'-q'
      Do not print messages saying which checks are being made.  To
-     suppress all normal output, redirect it to `/dev/null' (any error
+     suppress all normal output, redirect it to '/dev/null' (any error
      messages will still be shown).
 
-`--srcdir=DIR'
+'--srcdir=DIR'
      Look for the package's source code in directory DIR.  Usually
-     `configure' can determine that directory automatically.
+     'configure' can determine that directory automatically.
+
+'--prefix=DIR'
+     Use DIR as the installation prefix.  *note Installation Names::
+     for more details, including other options available for fine-tuning
+     the installation locations.
 
-`configure' also accepts some other, not widely useful, options.  Run
-`configure --help' for more details.
+'--no-create'
+'-n'
+     Run the configure checks, but stop before creating any output
+     files.
 
+'configure' also accepts some other, not widely useful, options.  Run
+'configure --help' for more details.
index f21793f..f317f84 100644 (file)
@@ -1,7 +1,7 @@
 ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
 AUTOMAKE_OPTIONS = 1.7
 
-SUBDIRS = examples gi tests
+SUBDIRS = examples gi tests pygtkcompat
 
 PLATFORM_VERSION = 3.0
 
@@ -9,10 +9,10 @@ CLEANFILES = \
        `find "$(builddir)" -type f -name "*.pyc" -print`
 
 EXTRA_DIST = \
-       ChangeLog.pre-2.18 \
        pygobject-$(PLATFORM_VERSION).pc.in \
        PKG-INFO \
        PKG-INFO.in \
+       pygi-convert.sh \
        m4/as-ac-expand.m4 \
        m4/jhflags.m4 \
        m4/python.m4
@@ -55,18 +55,21 @@ pkgconfig_DATA = pygobject-$(PLATFORM_VERSION).pc
 pyexec_LTLIBRARIES =
 
 # install pth file.
+
+EGG_NAME = $(PACKAGE)-$(PACKAGE_VERSION)-py$(PYTHON_VERSION)-$(PLATFORM)
+
 install-data-local:
-       $(mkinstalldirs) $(DESTDIR)$(pythondir)
+       $(mkinstalldirs) $(DESTDIR)$(pyexecdir)
+       cp $(top_builddir)/PKG-INFO $(DESTDIR)$(pyexecdir)/$(EGG_NAME).egg-info
 install-exec-local:
        $(mkinstalldirs) $(DESTDIR)$(pyexecdir)
 uninstall-local:
-
-EGG_NAME = $(PACKAGE)-$(PACKAGE_VERSION)-py$(PYTHON_VERSION)-$(PLATFORM).egg
+       rm -f $(DESTDIR)$(pyexecdir)/$(EGG_NAME).egg-info
 
 egg: EGG_TMPDIR:=$(TMPDIR)/$(PACKAGE)-$(PACKAGE_VERSION)
 egg: $(top_srcdir)/gobject/gobject.la PKG-INFO
        rm -fr $(EGG_TMPDIR)
-       echo $(EGG_NAME)
+       echo $(EGG_NAME).egg
        $(MKDIR_P) $(EGG_TMPDIR)
        $(MKDIR_P) $(EGG_TMPDIR)/EGG-INFO
        $(MAKE) -C gobject install-pkgpyexecLTLIBRARIES pkgpyexecdir=$(EGG_TMPDIR)
@@ -74,8 +77,8 @@ egg: $(top_srcdir)/gobject/gobject.la PKG-INFO
        $(INSTALL) PKG-INFO $(EGG_TMPDIR)/EGG-INFO
        echo "gobject.so" >> $(EGG_TMPDIR)/EGG-INFO/native_libs.txt
        ( echo "gobject" ) >> $(EGG_TMPDIR)/EGG-INFO/top_level.txt
-       cd $(EGG_TMPDIR) && zip -rq $(EGG_NAME) .
-       mv $(EGG_TMPDIR)/$(EGG_NAME) .
+       cd $(EGG_TMPDIR) && zip -rq $(EGG_NAME).egg .
+       mv $(EGG_TMPDIR)/$(EGG_NAME).egg .
        rm -fr $(EGG_TMPDIR)
 
 doc-dist:
@@ -142,3 +145,5 @@ check.nemiver:
 
 check.valgrind:
        cd tests && $(MAKE) check.valgrind
+
+@GNOME_CODE_COVERAGE_RULES@
index 626c97f..fc44c8d 100644 (file)
@@ -188,6 +188,9 @@ CAIRO_LIBS = @CAIRO_LIBS@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
+CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
+CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
+CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CYGPATH_W = @CYGPATH_W@
@@ -205,6 +208,7 @@ EXEEXT = @EXEEXT@
 FFI_CFLAGS = @FFI_CFLAGS@
 FFI_LIBS = @FFI_LIBS@
 FGREP = @FGREP@
+GENHTML = @GENHTML@
 GIO_CFLAGS = @GIO_CFLAGS@
 GIO_LIBS = @GIO_LIBS@
 GI_CFLAGS = @GI_CFLAGS@
@@ -224,6 +228,7 @@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
+LCOV = @LCOV@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBFFI_PC = @LIBFFI_PC@
@@ -233,7 +238,6 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
@@ -333,16 +337,16 @@ top_build_prefix = @top_build_prefix@
 top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 AUTOMAKE_OPTIONS = 1.7
-SUBDIRS = examples gi tests
+SUBDIRS = examples gi tests pygtkcompat
 PLATFORM_VERSION = 3.0
 CLEANFILES = \
        `find "$(builddir)" -type f -name "*.pyc" -print`
 
 EXTRA_DIST = \
-       ChangeLog.pre-2.18 \
        pygobject-$(PLATFORM_VERSION).pc.in \
        PKG-INFO \
        PKG-INFO.in \
+       pygi-convert.sh \
        m4/as-ac-expand.m4 \
        m4/jhflags.m4 \
        m4/python.m4
@@ -384,14 +388,16 @@ pkgconfig_DATA = pygobject-$(PLATFORM_VERSION).pc
 
 # python
 pyexec_LTLIBRARIES = 
-EGG_NAME = $(PACKAGE)-$(PACKAGE_VERSION)-py$(PYTHON_VERSION)-$(PLATFORM).egg
+
+# install pth file.
+EGG_NAME = $(PACKAGE)-$(PACKAGE_VERSION)-py$(PYTHON_VERSION)-$(PLATFORM)
 all: config.h
        $(MAKE) $(AM_MAKEFLAGS) all-recursive
 
 .SUFFIXES:
 am--refresh: Makefile
        @:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
@@ -418,9 +424,9 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
        $(SHELL) ./config.status --recheck
 
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+$(top_srcdir)/configure:  $(am__configure_deps)
        $(am__cd) $(srcdir) && $(AUTOCONF)
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
        $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
 $(am__aclocal_m4_deps):
 
@@ -431,7 +437,7 @@ config.h: stamp-h1
 stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
        @rm -f stamp-h1
        cd $(top_builddir) && $(SHELL) ./config.status config.h
-$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) 
+$(srcdir)/config.h.in:  $(am__configure_deps) 
        ($(am__cd) $(top_srcdir) && $(AUTOHEADER))
        rm -f stamp-h1
        touch $@
@@ -967,17 +973,18 @@ uninstall-am: uninstall-local uninstall-pkgconfigDATA \
        uninstall-pkgconfigDATA uninstall-pyexecLTLIBRARIES
 
 
-# install pth file.
 install-data-local:
-       $(mkinstalldirs) $(DESTDIR)$(pythondir)
+       $(mkinstalldirs) $(DESTDIR)$(pyexecdir)
+       cp $(top_builddir)/PKG-INFO $(DESTDIR)$(pyexecdir)/$(EGG_NAME).egg-info
 install-exec-local:
        $(mkinstalldirs) $(DESTDIR)$(pyexecdir)
 uninstall-local:
+       rm -f $(DESTDIR)$(pyexecdir)/$(EGG_NAME).egg-info
 
 egg: EGG_TMPDIR:=$(TMPDIR)/$(PACKAGE)-$(PACKAGE_VERSION)
 egg: $(top_srcdir)/gobject/gobject.la PKG-INFO
        rm -fr $(EGG_TMPDIR)
-       echo $(EGG_NAME)
+       echo $(EGG_NAME).egg
        $(MKDIR_P) $(EGG_TMPDIR)
        $(MKDIR_P) $(EGG_TMPDIR)/EGG-INFO
        $(MAKE) -C gobject install-pkgpyexecLTLIBRARIES pkgpyexecdir=$(EGG_TMPDIR)
@@ -985,8 +992,8 @@ egg: $(top_srcdir)/gobject/gobject.la PKG-INFO
        $(INSTALL) PKG-INFO $(EGG_TMPDIR)/EGG-INFO
        echo "gobject.so" >> $(EGG_TMPDIR)/EGG-INFO/native_libs.txt
        ( echo "gobject" ) >> $(EGG_TMPDIR)/EGG-INFO/top_level.txt
-       cd $(EGG_TMPDIR) && zip -rq $(EGG_NAME) .
-       mv $(EGG_TMPDIR)/$(EGG_NAME) .
+       cd $(EGG_TMPDIR) && zip -rq $(EGG_NAME).egg .
+       mv $(EGG_TMPDIR)/$(EGG_NAME).egg .
        rm -fr $(EGG_TMPDIR)
 
 doc-dist:
@@ -1053,6 +1060,8 @@ check.nemiver:
 check.valgrind:
        cd tests && $(MAKE) check.valgrind
 
+@GNOME_CODE_COVERAGE_RULES@
+
 # 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 31e214c..19ad872 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,111 @@
+3.7.3   17-Dec-2012
+       - Add support for caller-allocated GArray out arguments (Martin Pitt)
+         (#690041)
+       - [API add] Re-support calling GLib.io_add_watch with an fd or Python
+         file (Martin Pitt)
+        - pygtkcompat: Work around IndexError on large flags (Martin Pitt)
+        - Fix pyg_value_from_pyobject() range check for uint (Martin Pitt)
+        - Fix tests to work with g-i 1.34.2 (Martin Pitt)
+       - Fix wrong refcount for GVariant property defaults (Martin Pitt)
+         (#689267)
+        - Fix array arguments on 32 bit architectures (Martin Pitt)
+        - Add backwards compatible API for GLib.unix_signal_add_full()
+         (Martin Pitt)
+       - Drop MININT64/MAXUINT64 workaround, current g-i gets this right now
+         (Martin Pitt)
+        - Fix maximum and minimum ranges of TYPE_(U)INT64 properties
+         (Simonas Kazlauskas) (#688949)
+        - Ship pygi-convert.sh in tarballs (Martin Pitt) (#688697)
+
+3.7.2   19-Nov-2012
+       - [API change] Drop almost all static GLib bindings and replace them
+         with proper introspection. This gets rid of several cases where the
+         PyGObject API was not matching the real GLib API, makes the full GLib
+         API available through introspection, and makes the code smaller,
+         easier to maintain. For backwards compatibility, overrides are
+         provided to emulate the old static binding API, but this will throw a
+         PyGIDeprecationWarning for the cases that diverge from the official
+         API (in particular, GLib.io_add_watch() and GLib.child_watch_add()
+         being called without a priority argument). (Martin Pitt, Simon Feltman)
+       - [API change] Deprecate calling GLib API through the GObject
+         namespace. This has always been a misnomer with introspection, and
+         will be removed in a later version; for now this throws a
+         PyGIDeprecationWarning.
+        - [API change] Do not bind gobject_get_data() and gobject_set_data().
+         These have been deprecated for a cycle, now dropped entirely.
+         (Steve Frécinaux) (#641944)
+       - [API change] Deprecate void pointer fields as general PyObject
+         storage. (Simon Feltman) (#683599)
+        - Add support for GVariant properties (Martin Pitt)
+        - Add type checking to GVariant argument assignment (Martin Pitt)
+        - Fix marshalling of arrays of struct pointers to Python (Carlos Garnacho) (#678620)
+        - Fix Gdk.Atom to have a proper str() and repr() (Martin Pitt) (#678620)
+        - Make sure g_value_set_boxed does not cause a buffer overrun with GStrvs (Simon Feltman) (#688232)
+        - Fix leaks with GValues holding boxed and object types (Simon Feltman) (#688137)
+        - Add doc strings showing method signatures for gi methods (Simon Feltman) (#681967)
+        - Set Property instance doc string and blurb to getter doc string (Simon Feltman) (#688025)
+        - Add GObject.G_MINSSIZE (Martin Pitt)
+        - Fix marshalling of GByteArrays (Martin Pitt)
+        - Fix marshalling of ssize_t to smaller ints (Martin Pitt)
+       - Add support for lcov code coverage, and add a lot of missing
+         GIMarshallingTests and g-i Regress tests. (Martin Pitt)
+        - pygi-convert: remove deprecated GLib → GObject conversions (Jose Rostagno)
+        - Add support for overriding GObject.Object (Simon Feltman) (#672727)
+        - Add --with-python configure option (Martin Pitt)
+       - Do not prefer unversioned "python" when configuring, as some distros
+         have "python" as Python 3. Use Python 3 by default if available. Add
+         --with-python configure option as an alternative to setting $PYTHON,
+         whic is more discoverable. (Martin Pitt)
+        - Fix property lookup in class hierarchy (Daniel Drake) (#686942)
+        - Move property and signal creation into _class_init() (Martin Pitt) (#686149)
+        - Fix duplicate symbols error on OSX (John Ralls)
+        - [API add] Add get_introspection_module for getting un-overridden modules (Simon Feltman) (#686828)
+        - Work around wrong 64 bit constants in GLib Gir (Martin Pitt) (#685022)
+        - Mark GLib.Source.get_current_time() as deprecated (Martin Pitt)
+        - Fix OverflowError in source_remove() (Martin Pitt) (#684526)
+
+3.7.1   22-Oct-2012
+        - Bump version to 3.7.1; let's follow the real GNOME versioning from
+          now on (Martin Pitt)
+        - Change install_properties to not use getattr on classes
+          (Simon Feltman) (#686559)
+        - Move property install function into propertyhelper.py (Simon Feltman)
+          (#686559)
+        - Fix Signal decorator to not use base class gsignals dict
+          (Simon Feltman) (#686496)
+        - tests: Consistently use GLib.MainLoop (Martin Pitt)
+        - Install the .egg-info files into correct multilib directory
+          (Kalev Lember) (#686315)
+        - Fix leaked vfunc return values (Simon Feltman) (#686140)
+        - Skip Regress tests with --disable-cairo (Martin Pitt) (#685094)
+        - Fix leak with python callables as closure argument. (Simon Feltman)
+          (#685598)
+        - Gio overrides: Handle setting GSettings enum keys (Martin Pitt)
+          (#685947)
+        - tests: Check reading GSettings enums in Gio overrides (Martin Pitt)
+        - Fix unsigned values in GArray/GList/GSList/GHash (Martin Pitt)
+          (#685860)
+        - _pygi_marshal_from_py_uint64(): Use correct data type in py2.7 check
+          (Alban Browaeys) (#685000)
+        - Install an .egg-info file (Johan Dahlin) (#680138)
+        - PyGProps_getattro(): Fix GObjectClass leak (Johan Dahlin) (#685218)
+        - pygobject.c: Don't leak GObjectClass reference (Olivier Crête)
+          (#684062)
+        - Fix memory leak in _pygi_argument_to_array() (Alban Browaeys)
+          (#685082)
+        - Fix error messages for out of range numbers (Martin Pitt) (#684314)
+        - Kill dbus-daemon after running tests (Martin Pitt) (#685009)
+        - GVariant overrides: Support empty tuple arrays (Martin Pitt)
+          (#684928)
+        - tests: Fix wrong return type in test_int64_callback() (Martin Pitt)
+          (#684700)
+        - Fix GValue marshalling of long and unsigned long (Giovanni Campagna)
+          (#684331)
+        - Clean up deprecation message for assigning gpointers to objects.
+          (Simon Feltman) (#683599)
+        - pygi-property: Lookup property in base classes of non-introspected
+          types (Olivier Crête) (#684058)
+
 3.4.0   24-Sep-2012
         - Bump g-i dependency to 1.33.14 (Martin Pitt)
 
index bf94400..1956ce7 100644 (file)
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.0
 Name: PyGObject
-Version: 3.4.0
+Version: 3.7.3
 Summary: Python bindings for GObject
 Home-page: http://www.pygtk.org/
 Author: James Henstridge
@@ -8,7 +8,7 @@ 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/3.4/pygobject-3.4.0.tar.gz
+Download-url: ftp://ftp.gnome.org/pub/GNOME/sources/pygobject/3.7/pygobject-3.7.3.tar.gz
 Description: Python bindings for GLib and GObject
 Platform: POSIX, Windows
 Classifier: Development Status :: 5 - Production/Stable
diff --git a/README b/README
index 9faf852..38fd863 100644 (file)
--- a/README
+++ b/README
@@ -36,17 +36,16 @@ New versions of this package can be found at:
 Mailing list
 ============
 
-pygobject share mailing list with pygtk. You can subscribe to it through
-the web interface:
-  http://www.daa.com.au/mailman/listinfo/pygtk
+pygobject development is discussed on the GNOME python-hackers mailing list.
+You can subscribe to it through the web interface:
 
+  https://mail.gnome.org/mailman/listinfo/python-hackers-list/
 
 Requirements
 ============
   * C compiler (GCC and MSVC supported)
-  * Python 2.3.5 or higher
-  * Glib 2.22.4 or higher
-  * GIO 2.22.4 or higher
+  * Python 2.6 or higher
+  * Glib/Gio 2.34.2 or higher
   * libffi (optional)
 
 Copyright Information
@@ -66,12 +65,15 @@ build, it should be as simple as running:
     $ make
     $ make install
 
-If your Python interpreter isn't in the path, or is not called
-"python", you can set the PYTHON environment variable to the full path
-of the interpreter:
+By default, configure searches for a few well-known Python interpreter
+names, such as "python3", "python2", "python2.7", or "python".  If your
+Python interpreter isn't in the path, or is not called "python", you can
+configure pygobject to build against that with --with-python=<path> or
+setting the PYTHON environment variable:
 
-    $ PYTHON=/prefix/bin/python
-    $ export PYTHON
+   $ ./configure --with-python=python3
+   $ PYTHON=python3.2 ./configure
+   $ ./configure --with-python=~/my-patched-python/python
 
 If configure can't find GTK+, you may need to set the PKG_CONFIG_PATH
 environment variable to help it find the libraries.
@@ -96,7 +98,9 @@ Getting Help
 ============
 
 If you have questions about programming with PyGObject, you might want to
-send a message to the mailing list (information on subscribing is
-above).  Alternatively, your question may be answered in the PyGTK FAQ:
+check the documentation on
 
-    http://www.async.com.br/faq/pygtk/?req=index
+  https://live.gnome.org/PyGObject/
+
+If that does not help, send a message to the mailing list (information on
+subscribing is above), or join #python on irc.gnome.org.
index 9dafc09..db21f54 100644 (file)
@@ -635,46 +635,6 @@ 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,
-# 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 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 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])
-
 # Check to see how 'make' treats includes.                 -*- Autoconf -*-
 
 # Copyright (C) 2001, 2002, 2003, 2005, 2009  Free Software Foundation, Inc.
@@ -1358,6 +1318,164 @@ AC_SUBST([am__tar])
 AC_SUBST([am__untar])
 ]) # _AM_PROG_TAR
 
+dnl GNOME_CODE_COVERAGE
+dnl
+dnl Defines CODE_COVERAGE_CFLAGS and CODE_COVERAGE_LDFLAGS which should be
+dnl included in the CFLAGS and LIBS/LDFLAGS variables of every build target
+dnl (program or library) which should be built with code coverage support.
+dnl Also defines GNOME_CODE_COVERAGE_RULES which should be substituted in your
+dnl Makefile; and $enable_code_coverage which can be used in subsequent
+dnl configure output.
+dnl
+dnl Note that all optimisation flags in CFLAGS must be disabled when code
+dnl coverage is enabled.
+dnl
+dnl Derived from Makefile.decl in GLib, originally licenced under LGPLv2.1+.
+dnl This file is licenced under GPLv3. For the full gnome-common licence
+dnl (GPLv3), see the COPYING file.
+dnl
+dnl Usage example:
+dnl configure.ac:
+dnl    GNOME_CODE_COVERAGE
+dnl
+dnl Makefile.am:
+dnl    @GNOME_CODE_COVERAGE_RULES@
+dnl    my_program_LIBS = … $(CODE_COVERAGE_LDFLAGS) …
+dnl    my_program_CFLAGS = … $(CODE_COVERAGE_CFLAGS) …
+dnl
+dnl This results in a “check-code-coverage” rule being added to any Makefile.am
+dnl which includes “@GNOME_CODE_COVERAGE_RULES@” (assuming the module has been
+dnl configured with --enable-code-coverage). Running `make check-code-coverage`
+dnl in that directory will run the module’s test suite (`make check`) and build
+dnl a code coverage report detailing the code which was touched, then print the
+dnl URI for the report.
+
+AC_DEFUN([GNOME_CODE_COVERAGE],[
+       dnl Check for --enable-code-coverage
+       AC_MSG_CHECKING([whether to build with code coverage support])
+       AC_ARG_ENABLE([code-coverage], AS_HELP_STRING([--enable-code-coverage], [Whether to enable code coverage support]),, enable_code_coverage=no)
+       AM_CONDITIONAL([CODE_COVERAGE_ENABLED], [test x$enable_code_coverage = xyes])
+       AC_SUBST([CODE_COVERAGE_ENABLED], [$enable_code_coverage])
+       AC_MSG_RESULT($enable_code_coverage)
+
+       AS_IF([ test "$enable_code_coverage" = "yes" ], [
+               dnl Check if gcc is being used
+               AS_IF([ test "$GCC" = "no" ], [
+                       AC_MSG_ERROR([not compiling with gcc, which is required for gcov code coverage])
+               ])
+
+               # List of supported lcov versions.
+               lcov_version_list="1.6 1.7 1.8 1.9"
+
+               AC_CHECK_PROG([LCOV], [lcov], [lcov])
+               AC_CHECK_PROG([GENHTML], [genhtml], [genhtml])
+
+               AS_IF([ test "$LCOV" ], [
+                       AC_CACHE_CHECK([for lcov version], gnome_cv_lcov_version, [
+                               gnome_cv_lcov_version=invalid
+                               lcov_version=`$LCOV -v 2>/dev/null | $SED -e 's/^.* //'`
+                               for lcov_check_version in $lcov_version_list; do
+                                       if test "$lcov_version" = "$lcov_check_version"; then
+                                               gnome_cv_lcov_version="$lcov_check_version (ok)"
+                                       fi
+                               done
+                       ])
+               ], [
+                       lcov_msg="To enable code coverage reporting you must have one of the following lcov versions installed: $lcov_version_list"
+                       AC_MSG_ERROR([$lcov_msg])
+               ])
+
+               case $gnome_cv_lcov_version in
+                       ""|invalid[)]
+                               lcov_msg="You must have one of the following versions of lcov: $lcov_version_list (found: $lcov_version)."
+                               AC_MSG_ERROR([$lcov_msg])
+                               LCOV="exit 0;"
+                       ;;
+               esac
+
+               AS_IF([ test -z "$GENHTML" ], [
+                       AC_MSG_ERROR([Could not find genhtml from the lcov package])
+               ])
+
+               dnl Build the code coverage flags
+               CODE_COVERAGE_CFLAGS="-O0 -g -fprofile-arcs -ftest-coverage"
+               CODE_COVERAGE_LDFLAGS="-lgcov"
+
+               AC_SUBST([CODE_COVERAGE_CFLAGS])
+               AC_SUBST([CODE_COVERAGE_LDFLAGS])
+       ])
+
+GNOME_CODE_COVERAGE_RULES='
+# Code coverage
+#
+# Optional:
+#  - CODE_COVERAGE_DIRECTORY: Top-level directory for code coverage reporting.
+#    (Default: $(top_builddir))
+#  - CODE_COVERAGE_OUTPUT_FILE: Filename and path for the .info file generated
+#    by lcov for code coverage. (Default:
+#    $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage.info)
+#  - CODE_COVERAGE_OUTPUT_DIRECTORY: Directory for generated code coverage
+#    reports to be created. (Default:
+#    $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage)
+#  - CODE_COVERAGE_LCOV_OPTIONS: Extra options to pass to the lcov instance.
+#    (Default: empty)
+#  - CODE_COVERAGE_GENHTML_OPTIONS: Extra options to pass to the genhtml
+#    instance. (Default: empty)
+#
+# The generated report will be titled using the $(PACKAGE_NAME) and
+# $(PACKAGE_VERSION). In order to add the current git hash to the title,
+# use the git-version-gen script, available online.
+
+# Optional variables
+CODE_COVERAGE_DIRECTORY ?= $(top_builddir)
+CODE_COVERAGE_OUTPUT_FILE ?= $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage.info
+CODE_COVERAGE_OUTPUT_DIRECTORY ?= $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage
+CODE_COVERAGE_LCOV_OPTIONS ?=
+CODE_COVERAGE_GENHTML_OPTIONS ?=
+
+# Use recursive makes in order to ignore errors during check
+check-code-coverage:
+ifdef CODE_COVERAGE_ENABLED
+       -$(MAKE) $(AM_MAKEFLAGS) -k check
+       $(MAKE) $(AM_MAKEFLAGS) code-coverage-capture
+else
+       @echo "Need to reconfigure with --enable-code-coverage"
+endif
+
+# Capture code coverage data
+code-coverage-capture: code-coverage-capture-hook
+ifdef CODE_COVERAGE_ENABLED
+       $(LCOV) --directory $(CODE_COVERAGE_DIRECTORY) --capture --output-file "$(CODE_COVERAGE_OUTPUT_FILE).tmp" --test-name "$(PACKAGE_NAME)-$(PACKAGE_VERSION)" --no-checksum --compat-libtool $(CODE_COVERAGE_LCOV_OPTIONS)
+       $(LCOV) --directory $(CODE_COVERAGE_DIRECTORY) --remove "$(CODE_COVERAGE_OUTPUT_FILE).tmp" "/tmp/*" --output-file "$(CODE_COVERAGE_OUTPUT_FILE)"
+       -rm -f $(CODE_COVERAGE_OUTPUT_FILE).tmp
+       LANG=C $(GENHTML) --prefix $(CODE_COVERAGE_DIRECTORY) --output-directory "$(CODE_COVERAGE_OUTPUT_DIRECTORY)" --title "$(PACKAGE_NAME)-$(PACKAGE_VERSION) Code Coverage" --legend --show-details "$(CODE_COVERAGE_OUTPUT_FILE)" $(CODE_COVERAGE_GENHTML_OPTIONS)
+       @echo "file://$(abs_builddir)/$(CODE_COVERAGE_OUTPUT_DIRECTORY)/index.html"
+else
+       @echo "Need to reconfigure with --enable-code-coverage"
+endif
+
+# Hook rule executed before code-coverage-capture, overridable by the user
+code-coverage-capture-hook:
+
+clean: code-coverage-clean
+code-coverage-clean:
+       -$(LCOV) --directory $(top_builddir) -z
+       -rm -rf $(CODE_COVERAGE_OUTPUT_FILE) $(CODE_COVERAGE_OUTPUT_FILE).tmp $(CODE_COVERAGE_OUTPUT_DIRECTORY)
+       -find . -name "*.gcda" -o -name "*.gcov" -delete
+
+GITIGNOREFILES ?=
+GITIGNOREFILES += $(CODE_COVERAGE_OUTPUT_FILE) $(CODE_COVERAGE_OUTPUT_DIRECTORY)
+
+DISTCHECK_CONFIGURE_FLAGS ?=
+DISTCHECK_CONFIGURE_FLAGS += --disable-code-coverage
+
+.PHONY: check-code-coverage code-coverage-capture code-coverage-capture-hook code-coverage-clean
+'
+
+       AC_SUBST([GNOME_CODE_COVERAGE_RULES])
+       m4_ifdef([_AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE([GNOME_CODE_COVERAGE_RULES])])
+])
+
 # pkg.m4 - Macros to locate and utilise pkg-config.            -*- Autoconf -*-
 # serial 1 (pkg-config-0.24)
 # 
index a49d64b..5e1cc46 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for pygobject 3.4.0.
+# Generated by GNU Autoconf 2.69 for pygobject 3.7.3.
 #
 # Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=pygobject>.
 #
@@ -591,10 +591,10 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='pygobject'
 PACKAGE_TARNAME='pygobject'
-PACKAGE_VERSION='3.4.0'
-PACKAGE_STRING='pygobject 3.4.0'
+PACKAGE_VERSION='3.7.3'
+PACKAGE_STRING='pygobject 3.7.3'
 PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=pygobject'
-PACKAGE_URL=''
+PACKAGE_URL='https://live.gnome.org/PyGObject/'
 
 ac_unique_file="gi/gimodule.c"
 # Factoring default headers for most tests.
@@ -637,17 +637,25 @@ ac_subst_vars='am__EXEEXT_FALSE
 am__EXEEXT_TRUE
 LTLIBOBJS
 LIBOBJS
+GNOME_CODE_COVERAGE_RULES
+CODE_COVERAGE_LDFLAGS
+CODE_COVERAGE_CFLAGS
+GENHTML
+LCOV
+CODE_COVERAGE_ENABLED
+CODE_COVERAGE_ENABLED_FALSE
+CODE_COVERAGE_ENABLED_TRUE
 INTROSPECTION_COMPILER
 INTROSPECTION_SCANNER
 ENABLE_CAIRO_FALSE
 ENABLE_CAIRO_TRUE
 PYCAIRO_LIBS
 PYCAIRO_CFLAGS
+CAIRO_LIBS
+CAIRO_CFLAGS
 GI_DATADIR
 GI_LIBS
 GI_CFLAGS
-CAIRO_LIBS
-CAIRO_CFLAGS
 GIO_LIBS
 GIO_CFLAGS
 LIBFFI_PC
@@ -732,9 +740,6 @@ build_os
 build_vendor
 build_cpu
 build
-MAINT
-MAINTAINER_MODE_FALSE
-MAINTAINER_MODE_TRUE
 am__untar
 am__tar
 AMTAR
@@ -808,7 +813,6 @@ ac_subst_files=''
 ac_user_opts='
 enable_option_checking
 enable_silent_rules
-enable_maintainer_mode
 enable_static
 enable_shared
 with_pic
@@ -817,10 +821,12 @@ enable_dependency_tracking
 with_gnu_ld
 with_sysroot
 enable_libtool_lock
+with_python
 enable_thread
 enable_glibtest
 with_ffi
 enable_cairo
+enable_code_coverage
 '
       ac_precious_vars='build_alias
 host_alias
@@ -839,10 +845,10 @@ FFI_CFLAGS
 FFI_LIBS
 GIO_CFLAGS
 GIO_LIBS
-CAIRO_CFLAGS
-CAIRO_LIBS
 GI_CFLAGS
 GI_LIBS
+CAIRO_CFLAGS
+CAIRO_LIBS
 PYCAIRO_CFLAGS
 PYCAIRO_LIBS'
 
@@ -1385,7 +1391,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 3.4.0 to adapt to many kinds of systems.
+\`configure' configures pygobject 3.7.3 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1455,7 +1461,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of pygobject 3.4.0:";;
+     short | recursive ) echo "Configuration of pygobject 3.7.3:";;
    esac
   cat <<\_ACEOF
 
@@ -1465,8 +1471,6 @@ 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')
-  --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]
   --enable-fast-install[=PKGS]
@@ -1478,6 +1482,7 @@ Optional Features:
   --disable-glibtest      do not try to compile and run a test GLIB program
   --enable-cairo          Enable Cairo bindings using introspection
                           information
+  --enable-code-coverage  Whether to enable code coverage support
 
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
@@ -1487,6 +1492,9 @@ Optional Packages:
   --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
   --with-sysroot=DIR Search for dependent libraries within DIR
                         (or the compiler's sysroot if not specified).
+  --with-python=PATH      Path to Python interpreter; searches $PATH if only a
+                          program name is given; if not given, searches for a
+                          few standard names such as "python3" or "python2"
   --without-ffi           Disable libffi support
 
 Some influential environment variables:
@@ -1508,11 +1516,11 @@ 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
+  GI_CFLAGS   C compiler flags for GI, overriding pkg-config
+  GI_LIBS     linker flags for GI, 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
               C compiler flags for PYCAIRO, overriding pkg-config
   PYCAIRO_LIBS
@@ -1522,6 +1530,7 @@ Use these variables to override the choices made by `configure' or to help
 it to find libraries and programs with nonstandard names/locations.
 
 Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=pygobject>.
+pygobject home page: <https://live.gnome.org/PyGObject/>.
 _ACEOF
 ac_status=$?
 fi
@@ -1584,7 +1593,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-pygobject configure 3.4.0
+pygobject configure 3.7.3
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1862,7 +1871,7 @@ 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 3.4.0, which was
+It was created by pygobject $as_me 3.7.3, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2221,14 +2230,14 @@ $as_echo "#define PYGOBJECT_MAJOR_VERSION 3" >>confdefs.h
 PYGOBJECT_MAJOR_VERSION=3
 
 
-$as_echo "#define PYGOBJECT_MINOR_VERSION 4" >>confdefs.h
+$as_echo "#define PYGOBJECT_MINOR_VERSION 7" >>confdefs.h
 
-PYGOBJECT_MINOR_VERSION=4
+PYGOBJECT_MINOR_VERSION=7
 
 
-$as_echo "#define PYGOBJECT_MICRO_VERSION 0" >>confdefs.h
+$as_echo "#define PYGOBJECT_MICRO_VERSION 3" >>confdefs.h
 
-PYGOBJECT_MICRO_VERSION=0
+PYGOBJECT_MICRO_VERSION=3
 
 
 ac_config_headers="$ac_config_headers config.h"
@@ -2739,7 +2748,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='pygobject'
- VERSION='3.4.0'
+ VERSION='3.7.3'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -2780,29 +2789,6 @@ am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
-$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
-    # Check whether --enable-maintainer-mode was given.
-if test "${enable_maintainer_mode+set}" = set; then :
-  enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
-else
-  USE_MAINTAINER_MODE=yes
-fi
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
-$as_echo "$USE_MAINTAINER_MODE" >&6; }
-   if test $USE_MAINTAINER_MODE = yes; then
-  MAINTAINER_MODE_TRUE=
-  MAINTAINER_MODE_FALSE='#'
-else
-  MAINTAINER_MODE_TRUE='#'
-  MAINTAINER_MODE_FALSE=
-fi
-
-  MAINT=$MAINTAINER_MODE_TRUE
-
-
-
 ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
 
 # Make sure we can run config.sub.
@@ -2918,29 +2904,88 @@ else
 fi
 
 
-# Check whether --enable-static was given.
-if test "${enable_static+set}" = set; then :
-  enableval=$enable_static; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_static=yes ;;
-    no) enable_static=no ;;
-    *)
-     enable_static=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-       IFS="$lt_save_ifs"
-       if test "X$pkg" = "X$p"; then
-         enable_static=yes
-       fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
+
+case `pwd` in
+  *\ * | *\    *)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
+$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
+esac
+
+
+
+macro_version='2.4.2'
+macro_revision='1.3337'
+
+
+
+
+
+
+
+
+
+
+
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+# Backslashify metacharacters that are still active within
+# double-quoted strings.
+sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+
+# Same as above, but do not quote variable references.
+double_quote_subst='s/\(["`\\]\)/\\\1/g'
+
+# Sed substitution to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to delay expansion of an escaped single quote.
+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
+$as_echo_n "checking how to print strings... " >&6; }
+# Test print first, because it will be a builtin if present.
+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
+   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='print -r --'
+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
+  ECHO='printf %s\n'
 else
-  enable_static=no
+  # Use this function as a fallback that always works.
+  func_fallback_echo ()
+  {
+    eval 'cat <<_LTECHO_EOF
+$1
+_LTECHO_EOF'
+  }
+  ECHO='func_fallback_echo'
 fi
 
+# func_echo_all arg...
+# Invoke $ECHO with all args, space-separated.
+func_echo_all ()
+{
+    $ECHO ""
+}
+
+case "$ECHO" in
+  printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
+$as_echo "printf" >&6; } ;;
+  print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
+$as_echo "print -r" >&6; } ;;
+  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
+$as_echo "cat" >&6; } ;;
+esac
+
 
 
 
@@ -2952,20 +2997,86 @@ fi
 
 
 
-enable_win32_dll=yes
 
-case $host in
-*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
-set dummy ${ac_tool_prefix}as; ac_word=$2
+
+DEPDIR="${am__leading_dot}deps"
+
+ac_config_commands="$ac_config_commands depfiles"
+
+
+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.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
+$as_echo_n "checking for style of include used by $am_make... " >&6; }
+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
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
+$as_echo "$_am_result" >&6; }
+rm -f confinc confmf
+
+# Check whether --enable-dependency-tracking was given.
+if test "${enable_dependency_tracking+set}" = set; then :
+  enableval=$enable_dependency_tracking;
+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=
+  AMDEP_FALSE='#'
+else
+  AMDEP_TRUE='#'
+  AMDEP_FALSE=
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}gcc; 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_prog_AS+:} false; then :
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$AS"; then
-  ac_cv_prog_AS="$AS" # Let the user override the test.
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -2974,7 +3085,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AS="${ac_tool_prefix}as"
+    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
   fi
@@ -2984,10 +3095,10 @@ IFS=$as_save_IFS
 
 fi
 fi
-AS=$ac_cv_prog_AS
-if test -n "$AS"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
-$as_echo "$AS" >&6; }
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -2995,17 +3106,17 @@ fi
 
 
 fi
-if test -z "$ac_cv_prog_AS"; then
-  ac_ct_AS=$AS
-  # Extract the first word of "as", so it can be a program name with args.
-set dummy as; ac_word=$2
+if test -z "$ac_cv_prog_CC"; then
+  ac_ct_CC=$CC
+  # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; 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_prog_ac_ct_AS+:} false; then :
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$ac_ct_AS"; then
-  ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -3014,7 +3125,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_AS="as"
+    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
   fi
@@ -3024,17 +3135,17 @@ IFS=$as_save_IFS
 
 fi
 fi
-ac_ct_AS=$ac_cv_prog_ac_ct_AS
-if test -n "$ac_ct_AS"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5
-$as_echo "$ac_ct_AS" >&6; }
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
-  if test "x$ac_ct_AS" = x; then
-    AS="false"
+  if test "x$ac_ct_CC" = x; then
+    CC=""
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
@@ -3042,22 +3153,23 @@ yes:)
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
-    AS=$ac_ct_AS
+    CC=$ac_ct_CC
   fi
 else
-  AS="$ac_cv_prog_AS"
+  CC="$ac_cv_prog_CC"
 fi
 
-  if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+if test -z "$CC"; then
+          if test -n "$ac_tool_prefix"; then
+    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
+set dummy ${ac_tool_prefix}cc; 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_prog_DLLTOOL+:} false; then :
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$DLLTOOL"; then
-  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -3066,7 +3178,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+    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
   fi
@@ -3076,29 +3188,30 @@ IFS=$as_save_IFS
 
 fi
 fi
-DLLTOOL=$ac_cv_prog_DLLTOOL
-if test -n "$DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-$as_echo "$DLLTOOL" >&6; }
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
 
+  fi
 fi
-if test -z "$ac_cv_prog_DLLTOOL"; then
-  ac_ct_DLLTOOL=$DLLTOOL
-  # Extract the first word of "dlltool", so it can be a program name with args.
-set dummy dlltool; ac_word=$2
+if test -z "$CC"; then
+  # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; 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_prog_ac_ct_DLLTOOL+:} false; then :
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$ac_ct_DLLTOOL"; then
-  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
 else
+  ac_prog_rejected=no
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
 do
@@ -3106,7 +3219,11 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+    if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then
+       ac_prog_rejected=yes
+       continue
+     fi
+    ac_cv_prog_CC="cc"
     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
     break 2
   fi
@@ -3114,42 +3231,44 @@ done
   done
 IFS=$as_save_IFS
 
+if test $ac_prog_rejected = yes; then
+  # We found a bogon in the path, so make sure we never use it.
+  set dummy $ac_cv_prog_CC
+  shift
+  if test $# != 0; then
+    # We chose a different compiler from the bogus one.
+    # However, it has the same basename, so the bogon will be chosen
+    # first if we set CC to just the basename; use the full file name.
+    shift
+    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+  fi
 fi
 fi
-ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-if test -n "$ac_ct_DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-$as_echo "$ac_ct_DLLTOOL" >&6; }
+fi
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
-  if test "x$ac_ct_DLLTOOL" = x; then
-    DLLTOOL="false"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    DLLTOOL=$ac_ct_DLLTOOL
-  fi
-else
-  DLLTOOL="$ac_cv_prog_DLLTOOL"
-fi
 
+fi
+if test -z "$CC"; then
   if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
-set dummy ${ac_tool_prefix}objdump; ac_word=$2
+  for ac_prog in cl.exe
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; 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_prog_OBJDUMP+:} false; then :
+if ${ac_cv_prog_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$OBJDUMP"; then
-  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+  if test -n "$CC"; then
+  ac_cv_prog_CC="$CC" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -3158,7 +3277,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+    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
   fi
@@ -3168,28 +3287,32 @@ IFS=$as_save_IFS
 
 fi
 fi
-OBJDUMP=$ac_cv_prog_OBJDUMP
-if test -n "$OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
+CC=$ac_cv_prog_CC
+if test -n "$CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
+$as_echo "$CC" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
 
+    test -n "$CC" && break
+  done
 fi
-if test -z "$ac_cv_prog_OBJDUMP"; then
-  ac_ct_OBJDUMP=$OBJDUMP
-  # Extract the first word of "objdump", so it can be a program name with args.
-set dummy objdump; ac_word=$2
+if test -z "$CC"; then
+  ac_ct_CC=$CC
+  for ac_prog in cl.exe
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; 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_prog_ac_ct_OBJDUMP+:} false; then :
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$ac_ct_OBJDUMP"; then
-  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+  if test -n "$ac_ct_CC"; then
+  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -3198,7 +3321,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OBJDUMP="objdump"
+    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
   fi
@@ -3208,17 +3331,21 @@ IFS=$as_save_IFS
 
 fi
 fi
-ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
-if test -n "$ac_ct_OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
-$as_echo "$ac_ct_OBJDUMP" >&6; }
+ac_ct_CC=$ac_cv_prog_ac_ct_CC
+if test -n "$ac_ct_CC"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
+$as_echo "$ac_ct_CC" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
-  if test "x$ac_ct_OBJDUMP" = x; then
-    OBJDUMP="false"
+
+  test -n "$ac_ct_CC" && break
+done
+
+  if test "x$ac_ct_CC" = x; then
+    CC=""
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
@@ -3226,1399 +3353,1450 @@ yes:)
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
-    OBJDUMP=$ac_ct_OBJDUMP
+    CC=$ac_ct_CC
   fi
-else
-  OBJDUMP="$ac_cv_prog_OBJDUMP"
 fi
 
-  ;;
-esac
-
-test -z "$AS" && AS=as
-
-
-
-
-
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-
-
-
+fi
 
 
-test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "no acceptable C compiler found in \$PATH
+See \`config.log' for more details" "$LINENO" 5; }
 
+# Provide some information about the compiler.
+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
+set X $ac_compile
+ac_compiler=$2
+for ac_option in --version -v -V -qversion; do
+  { { ac_try="$ac_compiler $ac_option >&5"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    sed '10a\
+... rest of stderr output deleted ...
+         10q' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+  fi
+  rm -f conftest.er1 conftest.err
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+done
 
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+int
+main ()
+{
 
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
+$as_echo_n "checking whether the C compiler works... " >&6; }
+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
 
+# The possible output files:
+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
 
+ac_rmfiles=
+for ac_file in $ac_files
+do
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+  esac
+done
+rm -f $ac_rmfiles
 
-case `pwd` in
-  *\ * | *\    *)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5
-$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;;
+if { { ac_try="$ac_link_default"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
 esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link_default") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile.  We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
+       ;;
+    [ab].out )
+       # We found the default executable, but exeext='' is most
+       # certainly right.
+       break;;
+    *.* )
+       if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+       then :; else
+          ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+       fi
+       # We set ac_cv_exeext here because the later test for it is not
+       # safe: cross compilers may not add the suffix if given an `-o'
+       # argument, so we may need to know it at that point already.
+       # Even if this section looks crufty: it has the advantage of
+       # actually working.
+       break;;
+    * )
+       break;;
+  esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
 
+else
+  ac_file=''
+fi
+if test -z "$ac_file"; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+$as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error 77 "C compiler cannot create executables
+See \`config.log' for more details" "$LINENO" 5; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
+$as_echo_n "checking for C compiler default output file name... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
+$as_echo "$ac_file" >&6; }
+ac_exeext=$ac_cv_exeext
 
-macro_version='2.4.2'
-macro_revision='1.3337'
-
-
-
-
+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
+$as_echo_n "checking for suffix of executables... " >&6; }
+if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+  test -f "$ac_file" || continue
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
+    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+         break;;
+    * ) break;;
+  esac
+done
+else
+  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest conftest$ac_cv_exeext
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
+$as_echo "$ac_cv_exeext" >&6; }
 
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdio.h>
+int
+main ()
+{
+FILE *f = fopen ("conftest.out", "w");
+ return ferror (f) || fclose (f) != 0;
 
+  ;
+  return 0;
+}
+_ACEOF
+ac_clean_files="$ac_clean_files conftest.out"
+# Check that the compiler produces executables we can run.  If not, either
+# the compiler is broken, or we cross compile.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
+$as_echo_n "checking whether we are cross compiling... " >&6; }
+if test "$cross_compiling" != yes; then
+  { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+  if { ac_try='./conftest$ac_cv_exeext'
+  { { case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_try") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; }; then
+    cross_compiling=no
+  else
+    if test "$cross_compiling" = maybe; then
+       cross_compiling=yes
+    else
+       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details" "$LINENO" 5; }
+    fi
+  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
+$as_echo "$cross_compiling" >&6; }
 
+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
+ac_clean_files=$ac_clean_files_save
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
+$as_echo_n "checking for suffix of object files... " >&6; }
+if ${ac_cv_objext+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+int
+main ()
+{
 
+  ;
+  return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { { ac_try="$ac_compile"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_compile") 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }; then :
+  for ac_file in conftest.o conftest.obj conftest.*; do
+  test -f "$ac_file" || continue;
+  case $ac_file in
+    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
+    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+       break;;
+  esac
+done
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
 
+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+as_fn_error $? "cannot compute suffix of object files: cannot compile
+See \`config.log' for more details" "$LINENO" 5; }
+fi
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
+$as_echo "$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
+if ${ac_cv_c_compiler_gnu+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+int
+main ()
+{
+#ifndef __GNUC__
+       choke me
+#endif
 
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_compiler_gnu=yes
+else
+  ac_compiler_gnu=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
 
-ltmain="$ac_aux_dir/ltmain.sh"
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
+$as_echo "$ac_cv_c_compiler_gnu" >&6; }
+if test $ac_compiler_gnu = yes; then
+  GCC=yes
+else
+  GCC=
+fi
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
+$as_echo_n "checking whether $CC accepts -g... " >&6; }
+if ${ac_cv_prog_cc_g+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_save_c_werror_flag=$ac_c_werror_flag
+   ac_c_werror_flag=yes
+   ac_cv_prog_cc_g=no
+   CFLAGS="-g"
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-# Backslashify metacharacters that are still active within
-# double-quoted strings.
-sed_quote_subst='s/\(["`$\\]\)/\\\1/g'
+int
+main ()
+{
 
-# Same as above, but do not quote variable references.
-double_quote_subst='s/\(["`\\]\)/\\\1/g'
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+else
+  CFLAGS=""
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-# Sed substitution to delay expansion of an escaped shell variable in a
-# double_quote_subst'ed string.
-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+int
+main ()
+{
 
-# Sed substitution to delay expansion of an escaped single quote.
-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g'
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
 
-# Sed substitution to avoid accidental globbing in evaled expressions
-no_glob_subst='s/\*/\\\*/g'
+else
+  ac_c_werror_flag=$ac_save_c_werror_flag
+        CFLAGS="-g"
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO
-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO
+int
+main ()
+{
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5
-$as_echo_n "checking how to print strings... " >&6; }
-# Test print first, because it will be a builtin if present.
-if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \
-   test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='print -r --'
-elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then
-  ECHO='printf %s\n'
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_g=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   ac_c_werror_flag=$ac_save_c_werror_flag
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
+$as_echo "$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+  CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+  if test "$GCC" = yes; then
+    CFLAGS="-g -O2"
+  else
+    CFLAGS="-g"
+  fi
 else
-  # Use this function as a fallback that always works.
-  func_fallback_echo ()
-  {
-    eval 'cat <<_LTECHO_EOF
-$1
-_LTECHO_EOF'
-  }
-  ECHO='func_fallback_echo'
+  if test "$GCC" = yes; then
+    CFLAGS="-O2"
+  else
+    CFLAGS=
+  fi
 fi
-
-# func_echo_all arg...
-# Invoke $ECHO with all args, space-separated.
-func_echo_all ()
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
+if ${ac_cv_prog_cc_c89+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdarg.h>
+#include <stdio.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);
+static char *e (p, i)
+     char **p;
+     int i;
 {
-    $ECHO ""
+  return p[i];
+}
+static char *f (char * (*g) (char **, int), char **p, ...)
+{
+  char *s;
+  va_list v;
+  va_start (v,p);
+  s = g (p, va_arg (v,int));
+  va_end (v);
+  return s;
 }
 
-case "$ECHO" in
-  printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5
-$as_echo "printf" >&6; } ;;
-  print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5
-$as_echo "print -r" >&6; } ;;
-  *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5
-$as_echo "cat" >&6; } ;;
-esac
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-DEPDIR="${am__leading_dot}deps"
-
-ac_config_commands="$ac_config_commands depfiles"
+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
+   function prototypes and stuff, but not '\xHH' hex character constants.
+   These don't provoke an error unfortunately, instead are silently treated
+   as 'x'.  The following induces an error, until -std is added to get
+   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
+   array size at least.  It's necessary to write '\x00'==0 to get something
+   that's true only with -std.  */
+int osf4_cc_array ['\x00' == 0 ? 1 : -1];
 
+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
+   inside strings and character constants.  */
+#define FOO(x) 'x'
+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
 
-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.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5
-$as_echo_n "checking for style of include used by $am_make... " >&6; }
-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
+int test (int i, double x);
+struct s1 {int (*f) (int a);};
+struct s2 {int (*f) (double a);};
+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
+int argc;
+char **argv;
+int
+main ()
+{
+return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
+  ;
+  return 0;
+}
+_ACEOF
+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
+       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
+do
+  CC="$ac_save_CC $ac_arg"
+  if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_prog_cc_c89=$ac_arg
 fi
+rm -f core conftest.err conftest.$ac_objext
+  test "x$ac_cv_prog_cc_c89" != "xno" && break
+done
+rm -f conftest.$ac_ext
+CC=$ac_save_CC
 
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5
-$as_echo "$_am_result" >&6; }
-rm -f confinc confmf
-
-# Check whether --enable-dependency-tracking was given.
-if test "${enable_dependency_tracking+set}" = set; then :
-  enableval=$enable_dependency_tracking;
 fi
+# AC_CACHE_VAL
+case "x$ac_cv_prog_cc_c89" in
+  x)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
+$as_echo "none needed" >&6; } ;;
+  xno)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
+$as_echo "unsupported" >&6; } ;;
+  *)
+    CC="$CC $ac_cv_prog_cc_c89"
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+if test "x$ac_cv_prog_cc_c89" != xno; then :
 
-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=
-  AMDEP_FALSE='#'
-else
-  AMDEP_TRUE='#'
-  AMDEP_FALSE=
 fi
 
-
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}gcc; 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_prog_CC+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-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 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
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
 
+depcc="$CC"   am_compiler_list=
 
-fi
-if test -z "$ac_cv_prog_CC"; then
-  ac_ct_CC=$CC
-  # Extract the first word of "gcc", so it can be a program name with args.
-set dummy gcc; 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_prog_ac_ct_CC+:} false; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
+$as_echo_n "checking dependency style of $depcc... " >&6; }
+if ${am_cv_CC_dependencies_compiler_type+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-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 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
+  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
+
+  am_cv_CC_dependencies_compiler_type=none
+  if test "$am_compiler_list" = ""; then
+     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
   fi
-done
+  am__universal=false
+  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
+      ;;
+    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_CC_dependencies_compiler_type=$depmode
+        break
+      fi
+    fi
   done
-IFS=$as_save_IFS
 
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
+  cd ..
+  rm -rf conftest.dir
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  am_cv_CC_dependencies_compiler_type=none
 fi
 
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
+
+ if
+  test "x$enable_dependency_tracking" != xno \
+  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
+  am__fastdepCC_TRUE=
+  am__fastdepCC_FALSE='#'
 else
-  CC="$ac_cv_prog_CC"
+  am__fastdepCC_TRUE='#'
+  am__fastdepCC_FALSE=
 fi
 
-if test -z "$CC"; then
-          if test -n "$ac_tool_prefix"; then
-    # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args.
-set dummy ${ac_tool_prefix}cc; 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_prog_CC+:} false; then :
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
+$as_echo_n "checking for a sed that does not truncate output... " >&6; }
+if ${ac_cv_path_SED+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
+     for ac_i in 1 2 3 4 5 6 7; do
+       ac_script="$ac_script$as_nl$ac_script"
+     done
+     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
+     { ac_script=; unset ac_script;}
+     if test -z "$SED"; then
+  ac_path_SED_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  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_prog in sed gsed; do
     for ac_exec_ext in '' $ac_executable_extensions; do
-  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
-  fi
-done
+      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
+      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
+*GNU*)
+  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo '' >> "conftest.nl"
+    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_SED_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_SED="$ac_path_SED"
+      ac_path_SED_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
   done
-IFS=$as_save_IFS
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
 
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+      $ac_path_SED_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_SED"; then
+    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
+  fi
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  ac_cv_path_SED=$SED
 fi
 
-
-  fi
 fi
-if test -z "$CC"; then
-  # Extract the first word of "cc", so it can be a program name with args.
-set dummy cc; 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_prog_CC+:} false; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
+$as_echo "$ac_cv_path_SED" >&6; }
+ SED="$ac_cv_path_SED"
+  rm -f conftest.sed
+
+test -z "$SED" && SED=sed
+Xsed="$SED -e 1s/^X//"
+
+
+
+
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
+$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
+if ${ac_cv_path_GREP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-  ac_prog_rejected=no
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
+  if test -z "$GREP"; then
+  ac_path_GREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
+do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
+    for ac_prog in grep ggrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
-  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
-     fi
-    ac_cv_prog_CC="cc"
-    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-    break 2
-  fi
-done
+      ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext"
+      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
+*GNU*)
+  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'GREP' >> "conftest.nl"
+    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_GREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_GREP="$ac_path_GREP"
+      ac_path_GREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
   done
-IFS=$as_save_IFS
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
 
-if test $ac_prog_rejected = yes; then
-  # We found a bogon in the path, so make sure we never use it.
-  set dummy $ac_cv_prog_CC
-  shift
-  if test $# != 0; then
-    # We chose a different compiler from the bogus one.
-    # However, it has the same basename, so the bogon will be chosen
-    # first if we set CC to just the basename; use the full file name.
-    shift
-    ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@"
+      $ac_path_GREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_GREP"; then
+    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
   fi
-fi
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  ac_cv_path_GREP=$GREP
 fi
 
-
 fi
-if test -z "$CC"; then
-  if test -n "$ac_tool_prefix"; then
-  for ac_prog in cl.exe
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; 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_prog_CC+:} false; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
+$as_echo "$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
+$as_echo_n "checking for egrep... " >&6; }
+if ${ac_cv_path_EGREP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$CC"; then
-  ac_cv_prog_CC="$CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
+  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+   then ac_cv_path_EGREP="$GREP -E"
+   else
+     if test -z "$EGREP"; then
+  ac_path_EGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
+    for ac_prog in egrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
-  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
-  fi
-done
+      ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext"
+      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
+*GNU*)
+  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'EGREP' >> "conftest.nl"
+    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_EGREP="$ac_path_EGREP"
+      ac_path_EGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
   done
-IFS=$as_save_IFS
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
 
-fi
-fi
-CC=$ac_cv_prog_CC
-if test -n "$CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5
-$as_echo "$CC" >&6; }
+      $ac_path_EGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_EGREP"; then
+    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  ac_cv_path_EGREP=$EGREP
 fi
 
-
-    test -n "$CC" && break
-  done
+   fi
 fi
-if test -z "$CC"; then
-  ac_ct_CC=$CC
-  for ac_prog in cl.exe
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; 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_prog_ac_ct_CC+:} false; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
+$as_echo "$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
+$as_echo_n "checking for fgrep... " >&6; }
+if ${ac_cv_path_FGREP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$ac_ct_CC"; then
-  ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
-else
-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
+  if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
+   then ac_cv_path_FGREP="$GREP -F"
+   else
+     if test -z "$FGREP"; then
+  ac_path_FGREP_found=false
+  # Loop through the user's path and test for each of PROGNAME-LIST
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
 do
   IFS=$as_save_IFS
   test -z "$as_dir" && as_dir=.
+    for ac_prog in fgrep; do
     for ac_exec_ext in '' $ac_executable_extensions; do
-  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
-  fi
-done
+      ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext"
+      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
+*GNU*)
+  ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
+*)
+  ac_count=0
+  $as_echo_n 0123456789 >"conftest.in"
+  while :
+  do
+    cat "conftest.in" "conftest.in" >"conftest.tmp"
+    mv "conftest.tmp" "conftest.in"
+    cp "conftest.in" "conftest.nl"
+    $as_echo 'FGREP' >> "conftest.nl"
+    "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
+    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
+    as_fn_arith $ac_count + 1 && ac_count=$as_val
+    if test $ac_count -gt ${ac_path_FGREP_max-0}; then
+      # Best one so far, save it but keep looking for a better one
+      ac_cv_path_FGREP="$ac_path_FGREP"
+      ac_path_FGREP_max=$ac_count
+    fi
+    # 10*(2^10) chars as input seems more than enough
+    test $ac_count -gt 10 && break
   done
-IFS=$as_save_IFS
+  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
+esac
 
-fi
-fi
-ac_ct_CC=$ac_cv_prog_ac_ct_CC
-if test -n "$ac_ct_CC"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5
-$as_echo "$ac_ct_CC" >&6; }
+      $ac_path_FGREP_found && break 3
+    done
+  done
+  done
+IFS=$as_save_IFS
+  if test -z "$ac_cv_path_FGREP"; then
+    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
+  fi
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+  ac_cv_path_FGREP=$FGREP
 fi
 
+   fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
+$as_echo "$ac_cv_path_FGREP" >&6; }
+ FGREP="$ac_cv_path_FGREP"
 
-  test -n "$ac_ct_CC" && break
-done
 
-  if test "x$ac_ct_CC" = x; then
-    CC=""
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    CC=$ac_ct_CC
-  fi
-fi
+test -z "$GREP" && GREP=grep
 
-fi
 
 
-test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5; }
 
-# Provide some information about the compiler.
-$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
-set X $ac_compile
-ac_compiler=$2
-for ac_option in --version -v -V -qversion; do
-  { { ac_try="$ac_compiler $ac_option >&5"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compiler $ac_option >&5") 2>conftest.err
-  ac_status=$?
-  if test -s conftest.err; then
-    sed '10a\
-... rest of stderr output deleted ...
-         10q' conftest.err >conftest.er1
-    cat conftest.er1 >&5
-  fi
-  rm -f conftest.er1 conftest.err
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-done
 
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
 
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files_save=$ac_clean_files
-ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out"
-# Try to create an executable without -o first, disregard a.out.
-# It will help us diagnose broken compilers, and finding out an intuition
-# of exeext.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5
-$as_echo_n "checking whether the C compiler works... " >&6; }
-ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
 
-# The possible output files:
-ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*"
 
-ac_rmfiles=
-for ac_file in $ac_files
-do
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    * ) ac_rmfiles="$ac_rmfiles $ac_file";;
-  esac
-done
-rm -f $ac_rmfiles
 
-if { { ac_try="$ac_link_default"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link_default") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
-# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
-# in a Makefile.  We should not override ac_cv_exeext if it was cached,
-# so that the user can short-circuit this test for compilers unknown to
-# Autoconf.
-for ac_file in $ac_files ''
-do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj )
-       ;;
-    [ab].out )
-       # We found the default executable, but exeext='' is most
-       # certainly right.
-       break;;
-    *.* )
-       if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
-       then :; else
-          ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-       fi
-       # We set ac_cv_exeext here because the later test for it is not
-       # safe: cross compilers may not add the suffix if given an `-o'
-       # argument, so we may need to know it at that point already.
-       # Even if this section looks crufty: it has the advantage of
-       # actually working.
-       break;;
-    * )
-       break;;
-  esac
-done
-test "$ac_cv_exeext" = no && ac_cv_exeext=
 
-else
-  ac_file=''
-fi
-if test -z "$ac_file"; then :
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-$as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error 77 "C compiler cannot create executables
-See \`config.log' for more details" "$LINENO" 5; }
+
+
+
+
+
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+set}" = set; then :
+  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
 else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
+  with_gnu_ld=no
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5
-$as_echo_n "checking for C compiler default output file name... " >&6; }
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5
-$as_echo "$ac_file" >&6; }
-ac_exeext=$ac_cv_exeext
 
-rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5
-$as_echo_n "checking for suffix of executables... " >&6; }
-if { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  # If both `conftest.exe' and `conftest' are `present' (well, observable)
-# catch `conftest.exe'.  For instance with Cygwin, `ls conftest' will
-# work properly (i.e., refer to `conftest.exe'), while it won't with
-# `rm'.
-for ac_file in conftest.exe conftest conftest.*; do
-  test -f "$ac_file" || continue
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;;
-    *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
-         break;;
-    * ) break;;
+ac_prog=ld
+if test "$GCC" = yes; then
+  # Check if gcc -print-prog-name=ld gives a path.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
+  case $host in
+  *-*-mingw*)
+    # gcc leaves a trailing carriage return which upsets mingw
+    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
+  *)
+    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
   esac
-done
+  case $ac_prog in
+    # Accept absolute paths.
+    [\\/]* | ?:[\\/]*)
+      re_direlt='/[^/][^/]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
+      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
+       ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
+      done
+      test -z "$LD" && LD="$ac_prog"
+      ;;
+  "")
+    # If it fails, then pretend we aren't using GCC.
+    ac_prog=ld
+    ;;
+  *)
+    # If it is relative, then search for the first ld in PATH.
+    with_gnu_ld=unknown
+    ;;
+  esac
+elif test "$with_gnu_ld" = yes; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
+$as_echo_n "checking for GNU ld... " >&6; }
 else
-  { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details" "$LINENO" 5; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
+$as_echo_n "checking for non-GNU ld... " >&6; }
+fi
+if ${lt_cv_path_LD+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -z "$LD"; then
+  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+  for ac_dir in $PATH; do
+    IFS="$lt_save_ifs"
+    test -z "$ac_dir" && ac_dir=.
+    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
+      lt_cv_path_LD="$ac_dir/$ac_prog"
+      # Check to see if the program is GNU ld.  I'd rather use --version,
+      # but apparently some variants of GNU ld only accept -v.
+      # Break only if it was the GNU/non-GNU ld that we prefer.
+      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
+      *GNU* | *'with BFD'*)
+       test "$with_gnu_ld" != no && break
+       ;;
+      *)
+       test "$with_gnu_ld" != yes && break
+       ;;
+      esac
+    fi
+  done
+  IFS="$lt_save_ifs"
+else
+  lt_cv_path_LD="$LD" # Let the user override the test with a path.
+fi
 fi
-rm -f conftest conftest$ac_cv_exeext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
-$as_echo "$ac_cv_exeext" >&6; }
-
-rm -f conftest.$ac_ext
-EXEEXT=$ac_cv_exeext
-ac_exeext=$EXEEXT
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdio.h>
-int
-main ()
-{
-FILE *f = fopen ("conftest.out", "w");
- return ferror (f) || fclose (f) != 0;
 
-  ;
-  return 0;
-}
-_ACEOF
-ac_clean_files="$ac_clean_files conftest.out"
-# Check that the compiler produces executables we can run.  If not, either
-# the compiler is broken, or we cross compile.
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5
-$as_echo_n "checking whether we are cross compiling... " >&6; }
-if test "$cross_compiling" != yes; then
-  { { ac_try="$ac_link"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_link") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-  if { ac_try='./conftest$ac_cv_exeext'
-  { { case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_try") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; }; then
-    cross_compiling=no
-  else
-    if test "$cross_compiling" = maybe; then
-       cross_compiling=yes
-    else
-       { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot run C compiled programs.
-If you meant to cross compile, use \`--host'.
-See \`config.log' for more details" "$LINENO" 5; }
-    fi
-  fi
+LD="$lt_cv_path_LD"
+if test -n "$LD"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
+$as_echo "$LD" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5
-$as_echo "$cross_compiling" >&6; }
-
-rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out
-ac_clean_files=$ac_clean_files_save
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
-$as_echo_n "checking for suffix of object files... " >&6; }
-if ${ac_cv_objext+:} false; then :
+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
+if ${lt_cv_prog_gnu_ld+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+  # I'd rather use --version here, but apparently some GNU lds only accept -v.
+case `$LD -v 2>&1 </dev/null` in
+*GNU* | *'with BFD'*)
+  lt_cv_prog_gnu_ld=yes
+  ;;
+*)
+  lt_cv_prog_gnu_ld=no
+  ;;
+esac
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
+$as_echo "$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
 
-int
-main ()
-{
 
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.o conftest.obj
-if { { ac_try="$ac_compile"
-case "(($ac_try" in
-  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
-  *) ac_try_echo=$ac_try;;
-esac
-eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
-$as_echo "$ac_try_echo"; } >&5
-  (eval "$ac_compile") 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }; then :
-  for ac_file in conftest.o conftest.obj conftest.*; do
-  test -f "$ac_file" || continue;
-  case $ac_file in
-    *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;;
-    *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
-       break;;
-  esac
-done
-else
-  $as_echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
 
-{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
-as_fn_error $? "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details" "$LINENO" 5; }
-fi
-rm -f conftest.$ac_cv_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5
-$as_echo "$ac_cv_objext" >&6; }
-OBJEXT=$ac_cv_objext
-ac_objext=$OBJEXT
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
-$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if ${ac_cv_c_compiler_gnu+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
 
-int
-main ()
-{
-#ifndef __GNUC__
-       choke me
-#endif
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_compiler_gnu=yes
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
+$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
+if ${lt_cv_path_NM+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  ac_compiler_gnu=no
+  if test -n "$NM"; then
+  # Let the user override the test.
+  lt_cv_path_NM="$NM"
+else
+  lt_nm_to_check="${ac_tool_prefix}nm"
+  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+    lt_nm_to_check="$lt_nm_to_check nm"
+  fi
+  for lt_tmp_nm in $lt_nm_to_check; do
+    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
+      IFS="$lt_save_ifs"
+      test -z "$ac_dir" && ac_dir=.
+      tmp_nm="$ac_dir/$lt_tmp_nm"
+      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
+       # Check to see if the nm accepts a BSD-compat flag.
+       # Adding the `sed 1q' prevents false positives on HP-UX, which says:
+       #   nm: unknown option "B" ignored
+       # Tru64's nm complains that /dev/null is an invalid object file
+       case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
+       */dev/null* | *'Invalid file or object type'*)
+         lt_cv_path_NM="$tmp_nm -B"
+         break
+         ;;
+       *)
+         case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
+         */dev/null*)
+           lt_cv_path_NM="$tmp_nm -p"
+           break
+           ;;
+         *)
+           lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
+           continue # so that we can try to find one that supports BSD flags
+           ;;
+         esac
+         ;;
+       esac
+      fi
+    done
+    IFS="$lt_save_ifs"
+  done
+  : ${lt_cv_path_NM=no}
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-ac_cv_c_compiler_gnu=$ac_compiler_gnu
-
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5
-$as_echo "$ac_cv_c_compiler_gnu" >&6; }
-if test $ac_compiler_gnu = yes; then
-  GCC=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
+$as_echo "$lt_cv_path_NM" >&6; }
+if test "$lt_cv_path_NM" != "no"; then
+  NM="$lt_cv_path_NM"
 else
-  GCC=
-fi
-ac_test_CFLAGS=${CFLAGS+set}
-ac_save_CFLAGS=$CFLAGS
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
-$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if ${ac_cv_prog_cc_g+:} false; then :
+  # Didn't find any BSD compatible name lister, look for dumpbin.
+  if test -n "$DUMPBIN"; then :
+    # Let the user override the test.
+  else
+    if test -n "$ac_tool_prefix"; then
+  for ac_prog in dumpbin "link -dump"
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; 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_prog_DUMPBIN+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  ac_save_c_werror_flag=$ac_c_werror_flag
-   ac_c_werror_flag=yes
-   ac_cv_prog_cc_g=no
-   CFLAGS="-g"
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
+  if test -n "$DUMPBIN"; then
+  ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
+else
+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 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
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
+fi
+fi
+DUMPBIN=$ac_cv_prog_DUMPBIN
+if test -n "$DUMPBIN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
+$as_echo "$DUMPBIN" >&6; }
 else
-  CFLAGS=""
-      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
 
+    test -n "$DUMPBIN" && break
+  done
+fi
+if test -z "$DUMPBIN"; then
+  ac_ct_DUMPBIN=$DUMPBIN
+  for ac_prog in dumpbin "link -dump"
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; 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_prog_ac_ct_DUMPBIN+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  ac_c_werror_flag=$ac_save_c_werror_flag
-        CFLAGS="-g"
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
+  if test -n "$ac_ct_DUMPBIN"; then
+  ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
+else
+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 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
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_g=yes
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-   ac_c_werror_flag=$ac_save_c_werror_flag
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5
-$as_echo "$ac_cv_prog_cc_g" >&6; }
-if test "$ac_test_CFLAGS" = set; then
-  CFLAGS=$ac_save_CFLAGS
-elif test $ac_cv_prog_cc_g = yes; then
-  if test "$GCC" = yes; then
-    CFLAGS="-g -O2"
-  else
-    CFLAGS="-g"
-  fi
+ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
+if test -n "$ac_ct_DUMPBIN"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
+$as_echo "$ac_ct_DUMPBIN" >&6; }
 else
-  if test "$GCC" = yes; then
-    CFLAGS="-O2"
-  else
-    CFLAGS=
-  fi
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
-$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if ${ac_cv_prog_cc_c89+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_cv_prog_cc_c89=no
-ac_save_CC=$CC
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdarg.h>
-#include <stdio.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);
-static char *e (p, i)
-     char **p;
-     int i;
-{
-  return p[i];
-}
-static char *f (char * (*g) (char **, int), char **p, ...)
-{
-  char *s;
-  va_list v;
-  va_start (v,p);
-  s = g (p, va_arg (v,int));
-  va_end (v);
-  return s;
-}
-
-/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default.  It has
-   function prototypes and stuff, but not '\xHH' hex character constants.
-   These don't provoke an error unfortunately, instead are silently treated
-   as 'x'.  The following induces an error, until -std is added to get
-   proper ANSI mode.  Curiously '\x00'!='x' always comes out true, for an
-   array size at least.  It's necessary to write '\x00'==0 to get something
-   that's true only with -std.  */
-int osf4_cc_array ['\x00' == 0 ? 1 : -1];
 
-/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters
-   inside strings and character constants.  */
-#define FOO(x) 'x'
-int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1];
 
-int test (int i, double x);
-struct s1 {int (*f) (int a);};
-struct s2 {int (*f) (double a);};
-int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int);
-int argc;
-char **argv;
-int
-main ()
-{
-return f (e, argv, 0) != argv[0]  ||  f (e, argv, 1) != argv[1];
-  ;
-  return 0;
-}
-_ACEOF
-for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \
-       -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__"
-do
-  CC="$ac_save_CC $ac_arg"
-  if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_prog_cc_c89=$ac_arg
-fi
-rm -f core conftest.err conftest.$ac_objext
-  test "x$ac_cv_prog_cc_c89" != "xno" && break
+  test -n "$ac_ct_DUMPBIN" && break
 done
-rm -f conftest.$ac_ext
-CC=$ac_save_CC
 
-fi
-# AC_CACHE_VAL
-case "x$ac_cv_prog_cc_c89" in
-  x)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5
-$as_echo "none needed" >&6; } ;;
-  xno)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5
-$as_echo "unsupported" >&6; } ;;
-  *)
-    CC="$CC $ac_cv_prog_cc_c89"
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5
-$as_echo "$ac_cv_prog_cc_c89" >&6; } ;;
+  if test "x$ac_ct_DUMPBIN" = x; then
+    DUMPBIN=":"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
 esac
-if test "x$ac_cv_prog_cc_c89" != xno; then :
+    DUMPBIN=$ac_ct_DUMPBIN
+  fi
+fi
+
+    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
+    *COFF*)
+      DUMPBIN="$DUMPBIN -symbols"
+      ;;
+    *)
+      DUMPBIN=:
+      ;;
+    esac
+  fi
 
+  if test "$DUMPBIN" != ":"; then
+    NM="$DUMPBIN"
+  fi
 fi
+test -z "$NM" && NM=nm
 
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-depcc="$CC"   am_compiler_list=
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5
-$as_echo_n "checking dependency style of $depcc... " >&6; }
-if ${am_cv_CC_dependencies_compiler_type+:} false; then :
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
+$as_echo_n "checking the name lister ($NM) interface... " >&6; }
+if ${lt_cv_nm_interface+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  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
-
-  am_cv_CC_dependencies_compiler_type=none
-  if test "$am_compiler_list" = ""; then
-     am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+  lt_cv_nm_interface="BSD nm"
+  echo "int some_variable = 0;" > conftest.$ac_ext
+  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
+  (eval "$ac_compile" 2>conftest.err)
+  cat conftest.err >&5
+  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
+  cat conftest.err >&5
+  (eval echo "\"\$as_me:$LINENO: output\"" >&5)
+  cat conftest.out >&5
+  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
+    lt_cv_nm_interface="MS dumpbin"
   fi
-  am__universal=false
-  case " $depcc " in #(
-     *\ -arch\ *\ -arch\ *) am__universal=true ;;
-     esac
+  rm -f conftest*
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
+$as_echo "$lt_cv_nm_interface" >&6; }
 
-  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
-      ;;
-    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_CC_dependencies_compiler_type=$depmode
-        break
-      fi
-    fi
-  done
-
-  cd ..
-  rm -rf conftest.dir
-else
-  am_cv_CC_dependencies_compiler_type=none
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5
-$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; }
-CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type
-
- if
-  test "x$enable_dependency_tracking" != xno \
-  && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then
-  am__fastdepCC_TRUE=
-  am__fastdepCC_FALSE='#'
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
+$as_echo_n "checking whether ln -s works... " >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
 else
-  am__fastdepCC_TRUE='#'
-  am__fastdepCC_FALSE=
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
+$as_echo "no, using $LN_S" >&6; }
 fi
 
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5
-$as_echo_n "checking for a sed that does not truncate output... " >&6; }
-if ${ac_cv_path_SED+:} false; then :
+# find the maximum length of command line arguments
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
+$as_echo_n "checking the maximum length of command line arguments... " >&6; }
+if ${lt_cv_sys_max_cmd_len+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-            ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
-     for ac_i in 1 2 3 4 5 6 7; do
-       ac_script="$ac_script$as_nl$ac_script"
-     done
-     echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed
-     { ac_script=; unset ac_script;}
-     if test -z "$SED"; then
-  ac_path_SED_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  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_prog in sed gsed; do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_SED="$as_dir/$ac_prog$ac_exec_ext"
-      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
-*GNU*)
-  ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo '' >> "conftest.nl"
-    "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_SED_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_SED="$ac_path_SED"
-      ac_path_SED_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_SED_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_SED"; then
-    as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5
-  fi
-else
-  ac_cv_path_SED=$SED
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5
-$as_echo "$ac_cv_path_SED" >&6; }
- SED="$ac_cv_path_SED"
-  rm -f conftest.sed
-
-test -z "$SED" && SED=sed
-Xsed="$SED -e 1s/^X//"
-
-
+    i=0
+  teststring="ABCD"
 
+  case $build_os in
+  msdosdjgpp*)
+    # On DJGPP, this test can blow up pretty badly due to problems in libc
+    # (any single argument exceeding 2000 bytes causes a buffer overrun
+    # during glob expansion).  Even if it were fixed, the result of this
+    # check would be larger than it should be.
+    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
+    ;;
 
+  gnu*)
+    # Under GNU Hurd, this test is not required because there is
+    # no limit to the length of command line arguments.
+    # Libtool will interpret -1 as no limit whatsoever
+    lt_cv_sys_max_cmd_len=-1;
+    ;;
 
+  cygwin* | mingw* | cegcc*)
+    # On Win9x/ME, this test blows up -- it succeeds, but takes
+    # about 5 minutes as the teststring grows exponentially.
+    # Worse, since 9x/ME are not pre-emptively multitasking,
+    # you end up with a "frozen" computer, even though with patience
+    # the test eventually succeeds (with a max line length of 256k).
+    # Instead, let's just punt: use the minimum linelength reported by
+    # all of the supported platforms: 8192 (on NT/2K/XP).
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
 
+  mint*)
+    # On MiNT this can take a long time and run out of memory.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
 
+  amigaos*)
+    # On AmigaOS with pdksh, this test takes hours, literally.
+    # So we just punt and use a minimum line length of 8192.
+    lt_cv_sys_max_cmd_len=8192;
+    ;;
 
+  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
+    # This has been around since 386BSD, at least.  Likely further.
+    if test -x /sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
+    elif test -x /usr/sbin/sysctl; then
+      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
+    else
+      lt_cv_sys_max_cmd_len=65536      # usable default for all BSDs
+    fi
+    # And add a safety zone
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    ;;
 
+  interix*)
+    # We know the value 262144 and hardcode it with a safety zone (like BSD)
+    lt_cv_sys_max_cmd_len=196608
+    ;;
 
+  os2*)
+    # The test takes a long time on OS/2.
+    lt_cv_sys_max_cmd_len=8192
+    ;;
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
-$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if ${ac_cv_path_GREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    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"
-      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
-*GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_GREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_GREP=$GREP
-fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-$as_echo "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-$as_echo_n "checking for egrep... " >&6; }
-if ${ac_cv_path_EGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    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"
-      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
-*GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
+  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
+    # nice to cause kernel panics so lets avoid the loop below.
+    # First set a reasonable default.
+    lt_cv_sys_max_cmd_len=16384
+    #
+    if test -x /sbin/sysconfig; then
+      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
+        *1*) lt_cv_sys_max_cmd_len=-1 ;;
+      esac
     fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
+    ;;
+  sco3.2v5*)
+    lt_cv_sys_max_cmd_len=102400
+    ;;
+  sysv5* | sco5v6* | sysv4.2uw2*)
+    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
+    if test -n "$kargmax"; then
+      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[         ]//'`
+    else
+      lt_cv_sys_max_cmd_len=32768
+    fi
+    ;;
+  *)
+    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+    if test -n "$lt_cv_sys_max_cmd_len" && \
+       test undefined != "$lt_cv_sys_max_cmd_len"; then
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+    else
+      # Make teststring a little bigger before we do anything with it.
+      # a 1K string should be a reasonable start.
+      for i in 1 2 3 4 5 6 7 8 ; do
+        teststring=$teststring$teststring
+      done
+      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+      # 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"`env echo "$teststring$teststring" 2>/dev/null` \
+                = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+             test $i != 17 # 1/2 MB should be enough
+      do
+        i=`expr $i + 1`
+        teststring=$teststring$teststring
+      done
+      # Only check the string length outside the loop.
+      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
+      teststring=
+      # Add a significant safety factor because C++ compilers can tack on
+      # massive amounts of additional arguments before passing them to the
+      # linker.  It appears as though 1/2 is a usable value.
+      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+    fi
+    ;;
+  esac
 
-      $ac_path_EGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
-    as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_EGREP=$EGREP
 fi
 
-   fi
+if test -n $lt_cv_sys_max_cmd_len ; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
+$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
+$as_echo "none" >&6; }
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-$as_echo "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
+max_cmd_len=$lt_cv_sys_max_cmd_len
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5
-$as_echo_n "checking for fgrep... " >&6; }
-if ${ac_cv_path_FGREP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1
-   then ac_cv_path_FGREP="$GREP -F"
-   else
-     if test -z "$FGREP"; then
-  ac_path_FGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    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"
-      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
-*GNU*)
-  ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;;
-*)
-  ac_count=0
-  $as_echo_n 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    $as_echo 'FGREP' >> "conftest.nl"
-    "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_FGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_FGREP="$ac_path_FGREP"
-      ac_path_FGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
 
-      $ac_path_FGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_FGREP"; then
-    as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_FGREP=$FGREP
-fi
 
-   fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5
-$as_echo "$ac_cv_path_FGREP" >&6; }
- FGREP="$ac_cv_path_FGREP"
 
 
-test -z "$GREP" && GREP=grep
+: ${CP="cp -f"}
+: ${MV="mv -f"}
+: ${RM="rm -f"}
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
+$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
+# Try some XSI features
+xsi_shell=no
+( _lt_dummy="a/b/c"
+  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
+      = c,a/b,b/c, \
+    && eval 'test $(( 1 + 1 )) -eq 2 \
+    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
+  && xsi_shell=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
+$as_echo "$xsi_shell" >&6; }
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
+$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
+lt_shell_append=no
+( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
+    >/dev/null 2>&1 \
+  && lt_shell_append=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
+$as_echo "$lt_shell_append" >&6; }
 
 
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+  lt_unset=unset
+else
+  lt_unset=false
+fi
 
 
 
 
 
+# test EBCDIC or ASCII
+case `echo X|tr X '\101'` in
+ A) # ASCII based system
+    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
+  lt_SP2NL='tr \040 \012'
+  lt_NL2SP='tr \015\012 \040\040'
+  ;;
+ *) # EBCDIC based system
+  lt_SP2NL='tr \100 \n'
+  lt_NL2SP='tr \r\n \100\100'
+  ;;
+esac
 
 
 
@@ -4628,108 +4806,109 @@ test -z "$GREP" && GREP=grep
 
 
 
-# Check whether --with-gnu-ld was given.
-if test "${with_gnu_ld+set}" = set; then :
-  withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
+$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
+if ${lt_cv_to_host_file_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
 else
-  with_gnu_ld=no
-fi
-
-ac_prog=ld
-if test "$GCC" = yes; then
-  # Check if gcc -print-prog-name=ld gives a path.
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
-$as_echo_n "checking for ld used by $CC... " >&6; }
   case $host in
-  *-*-mingw*)
-    # gcc leaves a trailing carriage return which upsets mingw
-    ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;;
-  *)
-    ac_prog=`($CC -print-prog-name=ld) 2>&5` ;;
-  esac
-  case $ac_prog in
-    # Accept absolute paths.
-    [\\/]* | ?:[\\/]*)
-      re_direlt='/[^/][^/]*/\.\./'
-      # Canonicalize the pathname of ld
-      ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'`
-      while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do
-       ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"`
-      done
-      test -z "$LD" && LD="$ac_prog"
-      ;;
-  "")
-    # If it fails, then pretend we aren't using GCC.
-    ac_prog=ld
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
+        ;;
+    esac
     ;;
-  *)
-    # If it is relative, then search for the first ld in PATH.
-    with_gnu_ld=unknown
+  *-*-cygwin* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
+        ;;
+      *-*-cygwin* )
+        lt_cv_to_host_file_cmd=func_convert_file_noop
+        ;;
+      * ) # otherwise, assume *nix
+        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
+        ;;
+    esac
     ;;
-  esac
-elif test "$with_gnu_ld" = yes; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5
-$as_echo_n "checking for GNU ld... " >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5
-$as_echo_n "checking for non-GNU ld... " >&6; }
+  * ) # unhandled hosts (and "normal" native builds)
+    lt_cv_to_host_file_cmd=func_convert_file_noop
+    ;;
+esac
+
 fi
-if ${lt_cv_path_LD+:} false; then :
+
+to_host_file_cmd=$lt_cv_to_host_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
+$as_echo "$lt_cv_to_host_file_cmd" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
+$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
+if ${lt_cv_to_tool_file_cmd+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -z "$LD"; then
-  lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-  for ac_dir in $PATH; do
-    IFS="$lt_save_ifs"
-    test -z "$ac_dir" && ac_dir=.
-    if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
-      lt_cv_path_LD="$ac_dir/$ac_prog"
-      # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some variants of GNU ld only accept -v.
-      # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$lt_cv_path_LD" -v 2>&1 </dev/null` in
-      *GNU* | *'with BFD'*)
-       test "$with_gnu_ld" != no && break
-       ;;
-      *)
-       test "$with_gnu_ld" != yes && break
-       ;;
-      esac
-    fi
-  done
-  IFS="$lt_save_ifs"
-else
-  lt_cv_path_LD="$LD" # Let the user override the test with a path.
-fi
-fi
+  #assume ordinary cross tools, or native build.
+lt_cv_to_tool_file_cmd=func_convert_file_noop
+case $host in
+  *-*-mingw* )
+    case $build in
+      *-*-mingw* ) # actually msys
+        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
+        ;;
+    esac
+    ;;
+esac
 
-LD="$lt_cv_path_LD"
-if test -n "$LD"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LD" >&5
-$as_echo "$LD" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
 fi
-test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5
-$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
-if ${lt_cv_prog_gnu_ld+:} false; then :
+
+to_tool_file_cmd=$lt_cv_to_tool_file_cmd
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
+$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
+$as_echo_n "checking for $LD option to reload object files... " >&6; }
+if ${lt_cv_ld_reload_flag+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  # I'd rather use --version here, but apparently some GNU lds only accept -v.
-case `$LD -v 2>&1 </dev/null` in
-*GNU* | *'with BFD'*)
-  lt_cv_prog_gnu_ld=yes
-  ;;
-*)
-  lt_cv_prog_gnu_ld=no
-  ;;
-esac
+  lt_cv_ld_reload_flag='-r'
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_gnu_ld" >&5
-$as_echo "$lt_cv_prog_gnu_ld" >&6; }
-with_gnu_ld=$lt_cv_prog_gnu_ld
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
+$as_echo "$lt_cv_ld_reload_flag" >&6; }
+reload_flag=$lt_cv_ld_reload_flag
+case $reload_flag in
+"" | " "*) ;;
+*) reload_flag=" $reload_flag" ;;
+esac
+reload_cmds='$LD$reload_flag -o $output$reload_objs'
+case $host_os in
+  cygwin* | mingw* | pw32* | cegcc*)
+    if test "$GCC" != yes; then
+      reload_cmds=false
+    fi
+    ;;
+  darwin*)
+    if test "$GCC" = yes; then
+      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
+    else
+      reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    fi
+    ;;
+esac
 
 
 
@@ -4739,76 +4918,16 @@ with_gnu_ld=$lt_cv_prog_gnu_ld
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5
-$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; }
-if ${lt_cv_path_NM+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$NM"; then
-  # Let the user override the test.
-  lt_cv_path_NM="$NM"
-else
-  lt_nm_to_check="${ac_tool_prefix}nm"
-  if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
-    lt_nm_to_check="$lt_nm_to_check nm"
-  fi
-  for lt_tmp_nm in $lt_nm_to_check; do
-    lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
-    for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do
-      IFS="$lt_save_ifs"
-      test -z "$ac_dir" && ac_dir=.
-      tmp_nm="$ac_dir/$lt_tmp_nm"
-      if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then
-       # Check to see if the nm accepts a BSD-compat flag.
-       # Adding the `sed 1q' prevents false positives on HP-UX, which says:
-       #   nm: unknown option "B" ignored
-       # Tru64's nm complains that /dev/null is an invalid object file
-       case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in
-       */dev/null* | *'Invalid file or object type'*)
-         lt_cv_path_NM="$tmp_nm -B"
-         break
-         ;;
-       *)
-         case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in
-         */dev/null*)
-           lt_cv_path_NM="$tmp_nm -p"
-           break
-           ;;
-         *)
-           lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but
-           continue # so that we can try to find one that supports BSD flags
-           ;;
-         esac
-         ;;
-       esac
-      fi
-    done
-    IFS="$lt_save_ifs"
-  done
-  : ${lt_cv_path_NM=no}
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5
-$as_echo "$lt_cv_path_NM" >&6; }
-if test "$lt_cv_path_NM" != "no"; then
-  NM="$lt_cv_path_NM"
-else
-  # Didn't find any BSD compatible name lister, look for dumpbin.
-  if test -n "$DUMPBIN"; then :
-    # Let the user override the test.
-  else
-    if test -n "$ac_tool_prefix"; then
-  for ac_prog in dumpbin "link -dump"
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; 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_prog_DUMPBIN+:} false; then :
+if ${ac_cv_prog_OBJDUMP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$DUMPBIN"; then
-  ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test.
+  if test -n "$OBJDUMP"; then
+  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -4817,7 +4936,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog"
+    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
   fi
@@ -4827,32 +4946,28 @@ IFS=$as_save_IFS
 
 fi
 fi
-DUMPBIN=$ac_cv_prog_DUMPBIN
-if test -n "$DUMPBIN"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5
-$as_echo "$DUMPBIN" >&6; }
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
 
-    test -n "$DUMPBIN" && break
-  done
 fi
-if test -z "$DUMPBIN"; then
-  ac_ct_DUMPBIN=$DUMPBIN
-  for ac_prog in dumpbin "link -dump"
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
+if test -z "$ac_cv_prog_OBJDUMP"; then
+  ac_ct_OBJDUMP=$OBJDUMP
+  # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; 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_prog_ac_ct_DUMPBIN+:} false; then :
+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$ac_ct_DUMPBIN"; then
-  ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test.
+  if test -n "$ac_ct_OBJDUMP"; then
+  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -4861,7 +4976,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DUMPBIN="$ac_prog"
+    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
   fi
@@ -4871,21 +4986,17 @@ IFS=$as_save_IFS
 
 fi
 fi
-ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN
-if test -n "$ac_ct_DUMPBIN"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5
-$as_echo "$ac_ct_DUMPBIN" >&6; }
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
-
-  test -n "$ac_ct_DUMPBIN" && break
-done
-
-  if test "x$ac_ct_DUMPBIN" = x; then
-    DUMPBIN=":"
+  if test "x$ac_ct_OBJDUMP" = x; then
+    OBJDUMP="false"
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
@@ -4893,372 +5004,390 @@ yes:)
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
-    DUMPBIN=$ac_ct_DUMPBIN
+    OBJDUMP=$ac_ct_OBJDUMP
   fi
+else
+  OBJDUMP="$ac_cv_prog_OBJDUMP"
 fi
 
-    case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in
-    *COFF*)
-      DUMPBIN="$DUMPBIN -symbols"
-      ;;
-    *)
-      DUMPBIN=:
-      ;;
-    esac
-  fi
-
-  if test "$DUMPBIN" != ":"; then
-    NM="$DUMPBIN"
-  fi
-fi
-test -z "$NM" && NM=nm
+test -z "$OBJDUMP" && OBJDUMP=objdump
 
 
 
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5
-$as_echo_n "checking the name lister ($NM) interface... " >&6; }
-if ${lt_cv_nm_interface+:} false; then :
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
+$as_echo_n "checking how to recognize dependent libraries... " >&6; }
+if ${lt_cv_deplibs_check_method+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  lt_cv_nm_interface="BSD nm"
-  echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5)
-  (eval "$ac_compile" 2>conftest.err)
-  cat conftest.err >&5
-  (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
-  (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
-  cat conftest.err >&5
-  (eval echo "\"\$as_me:$LINENO: output\"" >&5)
-  cat conftest.out >&5
-  if $GREP 'External.*some_variable' conftest.out > /dev/null; then
-    lt_cv_nm_interface="MS dumpbin"
-  fi
-  rm -f conftest*
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5
-$as_echo "$lt_cv_nm_interface" >&6; }
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5
-$as_echo_n "checking whether ln -s works... " >&6; }
-LN_S=$as_ln_s
-if test "$LN_S" = "ln -s"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5
-$as_echo "no, using $LN_S" >&6; }
-fi
+  lt_cv_file_magic_cmd='$MAGIC_CMD'
+lt_cv_file_magic_test_file=
+lt_cv_deplibs_check_method='unknown'
+# Need to set the preceding variable on all platforms that support
+# interlibrary dependencies.
+# 'none' -- dependencies not supported.
+# `unknown' -- same as none, but documents that we really don't know.
+# 'pass_all' -- all dependencies passed with no checks.
+# 'test_compile' -- check by making test program.
+# 'file_magic [[regex]]' -- check by looking for files in library path
+# which responds to the $file_magic_cmd with a given extended regex.
+# If you have `file' or equivalent on your system and you're not sure
+# whether `pass_all' will *always* work, you probably want this one.
 
-# find the maximum length of command line arguments
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5
-$as_echo_n "checking the maximum length of command line arguments... " >&6; }
-if ${lt_cv_sys_max_cmd_len+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-    i=0
-  teststring="ABCD"
+case $host_os in
+aix[4-9]*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
-  case $build_os in
-  msdosdjgpp*)
-    # On DJGPP, this test can blow up pretty badly due to problems in libc
-    # (any single argument exceeding 2000 bytes causes a buffer overrun
-    # during glob expansion).  Even if it were fixed, the result of this
-    # check would be larger than it should be.
-    lt_cv_sys_max_cmd_len=12288;    # 12K is about right
-    ;;
+beos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
-  gnu*)
-    # Under GNU Hurd, this test is not required because there is
-    # no limit to the length of command line arguments.
-    # Libtool will interpret -1 as no limit whatsoever
-    lt_cv_sys_max_cmd_len=-1;
-    ;;
+bsdi[45]*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
+  lt_cv_file_magic_cmd='/usr/bin/file -L'
+  lt_cv_file_magic_test_file=/shlib/libc.so
+  ;;
 
-  cygwin* | mingw* | cegcc*)
-    # On Win9x/ME, this test blows up -- it succeeds, but takes
-    # about 5 minutes as the teststring grows exponentially.
-    # Worse, since 9x/ME are not pre-emptively multitasking,
-    # you end up with a "frozen" computer, even though with patience
-    # the test eventually succeeds (with a max line length of 256k).
-    # Instead, let's just punt: use the minimum linelength reported by
-    # all of the supported platforms: 8192 (on NT/2K/XP).
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
+cygwin*)
+  # func_win32_libid is a shell function defined in ltmain.sh
+  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+  lt_cv_file_magic_cmd='func_win32_libid'
+  ;;
 
-  mint*)
-    # On MiNT this can take a long time and run out of memory.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
+mingw* | pw32*)
+  # Base MSYS/MinGW do not provide the 'file' command needed by
+  # func_win32_libid shell function, so use a weaker test based on 'objdump',
+  # unless we find 'file', for example because we are cross-compiling.
+  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
+  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
+    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+    lt_cv_file_magic_cmd='func_win32_libid'
+  else
+    # Keep this pattern in sync with the one in func_win32_libid.
+    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
+    lt_cv_file_magic_cmd='$OBJDUMP -f'
+  fi
+  ;;
 
-  amigaos*)
-    # On AmigaOS with pdksh, this test takes hours, literally.
-    # So we just punt and use a minimum line length of 8192.
-    lt_cv_sys_max_cmd_len=8192;
-    ;;
+cegcc*)
+  # use the weaker test based on 'objdump'. See mingw*.
+  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
+  lt_cv_file_magic_cmd='$OBJDUMP -f'
+  ;;
 
-  netbsd* | freebsd* | openbsd* | darwin* | dragonfly*)
-    # This has been around since 386BSD, at least.  Likely further.
-    if test -x /sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax`
-    elif test -x /usr/sbin/sysctl; then
-      lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax`
-    else
-      lt_cv_sys_max_cmd_len=65536      # usable default for all BSDs
-    fi
-    # And add a safety zone
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-    lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    ;;
+darwin* | rhapsody*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
-  interix*)
-    # We know the value 262144 and hardcode it with a safety zone (like BSD)
-    lt_cv_sys_max_cmd_len=196608
-    ;;
+freebsd* | dragonfly*)
+  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
+    case $host_cpu in
+    i*86 )
+      # Not sure whether the presence of OpenBSD here was a mistake.
+      # Let's accept both of them until this is cleared up.
+      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
+      lt_cv_file_magic_cmd=/usr/bin/file
+      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
+      ;;
+    esac
+  else
+    lt_cv_deplibs_check_method=pass_all
+  fi
+  ;;
 
-  os2*)
-    # The test takes a long time on OS/2.
-    lt_cv_sys_max_cmd_len=8192
-    ;;
+haiku*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
-  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
-    # nice to cause kernel panics so lets avoid the loop below.
-    # First set a reasonable default.
-    lt_cv_sys_max_cmd_len=16384
-    #
-    if test -x /sbin/sysconfig; then
-      case `/sbin/sysconfig -q proc exec_disable_arg_limit` in
-        *1*) lt_cv_sys_max_cmd_len=-1 ;;
-      esac
-    fi
-    ;;
-  sco3.2v5*)
-    lt_cv_sys_max_cmd_len=102400
+hpux10.20* | hpux11*)
+  lt_cv_file_magic_cmd=/usr/bin/file
+  case $host_cpu in
+  ia64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
+    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
     ;;
-  sysv5* | sco5v6* | sysv4.2uw2*)
-    kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null`
-    if test -n "$kargmax"; then
-      lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[         ]//'`
-    else
-      lt_cv_sys_max_cmd_len=32768
-    fi
+  hppa*64*)
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
+    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
     ;;
   *)
-    lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len"; then
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
-    else
-      # Make teststring a little bigger before we do anything with it.
-      # a 1K string should be a reasonable start.
-      for i in 1 2 3 4 5 6 7 8 ; do
-        teststring=$teststring$teststring
-      done
-      SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
-      # 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"`env echo "$teststring$teststring" 2>/dev/null` \
-                = "X$teststring$teststring"; } >/dev/null 2>&1 &&
-             test $i != 17 # 1/2 MB should be enough
-      do
-        i=`expr $i + 1`
-        teststring=$teststring$teststring
-      done
-      # Only check the string length outside the loop.
-      lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1`
-      teststring=
-      # Add a significant safety factor because C++ compilers can tack on
-      # massive amounts of additional arguments before passing them to the
-      # linker.  It appears as though 1/2 is a usable value.
-      lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
-    fi
+    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
+    lt_cv_file_magic_test_file=/usr/lib/libc.sl
     ;;
   esac
+  ;;
 
-fi
-
-if test -n $lt_cv_sys_max_cmd_len ; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5
-$as_echo "$lt_cv_sys_max_cmd_len" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5
-$as_echo "none" >&6; }
-fi
-max_cmd_len=$lt_cv_sys_max_cmd_len
-
-
-
-
-
+interix[3-9]*)
+  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
+  lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
+  ;;
 
-: ${CP="cp -f"}
-: ${MV="mv -f"}
-: ${RM="rm -f"}
+irix5* | irix6* | nonstopux*)
+  case $LD in
+  *-32|*"-32 ") libmagic=32-bit;;
+  *-n32|*"-n32 ") libmagic=N32;;
+  *-64|*"-64 ") libmagic=64-bit;;
+  *) libmagic=never-match;;
+  esac
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5
-$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; }
-# Try some XSI features
-xsi_shell=no
-( _lt_dummy="a/b/c"
-  test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \
-      = c,a/b,b/c, \
-    && eval 'test $(( 1 + 1 )) -eq 2 \
-    && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \
-  && xsi_shell=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5
-$as_echo "$xsi_shell" >&6; }
+# This must be glibc/ELF.
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
+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
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
+  fi
+  ;;
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5
-$as_echo_n "checking whether the shell understands \"+=\"... " >&6; }
-lt_shell_append=no
-( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \
-    >/dev/null 2>&1 \
-  && lt_shell_append=yes
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5
-$as_echo "$lt_shell_append" >&6; }
+newos6*)
+  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
+  lt_cv_file_magic_cmd=/usr/bin/file
+  lt_cv_file_magic_test_file=/usr/lib/libnls.so
+  ;;
 
+*nto* | *qnx*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
-  lt_unset=unset
-else
-  lt_unset=false
-fi
+openbsd*)
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
+  else
+    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
+  fi
+  ;;
 
+osf3* | osf4* | osf5*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
+rdos*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
+solaris*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  lt_cv_deplibs_check_method=pass_all
+  ;;
 
-# test EBCDIC or ASCII
-case `echo X|tr X '\101'` in
- A) # ASCII based system
-    # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr
-  lt_SP2NL='tr \040 \012'
-  lt_NL2SP='tr \015\012 \040\040'
+sysv4 | sysv4.3*)
+  case $host_vendor in
+  motorola)
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
+    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
+    ;;
+  ncr)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  sequent)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
+    ;;
+  sni)
+    lt_cv_file_magic_cmd='/bin/file'
+    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
+    lt_cv_file_magic_test_file=/lib/libc.so
+    ;;
+  siemens)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  pc)
+    lt_cv_deplibs_check_method=pass_all
+    ;;
+  esac
   ;;
- *) # EBCDIC based system
-  lt_SP2NL='tr \100 \n'
-  lt_NL2SP='tr \r\n \100\100'
+
+tpf*)
+  lt_cv_deplibs_check_method=pass_all
   ;;
 esac
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
+$as_echo "$lt_cv_deplibs_check_method" >&6; }
 
+file_magic_glob=
+want_nocaseglob=no
+if test "$build" = "$host"; then
+  case $host_os in
+  mingw* | pw32*)
+    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
+      want_nocaseglob=yes
+    else
+      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
+    fi
+    ;;
+  esac
+fi
 
+file_magic_cmd=$lt_cv_file_magic_cmd
+deplibs_check_method=$lt_cv_deplibs_check_method
+test -z "$deplibs_check_method" && deplibs_check_method=unknown
 
 
 
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5
-$as_echo_n "checking how to convert $build file names to $host format... " >&6; }
-if ${lt_cv_to_host_file_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32
-        ;;
-    esac
-    ;;
-  *-*-cygwin* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin
-        ;;
-      *-*-cygwin* )
-        lt_cv_to_host_file_cmd=func_convert_file_noop
-        ;;
-      * ) # otherwise, assume *nix
-        lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin
-        ;;
-    esac
-    ;;
-  * ) # unhandled hosts (and "normal" native builds)
-    lt_cv_to_host_file_cmd=func_convert_file_noop
-    ;;
-esac
 
-fi
 
-to_host_file_cmd=$lt_cv_to_host_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5
-$as_echo "$lt_cv_to_host_file_cmd" >&6; }
 
 
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5
-$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; }
-if ${lt_cv_to_tool_file_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  #assume ordinary cross tools, or native build.
-lt_cv_to_tool_file_cmd=func_convert_file_noop
-case $host in
-  *-*-mingw* )
-    case $build in
-      *-*-mingw* ) # actually msys
-        lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32
-        ;;
-    esac
-    ;;
-esac
 
-fi
 
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5
-$as_echo "$lt_cv_to_tool_file_cmd" >&6; }
 
 
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5
-$as_echo_n "checking for $LD option to reload object files... " >&6; }
-if ${lt_cv_ld_reload_flag+:} false; then :
+
+
+if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; 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_prog_DLLTOOL+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  lt_cv_ld_reload_flag='-r'
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5
-$as_echo "$lt_cv_ld_reload_flag" >&6; }
-reload_flag=$lt_cv_ld_reload_flag
-case $reload_flag in
-"" | " "*) ;;
-*) reload_flag=" $reload_flag" ;;
+  if test -n "$DLLTOOL"; then
+  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+else
+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 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
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DLLTOOL"; then
+  ac_ct_DLLTOOL=$DLLTOOL
+  # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; 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_prog_ac_ct_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DLLTOOL"; then
+  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+else
+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 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
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+  if test "x$ac_ct_DLLTOOL" = x; then
+    DLLTOOL="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
 esac
-reload_cmds='$LD$reload_flag -o $output$reload_objs'
+    DLLTOOL=$ac_ct_DLLTOOL
+  fi
+else
+  DLLTOOL="$ac_cv_prog_DLLTOOL"
+fi
+
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+
+
+
+
+
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
+$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
+if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_sharedlib_from_linklib_cmd='unknown'
+
 case $host_os in
-  cygwin* | mingw* | pw32* | cegcc*)
-    if test "$GCC" != yes; then
-      reload_cmds=false
-    fi
+cygwin* | mingw* | pw32* | cegcc*)
+  # two different shell functions defined in ltmain.sh
+  # decide which to use based on capabilities of $DLLTOOL
+  case `$DLLTOOL --help 2>&1` in
+  *--identify-strict*)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
     ;;
-  darwin*)
-    if test "$GCC" = yes; then
-      reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs'
-    else
-      reload_cmds='$LD$reload_flag -o $output$reload_objs'
-    fi
+  *)
+    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
     ;;
+  esac
+  ;;
+*)
+  # fallback: assume linklib IS sharedlib
+  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
+  ;;
 esac
 
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
+$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
 
 
 
@@ -5268,15 +5397,17 @@ esac
 
 
 if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
-set dummy ${ac_tool_prefix}objdump; ac_word=$2
+  for ac_prog in ar
+  do
+    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; 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_prog_OBJDUMP+:} false; then :
+if ${ac_cv_prog_AR+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$OBJDUMP"; then
-  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+  if test -n "$AR"; then
+  ac_cv_prog_AR="$AR" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -5285,7 +5416,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump"
+    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
   fi
@@ -5295,28 +5426,32 @@ IFS=$as_save_IFS
 
 fi
 fi
-OBJDUMP=$ac_cv_prog_OBJDUMP
-if test -n "$OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
-$as_echo "$OBJDUMP" >&6; }
+AR=$ac_cv_prog_AR
+if test -n "$AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
+$as_echo "$AR" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
 
+    test -n "$AR" && break
+  done
 fi
-if test -z "$ac_cv_prog_OBJDUMP"; then
-  ac_ct_OBJDUMP=$OBJDUMP
-  # Extract the first word of "objdump", so it can be a program name with args.
-set dummy objdump; ac_word=$2
+if test -z "$AR"; then
+  ac_ct_AR=$AR
+  for ac_prog in ar
+do
+  # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; 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_prog_ac_ct_OBJDUMP+:} false; then :
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$ac_ct_OBJDUMP"; then
-  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+  if test -n "$ac_ct_AR"; then
+  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -5325,7 +5460,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_OBJDUMP="objdump"
+    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
   fi
@@ -5335,17 +5470,21 @@ IFS=$as_save_IFS
 
 fi
 fi
-ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
-if test -n "$ac_ct_OBJDUMP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
-$as_echo "$ac_ct_OBJDUMP" >&6; }
+ac_ct_AR=$ac_cv_prog_ac_ct_AR
+if test -n "$ac_ct_AR"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
+$as_echo "$ac_ct_AR" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
-  if test "x$ac_ct_OBJDUMP" = x; then
-    OBJDUMP="false"
+
+  test -n "$ac_ct_AR" && break
+done
+
+  if test "x$ac_ct_AR" = x; then
+    AR="false"
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
@@ -5353,256 +5492,74 @@ yes:)
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
-    OBJDUMP=$ac_ct_OBJDUMP
+    AR=$ac_ct_AR
   fi
-else
-  OBJDUMP="$ac_cv_prog_OBJDUMP"
 fi
 
-test -z "$OBJDUMP" && OBJDUMP=objdump
-
+: ${AR=ar}
+: ${AR_FLAGS=cru}
 
 
 
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5
-$as_echo_n "checking how to recognize dependent libraries... " >&6; }
-if ${lt_cv_deplibs_check_method+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_file_magic_cmd='$MAGIC_CMD'
-lt_cv_file_magic_test_file=
-lt_cv_deplibs_check_method='unknown'
-# Need to set the preceding variable on all platforms that support
-# interlibrary dependencies.
-# 'none' -- dependencies not supported.
-# `unknown' -- same as none, but documents that we really don't know.
-# 'pass_all' -- all dependencies passed with no checks.
-# 'test_compile' -- check by making test program.
-# 'file_magic [[regex]]' -- check by looking for files in library path
-# which responds to the $file_magic_cmd with a given extended regex.
-# If you have `file' or equivalent on your system and you're not sure
-# whether `pass_all' will *always* work, you probably want this one.
 
-case $host_os in
-aix[4-9]*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
 
-beos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
 
-bsdi[45]*)
-  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)'
-  lt_cv_file_magic_cmd='/usr/bin/file -L'
-  lt_cv_file_magic_test_file=/shlib/libc.so
-  ;;
 
-cygwin*)
-  # func_win32_libid is a shell function defined in ltmain.sh
-  lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-  lt_cv_file_magic_cmd='func_win32_libid'
-  ;;
 
-mingw* | pw32*)
-  # Base MSYS/MinGW do not provide the 'file' command needed by
-  # func_win32_libid shell function, so use a weaker test based on 'objdump',
-  # unless we find 'file', for example because we are cross-compiling.
-  # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin.
-  if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then
-    lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
-    lt_cv_file_magic_cmd='func_win32_libid'
-  else
-    # Keep this pattern in sync with the one in func_win32_libid.
-    lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)'
-    lt_cv_file_magic_cmd='$OBJDUMP -f'
-  fi
-  ;;
 
-cegcc*)
-  # use the weaker test based on 'objdump'. See mingw*.
-  lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?'
-  lt_cv_file_magic_cmd='$OBJDUMP -f'
-  ;;
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
+$as_echo_n "checking for archiver @FILE support... " >&6; }
+if ${lt_cv_ar_at_file+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  lt_cv_ar_at_file=no
+   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
-darwin* | rhapsody*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-freebsd* | dragonfly*)
-  if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then
-    case $host_cpu in
-    i*86 )
-      # Not sure whether the presence of OpenBSD here was a mistake.
-      # Let's accept both of them until this is cleared up.
-      lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library'
-      lt_cv_file_magic_cmd=/usr/bin/file
-      lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*`
-      ;;
-    esac
-  else
-    lt_cv_deplibs_check_method=pass_all
-  fi
-  ;;
-
-gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-haiku*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-hpux10.20* | hpux11*)
-  lt_cv_file_magic_cmd=/usr/bin/file
-  case $host_cpu in
-  ia64*)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64'
-    lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so
-    ;;
-  hppa*64*)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'
-    lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl
-    ;;
-  *)
-    lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library'
-    lt_cv_file_magic_test_file=/usr/lib/libc.sl
-    ;;
-  esac
-  ;;
-
-interix[3-9]*)
-  # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
-  lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
-  ;;
-
-irix5* | irix6* | nonstopux*)
-  case $LD in
-  *-32|*"-32 ") libmagic=32-bit;;
-  *-n32|*"-n32 ") libmagic=N32;;
-  *-64|*"-64 ") libmagic=64-bit;;
-  *) libmagic=never-match;;
-  esac
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-# This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-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
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$'
-  fi
-  ;;
-
-newos6*)
-  lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)'
-  lt_cv_file_magic_cmd=/usr/bin/file
-  lt_cv_file_magic_test_file=/usr/lib/libnls.so
-  ;;
-
-*nto* | *qnx*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-openbsd*)
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$'
-  else
-    lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$'
-  fi
-  ;;
-
-osf3* | osf4* | osf5*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-rdos*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-solaris*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
-sysv4 | sysv4.3*)
-  case $host_vendor in
-  motorola)
-    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]'
-    lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*`
-    ;;
-  ncr)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  sequent)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )'
-    ;;
-  sni)
-    lt_cv_file_magic_cmd='/bin/file'
-    lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib"
-    lt_cv_file_magic_test_file=/lib/libc.so
-    ;;
-  siemens)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  pc)
-    lt_cv_deplibs_check_method=pass_all
-    ;;
-  esac
-  ;;
+int
+main ()
+{
 
-tpf*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-esac
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  echo conftest.$ac_objext > conftest.lst
+      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
+      { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+  (eval $lt_ar_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+      if test "$ac_status" -eq 0; then
+       # Ensure the archiver fails upon bogus file names.
+       rm -f conftest.$ac_objext libconftest.a
+       { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
+  (eval $lt_ar_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; }
+       if test "$ac_status" -ne 0; then
+          lt_cv_ar_at_file=@
+        fi
+      fi
+      rm -f conftest.* libconftest.a
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5
-$as_echo "$lt_cv_deplibs_check_method" >&6; }
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
-file_magic_glob=
-want_nocaseglob=no
-if test "$build" = "$host"; then
-  case $host_os in
-  mingw* | pw32*)
-    if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then
-      want_nocaseglob=yes
-    else
-      file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"`
-    fi
-    ;;
-  esac
 fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
+$as_echo "$lt_cv_ar_at_file" >&6; }
 
-file_magic_cmd=$lt_cv_file_magic_cmd
-deplibs_check_method=$lt_cv_deplibs_check_method
-test -z "$deplibs_check_method" && deplibs_check_method=unknown
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+if test "x$lt_cv_ar_at_file" = xno; then
+  archiver_list_spec=
+else
+  archiver_list_spec=$lt_cv_ar_at_file
+fi
 
 
 
@@ -5611,15 +5568,15 @@ test -z "$deplibs_check_method" && deplibs_check_method=unknown
 
 
 if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
-set dummy ${ac_tool_prefix}dlltool; ac_word=$2
+  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; 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_prog_DLLTOOL+:} false; then :
+if ${ac_cv_prog_STRIP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$DLLTOOL"; then
-  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+  if test -n "$STRIP"; then
+  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -5628,7 +5585,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool"
+    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
   fi
@@ -5638,10 +5595,10 @@ IFS=$as_save_IFS
 
 fi
 fi
-DLLTOOL=$ac_cv_prog_DLLTOOL
-if test -n "$DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
-$as_echo "$DLLTOOL" >&6; }
+STRIP=$ac_cv_prog_STRIP
+if test -n "$STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
+$as_echo "$STRIP" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
@@ -5649,17 +5606,17 @@ fi
 
 
 fi
-if test -z "$ac_cv_prog_DLLTOOL"; then
-  ac_ct_DLLTOOL=$DLLTOOL
-  # Extract the first word of "dlltool", so it can be a program name with args.
-set dummy dlltool; ac_word=$2
+if test -z "$ac_cv_prog_STRIP"; then
+  ac_ct_STRIP=$STRIP
+  # Extract the first word of "strip", so it can be a program name with args.
+set dummy strip; 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_prog_ac_ct_DLLTOOL+:} false; then :
+if ${ac_cv_prog_ac_ct_STRIP+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$ac_ct_DLLTOOL"; then
-  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+  if test -n "$ac_ct_STRIP"; then
+  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -5668,7 +5625,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_DLLTOOL="dlltool"
+    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
   fi
@@ -5678,17 +5635,17 @@ IFS=$as_save_IFS
 
 fi
 fi
-ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
-if test -n "$ac_ct_DLLTOOL"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
-$as_echo "$ac_ct_DLLTOOL" >&6; }
+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
+if test -n "$ac_ct_STRIP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
+$as_echo "$ac_ct_STRIP" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
-  if test "x$ac_ct_DLLTOOL" = x; then
-    DLLTOOL="false"
+  if test "x$ac_ct_STRIP" = x; then
+    STRIP=":"
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
@@ -5696,53 +5653,13 @@ yes:)
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
-    DLLTOOL=$ac_ct_DLLTOOL
+    STRIP=$ac_ct_STRIP
   fi
 else
-  DLLTOOL="$ac_cv_prog_DLLTOOL"
+  STRIP="$ac_cv_prog_STRIP"
 fi
 
-test -z "$DLLTOOL" && DLLTOOL=dlltool
-
-
-
-
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5
-$as_echo_n "checking how to associate runtime and link libraries... " >&6; }
-if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_sharedlib_from_linklib_cmd='unknown'
-
-case $host_os in
-cygwin* | mingw* | pw32* | cegcc*)
-  # two different shell functions defined in ltmain.sh
-  # decide which to use based on capabilities of $DLLTOOL
-  case `$DLLTOOL --help 2>&1` in
-  *--identify-strict*)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib
-    ;;
-  *)
-    lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback
-    ;;
-  esac
-  ;;
-*)
-  # fallback: assume linklib IS sharedlib
-  lt_cv_sharedlib_from_linklib_cmd="$ECHO"
-  ;;
-esac
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5
-$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; }
-sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd
-test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
-
-
+test -z "$STRIP" && STRIP=:
 
 
 
@@ -5750,17 +5667,15 @@ test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO
 
 
 if test -n "$ac_tool_prefix"; then
-  for ac_prog in ar
-  do
-    # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
-set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; 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_prog_AR+:} false; then :
+if ${ac_cv_prog_RANLIB+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$AR"; then
-  ac_cv_prog_AR="$AR" # Let the user override the test.
+  if test -n "$RANLIB"; then
+  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -5769,7 +5684,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_AR="$ac_tool_prefix$ac_prog"
+    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
   fi
@@ -5779,32 +5694,28 @@ IFS=$as_save_IFS
 
 fi
 fi
-AR=$ac_cv_prog_AR
-if test -n "$AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5
-$as_echo "$AR" >&6; }
+RANLIB=$ac_cv_prog_RANLIB
+if test -n "$RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
+$as_echo "$RANLIB" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
 
-    test -n "$AR" && break
-  done
 fi
-if test -z "$AR"; then
-  ac_ct_AR=$AR
-  for ac_prog in ar
-do
-  # Extract the first word of "$ac_prog", so it can be a program name with args.
-set dummy $ac_prog; ac_word=$2
+if test -z "$ac_cv_prog_RANLIB"; then
+  ac_ct_RANLIB=$RANLIB
+  # Extract the first word of "ranlib", so it can be a program name with args.
+set dummy ranlib; 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_prog_ac_ct_AR+:} false; then :
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  if test -n "$ac_ct_AR"; then
-  ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test.
+  if test -n "$ac_ct_RANLIB"; then
+  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
 else
 as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
 for as_dir in $PATH
@@ -5813,7 +5724,7 @@ do
   test -z "$as_dir" && as_dir=.
     for ac_exec_ext in '' $ac_executable_extensions; do
   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-    ac_cv_prog_ac_ct_AR="$ac_prog"
+    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
   fi
@@ -5823,21 +5734,17 @@ IFS=$as_save_IFS
 
 fi
 fi
-ac_ct_AR=$ac_cv_prog_ac_ct_AR
-if test -n "$ac_ct_AR"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5
-$as_echo "$ac_ct_AR" >&6; }
+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
+if test -n "$ac_ct_RANLIB"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
+$as_echo "$ac_ct_RANLIB" >&6; }
 else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
 fi
 
-
-  test -n "$ac_ct_AR" && break
-done
-
-  if test "x$ac_ct_AR" = x; then
-    AR="false"
+  if test "x$ac_ct_RANLIB" = x; then
+    RANLIB=":"
   else
     case $cross_compiling:$ac_tool_warned in
 yes:)
@@ -5845,302 +5752,42 @@ yes:)
 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
 ac_tool_warned=yes ;;
 esac
-    AR=$ac_ct_AR
+    RANLIB=$ac_ct_RANLIB
   fi
+else
+  RANLIB="$ac_cv_prog_RANLIB"
 fi
 
-: ${AR=ar}
-: ${AR_FLAGS=cru}
+test -z "$RANLIB" && RANLIB=:
 
 
 
 
 
 
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
+old_postinstall_cmds='chmod 644 $oldlib'
+old_postuninstall_cmds=
 
+if test -n "$RANLIB"; then
+  case $host_os in
+  openbsd*)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
+    ;;
+  *)
+    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
+    ;;
+  esac
+  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
+fi
 
-
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5
-$as_echo_n "checking for archiver @FILE support... " >&6; }
-if ${lt_cv_ar_at_file+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  lt_cv_ar_at_file=no
-   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  echo conftest.$ac_objext > conftest.lst
-      lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5'
-      { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-  (eval $lt_ar_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-      if test "$ac_status" -eq 0; then
-       # Ensure the archiver fails upon bogus file names.
-       rm -f conftest.$ac_objext libconftest.a
-       { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5
-  (eval $lt_ar_try) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; }
-       if test "$ac_status" -ne 0; then
-          lt_cv_ar_at_file=@
-        fi
-      fi
-      rm -f conftest.* libconftest.a
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5
-$as_echo "$lt_cv_ar_at_file" >&6; }
-
-if test "x$lt_cv_ar_at_file" = xno; then
-  archiver_list_spec=
-else
-  archiver_list_spec=$lt_cv_ar_at_file
-fi
-
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
-set dummy ${ac_tool_prefix}strip; 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_prog_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$STRIP"; then
-  ac_cv_prog_STRIP="$STRIP" # Let the user override the test.
-else
-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 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
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-STRIP=$ac_cv_prog_STRIP
-if test -n "$STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5
-$as_echo "$STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_STRIP"; then
-  ac_ct_STRIP=$STRIP
-  # Extract the first word of "strip", so it can be a program name with args.
-set dummy strip; 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_prog_ac_ct_STRIP+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_STRIP"; then
-  ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test.
-else
-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 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
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP
-if test -n "$ac_ct_STRIP"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5
-$as_echo "$ac_ct_STRIP" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_STRIP" = x; then
-    STRIP=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    STRIP=$ac_ct_STRIP
-  fi
-else
-  STRIP="$ac_cv_prog_STRIP"
-fi
-
-test -z "$STRIP" && STRIP=:
-
-
-
-
-
-
-if test -n "$ac_tool_prefix"; then
-  # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
-set dummy ${ac_tool_prefix}ranlib; 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_prog_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$RANLIB"; then
-  ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
-else
-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 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
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-RANLIB=$ac_cv_prog_RANLIB
-if test -n "$RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5
-$as_echo "$RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-
-fi
-if test -z "$ac_cv_prog_RANLIB"; then
-  ac_ct_RANLIB=$RANLIB
-  # Extract the first word of "ranlib", so it can be a program name with args.
-set dummy ranlib; 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_prog_ac_ct_RANLIB+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test -n "$ac_ct_RANLIB"; then
-  ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
-else
-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 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
-  fi
-done
-  done
-IFS=$as_save_IFS
-
-fi
-fi
-ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
-if test -n "$ac_ct_RANLIB"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5
-$as_echo "$ac_ct_RANLIB" >&6; }
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
-  if test "x$ac_ct_RANLIB" = x; then
-    RANLIB=":"
-  else
-    case $cross_compiling:$ac_tool_warned in
-yes:)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
-$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
-ac_tool_warned=yes ;;
-esac
-    RANLIB=$ac_ct_RANLIB
-  fi
-else
-  RANLIB="$ac_cv_prog_RANLIB"
-fi
-
-test -z "$RANLIB" && RANLIB=:
-
-
-
-
-
-
-# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
-old_postinstall_cmds='chmod 644 $oldlib'
-old_postuninstall_cmds=
-
-if test -n "$RANLIB"; then
-  case $host_os in
-  openbsd*)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
-    ;;
-  *)
-    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
-    ;;
-  esac
-  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
-fi
-
-case $host_os in
-  darwin*)
-    lock_old_archive_extraction=yes ;;
-  *)
-    lock_old_archive_extraction=no ;;
-esac
+case $host_os in
+  darwin*)
+    lock_old_archive_extraction=yes ;;
+  *)
+    lock_old_archive_extraction=no ;;
+esac
 
 
 
@@ -6584,7 +6231,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
            LD="${LD-ld} -m elf_i386_fbsd"
            ;;
          x86_64-*linux*)
-           LD="${LD-ld} -m elf_i386"
+           case `/usr/bin/file conftest.o` in
+             *x86-64*)
+               LD="${LD-ld} -m elf32_x86_64"
+               ;;
+             *)
+               LD="${LD-ld} -m elf_i386"
+               ;;
+           esac
            ;;
          ppc64-*linux*|powerpc64-*linux*)
            LD="${LD-ld} -m elf32ppclinux"
@@ -7737,116 +7391,444 @@ done
 
 
 # Set options
+enable_dlopen=yes
+enable_win32_dll=yes
 
+case $host in
+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*)
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args.
+set dummy ${ac_tool_prefix}as; 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_prog_AS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$AS"; then
+  ac_cv_prog_AS="$AS" # Let the user override the test.
+else
+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 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
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-
-        enable_dlopen=no
-
-
-
-            # Check whether --enable-shared was given.
-if test "${enable_shared+set}" = set; then :
-  enableval=$enable_shared; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_shared=yes ;;
-    no) enable_shared=no ;;
-    *)
-      enable_shared=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-       IFS="$lt_save_ifs"
-       if test "X$pkg" = "X$p"; then
-         enable_shared=yes
-       fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
+fi
+fi
+AS=$ac_cv_prog_AS
+if test -n "$AS"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5
+$as_echo "$AS" >&6; }
 else
-  enable_shared=yes
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
+fi
+if test -z "$ac_cv_prog_AS"; then
+  ac_ct_AS=$AS
+  # Extract the first word of "as", so it can be a program name with args.
+set dummy as; 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_prog_ac_ct_AS+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_AS"; then
+  ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test.
+else
+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 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
+  fi
+done
+  done
+IFS=$as_save_IFS
 
+fi
+fi
+ac_ct_AS=$ac_cv_prog_ac_ct_AS
+if test -n "$ac_ct_AS"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5
+$as_echo "$ac_ct_AS" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
+  if test "x$ac_ct_AS" = x; then
+    AS="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    AS=$ac_ct_AS
+  fi
+else
+  AS="$ac_cv_prog_AS"
+fi
 
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dlltool; 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_prog_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$DLLTOOL"; then
+  ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test.
+else
+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 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
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-
-
-
-
-
-# Check whether --with-pic was given.
-if test "${with_pic+set}" = set; then :
-  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
+fi
+fi
+DLLTOOL=$ac_cv_prog_DLLTOOL
+if test -n "$DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5
+$as_echo "$DLLTOOL" >&6; }
 else
-  pic_mode=default
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
 
-test -z "$pic_mode" && pic_mode=default
+fi
+if test -z "$ac_cv_prog_DLLTOOL"; then
+  ac_ct_DLLTOOL=$DLLTOOL
+  # Extract the first word of "dlltool", so it can be a program name with args.
+set dummy dlltool; 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_prog_ac_ct_DLLTOOL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_DLLTOOL"; then
+  ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test.
+else
+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 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
+  fi
+done
+  done
+IFS=$as_save_IFS
 
+fi
+fi
+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL
+if test -n "$ac_ct_DLLTOOL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5
+$as_echo "$ac_ct_DLLTOOL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
+  if test "x$ac_ct_DLLTOOL" = x; then
+    DLLTOOL="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    DLLTOOL=$ac_ct_DLLTOOL
+  fi
+else
+  DLLTOOL="$ac_cv_prog_DLLTOOL"
+fi
 
+  if test -n "$ac_tool_prefix"; then
+  # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args.
+set dummy ${ac_tool_prefix}objdump; 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_prog_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$OBJDUMP"; then
+  ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test.
+else
+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 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
+  fi
+done
+  done
+IFS=$as_save_IFS
 
+fi
+fi
+OBJDUMP=$ac_cv_prog_OBJDUMP
+if test -n "$OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5
+$as_echo "$OBJDUMP" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
 
 
+fi
+if test -z "$ac_cv_prog_OBJDUMP"; then
+  ac_ct_OBJDUMP=$OBJDUMP
+  # Extract the first word of "objdump", so it can be a program name with args.
+set dummy objdump; 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_prog_ac_ct_OBJDUMP+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$ac_ct_OBJDUMP"; then
+  ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test.
+else
+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 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
+  fi
+done
+  done
+IFS=$as_save_IFS
 
-  # Check whether --enable-fast-install was given.
-if test "${enable_fast_install+set}" = set; then :
-  enableval=$enable_fast_install; p=${PACKAGE-default}
-    case $enableval in
-    yes) enable_fast_install=yes ;;
-    no) enable_fast_install=no ;;
-    *)
-      enable_fast_install=no
-      # Look at the argument we got.  We use all the common list separators.
-      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
-      for pkg in $enableval; do
-       IFS="$lt_save_ifs"
-       if test "X$pkg" = "X$p"; then
-         enable_fast_install=yes
-       fi
-      done
-      IFS="$lt_save_ifs"
-      ;;
-    esac
+fi
+fi
+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP
+if test -n "$ac_ct_OBJDUMP"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5
+$as_echo "$ac_ct_OBJDUMP" >&6; }
 else
-  enable_fast_install=yes
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
 fi
 
+  if test "x$ac_ct_OBJDUMP" = x; then
+    OBJDUMP="false"
+  else
+    case $cross_compiling:$ac_tool_warned in
+yes:)
+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
+ac_tool_warned=yes ;;
+esac
+    OBJDUMP=$ac_ct_OBJDUMP
+  fi
+else
+  OBJDUMP="$ac_cv_prog_OBJDUMP"
+fi
 
+  ;;
+esac
 
+test -z "$AS" && AS=as
 
 
 
 
 
+test -z "$DLLTOOL" && DLLTOOL=dlltool
 
 
 
-# This can be used to rebuild libtool when needed
-LIBTOOL_DEPS="$ltmain"
-
-# Always use our own libtool.
-LIBTOOL='$(SHELL) $(top_builddir)/libtool'
-
+
+
+test -z "$OBJDUMP" && OBJDUMP=objdump
+
+
+
+
+# Check whether --enable-static was given.
+if test "${enable_static+set}" = set; then :
+  enableval=$enable_static; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_static=yes ;;
+    no) enable_static=no ;;
+    *)
+     enable_static=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_static=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_static=no
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+            # Check whether --enable-shared was given.
+if test "${enable_shared+set}" = set; then :
+  enableval=$enable_shared; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_shared=yes ;;
+    no) enable_shared=no ;;
+    *)
+      enable_shared=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_shared=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_shared=yes
+fi
+
+
+
+
+
+
+
+
+
+
+
+# Check whether --with-pic was given.
+if test "${with_pic+set}" = set; then :
+  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
+
+
+test -z "$pic_mode" && pic_mode=default
+
+
+
+
+
+
+
+  # Check whether --enable-fast-install was given.
+if test "${enable_fast_install+set}" = set; then :
+  enableval=$enable_fast_install; p=${PACKAGE-default}
+    case $enableval in
+    yes) enable_fast_install=yes ;;
+    no) enable_fast_install=no ;;
+    *)
+      enable_fast_install=no
+      # Look at the argument we got.  We use all the common list separators.
+      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+      for pkg in $enableval; do
+       IFS="$lt_save_ifs"
+       if test "X$pkg" = "X$p"; then
+         enable_fast_install=yes
+       fi
+      done
+      IFS="$lt_save_ifs"
+      ;;
+    esac
+else
+  enable_fast_install=yes
+fi
+
+
+
+
+
+
+
+
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ltmain"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
 
 
 
@@ -8381,7 +8363,7 @@ lt_prog_compiler_static=
       lt_prog_compiler_static='-non_shared'
       ;;
 
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
+    linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
       case $cc_basename in
       # old Intel for x86_64 which still supported -KPIC.
       ecc*)
@@ -10551,17 +10533,6 @@ freebsd* | dragonfly*)
   esac
   ;;
 
-gnu*)
-  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 # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
@@ -10678,7 +10649,7 @@ linux*oldld* | linux*aout* | linux*coff*)
   ;;
 
 # This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
@@ -10798,2304 +10769,932 @@ openbsd*)
   # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
   case $host_os in
     openbsd3.3 | openbsd3.3.*) need_version=yes ;;
-    *)                         need_version=no  ;;
-  esac
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
-    case $host_os in
-      openbsd2.[89] | openbsd2.[89].*)
-       shlibpath_overrides_runpath=no
-       ;;
-      *)
-       shlibpath_overrides_runpath=yes
-       ;;
-      esac
-  else
-    shlibpath_overrides_runpath=yes
-  fi
-  ;;
-
-os2*)
-  libname_spec='$name'
-  shrext_cmds=".dll"
-  need_lib_prefix=no
-  library_names_spec='$libname${shared_ext} $libname.a'
-  dynamic_linker='OS/2 ld.exe'
-  shlibpath_var=LIBPATH
-  ;;
-
-osf3* | osf4* | osf5*)
-  version_type=osf
-  need_lib_prefix=no
-  need_version=no
-  soname_spec='${libname}${release}${shared_ext}$major'
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
-  shlibpath_var=LD_LIBRARY_PATH
-  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
-  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
-  ;;
-
-rdos*)
-  dynamic_linker=no
-  ;;
-
-solaris*)
-  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=yes
-  hardcode_into_libs=yes
-  # ldd complains unless libraries are executable
-  postinstall_cmds='chmod +x $lib'
-  ;;
-
-sunos4*)
-  version_type=sunos
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
-  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  if test "$with_gnu_ld" = yes; then
-    need_lib_prefix=no
-  fi
-  need_version=yes
-  ;;
-
-sysv4 | sysv4.3*)
-  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
-  case $host_vendor in
-    sni)
-      shlibpath_overrides_runpath=no
-      need_lib_prefix=no
-      runpath_var=LD_RUN_PATH
-      ;;
-    siemens)
-      need_lib_prefix=no
-      ;;
-    motorola)
-      need_lib_prefix=no
-      need_version=no
-      shlibpath_overrides_runpath=no
-      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
-      ;;
-  esac
-  ;;
-
-sysv4*MP*)
-  if test -d /usr/nec ;then
-    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
-  fi
-  ;;
-
-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
-  version_type=freebsd-elf
-  need_lib_prefix=no
-  need_version=no
-  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
-  soname_spec='${libname}${release}${shared_ext}$major'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=yes
-  hardcode_into_libs=yes
-  if test "$with_gnu_ld" = yes; then
-    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
-  else
-    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
-    case $host_os in
-      sco3.2v5*)
-        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
-       ;;
-    esac
-  fi
-  sys_lib_dlsearch_path_spec='/usr/lib'
-  ;;
-
-tpf*)
-  # TPF is a cross-target only.  Preferred cross-host = GNU/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}'
-  shlibpath_var=LD_LIBRARY_PATH
-  shlibpath_overrides_runpath=no
-  hardcode_into_libs=yes
-  ;;
-
-uts4*)
-  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
-  ;;
-
-*)
-  dynamic_linker=no
-  ;;
-esac
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
-$as_echo "$dynamic_linker" >&6; }
-test "$dynamic_linker" = no && can_build_shared=no
-
-variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
-if test "$GCC" = yes; then
-  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
-fi
-
-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
-  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
-fi
-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
-  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
-$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
-hardcode_action=
-if test -n "$hardcode_libdir_flag_spec" ||
-   test -n "$runpath_var" ||
-   test "X$hardcode_automatic" = "Xyes" ; then
-
-  # We can hardcode non-existent directories.
-  if test "$hardcode_direct" != no &&
-     # If the only mechanism to avoid hardcoding is shlibpath_var, we
-     # have to relink, otherwise we might link with an installed library
-     # when we should be linking with a yet-to-be-installed one
-     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
-     test "$hardcode_minus_L" != no; then
-    # Linking always hardcodes the temporary library directory.
-    hardcode_action=relink
-  else
-    # We can link without hardcoding, and we can hardcode nonexisting dirs.
-    hardcode_action=immediate
-  fi
-else
-  # We cannot hardcode anything, or else we can only hardcode existing
-  # directories.
-  hardcode_action=unsupported
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
-$as_echo "$hardcode_action" >&6; }
-
-if test "$hardcode_action" = relink ||
-   test "$inherit_rpath" = yes; then
-  # Fast installation is not supported
-  enable_fast_install=no
-elif test "$shlibpath_overrides_runpath" = yes ||
-     test "$enable_shared" = no; then
-  # Fast installation is not necessary
-  enable_fast_install=needless
-fi
-
-
-
-
-
-
-  if test "x$enable_dlopen" != xyes; then
-  enable_dlopen=unknown
-  enable_dlopen_self=unknown
-  enable_dlopen_self_static=unknown
-else
-  lt_cv_dlopen=no
-  lt_cv_dlopen_libs=
-
-  case $host_os in
-  beos*)
-    lt_cv_dlopen="load_add_on"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-    ;;
-
-  mingw* | pw32* | cegcc*)
-    lt_cv_dlopen="LoadLibrary"
-    lt_cv_dlopen_libs=
-    ;;
-
-  cygwin*)
-    lt_cv_dlopen="dlopen"
-    lt_cv_dlopen_libs=
-    ;;
-
-  darwin*)
-  # if libdl is installed we need to link against it
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $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 dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dlopen=yes
-else
-  ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
-
-    lt_cv_dlopen="dyld"
-    lt_cv_dlopen_libs=
-    lt_cv_dlopen_self=yes
-
-fi
-
-    ;;
-
-  *)
-    ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
-if test "x$ac_cv_func_shl_load" = xyes; then :
-  lt_cv_dlopen="shl_load"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
-$as_echo_n "checking for shl_load in -ldld... " >&6; }
-if ${ac_cv_lib_dld_shl_load+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $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 shl_load ();
-int
-main ()
-{
-return shl_load ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dld_shl_load=yes
-else
-  ac_cv_lib_dld_shl_load=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
-$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
-if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
-  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
-else
-  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
-if test "x$ac_cv_func_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
-$as_echo_n "checking for dlopen in -ldl... " >&6; }
-if ${ac_cv_lib_dl_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldl  $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 dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dl_dlopen=yes
-else
-  ac_cv_lib_dl_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
-$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
-if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
-$as_echo_n "checking for dlopen in -lsvld... " >&6; }
-if ${ac_cv_lib_svld_dlopen+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-lsvld  $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 dlopen ();
-int
-main ()
-{
-return dlopen ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_svld_dlopen=yes
-else
-  ac_cv_lib_svld_dlopen=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
-$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
-if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
-  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
-$as_echo_n "checking for dld_link in -ldld... " >&6; }
-if ${ac_cv_lib_dld_dld_link+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ldld  $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 dld_link ();
-int
-main ()
-{
-return dld_link ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_dld_dld_link=yes
-else
-  ac_cv_lib_dld_dld_link=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
-$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
-if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
-  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-
-fi
-
-    ;;
-  esac
-
-  if test "x$lt_cv_dlopen" != xno; then
-    enable_dlopen=yes
-  else
-    enable_dlopen=no
-  fi
-
-  case $lt_cv_dlopen in
-  dlopen)
-    save_CPPFLAGS="$CPPFLAGS"
-    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
-
-    save_LDFLAGS="$LDFLAGS"
-    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
-
-    save_LIBS="$LIBS"
-    LIBS="$lt_cv_dlopen_libs $LIBS"
-
-    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
-$as_echo_n "checking whether a program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-         if test "$cross_compiling" = yes; then :
-  lt_cv_dlopen_self=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-#line $LINENO "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL          RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL                DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL                0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW         DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW       RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW     DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW     0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-/* When -fvisbility=hidden is used, assume the code has been annotated
-   correspondingly for the symbols needed.  */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
-
-int fnord () { return 42; }
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else
-        {
-         if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-          else puts (dlerror ());
-       }
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}
-_LT_EOF
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&5 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
-      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self=no
-  fi
-fi
-rm -fr conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
-$as_echo "$lt_cv_dlopen_self" >&6; }
-
-    if test "x$lt_cv_dlopen_self" = xyes; then
-      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
-$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
-if ${lt_cv_dlopen_self_static+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-         if test "$cross_compiling" = yes; then :
-  lt_cv_dlopen_self_static=cross
-else
-  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
-  lt_status=$lt_dlunknown
-  cat > conftest.$ac_ext <<_LT_EOF
-#line $LINENO "configure"
-#include "confdefs.h"
-
-#if HAVE_DLFCN_H
-#include <dlfcn.h>
-#endif
-
-#include <stdio.h>
-
-#ifdef RTLD_GLOBAL
-#  define LT_DLGLOBAL          RTLD_GLOBAL
-#else
-#  ifdef DL_GLOBAL
-#    define LT_DLGLOBAL                DL_GLOBAL
-#  else
-#    define LT_DLGLOBAL                0
-#  endif
-#endif
-
-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
-   find out it does not work in some platform. */
-#ifndef LT_DLLAZY_OR_NOW
-#  ifdef RTLD_LAZY
-#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
-#  else
-#    ifdef DL_LAZY
-#      define LT_DLLAZY_OR_NOW         DL_LAZY
-#    else
-#      ifdef RTLD_NOW
-#        define LT_DLLAZY_OR_NOW       RTLD_NOW
-#      else
-#        ifdef DL_NOW
-#          define LT_DLLAZY_OR_NOW     DL_NOW
-#        else
-#          define LT_DLLAZY_OR_NOW     0
-#        endif
-#      endif
-#    endif
-#  endif
-#endif
-
-/* When -fvisbility=hidden is used, assume the code has been annotated
-   correspondingly for the symbols needed.  */
-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
-int fnord () __attribute__((visibility("default")));
-#endif
-
-int fnord () { return 42; }
-int main ()
-{
-  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
-  int status = $lt_dlunknown;
-
-  if (self)
-    {
-      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
-      else
-        {
-         if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
-          else puts (dlerror ());
-       }
-      /* dlclose (self); */
-    }
-  else
-    puts (dlerror ());
-
-  return status;
-}
-_LT_EOF
-  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
-  (eval $ac_link) 2>&5
-  ac_status=$?
-  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
-    (./conftest; exit; ) >&5 2>/dev/null
-    lt_status=$?
-    case x$lt_status in
-      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
-      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
-    esac
-  else :
-    # compilation failed
-    lt_cv_dlopen_self_static=no
-  fi
-fi
-rm -fr conftest*
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
-$as_echo "$lt_cv_dlopen_self_static" >&6; }
-    fi
-
-    CPPFLAGS="$save_CPPFLAGS"
-    LDFLAGS="$save_LDFLAGS"
-    LIBS="$save_LIBS"
-    ;;
-  esac
-
-  case $lt_cv_dlopen_self in
-  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
-  *) enable_dlopen_self=unknown ;;
-  esac
-
-  case $lt_cv_dlopen_self_static in
-  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
-  *) enable_dlopen_self_static=unknown ;;
-  esac
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-striplib=
-old_striplib=
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
-$as_echo_n "checking whether stripping libraries is possible... " >&6; }
-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
-  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
-  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
-# FIXME - insert some real tests, host_os isn't really good enough
-  case $host_os in
-  darwin*)
-    if test -n "$STRIP" ; then
-      striplib="$STRIP -x"
-      old_striplib="$STRIP -S"
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-    else
-      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-    fi
-    ;;
-  *)
-    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-    ;;
-  esac
-fi
-
-
-
-
-
-
-
-
-
-
-
-
-  # Report which library types will actually be built
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
-$as_echo_n "checking if libtool supports shared libraries... " >&6; }
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
-$as_echo "$can_build_shared" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
-$as_echo_n "checking whether to build shared libraries... " >&6; }
-  test "$can_build_shared" = "no" && enable_shared=no
-
-  # On AIX, shared libraries and static libraries use the same namespace, and
-  # are all built from PIC.
-  case $host_os in
-  aix3*)
-    test "$enable_shared" = yes && enable_static=no
-    if test -n "$RANLIB"; then
-      archive_cmds="$archive_cmds~\$RANLIB \$lib"
-      postinstall_cmds='$RANLIB $lib'
-    fi
-    ;;
-
-  aix[4-9]*)
-    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
-      test "$enable_shared" = yes && enable_static=no
-    fi
-    ;;
-  esac
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
-$as_echo "$enable_shared" >&6; }
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
-$as_echo_n "checking whether to build static libraries... " >&6; }
-  # Make sure either enable_shared or enable_static is yes.
-  test "$enable_shared" = yes || enable_static=yes
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
-$as_echo "$enable_static" >&6; }
-
-
-
-
-fi
-ac_ext=c
-ac_cpp='$CPP $CPPFLAGS'
-ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
-ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
-ac_compiler_gnu=$ac_cv_c_compiler_gnu
-
-CC="$lt_save_CC"
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-        ac_config_commands="$ac_config_commands libtool"
-
-
-
-
-# Only expand once:
-
-
-: ${CONFIG_LT=./config.lt}
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_LT" >&5
-$as_echo "$as_me: creating $CONFIG_LT" >&6;}
-as_write_fail=0
-cat >"$CONFIG_LT" <<_ASEOF || as_write_fail=1
-#! $SHELL
-# Generated by $as_me.
-# Run this file to recreate a libtool stub with the current configuration.
-SHELL=\${CONFIG_SHELL-$SHELL}
-export SHELL
-_ASEOF
-cat >>"$CONFIG_LT" <<\_ASEOF || as_write_fail=1
-## -------------------- ##
-## M4sh Initialization. ##
-## -------------------- ##
-
-# Be more Bourne compatible
-DUALCASE=1; export DUALCASE # for MKS sh
-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
-  emulate sh
-  NULLCMD=:
-  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
-  # is contrary to our usage.  Disable this feature.
-  alias -g '${1+"$@"}'='"$@"'
-  setopt NO_GLOB_SUBST
-else
-  case `(set -o) 2>/dev/null` in #(
-  *posix*) :
-    set -o posix ;; #(
-  *) :
-     ;;
-esac
-fi
-
-
-as_nl='
-'
-export as_nl
-# Printing a long string crashes Solaris 7 /usr/bin/printf.
-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
-# Prefer a ksh shell builtin over an external printf program on Solaris,
-# but without wasting forks for bash or zsh.
-if test -z "$BASH_VERSION$ZSH_VERSION" \
-    && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='print -r --'
-  as_echo_n='print -rn --'
-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
-  as_echo='printf %s\n'
-  as_echo_n='printf %s'
-else
-  if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
-    as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
-    as_echo_n='/usr/ucb/echo -n'
-  else
-    as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
-    as_echo_n_body='eval
-      arg=$1;
-      case $arg in #(
-      *"$as_nl"*)
-       expr "X$arg" : "X\\(.*\\)$as_nl";
-       arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
-      esac;
-      expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
-    '
-    export as_echo_n_body
-    as_echo_n='sh -c $as_echo_n_body as_echo'
-  fi
-  export as_echo_body
-  as_echo='sh -c $as_echo_body as_echo'
-fi
-
-# The user is always right.
-if test "${PATH_SEPARATOR+set}" != set; then
-  PATH_SEPARATOR=:
-  (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
-    (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
-      PATH_SEPARATOR=';'
-  }
-fi
-
-
-# IFS
-# We need space, tab and new line, in precisely that order.  Quoting is
-# there to prevent editors from complaining about space-tab.
-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
-# splitting by setting IFS to empty value.)
-IFS=" ""       $as_nl"
-
-# Find who we are.  Look in the path if we contain no directory separator.
-as_myself=
-case $0 in #((
-  *[\\/]* ) as_myself=$0 ;;
-  *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH
-do
-  IFS=$as_save_IFS
-  test -z "$as_dir" && as_dir=.
-    test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
-  done
-IFS=$as_save_IFS
-
-     ;;
-esac
-# We did not find ourselves, most probably we were run as `sh COMMAND'
-# in which case we are not to be found in the path.
-if test "x$as_myself" = x; then
-  as_myself=$0
-fi
-if test ! -f "$as_myself"; then
-  $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
-  exit 1
-fi
-
-# Unset variables that we do not need and which cause bugs (e.g. in
-# pre-3.0 UWIN ksh).  But do not cause bugs in bash 2.01; the "|| exit 1"
-# suppresses any "Segmentation fault" message there.  '((' could
-# trigger a bug in pdksh 5.2.14.
-for as_var in BASH_ENV ENV MAIL MAILPATH
-do eval test x\${$as_var+set} = xset \
-  && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
-done
-PS1='$ '
-PS2='> '
-PS4='+ '
-
-# NLS nuisances.
-LC_ALL=C
-export LC_ALL
-LANGUAGE=C
-export LANGUAGE
-
-# CDPATH.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-
-# as_fn_error STATUS ERROR [LINENO LOG_FD]
-# ----------------------------------------
-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
-# script with STATUS, using 1 if that was 0.
-as_fn_error ()
-{
-  as_status=$1; test $as_status -eq 0 && as_status=1
-  if test "$4"; then
-    as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4
-  fi
-  $as_echo "$as_me: error: $2" >&2
-  as_fn_exit $as_status
-} # as_fn_error
-
-
-# as_fn_set_status STATUS
-# -----------------------
-# Set $? to STATUS, without forking.
-as_fn_set_status ()
-{
-  return $1
-} # as_fn_set_status
-
-# as_fn_exit STATUS
-# -----------------
-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
-as_fn_exit ()
-{
-  set +e
-  as_fn_set_status $1
-  exit $1
-} # as_fn_exit
-
-# as_fn_unset VAR
-# ---------------
-# Portably unset VAR.
-as_fn_unset ()
-{
-  { eval $1=; unset $1;}
-}
-as_unset=as_fn_unset
-# as_fn_append VAR VALUE
-# ----------------------
-# Append the text in VALUE to the end of the definition contained in VAR. Take
-# advantage of any shell optimizations that allow amortized linear growth over
-# repeated appends, instead of the typical quadratic growth present in naive
-# implementations.
-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
-  eval 'as_fn_append ()
-  {
-    eval $1+=\$2
-  }'
-else
-  as_fn_append ()
-  {
-    eval $1=\$$1\$2
-  }
-fi # as_fn_append
-
-# as_fn_arith ARG...
-# ------------------
-# Perform arithmetic evaluation on the ARGs, and store the result in the
-# global $as_val. Take advantage of shells that can avoid forks. The arguments
-# must be portable across $(()) and expr.
-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
-  eval 'as_fn_arith ()
-  {
-    as_val=$(( $* ))
-  }'
-else
-  as_fn_arith ()
-  {
-    as_val=`expr "$@" || test $? -eq 1`
-  }
-fi # as_fn_arith
-
-
-if expr a : '\(a\)' >/dev/null 2>&1 &&
-   test "X`expr 00001 : '.*\(...\)'`" = X001; then
-  as_expr=expr
-else
-  as_expr=false
-fi
-
-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
-  as_basename=basename
-else
-  as_basename=false
-fi
-
-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
-  as_dirname=dirname
-else
-  as_dirname=false
-fi
-
-as_me=`$as_basename -- "$0" ||
-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
-        X"$0" : 'X\(//\)$' \| \
-        X"$0" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X/"$0" |
-    sed '/^.*\/\([^/][^/]*\)\/*$/{
-           s//\1/
-           q
-         }
-         /^X\/\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\/\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-
-# Avoid depending upon Character Ranges.
-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
-as_cr_digits='0123456789'
-as_cr_alnum=$as_cr_Letters$as_cr_digits
-
-ECHO_C= ECHO_N= ECHO_T=
-case `echo -n x` in #(((((
--n*)
-  case `echo 'xy\c'` in
-  *c*) ECHO_T='        ';;     # ECHO_T is single tab character.
-  xy)  ECHO_C='\c';;
-  *)   echo `echo ksh88 bug on AIX 6.1` > /dev/null
-       ECHO_T='        ';;
-  esac;;
-*)
-  ECHO_N='-n';;
-esac
-
-rm -f conf$$ conf$$.exe conf$$.file
-if test -d conf$$.dir; then
-  rm -f conf$$.dir/conf$$.file
-else
-  rm -f conf$$.dir
-  mkdir conf$$.dir 2>/dev/null
-fi
-if (echo >conf$$.file) 2>/dev/null; then
-  if ln -s conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s='ln -s'
-    # ... 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 -pR'.
-    ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
-      as_ln_s='cp -pR'
-  elif ln conf$$.file conf$$ 2>/dev/null; then
-    as_ln_s=ln
-  else
-    as_ln_s='cp -pR'
-  fi
-else
-  as_ln_s='cp -pR'
-fi
-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
-rmdir conf$$.dir 2>/dev/null
-
-
-# as_fn_mkdir_p
-# -------------
-# Create "$as_dir" as a directory, including parents if necessary.
-as_fn_mkdir_p ()
-{
-
-  case $as_dir in #(
-  -*) as_dir=./$as_dir;;
-  esac
-  test -d "$as_dir" || eval $as_mkdir_p || {
-    as_dirs=
-    while :; do
-      case $as_dir in #(
-      *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
-      *) as_qdir=$as_dir;;
-      esac
-      as_dirs="'$as_qdir' $as_dirs"
-      as_dir=`$as_dirname -- "$as_dir" ||
-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
-        X"$as_dir" : 'X\(//\)[^/]' \| \
-        X"$as_dir" : 'X\(//\)$' \| \
-        X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
-$as_echo X"$as_dir" |
-    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)[^/].*/{
-           s//\1/
-           q
-         }
-         /^X\(\/\/\)$/{
-           s//\1/
-           q
-         }
-         /^X\(\/\).*/{
-           s//\1/
-           q
-         }
-         s/.*/./; q'`
-      test -d "$as_dir" && break
-    done
-    test -z "$as_dirs" || eval "mkdir $as_dirs"
-  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
-
-
-} # as_fn_mkdir_p
-if mkdir -p . 2>/dev/null; then
-  as_mkdir_p='mkdir -p "$as_dir"'
-else
-  test -d ./-p && rmdir ./-p
-  as_mkdir_p=false
-fi
-
-
-# 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'"
-
-# Sed expression to map a string onto a valid variable name.
-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
-
-
-exec 6>&1
-## --------------------------------- ##
-## Main body of "$CONFIG_LT" script. ##
-## --------------------------------- ##
-_ASEOF
-test $as_write_fail = 0 && chmod +x "$CONFIG_LT"
-
-cat >>"$CONFIG_LT" <<\_LTEOF
-lt_cl_silent=false
-exec 5>>config.log
-{
-  echo
-  sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
-## Running $as_me. ##
-_ASBOX
-} >&5
-
-lt_cl_help="\
-\`$as_me' creates a local libtool stub from the current configuration,
-for use in further configure time tests before the real libtool is
-generated.
-
-Usage: $0 [OPTIONS]
-
-  -h, --help      print this help, then exit
-  -V, --version   print version number, then exit
-  -q, --quiet     do not print progress messages
-  -d, --debug     don't remove temporary files
-
-Report bugs to <bug-libtool@gnu.org>."
-
-lt_cl_version="\
-pygobject config.lt 3.4.0
-configured by $0, generated by GNU Autoconf 2.69.
-
-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."
-
-while test $# != 0
-do
-  case $1 in
-    --version | --v* | -V )
-      echo "$lt_cl_version"; exit 0 ;;
-    --help | --h* | -h )
-      echo "$lt_cl_help"; exit 0 ;;
-    --debug | --d* | -d )
-      debug=: ;;
-    --quiet | --q* | --silent | --s* | -q )
-      lt_cl_silent=: ;;
-
-    -*) as_fn_error $? "unrecognized option: $1
-Try \`$0 --help' for more information." "$LINENO" 5 ;;
-
-    *) as_fn_error $? "unrecognized argument: $1
-Try \`$0 --help' for more information." "$LINENO" 5 ;;
-  esac
-  shift
-done
-
-if $lt_cl_silent; then
-  exec 6>/dev/null
-fi
-_LTEOF
-
-cat >>"$CONFIG_LT" <<_LTEOF
-
-
-# The HP-UX ksh and POSIX shell print the target directory to stdout
-# if CDPATH is set.
-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
-
-sed_quote_subst='$sed_quote_subst'
-double_quote_subst='$double_quote_subst'
-delay_variable_subst='$delay_variable_subst'
-enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
-AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`'
-DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
-OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
-macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
-macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
-enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
-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"`'
-build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`'
-build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`'
-build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`'
-SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`'
-Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`'
-GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`'
-EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`'
-FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`'
-LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`'
-NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`'
-LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`'
-max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`'
-ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`'
-exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`'
-lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`'
-lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`'
-lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`'
-lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`'
-lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`'
-reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`'
-reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`'
-deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`'
-file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`'
-file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`'
-want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`'
-sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`'
-AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`'
-AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`'
-archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`'
-STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`'
-RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`'
-old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
-old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`'
-lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`'
-CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`'
-CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`'
-compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`'
-GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`'
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`'
-nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`'
-lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`'
-objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`'
-MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`'
-lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`'
-lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`'
-need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`'
-MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`'
-DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`'
-NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`'
-LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`'
-OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`'
-OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`'
-libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`'
-shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`'
-extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
-archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`'
-enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`'
-export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`'
-whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`'
-compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`'
-old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`'
-old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`'
-archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`'
-archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`'
-module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`'
-module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`'
-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_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"`'
-hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`'
-hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`'
-hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`'
-inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`'
-link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`'
-always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`'
-export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`'
-exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`'
-include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`'
-prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`'
-postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`'
-file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`'
-variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`'
-need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`'
-need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`'
-version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`'
-runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`'
-shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`'
-shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`'
-libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`'
-library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`'
-soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`'
-install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`'
-postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`'
-postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`'
-finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`'
-finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`'
-hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`'
-sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`'
-sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`'
-hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`'
-enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`'
-enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`'
-enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`'
-old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`'
-striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`'
-
-LTCC='$LTCC'
-LTCFLAGS='$LTCFLAGS'
-compiler='$compiler_DEFAULT'
-
-# A function that is used when there is no print builtin or printf.
-func_fallback_echo ()
-{
-  eval 'cat <<_LTECHO_EOF
-\$1
-_LTECHO_EOF'
-}
-
-# Quote evaled strings.
-for var in AS \
-DLLTOOL \
-OBJDUMP \
-SHELL \
-ECHO \
-PATH_SEPARATOR \
-SED \
-GREP \
-EGREP \
-FGREP \
-LD \
-NM \
-LN_S \
-lt_SP2NL \
-lt_NL2SP \
-reload_flag \
-deplibs_check_method \
-file_magic_cmd \
-file_magic_glob \
-want_nocaseglob \
-sharedlib_from_linklib_cmd \
-AR \
-AR_FLAGS \
-archiver_list_spec \
-STRIP \
-RANLIB \
-CC \
-CFLAGS \
-compiler \
-lt_cv_sys_global_symbol_pipe \
-lt_cv_sys_global_symbol_to_cdecl \
-lt_cv_sys_global_symbol_to_c_name_address \
-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \
-nm_file_list_spec \
-lt_prog_compiler_no_builtin_flag \
-lt_prog_compiler_pic \
-lt_prog_compiler_wl \
-lt_prog_compiler_static \
-lt_cv_prog_compiler_c_o \
-need_locks \
-MANIFEST_TOOL \
-DSYMUTIL \
-NMEDIT \
-LIPO \
-OTOOL \
-OTOOL64 \
-shrext_cmds \
-export_dynamic_flag_spec \
-whole_archive_flag_spec \
-compiler_needs_object \
-with_gnu_ld \
-allow_undefined_flag \
-no_undefined_flag \
-hardcode_libdir_flag_spec \
-hardcode_libdir_separator \
-exclude_expsyms \
-include_expsyms \
-file_list_spec \
-variables_saved_for_relink \
-libname_spec \
-library_names_spec \
-soname_spec \
-install_override_mode \
-finish_eval \
-old_striplib \
-striplib; do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\""
-      ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
-      ;;
-    esac
-done
+    *)                         need_version=no  ;;
+  esac
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+    case $host_os in
+      openbsd2.[89] | openbsd2.[89].*)
+       shlibpath_overrides_runpath=no
+       ;;
+      *)
+       shlibpath_overrides_runpath=yes
+       ;;
+      esac
+  else
+    shlibpath_overrides_runpath=yes
+  fi
+  ;;
 
-# Double-quote double-evaled strings.
-for var in reload_cmds \
-old_postinstall_cmds \
-old_postuninstall_cmds \
-old_archive_cmds \
-extract_expsyms_cmds \
-old_archive_from_new_cmds \
-old_archive_from_expsyms_cmds \
-archive_cmds \
-archive_expsym_cmds \
-module_cmds \
-module_expsym_cmds \
-export_symbols_cmds \
-prelink_cmds \
-postlink_cmds \
-postinstall_cmds \
-postuninstall_cmds \
-finish_cmds \
-sys_lib_search_path_spec \
-sys_lib_dlsearch_path_spec; do
-    case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in
-    *[\\\\\\\`\\"\\\$]*)
-      eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\""
+os2*)
+  libname_spec='$name'
+  shrext_cmds=".dll"
+  need_lib_prefix=no
+  library_names_spec='$libname${shared_ext} $libname.a'
+  dynamic_linker='OS/2 ld.exe'
+  shlibpath_var=LIBPATH
+  ;;
+
+osf3* | osf4* | osf5*)
+  version_type=osf
+  need_lib_prefix=no
+  need_version=no
+  soname_spec='${libname}${release}${shared_ext}$major'
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+  shlibpath_var=LD_LIBRARY_PATH
+  sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib"
+  sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
+  ;;
+
+rdos*)
+  dynamic_linker=no
+  ;;
+
+solaris*)
+  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=yes
+  hardcode_into_libs=yes
+  # ldd complains unless libraries are executable
+  postinstall_cmds='chmod +x $lib'
+  ;;
+
+sunos4*)
+  version_type=sunos
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix'
+  finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  if test "$with_gnu_ld" = yes; then
+    need_lib_prefix=no
+  fi
+  need_version=yes
+  ;;
+
+sysv4 | sysv4.3*)
+  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
+  case $host_vendor in
+    sni)
+      shlibpath_overrides_runpath=no
+      need_lib_prefix=no
+      runpath_var=LD_RUN_PATH
       ;;
-    *)
-      eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\""
+    siemens)
+      need_lib_prefix=no
       ;;
+    motorola)
+      need_lib_prefix=no
+      need_version=no
+      shlibpath_overrides_runpath=no
+      sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib'
+      ;;
+  esac
+  ;;
+
+sysv4*MP*)
+  if test -d /usr/nec ;then
+    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
+  fi
+  ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+  version_type=freebsd-elf
+  need_lib_prefix=no
+  need_version=no
+  library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}'
+  soname_spec='${libname}${release}${shared_ext}$major'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=yes
+  hardcode_into_libs=yes
+  if test "$with_gnu_ld" = yes; then
+    sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib'
+  else
+    sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+    case $host_os in
+      sco3.2v5*)
+        sys_lib_search_path_spec="$sys_lib_search_path_spec /lib"
+       ;;
     esac
-done
+  fi
+  sys_lib_dlsearch_path_spec='/usr/lib'
+  ;;
 
-ac_aux_dir='$ac_aux_dir'
-xsi_shell='$xsi_shell'
-lt_shell_append='$lt_shell_append'
+tpf*)
+  # TPF is a cross-target only.  Preferred cross-host = GNU/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}'
+  shlibpath_var=LD_LIBRARY_PATH
+  shlibpath_overrides_runpath=no
+  hardcode_into_libs=yes
+  ;;
 
-# See if we are running on zsh, and set the options which allow our
-# commands through without removal of \ escapes INIT.
-if test -n "\${ZSH_VERSION+set}" ; then
-   setopt NO_GLOB_SUBST
+uts4*)
+  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
+  ;;
+
+*)
+  dynamic_linker=no
+  ;;
+esac
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5
+$as_echo "$dynamic_linker" >&6; }
+test "$dynamic_linker" = no && can_build_shared=no
+
+variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
+if test "$GCC" = yes; then
+  variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
 fi
 
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+  sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+fi
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+  sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
-    PACKAGE='$PACKAGE'
-    VERSION='$VERSION'
-    TIMESTAMP='$TIMESTAMP'
-    RM='$RM'
-    ofile='$ofile'
 
 
 
-_LTEOF
 
-cat >>"$CONFIG_LT" <<\_LTEOF
-{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $ofile" >&5
-$as_echo "$as_me: creating $ofile" >&6;}
 
 
-    # See if we are running on zsh, and set the options which allow our
-    # commands through without removal of \ escapes.
-    if test -n "${ZSH_VERSION+set}" ; then
-      setopt NO_GLOB_SUBST
-    fi
 
-    cfgfile="${ofile}T"
-    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
-    $RM "$cfgfile"
 
-    cat <<_LT_EOF >> "$cfgfile"
-#! $SHELL
 
-# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION
-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
-# 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, 2011 Free Software
-#                 Foundation, Inc.
-#   Written by Gordon Matzigkeit, 1996
-#
-#   This file is part of GNU Libtool.
-#
-# GNU Libtool 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.
-#
-# As a special exception to the GNU General Public License,
-# if you distribute this file as part of a program or library that
-# is built using GNU Libtool, you may include this file under the
-# same distribution terms that you use for the rest of that program.
-#
-# GNU Libtool 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 GNU Libtool; see the file COPYING.  If not, a copy
-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or
-# obtained by writing to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 
 
-# The names of the tagged configurations supported by this script.
-available_tags=""
 
-# ### BEGIN LIBTOOL CONFIG
 
-# Whether or not to build static libraries.
-build_old_libs=$enable_static
 
-# Assembler program.
-AS=$lt_AS
 
-# DLL creation program.
-DLLTOOL=$lt_DLLTOOL
 
-# Object dumper program.
-OBJDUMP=$lt_OBJDUMP
 
-# Which release of libtool.m4 was used?
-macro_version=$macro_version
-macro_revision=$macro_revision
 
-# Whether or not to build shared libraries.
-build_libtool_libs=$enable_shared
 
-# What type of objects to build.
-pic_mode=$pic_mode
 
-# Whether or not to optimize for fast installation.
-fast_install=$enable_fast_install
 
-# Shell to use when invoking shell scripts.
-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
-host_os=$host_os
 
-# The build system.
-build_alias=$build_alias
-build=$build
-build_os=$build_os
 
-# A sed program that does not truncate output.
-SED=$lt_SED
 
-# Sed that helps us avoid accidentally triggering echo(1) options like -n.
-Xsed="\$SED -e 1s/^X//"
 
-# A grep program that handles long lines.
-GREP=$lt_GREP
 
-# An ERE matcher.
-EGREP=$lt_EGREP
 
-# A literal string matcher.
-FGREP=$lt_FGREP
 
-# A BSD- or MS-compatible name lister.
-NM=$lt_NM
 
-# Whether we need soft or hard links.
-LN_S=$lt_LN_S
 
-# What is the maximum length of a command?
-max_cmd_len=$max_cmd_len
 
-# Object file suffix (normally "o").
-objext=$ac_objext
 
-# Executable file suffix (normally "").
-exeext=$exeext
 
-# whether the shell understands "unset".
-lt_unset=$lt_unset
 
-# turn spaces into newlines.
-SP2NL=$lt_lt_SP2NL
 
-# turn newlines into spaces.
-NL2SP=$lt_lt_NL2SP
 
-# convert \$build file names to \$host format.
-to_host_file_cmd=$lt_cv_to_host_file_cmd
 
-# convert \$build files to toolchain format.
-to_tool_file_cmd=$lt_cv_to_tool_file_cmd
 
-# Method to check whether dependent libraries are shared objects.
-deplibs_check_method=$lt_deplibs_check_method
 
-# Command to use when deplibs_check_method = "file_magic".
-file_magic_cmd=$lt_file_magic_cmd
 
-# How to find potential files when deplibs_check_method = "file_magic".
-file_magic_glob=$lt_file_magic_glob
 
-# Find potential files using nocaseglob when deplibs_check_method = "file_magic".
-want_nocaseglob=$lt_want_nocaseglob
 
-# Command to associate shared and link libraries.
-sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd
 
-# The archiver.
-AR=$lt_AR
 
-# Flags to create an archive.
-AR_FLAGS=$lt_AR_FLAGS
 
-# How to feed a file listing to the archiver.
-archiver_list_spec=$lt_archiver_list_spec
 
-# A symbol stripping program.
-STRIP=$lt_STRIP
 
-# Commands used to install an old-style archive.
-RANLIB=$lt_RANLIB
-old_postinstall_cmds=$lt_old_postinstall_cmds
-old_postuninstall_cmds=$lt_old_postuninstall_cmds
 
-# Whether to use a lock for old archive extraction.
-lock_old_archive_extraction=$lock_old_archive_extraction
 
-# A C compiler.
-LTCC=$lt_CC
 
-# LTCC compiler flags.
-LTCFLAGS=$lt_CFLAGS
 
-# Take the output of nm and produce a listing of raw symbols and C names.
-global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe
 
-# Transform the output of nm in a proper C declaration.
-global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl
 
-# Transform the output of nm in a C name address pair.
-global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address
 
-# Transform the output of nm in a C name address pair when lib prefix is needed.
-global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix
 
-# Specify filename containing input files for \$NM.
-nm_file_list_spec=$lt_nm_file_list_spec
 
-# The root where to search for dependent libraries,and in which our libraries should be installed.
-lt_sysroot=$lt_sysroot
 
-# The name of the directory that contains temporary libtool files.
-objdir=$objdir
 
-# Used to examine libraries when file_magic_cmd begins with "file".
-MAGIC_CMD=$MAGIC_CMD
 
-# Must we lock files when doing compilation?
-need_locks=$lt_need_locks
 
-# Manifest tool.
-MANIFEST_TOOL=$lt_MANIFEST_TOOL
 
-# Tool to manipulate archived DWARF debug symbol files on Mac OS X.
-DSYMUTIL=$lt_DSYMUTIL
 
-# Tool to change global to local symbols on Mac OS X.
-NMEDIT=$lt_NMEDIT
 
-# Tool to manipulate fat objects and archives on Mac OS X.
-LIPO=$lt_LIPO
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5
+$as_echo_n "checking how to hardcode library paths into programs... " >&6; }
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" ||
+   test -n "$runpath_var" ||
+   test "X$hardcode_automatic" = "Xyes" ; then
+
+  # We can hardcode non-existent directories.
+  if test "$hardcode_direct" != no &&
+     # If the only mechanism to avoid hardcoding is shlibpath_var, we
+     # have to relink, otherwise we might link with an installed library
+     # when we should be linking with a yet-to-be-installed one
+     ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no &&
+     test "$hardcode_minus_L" != no; then
+    # Linking always hardcodes the temporary library directory.
+    hardcode_action=relink
+  else
+    # We can link without hardcoding, and we can hardcode nonexisting dirs.
+    hardcode_action=immediate
+  fi
+else
+  # We cannot hardcode anything, or else we can only hardcode existing
+  # directories.
+  hardcode_action=unsupported
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5
+$as_echo "$hardcode_action" >&6; }
+
+if test "$hardcode_action" = relink ||
+   test "$inherit_rpath" = yes; then
+  # Fast installation is not supported
+  enable_fast_install=no
+elif test "$shlibpath_overrides_runpath" = yes ||
+     test "$enable_shared" = no; then
+  # Fast installation is not necessary
+  enable_fast_install=needless
+fi
+
+
+
+
+
+
+  if test "x$enable_dlopen" != xyes; then
+  enable_dlopen=unknown
+  enable_dlopen_self=unknown
+  enable_dlopen_self_static=unknown
+else
+  lt_cv_dlopen=no
+  lt_cv_dlopen_libs=
+
+  case $host_os in
+  beos*)
+    lt_cv_dlopen="load_add_on"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+    ;;
+
+  mingw* | pw32* | cegcc*)
+    lt_cv_dlopen="LoadLibrary"
+    lt_cv_dlopen_libs=
+    ;;
+
+  cygwin*)
+    lt_cv_dlopen="dlopen"
+    lt_cv_dlopen_libs=
+    ;;
+
+  darwin*)
+  # if libdl is installed we need to link against it
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $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 dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dl_dlopen=yes
+else
+  ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+
+    lt_cv_dlopen="dyld"
+    lt_cv_dlopen_libs=
+    lt_cv_dlopen_self=yes
+
+fi
+
+    ;;
+
+  *)
+    ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load"
+if test "x$ac_cv_func_shl_load" = xyes; then :
+  lt_cv_dlopen="shl_load"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5
+$as_echo_n "checking for shl_load in -ldld... " >&6; }
+if ${ac_cv_lib_dld_shl_load+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $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 shl_load ();
+int
+main ()
+{
+return shl_load ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dld_shl_load=yes
+else
+  ac_cv_lib_dld_shl_load=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5
+$as_echo "$ac_cv_lib_dld_shl_load" >&6; }
+if test "x$ac_cv_lib_dld_shl_load" = xyes; then :
+  lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
+else
+  ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen"
+if test "x$ac_cv_func_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5
+$as_echo_n "checking for dlopen in -ldl... " >&6; }
+if ${ac_cv_lib_dl_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl  $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 dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dl_dlopen=yes
+else
+  ac_cv_lib_dl_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5
+$as_echo "$ac_cv_lib_dl_dlopen" >&6; }
+if test "x$ac_cv_lib_dl_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5
+$as_echo_n "checking for dlopen in -lsvld... " >&6; }
+if ${ac_cv_lib_svld_dlopen+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld  $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 dlopen ();
+int
+main ()
+{
+return dlopen ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_svld_dlopen=yes
+else
+  ac_cv_lib_svld_dlopen=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5
+$as_echo "$ac_cv_lib_svld_dlopen" >&6; }
+if test "x$ac_cv_lib_svld_dlopen" = xyes; then :
+  lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5
+$as_echo_n "checking for dld_link in -ldld... " >&6; }
+if ${ac_cv_lib_dld_dld_link+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld  $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 dld_link ();
+int
+main ()
+{
+return dld_link ();
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  ac_cv_lib_dld_dld_link=yes
+else
+  ac_cv_lib_dld_dld_link=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5
+$as_echo "$ac_cv_lib_dld_dld_link" >&6; }
+if test "x$ac_cv_lib_dld_dld_link" = xyes; then :
+  lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
+fi
+
 
-# ldd/readelf like tool for Mach-O binaries on Mac OS X.
-OTOOL=$lt_OTOOL
+fi
 
-# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4.
-OTOOL64=$lt_OTOOL64
 
-# Old archive suffix (normally "a").
-libext=$libext
+fi
 
-# Shared library suffix (normally ".so").
-shrext_cmds=$lt_shrext_cmds
 
-# The commands to extract the exported symbol list from a shared archive.
-extract_expsyms_cmds=$lt_extract_expsyms_cmds
+fi
 
-# Variables whose values should be saved in libtool wrapper scripts and
-# restored at link time.
-variables_saved_for_relink=$lt_variables_saved_for_relink
 
-# Do we need the "lib" prefix for modules?
-need_lib_prefix=$need_lib_prefix
+fi
 
-# Do we need a version for libraries?
-need_version=$need_version
 
-# Library versioning type.
-version_type=$version_type
+fi
 
-# Shared library runtime path variable.
-runpath_var=$runpath_var
+    ;;
+  esac
 
-# Shared library path variable.
-shlibpath_var=$shlibpath_var
+  if test "x$lt_cv_dlopen" != xno; then
+    enable_dlopen=yes
+  else
+    enable_dlopen=no
+  fi
 
-# Is shlibpath searched before the hard-coded library search path?
-shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+  case $lt_cv_dlopen in
+  dlopen)
+    save_CPPFLAGS="$CPPFLAGS"
+    test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H"
 
-# Format of library name prefix.
-libname_spec=$lt_libname_spec
+    save_LDFLAGS="$LDFLAGS"
+    wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\"
 
-# List of archive names.  First name is the real one, the rest are links.
-# The last name is the one that the linker finds with -lNAME
-library_names_spec=$lt_library_names_spec
+    save_LIBS="$LIBS"
+    LIBS="$lt_cv_dlopen_libs $LIBS"
 
-# The coded name of the library, if different from the real name.
-soname_spec=$lt_soname_spec
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5
+$as_echo_n "checking whether a program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+         if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+#line $LINENO "configure"
+#include "confdefs.h"
 
-# Permission mode override for installation of shared libraries.
-install_override_mode=$lt_install_override_mode
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
 
-# Command to use after installation of a shared archive.
-postinstall_cmds=$lt_postinstall_cmds
+#include <stdio.h>
 
-# Command to use after uninstallation of a shared archive.
-postuninstall_cmds=$lt_postuninstall_cmds
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL          RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL                DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL                0
+#  endif
+#endif
 
-# Commands used to finish a libtool library installation in a directory.
-finish_cmds=$lt_finish_cmds
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW         DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW       RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW     DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW     0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
 
-# As "finish_cmds", except a single script fragment to be evaled but
-# not shown.
-finish_eval=$lt_finish_eval
+/* When -fvisbility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
 
-# Whether we should hardcode library paths into libraries.
-hardcode_into_libs=$hardcode_into_libs
+int fnord () { return 42; }
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
 
-# Compile-time system search path for libraries.
-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else
+        {
+         if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+       }
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
 
-# Run-time system search path for libraries.
-sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
+  return status;
+}
+_LT_EOF
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&5 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self=no
+  fi
+fi
+rm -fr conftest*
 
-# Whether dlopen is supported.
-dlopen_support=$enable_dlopen
 
-# Whether dlopen of programs is supported.
-dlopen_self=$enable_dlopen_self
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5
+$as_echo "$lt_cv_dlopen_self" >&6; }
 
-# Whether dlopen of statically linked programs is supported.
-dlopen_self_static=$enable_dlopen_self_static
+    if test "x$lt_cv_dlopen_self" = xyes; then
+      wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5
+$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; }
+if ${lt_cv_dlopen_self_static+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+         if test "$cross_compiling" = yes; then :
+  lt_cv_dlopen_self_static=cross
+else
+  lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
+  lt_status=$lt_dlunknown
+  cat > conftest.$ac_ext <<_LT_EOF
+#line $LINENO "configure"
+#include "confdefs.h"
 
-# Commands to strip libraries.
-old_striplib=$lt_old_striplib
-striplib=$lt_striplib
+#if HAVE_DLFCN_H
+#include <dlfcn.h>
+#endif
 
+#include <stdio.h>
 
-# The linker used to build libraries.
-LD=$lt_LD
+#ifdef RTLD_GLOBAL
+#  define LT_DLGLOBAL          RTLD_GLOBAL
+#else
+#  ifdef DL_GLOBAL
+#    define LT_DLGLOBAL                DL_GLOBAL
+#  else
+#    define LT_DLGLOBAL                0
+#  endif
+#endif
 
-# How to create reloadable object files.
-reload_flag=$lt_reload_flag
-reload_cmds=$lt_reload_cmds
+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we
+   find out it does not work in some platform. */
+#ifndef LT_DLLAZY_OR_NOW
+#  ifdef RTLD_LAZY
+#    define LT_DLLAZY_OR_NOW           RTLD_LAZY
+#  else
+#    ifdef DL_LAZY
+#      define LT_DLLAZY_OR_NOW         DL_LAZY
+#    else
+#      ifdef RTLD_NOW
+#        define LT_DLLAZY_OR_NOW       RTLD_NOW
+#      else
+#        ifdef DL_NOW
+#          define LT_DLLAZY_OR_NOW     DL_NOW
+#        else
+#          define LT_DLLAZY_OR_NOW     0
+#        endif
+#      endif
+#    endif
+#  endif
+#endif
 
-# Commands used to build an old-style archive.
-old_archive_cmds=$lt_old_archive_cmds
+/* When -fvisbility=hidden is used, assume the code has been annotated
+   correspondingly for the symbols needed.  */
+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3))
+int fnord () __attribute__((visibility("default")));
+#endif
 
-# A language specific compiler.
-CC=$lt_compiler
+int fnord () { return 42; }
+int main ()
+{
+  void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW);
+  int status = $lt_dlunknown;
 
-# Is the compiler the GNU compiler?
-with_gcc=$GCC
+  if (self)
+    {
+      if (dlsym (self,"fnord"))       status = $lt_dlno_uscore;
+      else
+        {
+         if (dlsym( self,"_fnord"))  status = $lt_dlneed_uscore;
+          else puts (dlerror ());
+       }
+      /* dlclose (self); */
+    }
+  else
+    puts (dlerror ());
 
-# Compiler flag to turn off builtin functions.
-no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+  return status;
+}
+_LT_EOF
+  if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5
+  (eval $ac_link) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then
+    (./conftest; exit; ) >&5 2>/dev/null
+    lt_status=$?
+    case x$lt_status in
+      x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;;
+      x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;;
+    esac
+  else :
+    # compilation failed
+    lt_cv_dlopen_self_static=no
+  fi
+fi
+rm -fr conftest*
 
-# Additional compiler flags for building library objects.
-pic_flag=$lt_lt_prog_compiler_pic
 
-# How to pass a linker flag through the compiler.
-wl=$lt_lt_prog_compiler_wl
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5
+$as_echo "$lt_cv_dlopen_self_static" >&6; }
+    fi
 
-# Compiler flag to prevent dynamic linking.
-link_static_flag=$lt_lt_prog_compiler_static
+    CPPFLAGS="$save_CPPFLAGS"
+    LDFLAGS="$save_LDFLAGS"
+    LIBS="$save_LIBS"
+    ;;
+  esac
 
-# Does compiler simultaneously support -c and -o options?
-compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+  case $lt_cv_dlopen_self in
+  yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;;
+  *) enable_dlopen_self=unknown ;;
+  esac
 
-# Whether or not to add -lc for building shared libraries.
-build_libtool_need_lc=$archive_cmds_need_lc
+  case $lt_cv_dlopen_self_static in
+  yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;;
+  *) enable_dlopen_self_static=unknown ;;
+  esac
+fi
 
-# Whether or not to disallow shared libs when runtime libs are static.
-allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes
 
-# Compiler flag to allow reflexive dlopens.
-export_dynamic_flag_spec=$lt_export_dynamic_flag_spec
 
-# Compiler flag to generate shared objects directly from archives.
-whole_archive_flag_spec=$lt_whole_archive_flag_spec
 
-# Whether the compiler copes with passing no objects directly.
-compiler_needs_object=$lt_compiler_needs_object
 
-# Create an old-style archive from a shared archive.
-old_archive_from_new_cmds=$lt_old_archive_from_new_cmds
 
-# Create a temporary old-style archive to link instead of a shared archive.
-old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds
 
-# Commands used to build a shared archive.
-archive_cmds=$lt_archive_cmds
-archive_expsym_cmds=$lt_archive_expsym_cmds
 
-# Commands used to build a loadable module if different from building
-# a shared archive.
-module_cmds=$lt_module_cmds
-module_expsym_cmds=$lt_module_expsym_cmds
 
-# Whether we are building with GNU ld or not.
-with_gnu_ld=$lt_with_gnu_ld
 
-# Flag that allows shared libraries with undefined symbols to be built.
-allow_undefined_flag=$lt_allow_undefined_flag
 
-# Flag that enforces no undefined symbols.
-no_undefined_flag=$lt_no_undefined_flag
 
-# Flag to hardcode \$libdir into a binary during linking.
-# This must work even if \$libdir does not exist
-hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
 
-# Whether we need a single "-rpath" flag with a separated argument.
-hardcode_libdir_separator=$lt_hardcode_libdir_separator
 
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary.
-hardcode_direct=$hardcode_direct
 
-# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes
-# DIR into the resulting binary and the resulting library dependency is
-# "absolute",i.e impossible to change by setting \${shlibpath_var} if the
-# library is relocated.
-hardcode_direct_absolute=$hardcode_direct_absolute
 
-# Set to "yes" if using the -LDIR flag during linking hardcodes DIR
-# into the resulting binary.
-hardcode_minus_L=$hardcode_minus_L
 
-# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR
-# into the resulting binary.
-hardcode_shlibpath_var=$hardcode_shlibpath_var
+striplib=
+old_striplib=
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5
+$as_echo_n "checking whether stripping libraries is possible... " >&6; }
+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then
+  test -z "$old_striplib" && old_striplib="$STRIP --strip-debug"
+  test -z "$striplib" && striplib="$STRIP --strip-unneeded"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+else
+# FIXME - insert some real tests, host_os isn't really good enough
+  case $host_os in
+  darwin*)
+    if test -n "$STRIP" ; then
+      striplib="$STRIP -x"
+      old_striplib="$STRIP -S"
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+    else
+      { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    fi
+    ;;
+  *)
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+    ;;
+  esac
+fi
 
-# Set to "yes" if building a shared library automatically hardcodes DIR
-# into the library and all subsequent libraries and executables linked
-# against it.
-hardcode_automatic=$hardcode_automatic
 
-# Set to yes if linker adds runtime paths of dependent libraries
-# to runtime path list.
-inherit_rpath=$inherit_rpath
 
-# Whether libtool must link a program against all its dependency libraries.
-link_all_deplibs=$link_all_deplibs
 
-# Set to "yes" if exported symbols are required.
-always_export_symbols=$always_export_symbols
 
-# The commands to list exported symbols.
-export_symbols_cmds=$lt_export_symbols_cmds
 
-# Symbols that should not be listed in the preloaded symbols.
-exclude_expsyms=$lt_exclude_expsyms
 
-# Symbols that must always be exported.
-include_expsyms=$lt_include_expsyms
 
-# Commands necessary for linking programs (against libraries) with templates.
-prelink_cmds=$lt_prelink_cmds
 
-# Commands necessary for finishing linking programs.
-postlink_cmds=$lt_postlink_cmds
 
-# Specify filename containing input files.
-file_list_spec=$lt_file_list_spec
 
-# How to hardcode a shared library path into an executable.
-hardcode_action=$hardcode_action
 
-# ### END LIBTOOL CONFIG
+  # Report which library types will actually be built
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5
+$as_echo_n "checking if libtool supports shared libraries... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5
+$as_echo "$can_build_shared" >&6; }
 
-_LT_EOF
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5
+$as_echo_n "checking whether to build shared libraries... " >&6; }
+  test "$can_build_shared" = "no" && enable_shared=no
 
+  # On AIX, shared libraries and static libraries use the same namespace, and
+  # are all built from PIC.
   case $host_os in
   aix3*)
-    cat <<\_LT_EOF >> "$cfgfile"
-# AIX sometimes has problems with the GCC collect2 program.  For some
-# reason, if we set the COLLECT_NAMES environment variable, the problems
-# vanish in a puff of smoke.
-if test "X${COLLECT_NAMES+set}" != Xset; then
-  COLLECT_NAMES=
-  export COLLECT_NAMES
-fi
-_LT_EOF
+    test "$enable_shared" = yes && enable_static=no
+    if test -n "$RANLIB"; then
+      archive_cmds="$archive_cmds~\$RANLIB \$lib"
+      postinstall_cmds='$RANLIB $lib'
+    fi
     ;;
-  esac
-
 
-ltmain="$ac_aux_dir/ltmain.sh"
-
-
-  # We use sed instead of cat because bash on DJGPP gets confused if
-  # if finds mixed CR/LF and LF-only lines.  Since sed operates in
-  # text mode, it properly converts lines to CR/LF.  This bash problem
-  # is reportedly fixed, but why not run on old versions too?
-  sed '$q' "$ltmain" >> "$cfgfile" \
-     || (rm -f "$cfgfile"; exit 1)
-
-  if test x"$xsi_shell" = xyes; then
-  sed -e '/^func_dirname ()$/,/^} # func_dirname /c\
-func_dirname ()\
-{\
-\    case ${1} in\
-\      */*) func_dirname_result="${1%/*}${2}" ;;\
-\      *  ) func_dirname_result="${3}" ;;\
-\    esac\
-} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
-
-
-  sed -e '/^func_basename ()$/,/^} # func_basename /c\
-func_basename ()\
-{\
-\    func_basename_result="${1##*/}"\
-} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
+  aix[4-9]*)
+    if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+      test "$enable_shared" = yes && enable_static=no
+    fi
+    ;;
+  esac
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5
+$as_echo "$enable_shared" >&6; }
 
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5
+$as_echo_n "checking whether to build static libraries... " >&6; }
+  # Make sure either enable_shared or enable_static is yes.
+  test "$enable_shared" = yes || enable_static=yes
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5
+$as_echo "$enable_static" >&6; }
 
-  sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\
-func_dirname_and_basename ()\
-{\
-\    case ${1} in\
-\      */*) func_dirname_result="${1%/*}${2}" ;;\
-\      *  ) func_dirname_result="${3}" ;;\
-\    esac\
-\    func_basename_result="${1##*/}"\
-} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
 
 
-  sed -e '/^func_stripname ()$/,/^} # func_stripname /c\
-func_stripname ()\
-{\
-\    # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\
-\    # positional parameters, so assign one to ordinary parameter first.\
-\    func_stripname_result=${3}\
-\    func_stripname_result=${func_stripname_result#"${1}"}\
-\    func_stripname_result=${func_stripname_result%"${2}"}\
-} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
 
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
-  sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\
-func_split_long_opt ()\
-{\
-\    func_split_long_opt_name=${1%%=*}\
-\    func_split_long_opt_arg=${1#*=}\
-} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
+CC="$lt_save_CC"
 
 
-  sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\
-func_split_short_opt ()\
-{\
-\    func_split_short_opt_arg=${1#??}\
-\    func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\
-} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
 
 
-  sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\
-func_lo2o ()\
-{\
-\    case ${1} in\
-\      *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\
-\      *)    func_lo2o_result=${1} ;;\
-\    esac\
-} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
 
 
-  sed -e '/^func_xform ()$/,/^} # func_xform /c\
-func_xform ()\
-{\
-    func_xform_result=${1%.*}.lo\
-} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
 
 
-  sed -e '/^func_arith ()$/,/^} # func_arith /c\
-func_arith ()\
-{\
-    func_arith_result=$(( $* ))\
-} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
 
 
-  sed -e '/^func_len ()$/,/^} # func_len /c\
-func_len ()\
-{\
-    func_len_result=${#1}\
-} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
 
-fi
 
-if test x"$lt_shell_append" = xyes; then
-  sed -e '/^func_append ()$/,/^} # func_append /c\
-func_append ()\
-{\
-    eval "${1}+=\\${2}"\
-} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
 
 
-  sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\
-func_append_quoted ()\
-{\
-\    func_quote_for_eval "${2}"\
-\    eval "${1}+=\\\\ \\$func_quote_for_eval_result"\
-} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \
-  && mv -f "$cfgfile.tmp" "$cfgfile" \
-    || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-test 0 -eq $? || _lt_function_replace_fail=:
 
+        ac_config_commands="$ac_config_commands libtool"
 
-  # Save a `func_append' function call where possible by direct use of '+='
-  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-else
-  # Save a `func_append' function call even when '+=' is not available
-  sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \
-    && mv -f "$cfgfile.tmp" "$cfgfile" \
-      || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp")
-  test 0 -eq $? || _lt_function_replace_fail=:
-fi
 
-if test x"$_lt_function_replace_fail" = x":"; then
-  { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5
-$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;}
-fi
 
 
-   mv -f "$cfgfile" "$ofile" ||
-    (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
-  chmod +x "$ofile"
+# Only expand once:
 
 
-as_fn_exit 0
-_LTEOF
-chmod +x "$CONFIG_LT"
-
-# configure is writing to config.log, but config.lt does its own redirection,
-# appending to config.log, which fails on DOS, as config.log is still kept
-# open by configure.  Here we exec the FD to /dev/null, effectively closing
-# config.log, so it can be properly (re)opened and appended to by config.lt.
-lt_cl_success=:
-test "$silent" = yes &&
-  lt_config_lt_args="$lt_config_lt_args --quiet"
-exec 5>/dev/null
-$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false
-exec 5>>config.log
-$lt_cl_success || as_fn_exit 1
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing strerror" >&5
 $as_echo_n "checking for library containing strerror... " >&6; }
 
 
 
-# check that we have the minimum version of python necisary to build
+# option to specify python interpreter to use; this just sets $PYTHON, so that
+# we will fallback to reading $PYTHON if --with-python is not given, and
+# python.m4 will get the expected input
+
+# Check whether --with-python was given.
+if test "${with_python+set}" = set; then :
+  withval=$with_python; PYTHON="$withval"
+fi
+
+if test x"$PYTHON" = xyes; then
+       as_fn_error $? "--with-python option requires a path or program argument" "$LINENO" 5
+fi
+if test -n "$PYTHON" && ! which "$PYTHON"; then
+       as_fn_error $? "Python interpreter $PYTHON does not exist" "$LINENO" 5
+fi
+
+# check that we have the minimum version of python necessary to build
 
 
 
@@ -14655,7 +13270,7 @@ if ${am_cv_pathless_PYTHON+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
-       for am_cv_pathless_PYTHON in python python2 python2.7 python2.6 python3 python3.2 python3.1 none; do
+       for am_cv_pathless_PYTHON in python3 python3.3 python3.2 python3.1 python2 python2.7 python2.6 python none; do
          test "$am_cv_pathless_PYTHON" = none && break
          prog="import sys
 # split strings by '.' and convert to numeric.  Append some zeros
@@ -14856,7 +13471,7 @@ fi
 
         # Find any Python interpreter.
     if test -z "$PYTHON"; then
-      for ac_prog in python python2 python2.7 python2.6 python3 python3.2 python3.1
+      for ac_prog in python3 python3.3 python3.2 python3.1 python2 python2.7 python2.6 python
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
 set dummy $ac_prog; ac_word=$2
@@ -15211,7 +13826,8 @@ py_val=`eval "echo \`echo '$py_cv_mod_'$py_mod_var\`"`
 if test "x$py_val" != xno; then
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
-  else
+  enable_thread=yes
+else
   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
 $as_echo "no" >&6; }
   enable_thread=no
@@ -15395,7 +14011,7 @@ fi
     PKG_CONFIG=no
   fi
 
-  min_glib_version=2.31.0
+  min_glib_version=2.34.2
   { $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; }
 
@@ -15740,12 +14356,12 @@ 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.31.0\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "gio-2.0 >= 2.31.0") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gio-2.0 >= 2.34.2\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "gio-2.0 >= 2.34.2") 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.31.0" 2>/dev/null`
+  pkg_cv_GIO_CFLAGS=`$PKG_CONFIG --cflags "gio-2.0 >= 2.34.2" 2>/dev/null`
                      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
@@ -15757,12 +14373,12 @@ 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.31.0\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "gio-2.0 >= 2.31.0") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gio-2.0 >= 2.34.2\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "gio-2.0 >= 2.34.2") 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.31.0" 2>/dev/null`
+  pkg_cv_GIO_LIBS=`$PKG_CONFIG --libs "gio-2.0 >= 2.34.2" 2>/dev/null`
                      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
@@ -15783,14 +14399,14 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-               GIO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gio-2.0 >= 2.31.0" 2>&1`
+               GIO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gio-2.0 >= 2.34.2" 2>&1`
         else
-               GIO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gio-2.0 >= 2.31.0" 2>&1`
+               GIO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gio-2.0 >= 2.34.2" 2>&1`
         fi
        # Put the nasty error message in config.log where it belongs
        echo "$GIO_PKG_ERRORS" >&5
 
-       as_fn_error $? "Package requirements (gio-2.0 >= 2.31.0) were not met:
+       as_fn_error $? "Package requirements (gio-2.0 >= 2.34.2) were not met:
 
 $GIO_PKG_ERRORS
 
@@ -15823,22 +14439,35 @@ $as_echo "yes" >&6; }
 
 fi
 
-# we always need cairo (not pycairo) for building the tests
+# Check whether --enable-cairo was given.
+if test "${enable_cairo+set}" = set; then :
+  enableval=$enable_cairo; enable_cairo=$enableval
+else
+  enable_cairo=yes
+fi
+
+
 
 pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CAIRO" >&5
-$as_echo_n "checking for CAIRO... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GI" >&5
+$as_echo_n "checking for GI... " >&6; }
 
-if test -n "$CAIRO_CFLAGS"; then
-    pkg_cv_CAIRO_CFLAGS="$CAIRO_CFLAGS"
+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 \"cairo cairo-gobject\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "cairo cairo-gobject") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.34.2
+    gobject-introspection-1.0 >= 1.34.2
+\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.34.2
+    gobject-introspection-1.0 >= 1.34.2
+") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_CAIRO_CFLAGS=`$PKG_CONFIG --cflags "cairo cairo-gobject" 2>/dev/null`
+  pkg_cv_GI_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.34.2
+    gobject-introspection-1.0 >= 1.34.2
+" 2>/dev/null`
                      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
  else
     pkg_failed=untried
 fi
-if test -n "$CAIRO_LIBS"; then
-    pkg_cv_CAIRO_LIBS="$CAIRO_LIBS"
+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 \"cairo cairo-gobject\""; } >&5
-  ($PKG_CONFIG --exists --print-errors "cairo cairo-gobject") 2>&5
+    { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"glib-2.0 >= 2.34.2
+    gobject-introspection-1.0 >= 1.34.2
+\""; } >&5
+  ($PKG_CONFIG --exists --print-errors "glib-2.0 >= 2.34.2
+    gobject-introspection-1.0 >= 1.34.2
+") 2>&5
   ac_status=$?
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
   test $ac_status = 0; }; then
-  pkg_cv_CAIRO_LIBS=`$PKG_CONFIG --libs "cairo cairo-gobject" 2>/dev/null`
+  pkg_cv_GI_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.34.2
+    gobject-introspection-1.0 >= 1.34.2
+" 2>/dev/null`
                      test "x$?" != "x0" && pkg_failed=yes
 else
   pkg_failed=yes
@@ -15876,22 +14511,28 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-               CAIRO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "cairo cairo-gobject" 2>&1`
+               GI_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "glib-2.0 >= 2.34.2
+    gobject-introspection-1.0 >= 1.34.2
+" 2>&1`
         else
-               CAIRO_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "cairo cairo-gobject" 2>&1`
+               GI_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= 2.34.2
+    gobject-introspection-1.0 >= 1.34.2
+" 2>&1`
         fi
        # Put the nasty error message in config.log where it belongs
-       echo "$CAIRO_PKG_ERRORS" >&5
+       echo "$GI_PKG_ERRORS" >&5
 
-       as_fn_error $? "Package requirements (cairo cairo-gobject) were not met:
+       as_fn_error $? "Package requirements (glib-2.0 >= 2.34.2
+    gobject-introspection-1.0 >= 1.34.2
+) were not met:
 
-$CAIRO_PKG_ERRORS
+$GI_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.
+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
@@ -15902,49 +14543,39 @@ as_fn_error $? "The pkg-config script could not be found or is too old.  Make su
 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.
+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.
 
 To get pkg-config, see <http://pkg-config.freedesktop.org/>.
 See \`config.log' for more details" "$LINENO" 5; }
 else
-       CAIRO_CFLAGS=$pkg_cv_CAIRO_CFLAGS
-       CAIRO_LIBS=$pkg_cv_CAIRO_LIBS
+       GI_CFLAGS=$pkg_cv_GI_CFLAGS
+       GI_LIBS=$pkg_cv_GI_LIBS
         { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
 $as_echo "yes" >&6; }
 
 fi
 
-# Check whether --enable-cairo was given.
-if test "${enable_cairo+set}" = set; then :
-  enableval=$enable_cairo; enable_cairo=$enableval
-else
-  enable_cairo=yes
-fi
+GI_DATADIR=$($PKG_CONFIG --variable=gidatadir gobject-introspection-1.0)
 
 
+if test "$enable_cairo" != no; then
 
 pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GI" >&5
-$as_echo_n "checking for GI... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for CAIRO" >&5
+$as_echo_n "checking for CAIRO... " >&6; }
 
-if test -n "$GI_CFLAGS"; then
-    pkg_cv_GI_CFLAGS="$GI_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 \"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
+    { { $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_GI_CFLAGS=`$PKG_CONFIG --cflags "glib-2.0 >= 2.31.0
-    gobject-introspection-1.0 >= 1.33.14
-" 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
  else
     pkg_failed=untried
 fi
-if test -n "$GI_LIBS"; then
-    pkg_cv_GI_LIBS="$GI_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 \"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
+    { { $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_GI_LIBS=`$PKG_CONFIG --libs "glib-2.0 >= 2.31.0
-    gobject-introspection-1.0 >= 1.33.14
-" 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
@@ -15988,28 +14613,22 @@ else
         _pkg_short_errors_supported=no
 fi
         if test $_pkg_short_errors_supported = yes; then
-               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`
+               CAIRO_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "cairo cairo-gobject" 2>&1`
         else
-               GI_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "glib-2.0 >= 2.31.0
-    gobject-introspection-1.0 >= 1.33.14
-" 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 "$GI_PKG_ERRORS" >&5
+       echo "$CAIRO_PKG_ERRORS" >&5
 
-       as_fn_error $? "Package requirements (glib-2.0 >= 2.31.0
-    gobject-introspection-1.0 >= 1.33.14
-) were not met:
+       as_fn_error $? "Package requirements (cairo cairo-gobject) were not met:
 
-$GI_PKG_ERRORS
+$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 GI_CFLAGS
-and GI_LIBS to avoid the need to call 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." "$LINENO" 5
 elif test $pkg_failed = untried; then
        { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
@@ -16020,24 +14639,20 @@ as_fn_error $? "The pkg-config script could not be found or is too old.  Make su
 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 GI_CFLAGS
-and GI_LIBS to avoid the need to call 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.
 
 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
+       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; }
 
 fi
 
-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
@@ -16459,6 +15074,39 @@ $as_echo "$jh_has_option" >&6; }
 esac
 
 case " $CFLAGS " in
+*[\    \ ]-Werror=unused-variable[\    \ ]*)
+  ;;
+*)
+  save_CFLAGS="$CFLAGS"
+  CFLAGS="$CFLAGS -Werror=unused-variable"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -Werror=unused-variable" >&5
+$as_echo_n "checking whether $CC understands -Werror=unused-variable... " >&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[\       \ ]*)
   ;;
 *)
@@ -16533,7 +15181,239 @@ esac
 
 fi
 
-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"
+# enable code coverage support
+
+               { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build with code coverage support" >&5
+$as_echo_n "checking whether to build with code coverage support... " >&6; }
+       # Check whether --enable-code-coverage was given.
+if test "${enable_code_coverage+set}" = set; then :
+  enableval=$enable_code_coverage;
+else
+  enable_code_coverage=no
+fi
+
+        if test x$enable_code_coverage = xyes; then
+  CODE_COVERAGE_ENABLED_TRUE=
+  CODE_COVERAGE_ENABLED_FALSE='#'
+else
+  CODE_COVERAGE_ENABLED_TRUE='#'
+  CODE_COVERAGE_ENABLED_FALSE=
+fi
+
+       CODE_COVERAGE_ENABLED=$enable_code_coverage
+
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_code_coverage" >&5
+$as_echo "$enable_code_coverage" >&6; }
+
+       if  test "$enable_code_coverage" = "yes" ; then :
+
+                               if  test "$GCC" = "no" ; then :
+
+                       as_fn_error $? "not compiling with gcc, which is required for gcov code coverage" "$LINENO" 5
+
+fi
+
+               # List of supported lcov versions.
+               lcov_version_list="1.6 1.7 1.8 1.9"
+
+               # Extract the first word of "lcov", so it can be a program name with args.
+set dummy lcov; 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_prog_LCOV+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$LCOV"; then
+  ac_cv_prog_LCOV="$LCOV" # Let the user override the test.
+else
+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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_LCOV="lcov"
+    $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
+
+fi
+fi
+LCOV=$ac_cv_prog_LCOV
+if test -n "$LCOV"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LCOV" >&5
+$as_echo "$LCOV" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+               # Extract the first word of "genhtml", so it can be a program name with args.
+set dummy genhtml; 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_prog_GENHTML+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  if test -n "$GENHTML"; then
+  ac_cv_prog_GENHTML="$GENHTML" # Let the user override the test.
+else
+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 as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_prog_GENHTML="genhtml"
+    $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
+
+fi
+fi
+GENHTML=$ac_cv_prog_GENHTML
+if test -n "$GENHTML"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GENHTML" >&5
+$as_echo "$GENHTML" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+
+               if  test "$LCOV" ; then :
+
+                       { $as_echo "$as_me:${as_lineno-$LINENO}: checking for lcov version" >&5
+$as_echo_n "checking for lcov version... " >&6; }
+if ${gnome_cv_lcov_version+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+                               gnome_cv_lcov_version=invalid
+                               lcov_version=`$LCOV -v 2>/dev/null | $SED -e 's/^.* //'`
+                               for lcov_check_version in $lcov_version_list; do
+                                       if test "$lcov_version" = "$lcov_check_version"; then
+                                               gnome_cv_lcov_version="$lcov_check_version (ok)"
+                                       fi
+                               done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gnome_cv_lcov_version" >&5
+$as_echo "$gnome_cv_lcov_version" >&6; }
+
+else
+
+                       lcov_msg="To enable code coverage reporting you must have one of the following lcov versions installed: $lcov_version_list"
+                       as_fn_error $? "$lcov_msg" "$LINENO" 5
+
+fi
+
+               case $gnome_cv_lcov_version in
+                       ""|invalid)
+                               lcov_msg="You must have one of the following versions of lcov: $lcov_version_list (found: $lcov_version)."
+                               as_fn_error $? "$lcov_msg" "$LINENO" 5
+                               LCOV="exit 0;"
+                       ;;
+               esac
+
+               if  test -z "$GENHTML" ; then :
+
+                       as_fn_error $? "Could not find genhtml from the lcov package" "$LINENO" 5
+
+fi
+
+                               CODE_COVERAGE_CFLAGS="-O0 -g -fprofile-arcs -ftest-coverage"
+               CODE_COVERAGE_LDFLAGS="-lgcov"
+
+
+
+
+fi
+
+GNOME_CODE_COVERAGE_RULES='
+# Code coverage
+#
+# Optional:
+#  - CODE_COVERAGE_DIRECTORY: Top-level directory for code coverage reporting.
+#    (Default: $(top_builddir))
+#  - CODE_COVERAGE_OUTPUT_FILE: Filename and path for the .info file generated
+#    by lcov for code coverage. (Default:
+#    $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage.info)
+#  - CODE_COVERAGE_OUTPUT_DIRECTORY: Directory for generated code coverage
+#    reports to be created. (Default:
+#    $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage)
+#  - CODE_COVERAGE_LCOV_OPTIONS: Extra options to pass to the lcov instance.
+#    (Default: empty)
+#  - CODE_COVERAGE_GENHTML_OPTIONS: Extra options to pass to the genhtml
+#    instance. (Default: empty)
+#
+# The generated report will be titled using the $(PACKAGE_NAME) and
+# $(PACKAGE_VERSION). In order to add the current git hash to the title,
+# use the git-version-gen script, available online.
+
+# Optional variables
+CODE_COVERAGE_DIRECTORY ?= $(top_builddir)
+CODE_COVERAGE_OUTPUT_FILE ?= $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage.info
+CODE_COVERAGE_OUTPUT_DIRECTORY ?= $(PACKAGE_NAME)-$(PACKAGE_VERSION)-coverage
+CODE_COVERAGE_LCOV_OPTIONS ?=
+CODE_COVERAGE_GENHTML_OPTIONS ?=
+
+# Use recursive makes in order to ignore errors during check
+check-code-coverage:
+ifdef CODE_COVERAGE_ENABLED
+       -$(MAKE) $(AM_MAKEFLAGS) -k check
+       $(MAKE) $(AM_MAKEFLAGS) code-coverage-capture
+else
+       @echo "Need to reconfigure with --enable-code-coverage"
+endif
+
+# Capture code coverage data
+code-coverage-capture: code-coverage-capture-hook
+ifdef CODE_COVERAGE_ENABLED
+       $(LCOV) --directory $(CODE_COVERAGE_DIRECTORY) --capture --output-file "$(CODE_COVERAGE_OUTPUT_FILE).tmp" --test-name "$(PACKAGE_NAME)-$(PACKAGE_VERSION)" --no-checksum --compat-libtool $(CODE_COVERAGE_LCOV_OPTIONS)
+       $(LCOV) --directory $(CODE_COVERAGE_DIRECTORY) --remove "$(CODE_COVERAGE_OUTPUT_FILE).tmp" "/tmp/*" --output-file "$(CODE_COVERAGE_OUTPUT_FILE)"
+       -rm -f $(CODE_COVERAGE_OUTPUT_FILE).tmp
+       LANG=C $(GENHTML) --prefix $(CODE_COVERAGE_DIRECTORY) --output-directory "$(CODE_COVERAGE_OUTPUT_DIRECTORY)" --title "$(PACKAGE_NAME)-$(PACKAGE_VERSION) Code Coverage" --legend --show-details "$(CODE_COVERAGE_OUTPUT_FILE)" $(CODE_COVERAGE_GENHTML_OPTIONS)
+       @echo "file://$(abs_builddir)/$(CODE_COVERAGE_OUTPUT_DIRECTORY)/index.html"
+else
+       @echo "Need to reconfigure with --enable-code-coverage"
+endif
+
+# Hook rule executed before code-coverage-capture, overridable by the user
+code-coverage-capture-hook:
+
+clean: code-coverage-clean
+code-coverage-clean:
+       -$(LCOV) --directory $(top_builddir) -z
+       -rm -rf $(CODE_COVERAGE_OUTPUT_FILE) $(CODE_COVERAGE_OUTPUT_FILE).tmp $(CODE_COVERAGE_OUTPUT_DIRECTORY)
+       -find . -name "*.gcda" -o -name "*.gcov" -delete
+
+GITIGNOREFILES ?=
+GITIGNOREFILES += $(CODE_COVERAGE_OUTPUT_FILE) $(CODE_COVERAGE_OUTPUT_DIRECTORY)
+
+DISTCHECK_CONFIGURE_FLAGS ?=
+DISTCHECK_CONFIGURE_FLAGS += --disable-code-coverage
+
+.PHONY: check-code-coverage code-coverage-capture code-coverage-capture-hook code-coverage-clean
+'
+
+
+
+
+CFLAGS="$CFLAGS $CODE_COVERAGE_CFLAGS"
+LDFLAGS="$LDFLAGS $CODE_COVERAGE_CFLAGS"
+
+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 pygtkcompat/Makefile PKG-INFO"
 
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -16652,10 +15532,6 @@ else
   am__EXEEXT_FALSE=
 fi
 
-if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
-  as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
-Usually this means the macro was only invoked conditionally." "$LINENO" 5
-fi
 if test -z "${PLATFORM_WIN32_TRUE}" && test -z "${PLATFORM_WIN32_FALSE}"; then
   as_fn_error $? "conditional \"PLATFORM_WIN32\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -16688,6 +15564,10 @@ 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
 fi
+if test -z "${CODE_COVERAGE_ENABLED_TRUE}" && test -z "${CODE_COVERAGE_ENABLED_FALSE}"; then
+  as_fn_error $? "conditional \"CODE_COVERAGE_ENABLED\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
 
 : "${CONFIG_STATUS=./config.status}"
 ac_write_fail=0
@@ -17085,7 +15965,7 @@ 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 3.4.0, which was
+This file was extended by pygobject $as_me 3.7.3, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -17145,13 +16025,14 @@ $config_headers
 Configuration commands:
 $config_commands
 
-Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=pygobject>."
+Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=pygobject>.
+pygobject home page: <https://live.gnome.org/PyGObject/>."
 
 _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 3.4.0
+pygobject config.status 3.7.3
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -17280,12 +16161,12 @@ AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
 sed_quote_subst='$sed_quote_subst'
 double_quote_subst='$double_quote_subst'
 delay_variable_subst='$delay_variable_subst'
-enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
+macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
+macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
 AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`'
 DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`'
 OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`'
-macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`'
-macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`'
+enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`'
 enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`'
 pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
 enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
@@ -17548,7 +16429,6 @@ fi
     RM='$RM'
     ofile='$ofile'
 
-ac_aux_dir='$ac_aux_dir'
 
 
 
@@ -17573,6 +16453,7 @@ do
     "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" ;;
+    "pygtkcompat/Makefile") CONFIG_FILES="$CONFIG_FILES pygtkcompat/Makefile" ;;
     "PKG-INFO") CONFIG_FILES="$CONFIG_FILES PKG-INFO" ;;
 
   *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
@@ -18318,8 +17199,9 @@ available_tags=""
 
 # ### BEGIN LIBTOOL CONFIG
 
-# Whether or not to build static libraries.
-build_old_libs=$enable_static
+# Which release of libtool.m4 was used?
+macro_version=$macro_version
+macro_revision=$macro_revision
 
 # Assembler program.
 AS=$lt_AS
@@ -18330,9 +17212,8 @@ DLLTOOL=$lt_DLLTOOL
 # Object dumper program.
 OBJDUMP=$lt_OBJDUMP
 
-# Which release of libtool.m4 was used?
-macro_version=$macro_version
-macro_revision=$macro_revision
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
 
 # Whether or not to build shared libraries.
 build_libtool_libs=$enable_shared
@@ -18936,6 +17817,22 @@ $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;}
 fi
 
 
-echo
-echo "libffi support: $have_libffi"
-echo
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result:
+       pygobject $VERSION
+
+       Using python interpreter:       $PYTHON
+       libffi support:                 $have_libffi
+       cairo support:                  $enable_cairo
+       thread support:                 $enable_thread
+       code coverage support:          $enable_code_coverage
+" >&5
+$as_echo "
+       pygobject $VERSION
+
+       Using python interpreter:       $PYTHON
+       libffi support:                 $have_libffi
+       cairo support:                  $enable_cairo
+       thread support:                 $enable_thread
+       code coverage support:          $enable_code_coverage
+" >&6; }
+
index 879b739..dd5e078 100644 (file)
@@ -1,29 +1,36 @@
 -*- mode: m4 -*-
-AC_PREREQ(2.52)
+AC_PREREQ([2.68])
+
+# The version of python used is determined by the executable pointed to by the
+# --with-python switch, or if that's not set, by the PYTHON environment
+# variable.  For instance if your system installs Python 3 as python3 to
+# configure to compile pygobject under Python 3 you would do this:
+#   $ ./configure --with-python=python3
+# or
+#   $ PYTHON=python3 ./configure
+#
+# You can also build against a full interpreter path, such as
+#   $ ./configure --with-python=~/my-patched-python/python
 
-# The version of python used is determined by the executable pointed to by
-# the PYTHON environment variable.  For instance if your system installs
-# 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.6)
 m4_define(python3_min_ver, 3.1)
 
 dnl the pygobject version number
 m4_define(pygobject_major_version, 3)
-m4_define(pygobject_minor_version, 4)
-m4_define(pygobject_micro_version, 0)
+m4_define(pygobject_minor_version, 7)
+m4_define(pygobject_micro_version, 3)
 m4_define(pygobject_version, pygobject_major_version.pygobject_minor_version.pygobject_micro_version)
 
 dnl versions of packages we require ...
-m4_define(introspection_required_version, 1.33.14)
+m4_define(introspection_required_version, 1.34.2)
 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)
+m4_define(glib_required_version, 2.34.2)
+m4_define(gio_required_version, 2.34.2)
 
-AC_INIT(pygobject, pygobject_version,
-        [http://bugzilla.gnome.org/enter_bug.cgi?product=pygobject])
+AC_INIT([pygobject],[pygobject_version],
+       [http://bugzilla.gnome.org/enter_bug.cgi?product=pygobject],
+       [pygobject],[https://live.gnome.org/PyGObject/])
 AC_SUBST(ACLOCAL_AMFLAGS, "-I m4 -I .")
 AC_CONFIG_MACRO_DIR([m4])
 AC_CONFIG_SRCDIR([gi/gimodule.c])
@@ -37,8 +44,7 @@ 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([1.11 foreign no-dist-gzip dist-xz])
-AM_MAINTAINER_MODE([enable])
+AM_INIT_AUTOMAKE([1.11.1 foreign no-dist-gzip dist-xz])
 
 dnl put the ACLOCAL flags in the makefile
 ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
@@ -69,23 +75,28 @@ esac
 AC_MSG_RESULT([$os_win32])
 AM_CONDITIONAL(OS_WIN32, test "$os_win32" = "yes")
 
-AC_DISABLE_STATIC
+LT_PREREQ([2.2.6])
+LT_INIT([dlopen win32-dll disable-static])
 
-dnl XXXX hack to kill off all the libtool tags ...
-dnl it isn't like we are using C++ or Fortran.
-dnl (copied from libglade/configure.in)
-m4_define([_LT_AC_TAGCONFIG],[])
-
-AC_LIBTOOL_WIN32_DLL
-AC_PROG_LIBTOOL
-dnl when using libtool 2.x create libtool early, because it's used in configure
-m4_ifdef([LT_OUTPUT], [LT_OUTPUT])
-AC_ISC_POSIX
+AC_SEARCH_LIBS([strerror],[cposix])
 AC_PROG_CC
 AM_PROG_CC_STDC
 AM_PROG_CC_C_O
 
-# check that we have the minimum version of python necisary to build
+# option to specify python interpreter to use; this just sets $PYTHON, so that
+# we will fallback to reading $PYTHON if --with-python is not given, and
+# python.m4 will get the expected input
+AC_ARG_WITH(python,
+  AS_HELP_STRING([--with-python=PATH],[Path to Python interpreter; searches $PATH if only a program name is given; if not given, searches for a few standard names such as "python3" or "python2"]),
+  [PYTHON="$withval"], [])
+if test x"$PYTHON" = xyes; then
+       AC_MSG_ERROR([--with-python option requires a path or program argument])
+fi
+if test -n "$PYTHON" && ! which "$PYTHON"; then
+       AC_MSG_ERROR([Python interpreter $PYTHON does not exist])
+fi
+
+# check that we have the minimum version of python necessary to build
 JD_PATH_PYTHON(python_min_ver)
 
 # check if we are building for python 3
@@ -109,10 +120,8 @@ fi
 AC_MSG_CHECKING([for PySignal_SetWakeupFd in Python.h])
 old_CPPFLAGS=$CPPFLAGS
 CPPFLAGS="-Wall -Werror $PYTHON_INCLUDES"
-AC_TRY_COMPILE([#include <Python.h>],
-  [PySignal_SetWakeupFd(0);],
-  setwakeupfd_ok=yes,
-  setwakeupfd_ok=no)
+AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <Python.h>]], [[PySignal_SetWakeupFd(0);]])],
+                  [setwakeupfd_ok=yes],[setwakeupfd_ok=no])
 AC_MSG_RESULT($setwakeupfd_ok)
 if test "x$setwakeupfd_ok" != xno; then
   AC_DEFINE(HAVE_PYSIGNAL_SETWAKEUPFD, 1,
@@ -124,13 +133,13 @@ PLATFORM=`$PYTHON -c "import sys; from distutils import util; sys.stdout.write(u
 AC_SUBST(PLATFORM)
 
 AC_ARG_ENABLE(thread,
-  AC_HELP_STRING([--disable-thread], [Disable pygobject threading support]),,
+  AS_HELP_STRING([--disable-thread],[Disable pygobject threading support]),,
   enable_thread=yes)
 
 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
-  AM_CHECK_PYMOD(_thread,,,enable_thread=no)
+  AM_CHECK_PYMOD(_thread,,enable_thread=yes,enable_thread=no)
 fi
 
 AC_MSG_CHECKING(whether to enable threading in pygobject)
@@ -162,7 +171,7 @@ AS_AC_EXPAND(DATADIR, $datadir)
 dnl libffi
 AC_MSG_CHECKING(for ffi)
 AC_ARG_WITH(ffi,
-  AC_HELP_STRING([--without-ffi], [Disable libffi support]),
+  AS_HELP_STRING([--without-ffi],[Disable libffi support]),
   with_libffi=$withval,
   with_libffi=auto)
 if test x"$with_libffi" = xno ; then
@@ -184,11 +193,8 @@ AC_SUBST(LIBFFI_PC)
 dnl gio
 PKG_CHECK_MODULES(GIO, gio-2.0 >= gio_required_version)
 
-# 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]),
+    AS_HELP_STRING([--enable-cairo],[Enable Cairo bindings using introspection information]),
     enable_cairo=$enableval,
     enable_cairo=yes)
 
@@ -201,6 +207,8 @@ GI_DATADIR=$($PKG_CONFIG --variable=gidatadir gobject-introspection-1.0)
 AC_SUBST(GI_DATADIR)
 
 if test "$enable_cairo" != no; then
+    PKG_CHECK_MODULES(CAIRO, cairo cairo-gobject)
+
     if test $build_py3k = true; then
         PKG_CHECK_MODULES(PYCAIRO,
             py3cairo >= py3cairo_required_version
@@ -228,6 +236,7 @@ if test "x$GCC" = "xyes"; then
   JH_ADD_CFLAG([-Werror=format-security])
   JH_ADD_CFLAG([-Werror=missing-include-dirs])
   JH_ADD_CFLAG([-Werror=format])
+  JH_ADD_CFLAG([-Werror=unused-variable])
   JH_ADD_CFLAG([-fno-strict-aliasing])
 
   case $host_os in
@@ -240,6 +249,11 @@ if test "x$GCC" = "xyes"; then
 
 fi
 
+# enable code coverage support
+GNOME_CODE_COVERAGE
+CFLAGS="$CFLAGS $CODE_COVERAGE_CFLAGS"
+LDFLAGS="$LDFLAGS $CODE_COVERAGE_CFLAGS"
+
 AC_CONFIG_FILES(
   Makefile
   pygobject-3.0.pc
@@ -251,9 +265,17 @@ AC_CONFIG_FILES(
   gi/_gobject/Makefile
   examples/Makefile
   tests/Makefile
+  pygtkcompat/Makefile
   PKG-INFO)
 AC_OUTPUT
 
-echo
-echo "libffi support: $have_libffi"
-echo
+AC_MSG_RESULT([
+       pygobject $VERSION
+
+       Using python interpreter:       $PYTHON
+       libffi support:                 $have_libffi
+       cairo support:                  $enable_cairo
+       thread support:                 $enable_thread
+       code coverage support:          $enable_code_coverage
+])
+
index 26e1fd0..2396bc0 100644 (file)
@@ -93,6 +93,9 @@ CAIRO_LIBS = @CAIRO_LIBS@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
+CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
+CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
+CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CYGPATH_W = @CYGPATH_W@
@@ -110,6 +113,7 @@ EXEEXT = @EXEEXT@
 FFI_CFLAGS = @FFI_CFLAGS@
 FFI_LIBS = @FFI_LIBS@
 FGREP = @FGREP@
+GENHTML = @GENHTML@
 GIO_CFLAGS = @GIO_CFLAGS@
 GIO_LIBS = @GIO_LIBS@
 GI_CFLAGS = @GI_CFLAGS@
@@ -129,6 +133,7 @@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
+LCOV = @LCOV@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBFFI_PC = @LIBFFI_PC@
@@ -138,7 +143,6 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
@@ -241,7 +245,7 @@ EXTRA_DIST = properties.py signal.py option.py cairo-demo.py
 all: all-am
 
 .SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
@@ -266,9 +270,9 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 $(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)
+$(top_srcdir)/configure:  $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
 
index f99e45b..4d93133 100644 (file)
@@ -42,10 +42,10 @@ _gi_la_SOURCES = \
        pygi-info.h \
        pygi-foreign.c \
        pygi-foreign.h \
-       pygi-foreign-gvariant.c \
-       pygi-foreign-gvariant.h \
        pygi-struct.c \
        pygi-struct.h \
+       pygi-source.c \
+       pygi-source.h \
        pygi-argument.c \
        pygi-argument.h \
        pygi-type.c \
@@ -56,8 +56,6 @@ _gi_la_SOURCES = \
        pygi-closure.h \
        pygi-ccallback.c \
        pygi-ccallback.h \
-       pygi-callbacks.c \
-       pygi-callbacks.h \
        pygi.h \
        pygi-private.h \
        pygi-property.c \
@@ -117,7 +115,7 @@ _gi_cairo_la_LDFLAGS = \
 # build directory, which the Python interpreter can load
 # directly without having to know how to parse .la files.
 .la.so:
-       $(LN_S) .libs/$@ $@ || true
+       $(LN_S) -f .libs/$@ $@
 
 # 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
index 1bbd583..9f0630a 100644 (file)
@@ -105,13 +105,12 @@ 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-foreign.lo _gi_la-pygi-foreign-gvariant.lo \
-       _gi_la-pygi-struct.lo _gi_la-pygi-argument.lo \
+       _gi_la-pygi-foreign.lo _gi_la-pygi-struct.lo \
+       _gi_la-pygi-source.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-invoke.lo _gi_la-pygi-cache.lo \
+       _gi_la-pygi-property.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)
@@ -220,6 +219,9 @@ CAIRO_LIBS = @CAIRO_LIBS@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
+CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
+CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
+CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CYGPATH_W = @CYGPATH_W@
@@ -237,6 +239,7 @@ EXEEXT = @EXEEXT@
 FFI_CFLAGS = @FFI_CFLAGS@
 FFI_LIBS = @FFI_LIBS@
 FGREP = @FGREP@
+GENHTML = @GENHTML@
 GIO_CFLAGS = @GIO_CFLAGS@
 GIO_LIBS = @GIO_LIBS@
 GI_CFLAGS = @GI_CFLAGS@
@@ -256,6 +259,7 @@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
+LCOV = @LCOV@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBFFI_PC = @LIBFFI_PC@
@@ -265,7 +269,6 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
@@ -398,10 +401,10 @@ _gi_la_SOURCES = \
        pygi-info.h \
        pygi-foreign.c \
        pygi-foreign.h \
-       pygi-foreign-gvariant.c \
-       pygi-foreign-gvariant.h \
        pygi-struct.c \
        pygi-struct.h \
+       pygi-source.c \
+       pygi-source.h \
        pygi-argument.c \
        pygi-argument.h \
        pygi-type.c \
@@ -412,8 +415,6 @@ _gi_la_SOURCES = \
        pygi-closure.h \
        pygi-ccallback.c \
        pygi-ccallback.h \
-       pygi-callbacks.c \
-       pygi-callbacks.h \
        pygi.h \
        pygi-private.h \
        pygi-property.c \
@@ -476,7 +477,7 @@ all: all-recursive
 
 .SUFFIXES:
 .SUFFIXES: .c .la .lo .o .obj .so
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
@@ -501,9 +502,9 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 $(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)
+$(top_srcdir)/configure:  $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
 install-pygiLTLIBRARIES: $(pygi_LTLIBRARIES)
@@ -554,10 +555,8 @@ distclean-compile:
 @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@
@@ -567,6 +566,7 @@ distclean-compile:
 @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@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-source.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-struct.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-type.Plo@am__quote@
 
@@ -612,13 +612,6 @@ _gi_la-pygi-foreign.lo: pygi-foreign.c
 @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-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) $(_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
-@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@  $(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) $(_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
@@ -626,6 +619,13 @@ _gi_la-pygi-struct.lo: pygi-struct.c
 @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-struct.lo `test -f 'pygi-struct.c' || echo '$(srcdir)/'`pygi-struct.c
 
+_gi_la-pygi-source.lo: pygi-source.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-source.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-source.Tpo -c -o _gi_la-pygi-source.lo `test -f 'pygi-source.c' || echo '$(srcdir)/'`pygi-source.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-source.Tpo $(DEPDIR)/_gi_la-pygi-source.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='pygi-source.c' object='_gi_la-pygi-source.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-source.lo `test -f 'pygi-source.c' || echo '$(srcdir)/'`pygi-source.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) $(_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
@@ -661,13 +661,6 @@ _gi_la-pygi-ccallback.lo: pygi-ccallback.c
 @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-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) $(_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
-@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@  $(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) $(_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
@@ -1104,7 +1097,7 @@ 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:
-       $(LN_S) .libs/$@ $@ || true
+       $(LN_S) -f .libs/$@ $@
 
 # 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
index 6ebff8e..70a4917 100644 (file)
@@ -81,3 +81,9 @@ def require_version(namespace, version):
 
 def get_required_version(namespace):
     return _versions.get(namespace, None)
+
+
+# note, DeprecationWarning would be more suitable as a base, but this
+# unhelpfully isn't shown by default and thus useless
+class PyGIDeprecationWarning(RuntimeWarning):
+    pass
index 468e7f4..4feb06b 100644 (file)
@@ -52,16 +52,10 @@ 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 \
@@ -96,4 +90,4 @@ check-local: $(pyglib_LTLIBRARIES:.la=.so) build_pylinks
 clean-local:
        rm -f $(pyglib_LTLIBRARIES:.la=.so)
 .la.so:
-       $(LN_S) .libs/$@ $@ || true
+       $(LN_S) -f .libs/$@ $@
index e87f9b2..4f08aea 100644 (file)
@@ -105,9 +105,8 @@ am__DEPENDENCIES_1 =
 @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 \
+am__glib_la_OBJECTS = _glib_la-glibmodule.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_@AM_V@)
@@ -183,6 +182,9 @@ CAIRO_LIBS = @CAIRO_LIBS@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
+CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
+CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
+CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CYGPATH_W = @CYGPATH_W@
@@ -200,6 +202,7 @@ EXEEXT = @EXEEXT@
 FFI_CFLAGS = @FFI_CFLAGS@
 FFI_LIBS = @FFI_LIBS@
 FGREP = @FGREP@
+GENHTML = @GENHTML@
 GIO_CFLAGS = @GIO_CFLAGS@
 GIO_LIBS = @GIO_LIBS@
 GI_CFLAGS = @GI_CFLAGS@
@@ -219,6 +222,7 @@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
+LCOV = @LCOV@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBFFI_PC = @LIBFFI_PC@
@@ -228,7 +232,6 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
@@ -369,16 +372,10 @@ libpyglib_gi_2_0_@PYTHON_BASENAME@_la_LIBADD = \
 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 \
@@ -401,7 +398,7 @@ all: all-am
 
 .SUFFIXES:
 .SUFFIXES: .c .la .lo .o .obj .so
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
@@ -426,9 +423,9 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 $(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)
+$(top_srcdir)/configure:  $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
 install-libLTLIBRARIES: $(lib_LTLIBRARIES)
@@ -507,9 +504,6 @@ distclean-compile:
        -rm -f *.tab.c
 
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_glib_la-glibmodule.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_glib_la-pygiochannel.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_glib_la-pygmaincontext.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_glib_la-pygmainloop.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_glib_la-pygoptioncontext.Plo@am__quote@
 @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@
@@ -544,13 +538,6 @@ _glib_la-glibmodule.lo: glibmodule.c
 @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) $(_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) $(_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
-@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@  $(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) $(_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
@@ -565,20 +552,6 @@ _glib_la-pygoptiongroup.lo: pygoptiongroup.c
 @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) $(_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) $(_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
-@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@  $(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) $(_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
-@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@  $(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) $(_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
@@ -873,7 +846,7 @@ check-local: $(pyglib_LTLIBRARIES:.la=.so) build_pylinks
 clean-local:
        rm -f $(pyglib_LTLIBRARIES:.la=.so)
 .la.so:
-       $(LN_S) .libs/$@ $@ || true
+       $(LN_S) -f .libs/$@ $@
 
 # 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 b0d2212..0b9df9a 100644 (file)
@@ -23,99 +23,3 @@ 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
index 11b97f5..11aee9d 100644 (file)
 #include <glib.h>
 #include "pyglib.h"
 #include "pyglib-private.h"
-#include "pygiochannel.h"
-#include "pygmaincontext.h"
-#include "pygmainloop.h"
 #include "pygoptioncontext.h"
 #include "pygoptiongroup.h"
 #include "pygsource.h"
 #include "pygspawn.h"
 
-#define PYGLIB_MAJOR_VERSION PYGOBJECT_MAJOR_VERSION
-#define PYGLIB_MINOR_VERSION PYGOBJECT_MINOR_VERSION
-#define PYGLIB_MICRO_VERSION PYGOBJECT_MICRO_VERSION
-
-
 /* ---------------- glib module functions -------------------- */
 
-struct _PyGChildData {
-    PyObject *func;
-    PyObject *data;
-};
-
-static gint
-get_handler_priority(gint *priority, PyObject *kwargs)
-{
-    Py_ssize_t len, pos;
-    PyObject *key, *val;
-
-    /* no keyword args? leave as default */
-    if (kwargs == NULL)        return 0;
-
-    len = PyDict_Size(kwargs);
-    if (len == 0) return 0;
-
-    if (len != 1) {
-       PyErr_SetString(PyExc_TypeError,
-                       "expecting at most one keyword argument");
-       return -1;
-    }
-    pos = 0;
-    PyDict_Next(kwargs, &pos, &key, &val);
-    if (!PYGLIB_PyUnicode_Check(key)) {
-       PyErr_SetString(PyExc_TypeError,
-                       "keyword argument name is not a string");
-       return -1;
-    }
-
-    if (strcmp(PYGLIB_PyUnicode_AsString(key), "priority") != 0) {
-       PyErr_SetString(PyExc_TypeError,
-                       "only 'priority' keyword argument accepted");
-       return -1;
-    }
-
-    *priority = PYGLIB_PyLong_AsLong(val);
-    if (PyErr_Occurred()) {
-       PyErr_Clear();
-       PyErr_SetString(PyExc_ValueError, "could not get priority value");
-       return -1;
-    }
-    return 0;
-}
-
 static PyObject *
 pyglib_threads_init(PyObject *unused, PyObject *args, PyObject *kwargs)
 {
@@ -99,592 +46,6 @@ pyglib_threads_init(PyObject *unused, PyObject *args, PyObject *kwargs)
     return Py_None;
 }
 
-static PyObject *
-pyglib_idle_add(PyObject *self, PyObject *args, PyObject *kwargs)
-{
-    PyObject *first, *callback, *cbargs = NULL, *data;
-    gint len, priority = G_PRIORITY_DEFAULT_IDLE;
-    guint handler_id;
-
-    len = PyTuple_Size(args);
-    if (len < 1) {
-       PyErr_SetString(PyExc_TypeError,
-                       "idle_add requires at least 1 argument");
-       return NULL;
-    }
-    first = PySequence_GetSlice(args, 0, 1);
-    if (!PyArg_ParseTuple(first, "O:idle_add", &callback)) {
-       Py_DECREF(first);
-        return NULL;
-    }
-    Py_DECREF(first);
-    if (!PyCallable_Check(callback)) {
-        PyErr_SetString(PyExc_TypeError, "first argument not callable");
-        return NULL;
-    }
-    if (get_handler_priority(&priority, kwargs) < 0)
-       return NULL;
-
-    cbargs = PySequence_GetSlice(args, 1, len);
-    if (cbargs == NULL)
-       return NULL;
-
-    data = Py_BuildValue("(ON)", callback, cbargs);
-    if (data == NULL)
-       return NULL;
-    handler_id = g_idle_add_full(priority,
-                                _pyglib_handler_marshal, data,
-                                _pyglib_destroy_notify);
-    return PYGLIB_PyLong_FromLong(handler_id);
-}
-
-
-static PyObject *
-pyglib_timeout_add(PyObject *self, PyObject *args, PyObject *kwargs)
-{
-    PyObject *first, *callback, *cbargs = NULL, *data;
-    gint len, priority = G_PRIORITY_DEFAULT;
-    guint interval, handler_id;
-
-    len = PyTuple_Size(args);
-    if (len < 2) {
-       PyErr_SetString(PyExc_TypeError,
-                       "timeout_add requires at least 2 args");
-       return NULL;
-    }
-    first = PySequence_GetSlice(args, 0, 2);
-    if (!PyArg_ParseTuple(first, "IO:timeout_add", &interval, &callback)) {
-       Py_DECREF(first);
-        return NULL;
-    }
-    Py_DECREF(first);
-    if (!PyCallable_Check(callback)) {
-        PyErr_SetString(PyExc_TypeError, "second argument not callable");
-        return NULL;
-    }
-    if (get_handler_priority(&priority, kwargs) < 0)
-       return NULL;
-
-    cbargs = PySequence_GetSlice(args, 2, len);
-    if (cbargs == NULL)
-       return NULL;
-
-    data = Py_BuildValue("(ON)", callback, cbargs);
-    if (data == NULL)
-       return NULL;
-    handler_id = g_timeout_add_full(priority, interval,
-                                   _pyglib_handler_marshal, data,
-                                   _pyglib_destroy_notify);
-    return PYGLIB_PyLong_FromLong(handler_id);
-}
-
-static PyObject *
-pyglib_timeout_add_seconds(PyObject *self, PyObject *args, PyObject *kwargs)
-{
-    PyObject *first, *callback, *cbargs = NULL, *data;
-    gint len, priority = G_PRIORITY_DEFAULT;
-    guint interval, handler_id;
-
-    len = PyTuple_Size(args);
-    if (len < 2) {
-       PyErr_SetString(PyExc_TypeError,
-                       "timeout_add_seconds requires at least 2 args");
-       return NULL;
-    }
-    first = PySequence_GetSlice(args, 0, 2);
-    if (!PyArg_ParseTuple(first, "IO:timeout_add_seconds", &interval, &callback)) {
-       Py_DECREF(first);
-        return NULL;
-    }
-    Py_DECREF(first);
-    if (!PyCallable_Check(callback)) {
-        PyErr_SetString(PyExc_TypeError, "second argument not callable");
-        return NULL;
-    }
-    if (get_handler_priority(&priority, kwargs) < 0)
-       return NULL;
-
-    cbargs = PySequence_GetSlice(args, 2, len);
-    if (cbargs == NULL)
-       return NULL;
-
-    data = Py_BuildValue("(ON)", callback, cbargs);
-    if (data == NULL)
-       return NULL;
-    handler_id = g_timeout_add_seconds_full(priority, interval,
-                                            _pyglib_handler_marshal, data,
-                                            _pyglib_destroy_notify);
-    return PYGLIB_PyLong_FromLong(handler_id);
-}
-
-static gboolean
-iowatch_marshal(GIOChannel *source,
-               GIOCondition condition,
-               gpointer user_data)
-{
-    PyGILState_STATE state;
-    PyObject *tuple, *func, *firstargs, *args, *ret;
-    gboolean res;
-
-    g_return_val_if_fail(user_data != NULL, FALSE);
-
-    state = pyglib_gil_state_ensure();
-
-    tuple = (PyObject *)user_data;
-    func = PyTuple_GetItem(tuple, 0);
-
-    /* arg vector is (fd, condtion, *args) */
-    firstargs = Py_BuildValue("(Oi)", PyTuple_GetItem(tuple, 1), condition);
-    args = PySequence_Concat(firstargs, PyTuple_GetItem(tuple, 2));
-    Py_DECREF(firstargs);
-
-    ret = PyObject_CallObject(func, args);
-    Py_DECREF(args);
-    if (!ret) {
-       PyErr_Print();
-       res = FALSE;
-    } else {
-        if (ret == Py_None) {
-            if (PyErr_Warn(PyExc_Warning,
-                          "_glib.io_add_watch callback returned None; "
-                           "should return True/False")) {
-                PyErr_Print();
-            }
-        }
-       res = PyObject_IsTrue(ret);
-       Py_DECREF(ret);
-    }
-
-    pyglib_gil_state_release(state);
-
-    return res;
-}
-
-static PyObject *
-pyglib_io_add_watch(PyObject *self, PyObject *args, PyObject *kwargs)
-{
-    PyObject *first, *pyfd, *callback, *cbargs = NULL, *data;
-    gint fd, priority = G_PRIORITY_DEFAULT, condition;
-    Py_ssize_t len;
-    GIOChannel *iochannel;
-    guint handler_id;
-
-    len = PyTuple_Size(args);
-    if (len < 3) {
-       PyErr_SetString(PyExc_TypeError,
-                       "io_add_watch requires at least 3 args");
-       return NULL;
-    }
-    first = PySequence_GetSlice(args, 0, 3);
-    if (!PyArg_ParseTuple(first, "OiO:io_add_watch", &pyfd, &condition,
-                         &callback)) {
-       Py_DECREF(first);
-        return NULL;
-    }
-    Py_DECREF(first);
-    fd = PyObject_AsFileDescriptor(pyfd);
-    if (fd < 0) {
-       return NULL;
-    }
-    if (!PyCallable_Check(callback)) {
-        PyErr_SetString(PyExc_TypeError, "third argument not callable");
-        return NULL;
-    }
-    if (get_handler_priority(&priority, kwargs) < 0)
-       return NULL;
-
-    cbargs = PySequence_GetSlice(args, 3, len);
-    if (cbargs == NULL)
-      return NULL;
-    data = Py_BuildValue("(OON)", callback, pyfd, cbargs);
-    if (data == NULL)
-      return NULL;
-    iochannel = g_io_channel_unix_new(fd);
-    handler_id = g_io_add_watch_full(iochannel, priority, condition,
-                                    iowatch_marshal, data,
-                                    (GDestroyNotify)_pyglib_destroy_notify);
-    g_io_channel_unref(iochannel);
-    
-    return PYGLIB_PyLong_FromLong(handler_id);
-}
-
-static PyObject *
-pyglib_source_remove(PyObject *self, PyObject *args)
-{
-    guint tag;
-
-    if (!PyArg_ParseTuple(args, "i:source_remove", &tag))
-       return NULL;
-
-    return PyBool_FromLong(g_source_remove(tag));
-}
-
-static PyObject *
-pyglib_main_context_default(PyObject *unused)
-{
-    return pyglib_main_context_new(g_main_context_default());
-}
-
-static void
-child_watch_func(GPid pid, gint status, gpointer data)
-{
-    struct _PyGChildData *child_data = (struct _PyGChildData *) data;
-    PyObject *retval;
-    PyGILState_STATE gil;
-
-    gil = pyglib_gil_state_ensure();
-    if (child_data->data)
-        retval = PyObject_CallFunction(child_data->func, "iiO", pid, status,
-                                       child_data->data);
-    else
-        retval = PyObject_CallFunction(child_data->func, "ii", pid, status);
-
-    if (retval)
-       Py_DECREF(retval);
-    else
-       PyErr_Print();
-
-    pyglib_gil_state_release(gil);
-}
-
-static void
-child_watch_dnotify(gpointer data)
-{
-    struct _PyGChildData *child_data = (struct _PyGChildData *) data;
-    Py_DECREF(child_data->func);
-    Py_XDECREF(child_data->data);
-    g_slice_free(struct _PyGChildData, child_data);
-}
-
-
-static PyObject *
-pyglib_child_watch_add(PyObject *unused, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "pid", "function", "data", "priority", NULL };
-    guint id;
-    gint priority = G_PRIORITY_DEFAULT;
-    int pid;
-    PyObject *func, *user_data = NULL;
-    struct _PyGChildData *child_data;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                    "iO|Oi:glib.child_watch_add", kwlist,
-                                     &pid, &func, &user_data, &priority))
-        return NULL;
-    if (!PyCallable_Check(func)) {
-        PyErr_SetString(PyExc_TypeError,
-                        "_glib.child_watch_add: second argument must be callable");
-        return NULL;
-    }
-
-    child_data = g_slice_new(struct _PyGChildData);
-    child_data->func = func;
-    child_data->data = user_data;
-    Py_INCREF(child_data->func);
-    if (child_data->data)
-        Py_INCREF(child_data->data);
-    id = g_child_watch_add_full(priority, pid, child_watch_func,
-                                child_data, child_watch_dnotify);
-    return PYGLIB_PyLong_FromLong(id);
-}
-
-static PyObject *
-pyglib_markup_escape_text(PyObject *unused, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "text", NULL };
-    char *text_in, *text_out;
-    Py_ssize_t text_size;
-    PyObject *retval;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                    "s#:glib.markup_escape_text", kwlist,
-                                     &text_in, &text_size))
-        return NULL;
-
-    text_out = g_markup_escape_text(text_in, text_size);
-    retval = PYGLIB_PyUnicode_FromString(text_out);
-    g_free(text_out);
-    return retval;
-}
-
-static PyObject *
-pyglib_get_current_time(PyObject *unused)
-{
-    GTimeVal timeval;
-
-    g_get_current_time(&timeval);
-    return pyglib_float_from_timeval(timeval);
-}
-
-static PyObject*
-get_user_dir(const char *path)
-{
-    if (path)
-        return PYGLIB_PyUnicode_FromString(path);
-    else {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-}
-
-static PyObject*
-pyglib_get_user_config_dir(PyObject *self)
-{
-    return get_user_dir(g_get_user_config_dir());
-}
-
-static PyObject*
-pyglib_get_user_cache_dir(PyObject *self)
-{
-    return get_user_dir(g_get_user_cache_dir());
-}
-
-static PyObject*
-pyglib_get_user_data_dir(PyObject *self)
-{
-    return get_user_dir(g_get_user_data_dir());
-}
-
-static PyObject *
-pyglib_get_user_special_dir(PyObject *unused, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "directory", NULL };
-    guint directory;
-    const char *path;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "i:glib.get_user_special_dir", kwlist,
-                                     &directory))
-        return NULL;
-
-    path = g_get_user_special_dir(directory);
-    if (path)
-        return PYGLIB_PyUnicode_FromString(path);
-    else {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-}
-
-static PyObject *
-pyglib_main_depth(PyObject *unused)
-{
-    return PYGLIB_PyLong_FromLong(g_main_depth());
-}
-
-static PyObject *
-pyglib_filename_display_name(PyObject *self, PyObject *args)
-{
-    PyObject *py_display_name;
-    char *filename, *display_name;
-    
-    if (!PyArg_ParseTuple(args, "s:glib.filename_display_name",
-                         &filename))
-       return NULL;
-
-    display_name = g_filename_display_name(filename);
-    py_display_name = PyUnicode_DecodeUTF8(display_name,
-                                          strlen(display_name), NULL);
-    g_free(display_name);
-    return py_display_name;
-}
-
-static PyObject *
-pyglib_filename_display_basename(PyObject *self, PyObject *args)
-{
-    PyObject *py_display_basename;
-    char *filename, *display_basename;
-    
-    if (!PyArg_ParseTuple(args, "s:glib.filename_display_basename",
-                         &filename))
-       return NULL;
-
-    display_basename = g_filename_display_basename(filename);
-    py_display_basename = PyUnicode_DecodeUTF8(display_basename,
-                                              strlen(display_basename), NULL);
-    g_free(display_basename);
-    return py_display_basename;
-}
-
-static PyObject *
-pyglib_filename_from_utf8(PyObject *self, PyObject *args)
-{
-    char *filename, *utf8string;
-    Py_ssize_t utf8string_len;
-    gsize bytes_written;
-    GError *error = NULL;
-    PyObject *py_filename;
-    
-    if (!PyArg_ParseTuple(args, "s#:glib.filename_from_utf8",
-                         &utf8string, &utf8string_len))
-       return NULL;
-
-    filename = g_filename_from_utf8(utf8string, utf8string_len,
-                                   NULL, &bytes_written, &error);
-    if (pyglib_error_check(&error)) {
-        g_free(filename);
-        return NULL;
-    }
-    py_filename = PYGLIB_PyUnicode_FromStringAndSize(filename, bytes_written);
-    g_free(filename);
-    return py_filename;
-}
-
-
-static PyObject*
-pyglib_get_application_name(PyObject *self)
-{
-    const char *name;
-
-    name = g_get_application_name();
-    if (!name) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    return PYGLIB_PyUnicode_FromString(name);
-}
-
-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(repr));
-       Py_DECREF(repr);
-       return NULL;
-    }
-    g_set_application_name(PYGLIB_PyUnicode_AsString(arg));
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject*
-pyglib_get_prgname(PyObject *self)
-{
-    char *name;
-
-    name = g_get_prgname();
-    if (!name) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-    return PYGLIB_PyUnicode_FromString(name);
-}
-
-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(repr));
-       Py_DECREF(repr);
-       return NULL;
-    }
-    g_set_prgname(PYGLIB_PyUnicode_AsString(arg));
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-pyglib_find_program_in_path(PyObject *unused, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "program", NULL };
-    char *program, *ret;
-    PyObject *retval;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                    "s:glib.find_program_in_path", kwlist,
-                                     &program))
-        return NULL;
-
-    ret = g_find_program_in_path(program);
-
-    if (ret != NULL) {
-        retval = PYGLIB_PyUnicode_FromString(ret);
-        g_free(ret);
-    } else {
-        Py_INCREF(Py_None);
-        retval = Py_None;
-    }
-    return retval;
-}
-
-static PyObject *
-pyglib_uri_list_extract_uris(PyObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "uri_list", NULL };
-    char *uri_list;
-    char **uris, **tmp;
-    int i = 0, j;
-    PyObject *ret;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,"s:uri_list_extract_uris", kwlist, &uri_list))
-        return NULL;
-
-    uris = (char **)g_uri_list_extract_uris(uri_list);
-    if (!uris) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-
-    tmp = uris;
-    while (*tmp)
-        tmp++, i++;
-
-    ret = PyTuple_New(i);
-    for (j = 0; j < i; j++)
-        PyTuple_SetItem(ret, j, PYGLIB_PyUnicode_FromString(uris[j]));
-
-    g_strfreev(uris);
-
-    return ret;
-}
-
-/* FIXME: we should use strv_to_pylist (in pygio-utils.h) here, but that
- * function should be moved into pyglib first. See
- * https://bugzilla.gnome.org/show_bug.cgi?id=630508
- */
-static PyObject *
-tuple_of_strings_from_dirs(const gchar* const *dirs)
-{
-    char **tmp;
-    int i = 0, j;
-    PyObject *ret;
-
-    if (!dirs) {
-        Py_INCREF(Py_None);
-        return Py_None;
-    }
-
-    tmp = (char **)dirs;
-    while (*tmp)
-        tmp++, i++;
-
-    ret = PyTuple_New(i);
-    for (j = 0; j < i; j++)
-        PyTuple_SetItem(ret, j, PYGLIB_PyUnicode_FromString(dirs[j]));
-
-    return ret;
-}
-
-static PyObject*
-pyglib_get_system_config_dirs(PyObject *self)
-{
-    return tuple_of_strings_from_dirs(g_get_system_config_dirs());
-}
-
-static PyObject*
-pyglib_get_system_data_dirs(PyObject *self)
-{
-    return tuple_of_strings_from_dirs(g_get_system_data_dirs());
-}
-
 static PyMethodDef _glib_functions[] = {
     { "threads_init",
       (PyCFunction) pyglib_threads_init, METH_NOARGS,
@@ -692,49 +53,6 @@ static PyMethodDef _glib_functions[] = {
       "Initialize GLib for use from multiple threads. If you also use GTK+\n"
       "itself (i.e. GUI, not just PyGObject), use gtk.gdk.threads_init()\n"
       "instead." },
-    { "idle_add",
-      (PyCFunction)pyglib_idle_add, METH_VARARGS|METH_KEYWORDS,
-      "idle_add(callable, user_data=None, priority=None) -> source id\n"
-      "  callable receives (user_data)\n"
-      "Adds a callable to be called whenever there are no higher priority\n"
-      "events pending to the default main loop." },
-    { "timeout_add",
-      (PyCFunction)pyglib_timeout_add, METH_VARARGS|METH_KEYWORDS,
-      "timeout_add(interval, callable, user_data=None,\n"
-      "            priority=None) -> source id\n"
-      "  callable receives (user_data)\n"
-      "Sets a callable be called repeatedly until it returns False." },
-    { "timeout_add_seconds",
-      (PyCFunction)pyglib_timeout_add_seconds, METH_VARARGS|METH_KEYWORDS,
-      "timeout_add(interval, callable, user_data=None,\n"
-      "            priority=None) -> source_id\n"
-      "  callable receives (user_data)\n"
-      "Sets a callable be called repeatedly until it returns False.\n"
-      "Use this if you want to have a timer in the \"seconds\" range\n"
-      "and do not care about the exact time of the first call of the\n"
-      "timer, use this for more efficient system power usage." },
-    { "io_add_watch",
-      (PyCFunction)pyglib_io_add_watch, METH_VARARGS|METH_KEYWORDS,
-      "io_add_watch(fd, condition, callback, user_data=None) -> source id\n"
-      "  callable receives (fd, condition, user_data)\n"
-      "Arranges for the fd to be monitored by the main loop for the\n"
-      "specified condition. Condition is a combination of glib.IO_IN,\n"
-      "glib.IO_OUT, glib.IO_PRI, gio.IO_ERR and gio.IO_HUB.\n" },
-    { "child_watch_add",
-      (PyCFunction)pyglib_child_watch_add, METH_VARARGS|METH_KEYWORDS,
-      "child_watch_add(pid, callable, user_data=None,\n"
-                       "priority=None) -> source id\n"
-      "  callable receives (pid, condition, user_data)\n"
-      "Sets the function specified by function to be called with the user\n"
-      "data specified by data when the child indicated by pid exits.\n"
-      "Condition is a combination of glib.IO_IN, glib.IO_OUT, glib.IO_PRI,\n"
-      "gio.IO_ERR and gio.IO_HUB." },
-    { "source_remove",
-      (PyCFunction)pyglib_source_remove, METH_VARARGS,
-      "source_remove(source_id) -> True if removed\n"
-      "Removes the event source specified by source id as returned by the\n"
-      "glib.idle_add(), glib.timeout_add() or glib.io_add_watch()\n"
-      "functions." },
     { "spawn_async",
       (PyCFunction)pyglib_spawn_async, METH_VARARGS|METH_KEYWORDS,
       "spawn_async(argv, envp=None, working_directory=None,\n"
@@ -743,53 +61,6 @@ static PyMethodDef _glib_functions[] = {
       "            standard_error=None) -> (pid, stdin, stdout, stderr)\n"
       "Execute a child program asynchronously within a glib.MainLoop()\n"
       "See the reference manual for a complete reference." },
-    { "main_context_default",
-      (PyCFunction)pyglib_main_context_default, METH_NOARGS,
-      "main_context_default() -> a main context\n"
-      "Returns the default main context. This is the main context used\n"
-      "for main loop functions when a main loop is not explicitly specified." },
-    { "main_depth",
-      (PyCFunction)pyglib_main_depth, METH_NOARGS,
-      "main_depth() -> stack depth\n"
-      "Returns the depth of the stack of calls in the main context." },
-    { "filename_display_name",
-      (PyCFunction)pyglib_filename_display_name, METH_VARARGS },
-    { "filename_display_basename",
-      (PyCFunction)pyglib_filename_display_basename, METH_VARARGS },
-    { "filename_from_utf8",
-      (PyCFunction)pyglib_filename_from_utf8, METH_VARARGS },
-    { "get_application_name",
-      (PyCFunction)pyglib_get_application_name, METH_NOARGS },
-    { "set_application_name",
-      (PyCFunction)pyglib_set_application_name, METH_O },
-    { "get_prgname",
-      (PyCFunction)pyglib_get_prgname, METH_NOARGS },
-    { "set_prgname",
-      (PyCFunction)pyglib_set_prgname, METH_O },
-    { "get_current_time",
-      (PyCFunction)pyglib_get_current_time, METH_NOARGS },
-    { "get_user_cache_dir",
-      (PyCFunction)pyglib_get_user_cache_dir, METH_NOARGS },
-    { "get_user_config_dir",
-      (PyCFunction)pyglib_get_user_config_dir, METH_NOARGS },
-    { "get_user_data_dir",
-      (PyCFunction)pyglib_get_user_data_dir, METH_NOARGS },
-    { "get_user_special_dir",
-      (PyCFunction)pyglib_get_user_special_dir, METH_VARARGS|METH_KEYWORDS },
-    { "markup_escape_text",
-      (PyCFunction)pyglib_markup_escape_text, METH_VARARGS|METH_KEYWORDS },
-    { "find_program_in_path",
-      (PyCFunction)pyglib_find_program_in_path, METH_VARARGS|METH_KEYWORDS },
-    { "uri_list_extract_uris",
-      (PyCFunction)pyglib_uri_list_extract_uris, METH_VARARGS|METH_KEYWORDS,
-      "uri_list_extract_uris(uri_list) -> tuple of strings holding URIs\n"
-      "Splits an string containing an URI list conforming to the \n"
-      "text/uri-list mime type defined in RFC 2483 into individual URIs, \n"
-      "discarding any comments. The URIs are not validated." },
-    { "get_system_config_dirs",
-      (PyCFunction)pyglib_get_system_config_dirs, METH_NOARGS },
-    { "get_system_data_dirs",
-      (PyCFunction)pyglib_get_system_data_dirs, METH_NOARGS },
     { NULL, NULL, 0 }
 };
 
@@ -800,7 +71,7 @@ static struct _PyGLib_Functions pyglib_api = {
     NULL,  /* gerror_exception */
     NULL,  /* block_threads */
     NULL,  /* unblock_threads */
-    pyg_main_context_new,
+    NULL,  /* pyg_main_context_new */
     pyg_option_context_new,
     pyg_option_group_new,
 };
@@ -836,143 +107,12 @@ pyglib_register_error(PyObject *d)
     pyglib_api.gerror_exception = gerror_class;
 }
 
-static void
-pyglib_register_version_tuples(PyObject *d)
-{
-    PyObject *o;
-
-    /* glib version */
-    o = Py_BuildValue("(iii)", glib_major_version, glib_minor_version,
-                     glib_micro_version);
-    PyDict_SetItemString(d, "glib_version", o);
-    Py_DECREF(o);
-
-    /* pyglib version */
-    o = Py_BuildValue("(iii)",
-                     PYGLIB_MAJOR_VERSION,
-                     PYGLIB_MINOR_VERSION,
-                     PYGLIB_MICRO_VERSION);
-    PyDict_SetItemString(d, "pyglib_version", o);
-    Py_DECREF(o);
-}
-
-static void
-pyglib_register_constants(PyObject *m)
-{
-    PyModule_AddIntConstant(m, "SPAWN_LEAVE_DESCRIPTORS_OPEN",
-                           G_SPAWN_LEAVE_DESCRIPTORS_OPEN);
-    PyModule_AddIntConstant(m, "SPAWN_DO_NOT_REAP_CHILD",
-                           G_SPAWN_DO_NOT_REAP_CHILD);
-    PyModule_AddIntConstant(m, "SPAWN_SEARCH_PATH",
-                           G_SPAWN_SEARCH_PATH);
-    PyModule_AddIntConstant(m, "SPAWN_STDOUT_TO_DEV_NULL",
-                           G_SPAWN_STDOUT_TO_DEV_NULL);
-    PyModule_AddIntConstant(m, "SPAWN_STDERR_TO_DEV_NULL",
-                           G_SPAWN_STDERR_TO_DEV_NULL);
-    PyModule_AddIntConstant(m, "SPAWN_CHILD_INHERITS_STDIN",
-                           G_SPAWN_CHILD_INHERITS_STDIN);
-    PyModule_AddIntConstant(m, "SPAWN_FILE_AND_ARGV_ZERO",
-                           G_SPAWN_FILE_AND_ARGV_ZERO);
-
-    PyModule_AddIntConstant(m, "PRIORITY_HIGH",
-                           G_PRIORITY_HIGH);
-    PyModule_AddIntConstant(m, "PRIORITY_DEFAULT",
-                           G_PRIORITY_DEFAULT);
-    PyModule_AddIntConstant(m, "PRIORITY_HIGH_IDLE",
-                           G_PRIORITY_HIGH_IDLE);
-    PyModule_AddIntConstant(m, "PRIORITY_DEFAULT_IDLE",
-                           G_PRIORITY_DEFAULT_IDLE);
-    PyModule_AddIntConstant(m, "PRIORITY_LOW",
-                           G_PRIORITY_LOW);
-
-    PyModule_AddIntConstant(m, "IO_IN",   G_IO_IN);
-    PyModule_AddIntConstant(m, "IO_OUT",  G_IO_OUT);
-    PyModule_AddIntConstant(m, "IO_PRI",  G_IO_PRI);
-    PyModule_AddIntConstant(m, "IO_ERR",  G_IO_ERR);
-    PyModule_AddIntConstant(m, "IO_HUP",  G_IO_HUP);
-    PyModule_AddIntConstant(m, "IO_NVAL", G_IO_NVAL);
-
-    PyModule_AddIntConstant(m, "IO_STATUS_ERROR",
-                           G_IO_STATUS_ERROR);
-    PyModule_AddIntConstant(m, "IO_STATUS_NORMAL",
-                           G_IO_STATUS_NORMAL);
-    PyModule_AddIntConstant(m, "IO_STATUS_EOF",
-                           G_IO_STATUS_EOF);
-    PyModule_AddIntConstant(m, "IO_STATUS_AGAIN",
-                           G_IO_STATUS_AGAIN);
-    PyModule_AddIntConstant(m, "IO_FLAG_APPEND",
-                           G_IO_FLAG_APPEND);
-    PyModule_AddIntConstant(m, "IO_FLAG_NONBLOCK",
-                           G_IO_FLAG_NONBLOCK);
-    PyModule_AddIntConstant(m, "IO_FLAG_IS_READABLE",
-                           G_IO_FLAG_IS_READABLE);
-    PyModule_AddIntConstant(m, "IO_FLAG_IS_WRITEABLE",
-                           G_IO_FLAG_IS_WRITEABLE);
-    PyModule_AddIntConstant(m, "IO_FLAG_IS_SEEKABLE",
-                           G_IO_FLAG_IS_SEEKABLE);
-    PyModule_AddIntConstant(m, "IO_FLAG_MASK",
-                           G_IO_FLAG_MASK);
-    PyModule_AddIntConstant(m, "IO_FLAG_GET_MASK",
-                           G_IO_FLAG_GET_MASK);
-    PyModule_AddIntConstant(m, "IO_FLAG_SET_MASK",
-                           G_IO_FLAG_SET_MASK);
-
-    PyModule_AddIntConstant(m, "OPTION_FLAG_HIDDEN",
-                           G_OPTION_FLAG_HIDDEN);
-    PyModule_AddIntConstant(m, "OPTION_FLAG_IN_MAIN",
-                           G_OPTION_FLAG_IN_MAIN);
-    PyModule_AddIntConstant(m, "OPTION_FLAG_REVERSE",
-                           G_OPTION_FLAG_REVERSE);
-    PyModule_AddIntConstant(m, "OPTION_FLAG_NO_ARG",
-                           G_OPTION_FLAG_NO_ARG);
-    PyModule_AddIntConstant(m, "OPTION_FLAG_FILENAME",
-                           G_OPTION_FLAG_FILENAME);
-    PyModule_AddIntConstant(m, "OPTION_FLAG_OPTIONAL_ARG",
-                           G_OPTION_FLAG_OPTIONAL_ARG);
-    PyModule_AddIntConstant(m, "OPTION_FLAG_NOALIAS",
-                           G_OPTION_FLAG_NOALIAS); 
-
-    PyModule_AddIntConstant(m, "OPTION_ERROR_UNKNOWN_OPTION",
-                           G_OPTION_ERROR_UNKNOWN_OPTION);
-    PyModule_AddIntConstant(m, "OPTION_ERROR_BAD_VALUE",
-                           G_OPTION_ERROR_BAD_VALUE);
-    PyModule_AddIntConstant(m, "OPTION_ERROR_FAILED",
-                           G_OPTION_ERROR_FAILED);
-    PyModule_AddIntConstant(m, "USER_DIRECTORY_DESKTOP",
-                            G_USER_DIRECTORY_DESKTOP);
-    PyModule_AddIntConstant(m, "USER_DIRECTORY_DOCUMENTS",
-                            G_USER_DIRECTORY_DOCUMENTS);
-    PyModule_AddIntConstant(m, "USER_DIRECTORY_DOWNLOAD",
-                            G_USER_DIRECTORY_DOWNLOAD);
-    PyModule_AddIntConstant(m, "USER_DIRECTORY_MUSIC",
-                            G_USER_DIRECTORY_MUSIC);
-    PyModule_AddIntConstant(m, "USER_DIRECTORY_PICTURES",
-                            G_USER_DIRECTORY_PICTURES);
-    PyModule_AddIntConstant(m, "USER_DIRECTORY_PUBLIC_SHARE",
-                            G_USER_DIRECTORY_PUBLIC_SHARE);
-    PyModule_AddIntConstant(m, "USER_DIRECTORY_TEMPLATES",
-                            G_USER_DIRECTORY_TEMPLATES);
-    PyModule_AddIntConstant(m, "USER_DIRECTORY_VIDEOS",
-                            G_USER_DIRECTORY_VIDEOS);
-
-    PyModule_AddStringConstant(m, "OPTION_REMAINING",
-                              G_OPTION_REMAINING);
-    PyModule_AddStringConstant(m, "OPTION_ERROR",
-                              (char*) g_quark_to_string(G_OPTION_ERROR));
-}
-
 PYGLIB_MODULE_START(_glib, "_glib")
 {
     PyObject *d = PyModule_GetDict(module);
 
-    pyglib_register_constants(module);
     pyglib_register_api(d);
     pyglib_register_error(d);
-    pyglib_register_version_tuples(d);
-    pyglib_iochannel_register_types(d);
-    pyglib_mainloop_register_types(d);
-    pyglib_maincontext_register_types(d);
     pyglib_source_register_types(d);
     pyglib_spawn_register_types(d);
     pyglib_option_context_register_types(d);
index afc13ac..54e802f 100644 (file)
@@ -33,6 +33,7 @@ import sys
 import optparse
 from optparse import OptParseError, OptionError, OptionValueError, \
     BadOptionError, OptionConflictError
+from ..module import get_introspection_module
 
 if sys.version_info >= (3, 0):
     _basestring = str
@@ -41,9 +42,10 @@ else:
     _basestring = basestring
     _bytes = str
 
-import gi._glib
-gi  # pyflakes
-_glib = sys.modules['gi._glib._glib']
+from gi._glib import _glib
+GLib = get_introspection_module('GLib')
+
+OPTION_CONTEXT_ERROR_QUARK = GLib.quark_to_string(GLib.option_error_quark())
 
 __all__ = [
     "OptParseError",
@@ -92,7 +94,7 @@ class Option(optparse.Option):
         'optional_arg',
     ]
 
-    REMAINING = '--' + _glib.OPTION_REMAINING
+    REMAINING = '--' + GLib.OPTION_REMAINING
 
     def __init__(self, *args, **kwargs):
         optparse.Option.__init__(self, *args, **kwargs)
@@ -118,19 +120,19 @@ class Option(optparse.Option):
         flags = 0
 
         if self.hidden:
-            flags |= _glib.OPTION_FLAG_HIDDEN
+            flags |= GLib.OptionFlags.HIDDEN
 
         if self.in_main:
-            flags |= _glib.OPTION_FLAG_IN_MAIN
+            flags |= GLib.OptionFlags.IN_MAIN
 
         if self.takes_value():
             if self.optional_arg:
-                flags |= _glib.OPTION_FLAG_OPTIONAL_ARG
+                flags |= GLib.OptionFlags.OPTIONAL_ARG
         else:
-            flags |= _glib.OPTION_FLAG_NO_ARG
+            flags |= GLib.OptionFlags.NO_ARG
 
         if self.type == 'filename':
-            flags |= _glib.OPTION_FLAG_FILENAME
+            flags |= GLib.OptionFlags.FILENAME
 
         for (long_name, short_name) in zip(self._long_opts, self._short_opts):
             yield (long_name[2:], _bytes(short_name[1]), flags, self.help, self.metavar)
@@ -195,8 +197,8 @@ class OptionGroup(optparse.OptionGroup):
             except OptionValueError:
                 error = sys.exc_info()[1]
                 gerror = _glib.GError(str(error))
-                gerror.domain = _glib.OPTION_ERROR
-                gerror.code = _glib.OPTION_ERROR_BAD_VALUE
+                gerror.domain = OPTION_CONTEXT_ERROR_QUARK
+                gerror.code = GLib.OptionError.BAD_VALUE
                 gerror.message = str(error)
                 raise gerror
 
@@ -340,13 +342,13 @@ class OptionParser(optparse.OptionParser):
                 self, args, values)
         except _glib.GError:
             error = sys.exc_info()[1]
-            if error.domain != _glib.OPTION_ERROR:
+            if error.domain != OPTION_CONTEXT_ERROR_QUARK:
                 raise
-            if error.code == _glib.OPTION_ERROR_BAD_VALUE:
+            if error.code == GLib.OptionError.BAD_VALUE:
                 raise OptionValueError(error.message)
-            elif error.code == _glib.OPTION_ERROR_UNKNOWN_OPTION:
+            elif error.code == GLib.OptionError.UNKNOWN_OPTION:
                 raise BadOptionError(error.message)
-            elif error.code == _glib.OPTION_ERROR_FAILED:
+            elif error.code == GLib.OptionError.FAILED:
                 raise OptParseError(error.message)
             else:
                 raise
diff --git a/gi/_glib/pygiochannel.c b/gi/_glib/pygiochannel.c
deleted file mode 100644 (file)
index 2211355..0000000
+++ /dev/null
@@ -1,766 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*- */
-
-#ifdef HAVE_CONFIG_H
-#  include <config.h>
-#endif
-
-#include <Python.h>
-#include <pythread.h>
-#include <structmember.h> /* for PyMemberDef */
-
-#include "pyglib.h"
-#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("gi._glib.IOChannel", PyGIOChannel_Type, PyGIOChannel)
-
-static PyObject*
-py_io_channel_next(PyGIOChannel *self)
-{
-    PyObject* ret_obj = NULL;
-    gsize length = 0, terminator_pos;
-    gchar *str_return = NULL;
-    GError *error = NULL;
-    GIOStatus status;
-
-    status = g_io_channel_read_line(self->channel, &str_return, &length,
-                                    &terminator_pos, &error);
-    if (pyglib_error_check(&error))
-        return NULL;
-
-    if (status == G_IO_STATUS_EOF) {
-        PyErr_SetString(PyExc_StopIteration, "EOF");
-        return NULL;
-    }
-
-    ret_obj = PYGLIB_PyUnicode_FromStringAndSize(str_return, length);
-    g_free(str_return);
-    return ret_obj;
-}
-
-static PyObject*
-py_io_channel_richcompare(PyObject *self, PyObject *other, int op)
-{
-    if (Py_TYPE(self) == Py_TYPE(other) && 
-          Py_TYPE(self) == &PyGIOChannel_Type) {
-        return _pyglib_generic_ptr_richcompare(((PyGIOChannel*)self)->channel,
-                                               ((PyGIOChannel*)other)->channel,
-                                               op);
-    } else {
-       Py_INCREF(Py_NotImplemented);
-       return Py_NotImplemented;
-    }
-}
-
-static PyObject*
-py_io_channel_get_iter(PyObject *self)
-{
-    Py_INCREF(self);
-    return self;
-}
-
-static long
-py_io_channel_hash(PyGIOChannel *self)
-{
-    return (long) self->channel;
-}
-
-static void
-py_io_channel_dealloc(PyGIOChannel *self)
-{
-    if (self->channel)
-        g_io_channel_unref(self->channel);
-    PyObject_DEL(self);
-}
-
-static PyObject*
-py_io_channel_shutdown(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "flush", NULL };
-    GIOStatus ret;
-    PyObject* flush = Py_True;
-    GError* error = NULL;
-
-    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);
-    if (pyglib_error_check(&error))
-       return NULL;
-       
-    return PYGLIB_PyLong_FromLong(ret);
-}
-
-/* character encoding conversion involved functions.
- */
-static PyObject*
-py_io_channel_set_buffer_size(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "size", NULL };
-    int 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);
-    
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject*
-py_io_channel_get_buffer_size(PyGIOChannel* self)
-{
-    return PYGLIB_PyLong_FromLong(g_io_channel_get_buffer_size(self->channel));
-}
-
-static PyObject*
-py_io_channel_set_buffered(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "buffered", NULL };
-    int buffered;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i:gi._glib.IOChannel.set_buffered", kwlist, &buffered))
-        return NULL;
-       
-    g_io_channel_set_buffered(self->channel, buffered);
-    
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject*
-py_io_channel_get_buffered(PyGIOChannel* self)
-{
-    return PYGLIB_PyLong_FromLong(g_io_channel_get_buffered(self->channel));
-}
-
-static PyObject*
-py_io_channel_set_encoding(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "encoding", NULL };
-    const char* encoding;
-    GError* error = NULL;
-    
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "z:gi._glib.IOChannel.set_encoding", kwlist, &encoding))
-        return NULL;
-    
-    g_io_channel_set_encoding(self->channel, encoding, &error);
-    if (pyglib_error_check(&error))
-       return NULL;
-    
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject*
-py_io_channel_get_encoding(PyGIOChannel* self)
-{
-    const char* encoding = g_io_channel_get_encoding(self->channel);
-    
-    if (encoding == NULL) {
-       Py_INCREF(Py_None);
-       return Py_None;
-    }
-
-    return PYGLIB_PyUnicode_FromString(encoding);
-}
-
-#define CHUNK_SIZE (8 * 1024)
-
-static PyObject*
-py_io_channel_read_chars(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "max_count", NULL };
-    int max_count = -1;
-    PyObject* ret_obj = NULL;
-    gsize total_read = 0;
-    GError* error = NULL;
-    GIOStatus status = G_IO_STATUS_NORMAL;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i:gi._glib.IOChannel.read", kwlist, &max_count))
-        return NULL;
-       
-    if (max_count == 0)
-       return PYGLIB_PyUnicode_FromString("");
-    
-    while (status == G_IO_STATUS_NORMAL
-          && (max_count == -1 || total_read < max_count)) {
-       gsize single_read;
-       char* buf;
-       gsize buf_size;
-       
-       if (max_count == -1) 
-           buf_size = CHUNK_SIZE;
-       else {
-           buf_size = max_count - total_read;
-           if (buf_size > CHUNK_SIZE)
-               buf_size = CHUNK_SIZE;
-        }
-       
-       if ( ret_obj == NULL ) {
-           ret_obj = PYGLIB_PyBytes_FromStringAndSize((char *)NULL, buf_size);
-           if (ret_obj == NULL)
-               goto failure;
-       }
-       else if (buf_size + total_read > PYGLIB_PyBytes_Size(ret_obj)) {
-           if (PYGLIB_PyBytes_Resize(&ret_obj, buf_size + total_read) == -1)
-               goto failure;
-       }
-       
-        buf = PYGLIB_PyBytes_AsString(ret_obj) + total_read;
-
-        pyglib_unblock_threads();
-        status = g_io_channel_read_chars(self->channel, buf, buf_size, 
-                                         &single_read, &error);
-        pyglib_block_threads();
-       if (pyglib_error_check(&error))
-           goto failure;
-       
-       total_read += single_read;
-    }
-       
-    if ( total_read != PYGLIB_PyBytes_Size(ret_obj) ) {
-       if (PYGLIB_PyBytes_Resize(&ret_obj, total_read) == -1)
-           goto failure;
-    }
-
-#if PY_VERSION_HEX >= 0x03000000
-    /* If this is not UTF8 encoded channel return the raw bytes */
-    if (g_io_channel_get_encoding(self->channel) != NULL)
-        return ret_obj;
-
-    /* convert to Unicode string */
-    {
-       PyObject *unicode_obj;
-
-       unicode_obj = PyUnicode_FromString(PyBytes_AS_STRING(ret_obj));
-       if (unicode_obj == NULL)
-           goto failure;
-       Py_DECREF(ret_obj);
-       ret_obj = unicode_obj;
-    }
-#endif
-
-    return ret_obj;
-
-  failure:
-    Py_XDECREF(ret_obj);
-    return NULL;
-}
-
-static PyObject*
-py_io_channel_write_chars(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "buf", NULL };
-    const char* buf;
-    Py_ssize_t buf_len;
-    gsize count;
-    GError* error = NULL;
-    GIOStatus status;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s#:gi._glib.IOChannel.write",
-                                     kwlist, &buf, &buf_len))
-        return NULL;
-       
-    pyglib_unblock_threads();
-    status = g_io_channel_write_chars(self->channel, buf, buf_len, &count, &error);
-    pyglib_block_threads();
-    if (pyglib_error_check(&error))
-       return NULL;
-       
-    return PYGLIB_PyLong_FromLong(count);
-}
-
-static PyObject*
-py_io_channel_write_lines(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "lines", NULL };
-    char *buf;
-    Py_ssize_t buf_len;
-    gsize count;
-    GError* error = NULL;
-    GIOStatus status;
-    PyObject *iter, *value, *pylines;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:gi._glib.IOChannel.writelines",
-                                     kwlist, &pylines))
-        return NULL;
-
-    iter = PyObject_GetIter(pylines);
-    
-    while (1) {
-        value = PyIter_Next(iter);
-        if (PyErr_ExceptionMatches(PyExc_StopIteration)) {
-            PyErr_Clear();
-            goto normal_exit;
-        }
-        if (!PYGLIB_PyUnicode_Check(value)) {
-            PyErr_SetString(PyExc_TypeError, "gi._glib.IOChannel.writelines must"
-                            " be sequence/iterator of strings");
-            Py_DECREF(iter);
-            return NULL;
-        }
-        PYGLIB_PyUnicode_AsStringAndSize(value, &buf, &buf_len);
-        pyglib_unblock_threads();
-        status = g_io_channel_write_chars(self->channel, buf, buf_len, &count, &error);
-        pyglib_unblock_threads();
-        Py_DECREF(value);
-        if (pyglib_error_check(&error)) {
-            Py_DECREF(iter);
-            return NULL;
-        }
-    }
-normal_exit:
-    Py_DECREF(iter);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject*
-py_io_channel_flush(PyGIOChannel* self)
-{
-    GError* error = NULL;
-    GIOStatus status;
-       
-    pyglib_unblock_threads();
-    status = g_io_channel_flush(self->channel, &error);
-    pyglib_block_threads();
-    if (pyglib_error_check(&error))
-       return NULL;
-       
-    return PYGLIB_PyLong_FromLong(status);
-}
-
-static PyObject*
-py_io_channel_set_flags(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "flags", NULL };
-    GIOFlags flags;
-    GIOStatus status;
-    GError* error = NULL;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i:gi._glib.IOChannel.set_flags",
-                                     kwlist, &flags))
-        return NULL;
-       
-    status = g_io_channel_set_flags(self->channel, flags, &error);
-    if (pyglib_error_check(&error))
-       return NULL;
-       
-    return PYGLIB_PyLong_FromLong(status);
-}
-
-static PyObject*
-py_io_channel_get_flags(PyGIOChannel* self)
-{
-    return PYGLIB_PyLong_FromLong(g_io_channel_get_flags(self->channel));
-}
-
-static PyObject*
-py_io_channel_get_buffer_condition(PyGIOChannel* self)
-{
-    return PYGLIB_PyLong_FromLong(g_io_channel_get_buffer_condition(self->channel));
-}
-
-static PyObject*
-py_io_channel_set_close_on_unref(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "do_close", NULL };
-    PyObject *do_close;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:gi._glib.IOChannel.set_close_on_unref",
-                                     kwlist, &do_close))
-        return NULL;
-       
-    g_io_channel_set_close_on_unref(self->channel, PyObject_IsTrue(do_close));
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject*
-py_io_channel_get_close_on_unref(PyGIOChannel* self)
-{
-    if (g_io_channel_get_close_on_unref(self->channel)) {
-        Py_INCREF(Py_True);
-        return Py_True;
-    } else {
-        Py_INCREF(Py_False);
-        return Py_False;
-    }
-}
-
-typedef struct {
-    PyObject *callback;
-    PyObject *iochannel;
-    PyObject *user_data;
-} PyGIOWatchData;
-
-static void
-pyg_iowatch_data_free(PyGIOWatchData *data)
-{
-    Py_DECREF(data->callback);
-    Py_XDECREF(data->user_data);
-    Py_DECREF(data->iochannel);
-    g_slice_free(PyGIOWatchData, data);
-}
-
-static gboolean
-pyg_iowatch_marshal(GIOChannel *source,
-                    GIOCondition condition,
-                    gpointer user_data)
-{
-    PyObject *ret;
-    gboolean res;
-    PyGIOWatchData *data = (PyGIOWatchData *) user_data;
-    PyGILState_STATE state;
-
-    g_return_val_if_fail(user_data != NULL, FALSE);
-    g_return_val_if_fail(((PyGIOChannel *) data->iochannel)->channel == source,
-                         FALSE);
-
-    state = pyglib_gil_state_ensure();
-
-    if (data->user_data)
-        ret = PyObject_CallFunction(data->callback, "OiO", data->iochannel,
-                                    condition, data->user_data);
-    else
-        ret = PyObject_CallFunction(data->callback, "Oi", data->iochannel,
-                                    condition);
-
-    if (!ret) {
-       PyErr_Print();
-       res = FALSE;
-    } else {
-       res = PyObject_IsTrue(ret);
-       Py_DECREF(ret);
-    }
-    pyglib_gil_state_release(state);
-
-    return res;
-}
-
-
-
-static PyObject *
-py_io_channel_add_watch(PyObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "condition", "callback", "user_data", "priority", NULL };
-    PyObject *callback, *user_data = NULL;
-    int priority = G_PRIORITY_DEFAULT, condition;
-    GIOChannel *iochannel = NULL;
-    guint handler_id;
-    PyGIOWatchData *data;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "iO|Oi:gi._glib.IOChannel.add_watch",
-                                     kwlist, &condition, &callback,
-                                     &user_data, &priority))
-        return NULL;
-
-    iochannel = ((PyGIOChannel *) self)->channel;
-
-    if (!PyCallable_Check(callback)) {
-        PyErr_SetString(PyExc_TypeError, "second must be callable");
-        return NULL;
-    }
-
-    data = g_slice_new(PyGIOWatchData);
-    data->callback = callback; Py_INCREF(callback);
-    data->user_data = user_data; Py_XINCREF(user_data);
-    data->iochannel = self; Py_INCREF(self);
-
-    handler_id = g_io_add_watch_full(iochannel,
-                                     priority, condition,
-                                    pyg_iowatch_marshal, data,
-                                    (GDestroyNotify) pyg_iowatch_data_free);
-    return PyLong_FromUnsignedLong(handler_id);
-}
-
-
-#ifdef G_OS_WIN32
-
-static PyObject *
-py_io_channel_win32_poll(PyObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "fds", "timeout", NULL };
-    GPollFD *pollfd;
-    PyObject *pyfds, *pyfd;
-    guint len, i;
-    gint timeout = -1;
-    gint result;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O!|i:gi._glib.IOChannel.win32_poll",
-                                     kwlist, &PyList_Type, &pyfds, &timeout))
-        return NULL;
-
-    len = PyList_Size(pyfds);
-    pollfd = g_newa(GPollFD, len);
-    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 gi._glib.PollFD objects");
-            return NULL;
-        }
-        pollfd[i] = ((PyGPollFD *) pyfd)->pollfd;
-    }
-
-    result = g_io_channel_win32_poll(pollfd, len, timeout);
-    for (i = 0; i < len; ++i) {
-        pyfd = PyList_GET_ITEM(pyfds, i);
-        ((PyGPollFD *) pyfd)->pollfd = pollfd[i];
-    }
-    return PYGLIB_PyLong_FromLong(result);
-}
-
-static PyObject *
-py_io_channel_win32_make_pollfd(PyObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "condition", NULL };
-    int condition;
-    GPollFD pollfd;
-    PyGPollFD *pypollfd;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "i:gi._glib.IOChannel.win32_make_pollfd",
-                                     kwlist, &condition))
-        return NULL;
-
-    g_io_channel_win32_make_pollfd(((PyGIOChannel *) self)->channel,
-                                   condition, &pollfd);
-    pypollfd = PyObject_NEW(PyGPollFD, &PyGPollFD_Type);
-    pypollfd->pollfd = pollfd;
-    return (PyObject *) pypollfd;
-}
-#endif /* def G_OS_WIN32 */
-
-
-static PyObject*
-py_io_channel_read_line(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "size", NULL };
-    PyObject* ret_obj = NULL;
-    gsize length = 0, terminator_pos;
-    gchar *str_return = NULL;
-    GError *error = NULL;
-    gint size_hint = -1;
-    GIOStatus status;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i:gi._glib.IOChannel.readline", kwlist,
-                                     &size_hint))
-        return NULL;
-
-    status = g_io_channel_read_line(self->channel, &str_return, &length,
-                                    &terminator_pos, &error);
-    if (pyglib_error_check(&error))
-        return NULL;
-    ret_obj = PYGLIB_PyUnicode_FromStringAndSize(str_return, length);
-    g_free(str_return);
-    return ret_obj;
-}
-
-static PyObject*
-py_io_channel_read_lines(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "size", NULL };
-    PyObject *line = NULL;
-    gsize length = 0, terminator_pos;
-    gchar *str_return = NULL;
-    GError *error = NULL;
-    gint size_hint = -1;
-    GIOStatus status = G_IO_STATUS_NORMAL;
-    PyObject *list;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|i:gi._glib.IOChannel.readlines", kwlist,
-                                     &size_hint))
-        return NULL;
-
-    list = PyList_New(0);
-    while (status == G_IO_STATUS_NORMAL) {
-        status = g_io_channel_read_line(self->channel, &str_return, &length,
-                                        &terminator_pos, &error);
-        if (pyglib_error_check(&error)) {
-            Py_DECREF(line);
-            return NULL;
-        }
-        line = PYGLIB_PyUnicode_FromStringAndSize(str_return, length);
-        g_free(str_return);
-        if (PyList_Append(list, line)) {
-            Py_DECREF(line);
-            Py_DECREF(list);
-            return NULL;
-        }
-    }
-    return list;
-}
-
-
-static PyObject*
-py_io_channel_seek(PyGIOChannel* self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "offset", "whence", NULL };
-    gint64 offset;
-    int whence = 0;
-    GIOStatus status;
-    GSeekType seek_type;
-    GError* error = NULL;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "L|i:gi._glib.IOChannel.seek",
-                                     kwlist, &offset, &whence))
-        return NULL;
-
-    switch (whence)
-    {
-    case 0: seek_type = G_SEEK_SET; break;
-    case 1: seek_type = G_SEEK_CUR; break;
-    case 2: seek_type = G_SEEK_END; break;
-    default:
-        PyErr_SetString(PyExc_ValueError, "invalid 'whence' value");
-        return NULL;
-    }
-       
-    status = g_io_channel_seek_position(self->channel, offset,
-                                        seek_type, &error);
-    if (pyglib_error_check(&error))
-       return NULL;
-       
-    return PYGLIB_PyLong_FromLong(status);
-}
-
-#if 0 // Not wrapped
-void                  g_io_channel_set_line_term        (GIOChannel   *channel,
-                                                        const gchar  *line_term,
-                                                        gint          length);
-
-G_CONST_RETURN gchar* g_io_channel_get_line_term        (GIOChannel   *channel,
-                                                        gint         *length);
-
-
-
-GIOStatus   g_io_channel_read_line_string (GIOChannel   *channel,
-                                          GString      *buffer,
-                                          gsize        *terminator_pos,
-                                          GError      **error);
-GIOStatus   g_io_channel_read_to_end      (GIOChannel   *channel,
-                                          gchar       **str_return,
-                                          gsize        *length,
-                                          GError      **error);
-GIOStatus   g_io_channel_read_unichar     (GIOChannel   *channel,
-                                          gunichar     *thechar,
-                                          GError      **error);
-GIOStatus   g_io_channel_write_unichar    (GIOChannel   *channel,
-                                          gunichar      thechar,
-                                          GError      **error);
-#endif // Not wrapped
-
-static PyMemberDef py_io_channel_members[] = {
-    { "softspace", T_INT, offsetof(PyGIOChannel, softspace), 0, NULL },
-    { NULL, 0, 0, 0, NULL }
-};
-
-static PyMethodDef py_io_channel_methods[] = {
-    { "close", (PyCFunction)py_io_channel_shutdown, METH_VARARGS|METH_KEYWORDS },
-    { "flush", (PyCFunction)py_io_channel_flush, METH_NOARGS },
-    { "set_encoding", (PyCFunction)py_io_channel_set_encoding, METH_VARARGS|METH_KEYWORDS },
-    { "get_encoding", (PyCFunction)py_io_channel_get_encoding, METH_NOARGS },
-    { "set_buffered", (PyCFunction)py_io_channel_set_buffered, METH_VARARGS|METH_KEYWORDS },
-    { "get_buffered", (PyCFunction)py_io_channel_get_buffered, METH_NOARGS },
-    { "set_buffer_size", (PyCFunction)py_io_channel_set_buffer_size, METH_VARARGS|METH_KEYWORDS },
-    { "get_buffer_size", (PyCFunction)py_io_channel_get_buffer_size, METH_NOARGS },
-    { "read", (PyCFunction)py_io_channel_read_chars, METH_VARARGS|METH_KEYWORDS },
-    { "readline", (PyCFunction)py_io_channel_read_line, METH_VARARGS|METH_KEYWORDS },
-    { "readlines", (PyCFunction)py_io_channel_read_lines, METH_VARARGS|METH_KEYWORDS },
-    { "write", (PyCFunction)py_io_channel_write_chars, METH_VARARGS|METH_KEYWORDS },
-    { "writelines", (PyCFunction)py_io_channel_write_lines, METH_VARARGS|METH_KEYWORDS },
-    { "set_flags", (PyCFunction)py_io_channel_set_flags, METH_VARARGS|METH_KEYWORDS },
-    { "get_flags", (PyCFunction)py_io_channel_get_flags, METH_NOARGS },
-    { "get_buffer_condition", (PyCFunction)py_io_channel_get_buffer_condition, METH_NOARGS },
-    { "set_close_on_unref", (PyCFunction)py_io_channel_set_close_on_unref, METH_VARARGS | METH_KEYWORDS },
-    { "get_close_on_unref", (PyCFunction)py_io_channel_get_close_on_unref, METH_NOARGS },
-    { "add_watch", (PyCFunction)py_io_channel_add_watch, METH_VARARGS|METH_KEYWORDS },
-    { "seek", (PyCFunction)py_io_channel_seek, METH_VARARGS|METH_KEYWORDS },
-#ifdef G_OS_WIN32
-    { "win32_make_pollfd", (PyCFunction)py_io_channel_win32_make_pollfd, METH_VARARGS | METH_KEYWORDS },
-    { "win32_poll", (PyCFunction)py_io_channel_win32_poll, METH_VARARGS|METH_KEYWORDS|METH_STATIC },
-#endif
-    { NULL, NULL, 0 }
-};
-
-
-static int
-py_io_channel_init(PyGIOChannel *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "filedes", "filename", "mode",
-#ifdef G_OS_WIN32
-                              "hwnd",
-#endif
-                              NULL };
-    int fd = -1;
-    char *mode = "r", *filename = NULL;
-    GError *error = NULL;
-#ifdef G_OS_WIN32
-    guint hwnd = 0;
-#endif
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|iss"
-#ifdef G_OS_WIN32
-                                     "I"
-#endif
-                                     ":gi._glib.IOChannel.__init__",
-                                     kwlist, &fd, &filename, &mode
-#ifdef G_OS_WIN32
-                                     , &hwnd
-#endif
-            ))
-        return -1;
-
-    if (fd != -1)
-        self->channel = g_io_channel_unix_new(fd);
-    else if (filename != NULL) {
-        self->channel = g_io_channel_new_file(filename, mode, &error);
-        if (pyglib_error_check(&error))
-            return -1;
-    }
-#ifdef G_OS_WIN32
-    else if (hwnd != 0) {
-        self->channel = g_io_channel_win32_new_messages(hwnd);
-    }
-#endif
-    else {
-#ifdef G_OS_WIN32
-        PyErr_SetString(PyExc_TypeError, "either a valid file descriptor, "
-                        "file name, or window handle must be supplied");
-#else
-        PyErr_SetString(PyExc_TypeError, "either a valid file descriptor "
-                        "or file name must be supplied");
-#endif
-        return -1;
-    }
-    return 0;
-}
-
-void
-pyglib_iochannel_register_types(PyObject *d)
-{
-    PyGIOChannel_Type.tp_init = (initproc)py_io_channel_init;
-    PyGIOChannel_Type.tp_dealloc = (destructor)py_io_channel_dealloc;
-    PyGIOChannel_Type.tp_flags = Py_TPFLAGS_DEFAULT;
-    PyGIOChannel_Type.tp_members = py_io_channel_members;
-    PyGIOChannel_Type.tp_methods = py_io_channel_methods;
-    PyGIOChannel_Type.tp_hash = (hashfunc)py_io_channel_hash;
-    PyGIOChannel_Type.tp_richcompare = (richcmpfunc)py_io_channel_richcompare;
-    PyGIOChannel_Type.tp_iter = (getiterfunc)py_io_channel_get_iter;
-    PyGIOChannel_Type.tp_iternext = (iternextfunc)py_io_channel_next;
-
-    PYGLIB_REGISTER_TYPE(d, PyGIOChannel_Type, "IOChannel");
-}
diff --git a/gi/_glib/pygiochannel.h b/gi/_glib/pygiochannel.h
deleted file mode 100644 (file)
index 9b03edd..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pyglib - Python bindings for GLib toolkit.
- * Copyright (C) 1998-2003  James Henstridge
- *               2004-2008  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 __PYG_IOCHANNEL_H__
-#define __PYG_IOCHANNEL_H__
-
-extern PyTypeObject PyGIOChannel_Type;
-
-void pyglib_iochannel_register_types(PyObject *d);
-
-#endif /* __PYG_IOCHANNEL_H__ */
index 3508f55..ef8a02e 100644 (file)
@@ -27,7 +27,6 @@
 #include <pythread.h>
 #include "pyglib.h"
 #include "pyglib-private.h"
-#include "pygmaincontext.h"
 #include "pygoptioncontext.h"
 #include "pygoptiongroup.h"
 
@@ -411,20 +410,6 @@ pyglib_register_exception_for_domain(gchar *name,
 }
 
 /**
- * pyglib_main_context_new:
- * @context: a GMainContext.
- *
- * Creates a wrapper for a GMainContext.
- *
- * Returns: the GMainContext wrapper.
- */
-PyObject *
-pyglib_main_context_new(GMainContext *context)
-{
-    return _PyGLib_API->main_context_new(context);
-}
-
-/**
  * pyg_option_group_transfer_group:
  * @group: a GOptionGroup wrapper
  *
@@ -486,22 +471,6 @@ pyglib_option_context_new (GOptionContext *context)
     return _PyGLib_API->option_context_new(context);
 }
 
-/**
- * pyglib_option_context_new:
- * @context: a GTimeVal struct
- *
- * Converts a GTimeVal struct to a python float
- *
- * Returns: a float representing the timeval
- */
-PyObject *
-pyglib_float_from_timeval(GTimeVal timeval)
-{
-    double ret;
-    ret = (double)timeval.tv_sec + (double)timeval.tv_usec * 0.000001;
-    return PyFloat_FromDouble(ret);
-}
-
 
 /****** Private *****/
 
index 261af7b..bc80d6d 100644 (file)
@@ -42,7 +42,6 @@ gboolean pyglib_gerror_exception_check(GError **error);
 PyObject *pyglib_register_exception_for_domain(gchar *name,
                                               gint error_domain);
 gboolean pyglib_threads_enabled(void);
-PyObject * pyglib_main_context_new(GMainContext *context);
 void pyglib_set_thread_block_funcs(PyGLibThreadBlockFunc block_threads_func,
                                   PyGLibThreadBlockFunc unblock_threads_func);
 void pyglib_block_threads(void);
@@ -50,7 +49,6 @@ void pyglib_unblock_threads(void);
 PyObject * pyglib_option_context_new(GOptionContext *context);
 PyObject * pyglib_option_group_new(GOptionGroup *group);
 GOptionGroup * pyglib_option_group_transfer_group(PyObject *self);
-PyObject * pyglib_float_from_timeval(GTimeVal timeval);
 
 /* Private: for gobject <-> glib interaction only. */
 void _pyglib_notify_on_enabling_threads(PyGLibThreadsEnabledFunc callback);
diff --git a/gi/_glib/pygmaincontext.c b/gi/_glib/pygmaincontext.c
deleted file mode 100644 (file)
index a4282ee..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygtk- Python bindings for the GTK toolkit.
- * Copyright (C) 1998-2003  James Henstridge
- *
- *   pygmaincontext.c: GMainContext wrapper
- *
- * 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 <pythread.h>
-#include <glib.h>
-#include "pygmaincontext.h"
-#include "pyglib.h"
-#include "pyglib-private.h"
-
-PYGLIB_DEFINE_TYPE("gi._glib.MainContext", PyGMainContext_Type, PyGMainContext)
-
-/**
- * pyg_main_context_new:
- * @context: a GMainContext.
- *
- * Creates a wrapper for a GMainContext.
- *
- * Returns: the GMainContext wrapper.
- */
-PyObject *
-pyg_main_context_new(GMainContext *context)
-{
-    PyGMainContext *self;
-
-    self = (PyGMainContext *)PyObject_NEW(PyGMainContext, &PyGMainContext_Type);
-    if (self == NULL)
-        return NULL;
-
-    self->context = g_main_context_ref(context);
-
-    return (PyObject *)self;
-}
-
-static int
-pyg_main_context_init(PyGMainContext *self)
-{
-    self->context = g_main_context_new();
-    return 0;
-}
-
-static void
-pyg_main_context_dealloc(PyGMainContext *self)
-{
-    if (self->context != NULL) {
-       g_main_context_unref(self->context);
-       self->context = NULL;
-    }
-
-    PyObject_Del(self);
-}
-
-static PyObject*
-pyg_main_context_richcompare(PyObject *self, PyObject *other, int op)
-{
-    if (Py_TYPE(self) == Py_TYPE(other) && Py_TYPE(self) == &PyGMainContext_Type)
-        return _pyglib_generic_ptr_richcompare(((PyGMainContext*)self)->context,
-                                               ((PyGMainContext*)other)->context,
-                                               op);
-    else {
-        Py_INCREF(Py_NotImplemented);
-        return Py_NotImplemented;
-    }
-}
-
-static PyObject *
-_wrap_g_main_context_iteration (PyGMainContext *self, PyObject *args)
-{
-    gboolean ret, may_block = TRUE;
-    
-    if (!PyArg_ParseTuple(args, "|i:GMainContext.iteration",
-                         &may_block))
-       return NULL;
-
-    pyglib_begin_allow_threads;
-    ret = g_main_context_iteration(self->context, may_block);
-    pyglib_end_allow_threads;
-    
-    return PyBool_FromLong(ret);
-}
-
-static PyObject *
-_wrap_g_main_context_pending (PyGMainContext *self)
-{
-    return PyBool_FromLong(g_main_context_pending(self->context));
-}
-
-static PyMethodDef _PyGMainContext_methods[] = {
-    { "iteration", (PyCFunction)_wrap_g_main_context_iteration, METH_VARARGS },
-    { "pending", (PyCFunction)_wrap_g_main_context_pending, METH_NOARGS },
-    { NULL, NULL, 0 }
-};
-
-void
-pyglib_maincontext_register_types(PyObject *d)
-{
-    PyGMainContext_Type.tp_dealloc = (destructor)pyg_main_context_dealloc;
-    PyGMainContext_Type.tp_richcompare = pyg_main_context_richcompare;
-    PyGMainContext_Type.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE;
-    PyGMainContext_Type.tp_methods = _PyGMainContext_methods;
-    PyGMainContext_Type.tp_init = (initproc)pyg_main_context_init;
-    PYGLIB_REGISTER_TYPE(d, PyGMainContext_Type, "MainContext"); 
-}
diff --git a/gi/_glib/pygmaincontext.h b/gi/_glib/pygmaincontext.h
deleted file mode 100644 (file)
index 4ffa3c9..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pyglib - Python bindings for GLib toolkit.
- * Copyright (C) 1998-2003  James Henstridge
- *               2004-2008  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 __PYG_MAINCONTEXT_H__
-#define __PYG_MAINCONTEXT_H__
-
-#include <Python.h>
-#include <glib.h>
-
-typedef struct {
-    PyObject_HEAD
-    GMainContext *context;
-} PyGMainContext;
-
-extern PyTypeObject PyGMainContext_Type;
-
-PyObject* pyg_main_context_new(GMainContext *context);
-
-void pyglib_maincontext_register_types(PyObject *d);
-
-#endif /* __PYG_MAINCONTEXT_H__ */
-
diff --git a/gi/_glib/pygmainloop.c b/gi/_glib/pygmainloop.c
deleted file mode 100644 (file)
index 5dabef6..0000000
+++ /dev/null
@@ -1,362 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pygtk- Python bindings for the GTK toolkit.
- * Copyright (C) 1998-2003  James Henstridge
- * Copyright (C) 2004       Johan Dahlin
- *
- *   pygmainloop.c: GMainLoop wrapper
- *
- * 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 <fcntl.h>
-
-#include <Python.h>
-#include <pythread.h>
-#include <glib.h>
-
-#include "pygmainloop.h"
-#include "pygmaincontext.h"
-#include "pyglib.h"
-#include "pyglib-private.h"
-
-static int pipe_fds[2];
-
-typedef struct {
-    GSource source;
-    GPollFD fd;
-} PySignalWatchSource;
-
-#ifdef DISABLE_THREADING
-static GMainLoop *pyg_current_main_loop = NULL;;
-
-static inline GMainLoop *
-pyg_save_current_main_loop (GMainLoop *main_loop)
-{
-    GMainLoop *retval = pyg_current_main_loop;
-
-    g_return_val_if_fail(main_loop != NULL, NULL);
-
-    pyg_current_main_loop = g_main_loop_ref(main_loop);
-
-    return retval;
-}
-
-static inline void
-pyg_restore_current_main_loop (GMainLoop *main_loop)
-{
-    if (pyg_current_main_loop != NULL)
-       g_main_loop_unref(pyg_current_main_loop);
-    pyg_current_main_loop = main_loop;
-}
-
-static inline GMainLoop *
-pyg_get_current_main_loop (void)
-{
-    return pyg_current_main_loop;
-}
-#else /* !defined(#ifndef DISABLE_THREADING) */
-
-static int pyg_current_main_loop_key = -1;
-
-static inline GMainLoop *
-pyg_save_current_main_loop (GMainLoop *main_loop)
-{
-    GMainLoop *retval;
-
-    g_return_val_if_fail(main_loop != NULL, NULL);
-
-    if (pyg_current_main_loop_key == -1)
-       pyg_current_main_loop_key = PyThread_create_key();
-
-    retval = PyThread_get_key_value(pyg_current_main_loop_key);
-    PyThread_delete_key_value(pyg_current_main_loop_key);
-    PyThread_set_key_value(pyg_current_main_loop_key, 
-                          g_main_loop_ref(main_loop));
-
-    return retval;
-}
-
-static inline void
-pyg_restore_current_main_loop (GMainLoop *main_loop)
-{
-    GMainLoop *prev;
-
-    g_return_if_fail (pyg_current_main_loop_key != -1);
-
-    prev = PyThread_get_key_value(pyg_current_main_loop_key);
-    if (prev != NULL)
-       g_main_loop_unref(prev);
-    PyThread_delete_key_value(pyg_current_main_loop_key);
-    if (main_loop != NULL)
-       PyThread_set_key_value(pyg_current_main_loop_key, main_loop);
-}
-
-static inline GMainLoop *
-pyg_get_current_main_loop (void)
-{
-    if (pyg_current_main_loop_key == -1)
-       return NULL;
-    return PyThread_get_key_value(pyg_current_main_loop_key);
-}
-#endif /* DISABLE_THREADING */
-
-static gboolean
-pyg_signal_watch_prepare(GSource *source,
-                        int     *timeout)
-{
-    /* Python only invokes signal handlers from the main thread,
-     * so if a thread other than the main thread receives the signal
-     * from the kernel, PyErr_CheckSignals() from that thread will
-     * do nothing.
-     */
-
-#ifdef HAVE_PYSIGNAL_SETWAKEUPFD
-    return FALSE;
-#else /* !HAVE_PYSIGNAL_SETWAKEUPFD */
-    /* On Windows g_poll() won't be interrupted by a signal
-     * (AFAIK), so we need the timeout there too, even if there's
-     * only one thread.
-     */
-#ifndef PLATFORM_WIN32
-    if (!pyglib_threads_enabled())
-       return FALSE;
-#endif /* PLATFORM_WIN32 */
-
-    /* If we're using 2.5 or an earlier version of python we
-     * will default to a timeout every second, be aware,
-     * this will cause unnecessary wakeups, see
-     * http://bugzilla.gnome.org/show_bug.cgi?id=481569
-     */
-    *timeout = 1000;
-    return FALSE;
-#endif /* HAVE_PYSIGNAL_SETWAKEUPFD */
-}
-
-static gboolean
-pyg_signal_watch_check(GSource *source)
-{
-    PyGILState_STATE state;
-    GMainLoop *main_loop;
-
-#ifdef HAVE_PYSIGNAL_SETWAKEUPFD
-    PySignalWatchSource *real_source = (PySignalWatchSource *)source;
-    GPollFD *poll_fd = &real_source->fd;
-    unsigned char dummy;
-    if (poll_fd->revents & G_IO_IN)
-        (void) read(poll_fd->fd, &dummy, 1);
-#endif
-
-    state = pyglib_gil_state_ensure();
-
-    main_loop = pyg_get_current_main_loop();
-
-    if (PyErr_CheckSignals() == -1 && main_loop != NULL) {
-       PyErr_SetNone(PyExc_KeyboardInterrupt);
-       g_main_loop_quit(main_loop);
-    }
-
-    pyglib_gil_state_release(state);
-
-    return FALSE;
-}
-
-static gboolean
-pyg_signal_watch_dispatch(GSource     *source,
-                         GSourceFunc  callback,
-                         gpointer     user_data)
-{
-    /* We should never be dispatched */
-    g_assert_not_reached();
-    return TRUE;
-}
-
-static GSourceFuncs pyg_signal_watch_funcs =
-{
-    pyg_signal_watch_prepare,
-    pyg_signal_watch_check,
-    pyg_signal_watch_dispatch
-};
-
-static GSource *
-pyg_signal_watch_new(void)
-{
-    GSource *source = g_source_new(&pyg_signal_watch_funcs,
-       sizeof(PySignalWatchSource));
-
-#ifdef HAVE_PYSIGNAL_SETWAKEUPFD
-    PySignalWatchSource *real_source = (PySignalWatchSource *)source;
-    int flag;
-
-    /* Unfortunately we need to create a new pipe here instead of
-     * reusing the pipe inside the GMainContext.
-     * Ideally an api should be added to GMainContext which allows us
-     * to reuse that pipe which would suit us perfectly fine.
-     * XXX More efficient than a pipe, we could use an eventfd on Linux
-     * kernels that support it.
-     */
-    gint already_piped = (pipe_fds[0] > 0);
-    if (!already_piped) {
-       if (pipe(pipe_fds) < 0)
-           g_error("Cannot create main loop pipe: %s\n",
-                   g_strerror(errno));
-
-        /* 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);
-    }
-
-    real_source->fd.fd = pipe_fds[0];
-    real_source->fd.events = G_IO_IN | G_IO_HUP | G_IO_ERR;
-    g_source_add_poll(source, &real_source->fd);
-
-    if (!already_piped)
-      PySignal_SetWakeupFd(pipe_fds[1]);
-#endif
-    return source;
-}
-
-PYGLIB_DEFINE_TYPE("gi._glib.MainLoop", PyGMainLoop_Type, PyGMainLoop)
-
-static int
-pyg_main_loop_init(PyGMainLoop *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "context", "is_running", NULL };
-    PyObject *py_context = Py_None;
-    int is_running = 0;
-    GMainContext *context;
-    
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                    "|Ob:GMainLoop.__init__",
-                                    kwlist, &py_context, &is_running))
-        return -1;
-
-    if (!PyObject_TypeCheck(py_context, &PyGMainContext_Type) &&
-       py_context != Py_None) {
-       PyErr_SetString(PyExc_TypeError,
-                       "context must be a gi._glib.MainContext or None");
-       return -1;
-    }
-
-    if (py_context != Py_None) {
-       context = ((PyGMainContext*)py_context)->context;
-    } else {
-       context = NULL;
-    }
-
-    self->loop = g_main_loop_new(context, is_running);
-
-    self->signal_source = pyg_signal_watch_new();
-    g_source_attach(self->signal_source, context);
-    g_source_unref(self->signal_source);
-
-    return 0;
-}
-
-static void
-pyg_main_loop_dealloc(PyGMainLoop *self)
-{
-    if (self->signal_source != NULL) {
-       g_source_destroy(self->signal_source);
-       self->signal_source = NULL;
-    }
-
-    if (self->loop != NULL) {
-       g_main_loop_unref(self->loop);
-       self->loop = NULL;
-    }
-
-    PyObject_Del(self);
-}
-
-static PyObject*
-pyg_main_loop_richcompare(PyObject *self, PyObject *other, int op)
-{
-    if (Py_TYPE(self) == Py_TYPE(other) && Py_TYPE(self) == &PyGMainLoop_Type)
-        return _pyglib_generic_ptr_richcompare(((PyGMainLoop*)self)->loop,
-                                               ((PyGMainLoop*)other)->loop,
-                                               op);
-    else {
-       Py_INCREF(Py_NotImplemented);
-       return Py_NotImplemented;
-    }
-}
-
-static PyObject *
-_wrap_g_main_loop_get_context (PyGMainLoop *loop)
-{
-    return pyg_main_context_new(g_main_loop_get_context(loop->loop));
-}
-
-static PyObject *
-_wrap_g_main_loop_is_running (PyGMainLoop *self)
-{
-    return PyBool_FromLong(g_main_loop_is_running(self->loop));
-}
-
-static PyObject *
-_wrap_g_main_loop_quit (PyGMainLoop *self, PyObject *args, PyObject *kwargs)
-{
-    g_main_loop_quit(self->loop);
-    
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-_wrap_g_main_loop_run (PyGMainLoop *self)
-{
-    GMainLoop *prev_loop;
-
-    prev_loop = pyg_save_current_main_loop(self->loop);
-
-    pyglib_begin_allow_threads;
-    g_main_loop_run(self->loop);
-    pyglib_end_allow_threads;
-
-    pyg_restore_current_main_loop(prev_loop);
-   
-    if (PyErr_Occurred())
-        return NULL;
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-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_VARARGS|METH_KEYWORDS },
-    { "run", (PyCFunction)_wrap_g_main_loop_run, METH_NOARGS },
-    { NULL, NULL, 0 }
-};
-
-void
-pyglib_mainloop_register_types(PyObject *d)
-{
-    PyGMainLoop_Type.tp_dealloc = (destructor)pyg_main_loop_dealloc;
-    PyGMainLoop_Type.tp_richcompare = pyg_main_loop_richcompare;
-    PyGMainLoop_Type.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE;
-    PyGMainLoop_Type.tp_methods = _PyGMainLoop_methods;
-    PyGMainLoop_Type.tp_init = (initproc)pyg_main_loop_init;
-    PYGLIB_REGISTER_TYPE(d, PyGMainLoop_Type, "MainLoop"); 
-}
diff --git a/gi/_glib/pygmainloop.h b/gi/_glib/pygmainloop.h
deleted file mode 100644 (file)
index dec82d8..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * pyglib - Python bindings for GLib toolkit.
- * Copyright (C) 1998-2003  James Henstridge
- *               2004-2008  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 __PYG_MAINLOOP_H__
-#define __PYG_MAINLOOP_H__
-
-typedef struct {
-    PyObject_HEAD
-    GMainLoop *loop;
-    GSource *signal_source;
-} PyGMainLoop;
-
-extern PyTypeObject PyGMainLoop_Type;
-
-void pyglib_mainloop_register_types(PyObject *d);
-
-#endif /* __PYG_MAINLOOP_H__ */
-
index d11f474..5a333c4 100644 (file)
 #endif
 
 #include <Python.h>
-#include <pythread.h>
 #include <structmember.h> /* for PyMemberDef */
 #include "pyglib.h"
 #include "pyglib-private.h"
-#include "pygmaincontext.h"
 #include "pygsource.h"
 
-#define CHECK_DESTROYED(self, ret)                     G_STMT_START {  \
-    if ((self)->source == NULL) {                                      \
-       PyErr_SetString(PyExc_RuntimeError, "source is destroyed");     \
-       return (ret);                                                   \
-    }                                                                  \
-} G_STMT_END
-
-
-typedef struct {
-    PyObject_HEAD
-    GSource *source;
-    PyObject *inst_dict;
-    PyObject *weakreflist;
-    gboolean python_source;
-} PyGSource;
-
-typedef struct
-{
-    GSource source;
-    PyObject *obj;
-} PyGRealSource;
-
-/* glib.Source */
-
-PYGLIB_DEFINE_TYPE("gi._glib.Source", PyGSource_Type, PyGSource)
-
-static PyObject *
-source_repr(PyGSource *self, const char *type)
-{
-    gchar buf[256], *desc;
-    if (self->source) {
-       if (g_source_get_context(self->source))
-           desc = "attached";
-       else
-           desc = "unattached";
-    } else {
-       desc = "destroyed";
-    }
-
-    if (type)
-       g_snprintf(buf, sizeof(buf), "<%s glib %s source at 0x%lx>",
-                  desc, type, (long) self);
-    else
-       g_snprintf(buf, sizeof(buf), "<%s glib source at 0x%lx>",
-                  desc, (long) self);
-
-    return PYGLIB_PyUnicode_FromString(buf);
-}
-
-static PyObject *
-pyg_source_attach(PyGSource *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "context", NULL };
-    PyGMainContext *py_context = NULL;
-    GMainContext *context = NULL;
-    guint id;
-
-    if (!PyArg_ParseTupleAndKeywords (args, kwargs,
-                                     "|O!:attach", kwlist,
-                                     &PyGMainContext_Type, &py_context))
-       return NULL;
-
-    if (py_context)
-       context = py_context->context;
-
-    CHECK_DESTROYED(self, NULL);
-
-    if (self->python_source) {
-       PyGRealSource *pysource = (PyGRealSource *)self->source;
-       Py_INCREF(pysource->obj);
-    }
-
-    id = g_source_attach(self->source, context);
-    return PYGLIB_PyLong_FromLong(id);
-}
-
-static PyObject *
-pyg_source_destroy(PyGSource *self)
-{
-    CHECK_DESTROYED(self, NULL);
-
-    if (self->python_source && self->source->context) {
-       PyGRealSource *pysource = (PyGRealSource *)self->source;
-       Py_DECREF(pysource->obj);
-    }
-
-    g_source_destroy(self->source);
-    self->source = NULL;
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-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;
-    gint len;
-
-    CHECK_DESTROYED(self, NULL);
-
-    len = PyTuple_Size (args);
-    if (len < 1) {
-       PyErr_SetString(PyExc_TypeError,
-                       "set_callback requires at least 1 argument");
-       return NULL;
-    }
-
-    first = PySequence_GetSlice(args, 0, 1);
-    if (!PyArg_ParseTuple(first, "O:set_callback", &callback)) {
-       Py_DECREF (first);
-       return NULL;
-    }
-    Py_DECREF(first);
-
-    if (!PyCallable_Check(callback)) {
-       PyErr_SetString(PyExc_TypeError, "first argument not callable");
-       return NULL;
-    }
-
-    cbargs = PySequence_GetSlice(args, 1, len);
-    if (cbargs == NULL)
-       return NULL;
-
-    data = Py_BuildValue("(ON)", callback, cbargs);
-    if (data == NULL)
-       return NULL;
-
-    g_source_set_callback(self->source,
-                         _pyglib_handler_marshal, data,
-                         _pyglib_destroy_notify);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-pyg_source_get_context(PyGSource *self)
-{
-    GMainContext *context;
-
-    CHECK_DESTROYED(self, NULL);
-
-    context = g_source_get_context(self->source);
-
-    if (context) {
-       return pyg_main_context_new(context);
-    } else {
-       Py_INCREF(Py_None);
-       return Py_None;
-    }
-}
-
-static PyObject *
-pyg_source_add_poll(PyGSource *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "fd", NULL };
-    PyGPollFD *fd;
-
-    if (!self->python_source) {
-       PyErr_SetString(PyExc_TypeError,
-                       "add_poll can only be used with sources "
-                       "implemented in python");
-       return NULL;
-    }
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                    "O!:add_poll", kwlist,
-                                    &PyGPollFD_Type, &fd))
-       return NULL;
-
-    CHECK_DESTROYED(self, NULL);
-
-    g_source_add_poll(self->source, &fd->pollfd);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-pyg_source_remove_poll(PyGSource *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "fd", NULL };
-    PyGPollFD *fd;
-
-    if (!self->python_source) {
-       PyErr_SetString(PyExc_TypeError,
-                       "remove_poll can only be used with sources "
-                       "implemented in python");
-       return NULL;
-    }
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                    "O!:remove_poll", kwlist,
-                                    &PyGPollFD_Type, &fd))
-       return NULL;
-
-    CHECK_DESTROYED(self, NULL);
-
-    g_source_remove_poll(self->source, &fd->pollfd);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-pyg_source_get_current_time(PyGSource *self)
-{
-    double   ret;
-
-    CHECK_DESTROYED(self, NULL);
-
-    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 },
-    { "remove_poll", (PyCFunction)pyg_source_remove_poll, METH_VARARGS|METH_KEYWORDS },
-    { "get_current_time", (PyCFunction)pyg_source_get_current_time, METH_NOARGS },
-    { NULL, NULL, 0 }
-};
-
-static PyObject *
-pyg_source_get_dict(PyGSource *self, void *closure)
-{
-    if (self->inst_dict == NULL) {
-       self->inst_dict = PyDict_New();
-       if (self->inst_dict == NULL)
-           return NULL;
-    }
-
-    Py_INCREF(self->inst_dict);
-    return self->inst_dict;
-}
-
-static PyObject *
-pyg_source_get_priority(PyGSource *self, void *closure)
-{
-    CHECK_DESTROYED(self, NULL);
-
-    return PYGLIB_PyLong_FromLong(g_source_get_priority(self->source));
-}
-
-static int
-pyg_source_set_priority(PyGSource *self, PyObject *value, void *closure)
-{
-    CHECK_DESTROYED(self, -1);
-
-    if (value == NULL) {
-       PyErr_SetString(PyExc_TypeError, "cannot delete priority");
-       return -1;
-    }
-
-    if (!PYGLIB_PyLong_Check(value)) {
-       PyErr_SetString(PyExc_TypeError, "type mismatch");
-       return -1;
-    }
-
-    g_source_set_priority(self->source, PYGLIB_PyLong_AsLong(value));
-
-    return 0;
-}
-
-static PyObject *
-pyg_source_get_can_recurse(PyGSource *self, void *closure)
-{
-    CHECK_DESTROYED(self, NULL);
-
-    return PyBool_FromLong(g_source_get_can_recurse(self->source));
-}
-
-static int
-pyg_source_set_can_recurse(PyGSource *self, PyObject *value, void *closure)
-{
-    CHECK_DESTROYED(self, -1);
-
-    if (value == NULL) {
-       PyErr_SetString(PyExc_TypeError, "cannot delete can_recurse");
-       return -1;
-    }
-
-    g_source_set_can_recurse(self->source, PyObject_IsTrue(value));
-
-    return 0;
-}
-
-static PyObject *
-pyg_source_get_id(PyGSource *self, void *closure)
-{
-    CHECK_DESTROYED(self, NULL);
-
-    if (g_source_get_context(self->source) == NULL) {
-       PyErr_SetString(PyExc_RuntimeError, "source is not attached");
-       return NULL;
-    }
-
-    return PYGLIB_PyLong_FromLong(g_source_get_id(self->source));
-}
-
-static PyGetSetDef pyg_source_getsets[] = {
-    { "__dict__", (getter)pyg_source_get_dict,  (setter)0 },
-    {"priority", (getter)pyg_source_get_priority, (setter)pyg_source_set_priority },
-    {"can_recurse", (getter)pyg_source_get_can_recurse, (setter)pyg_source_set_can_recurse },
-    {"id", (getter)pyg_source_get_id, (setter)0 },
-    {NULL, 0, 0}
-};
-
-static PyObject *
-pyg_source_repr(PyGSource *self)
-{
-    return source_repr(self, NULL);
-}
-
-static int
-pyg_source_traverse(PyGSource *self, visitproc visit, void *arg)
-{
-    int ret = 0;
-
-    if (self->inst_dict) ret = visit(self->inst_dict, arg);
-    if (ret != 0) return ret;
-
-    return 0;
-}
-
-static int
-pyg_source_clear(PyGSource *self)
-{
-    PyObject *tmp;
-
-    tmp = self->inst_dict;
-    self->inst_dict = NULL;
-    Py_XDECREF(tmp);
-
-    if (self->source) {
-       g_source_unref(self->source);
-       self->source = NULL;
-    }
-
-    return 0;
-}
-
-static void
-pyg_source_dealloc(PyGSource *self)
-{
-    /* Must be done first, so that there is no chance of Python's GC being
-     * called while tracking this half-deallocated object */
-    PyObject_GC_UnTrack((PyObject *)self);
-
-    PyObject_ClearWeakRefs((PyObject *)self);
-
-    pyg_source_clear(self);
-
-    PyObject_GC_Del(self);
-}
-
-static gboolean
-pyg_source_prepare(GSource *source, gint *timeout)
-{
-    PyGRealSource *pysource = (PyGRealSource *)source;
-    PyObject *t;
-    gboolean ret = FALSE;
-    gboolean got_err = TRUE;
-    PyGILState_STATE state;
-
-    state = pyglib_gil_state_ensure();
-
-    t = PyObject_CallMethod(pysource->obj, "prepare", NULL);
-
-    if (t == NULL) {
-       goto bail;
-    } else if (!PyObject_IsTrue(t)) {
-       got_err = FALSE;
-       goto bail;
-    } else if (!PyTuple_Check(t)) {
-       PyErr_SetString(PyExc_TypeError,
-                       "source prepare function must return a tuple or False");
-       goto bail;
-    } else if (PyTuple_Size(t) != 2) {
-       PyErr_SetString(PyExc_TypeError,
-                       "source prepare function return tuple must be exactly "
-                       "2 elements long");
-       goto bail;
-    }
-
-    ret = PyObject_IsTrue(PyTuple_GET_ITEM(t, 0));
-       *timeout = PYGLIB_PyLong_AsLong(PyTuple_GET_ITEM(t, 1));
-
-       if (*timeout == -1 && PyErr_Occurred()) {
-           ret = FALSE;
-           goto bail;
-       }
-
-    got_err = FALSE;
-
-bail:
-    if (got_err)
-       PyErr_Print();
-
-    Py_XDECREF(t);
-
-    pyglib_gil_state_release(state);
-
-    return ret;
-}
-
-static gboolean
-pyg_source_check(GSource *source)
-{
-    PyGRealSource *pysource = (PyGRealSource *)source;
-    PyObject *t;
-    gboolean ret;
-    PyGILState_STATE state;
-
-    state = pyglib_gil_state_ensure();
-
-    t = PyObject_CallMethod(pysource->obj, "check", NULL);
-
-    if (t == NULL) {
-       PyErr_Print();
-       ret = FALSE;
-    } else {
-       ret = PyObject_IsTrue(t);
-       Py_DECREF(t);
-    }
-
-    pyglib_gil_state_release(state);
-
-    return ret;
-}
-
-static gboolean
-pyg_source_dispatch(GSource *source, GSourceFunc callback, gpointer user_data)
-{
-    PyGRealSource *pysource = (PyGRealSource *)source;
-    PyObject *func, *args, *tuple, *t;
-    gboolean ret;
-    PyGILState_STATE state;
-
-    state = pyglib_gil_state_ensure();
-
-    if (callback) {
-       tuple = user_data;
-
-       func = PyTuple_GetItem(tuple, 0);
-        args = PyTuple_GetItem(tuple, 1);
-    } else {
-       func = Py_None;
-       args = Py_None;
-    }
-
-    t = PyObject_CallMethod(pysource->obj, "dispatch", "OO", func, args);
-
-    if (t == NULL) {
-       PyErr_Print();
-       ret = FALSE;
-    } else {
-       ret = PyObject_IsTrue(t);
-       Py_DECREF(t);
-    }
-
-    pyglib_gil_state_release(state);
-
-    return ret;
-}
-
-static void
-pyg_source_finalize(GSource *source)
-{
-    PyGRealSource *pysource = (PyGRealSource *)source;
-    PyObject *func, *t;
-    PyGILState_STATE state;
-
-    state = pyglib_gil_state_ensure();
-
-    func = PyObject_GetAttrString(pysource->obj, "finalize");
-    if (func) {
-       t = PyObject_CallObject(func, NULL);
-       Py_DECREF(func);
-
-       if (t == NULL) {
-           PyErr_Print();
-       } else {
-           Py_DECREF(t);
-       }
-    }
-
-    pyglib_gil_state_release(state);
-}
-
-static GSourceFuncs pyg_source_funcs =
-{
-    pyg_source_prepare,
-    pyg_source_check,
-    pyg_source_dispatch,
-    pyg_source_finalize
-};
-
-static int
-pyg_source_init(PyGSource *self, PyObject *args, PyObject *kwargs)
-{
-    PyGRealSource *pysource;
-
-    self->source = g_source_new(&pyg_source_funcs, sizeof(PyGRealSource));
-
-    pysource = (PyGRealSource *)self->source;
-    pysource->obj = (PyObject*)self;
-
-    self->inst_dict = NULL;
-    self->weakreflist = NULL;
-
-    self->python_source = TRUE;
-
-    return 0;
-}
-
-static void
-pyg_source_free(PyObject *op)
-{
-    PyObject_GC_Del(op);
-}
-
-/* glib.Idle */
-
-PYGLIB_DEFINE_TYPE("gi._glib.Idle", PyGIdle_Type, PyGSource)
-
-static PyObject *
-pyg_idle_repr(PyGSource *self)
-{
-    return source_repr(self, "idle");
-}
-
-static int
-pyg_idle_init(PyGSource *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "priority", NULL };
-    gint priority = G_PRIORITY_DEFAULT_IDLE;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                    "|i:gi._glib.Idle.__init__", kwlist,
-                                    &priority))
-       return -1;
-
-    self->source = g_idle_source_new ();
-
-    if (priority != G_PRIORITY_DEFAULT_IDLE)
-       g_source_set_priority(self->source, priority);
-
-    self->inst_dict = NULL;
-    self->weakreflist = NULL;
-
-    self->python_source = FALSE;
-
-    return 0;
-}
-
-/* glib.Timeout */
-
-PYGLIB_DEFINE_TYPE("gi._glib.Timeout", PyGTimeout_Type, PyGSource)
-
-static PyObject *
-pyg_timeout_repr(PyGSource *self)
-{
-    return source_repr(self, "timeout");
-}
-
-static int
-pyg_timeout_init(PyGSource *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "interval", "priority", NULL };
-    gint priority = G_PRIORITY_DEFAULT;
-    guint interval;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                    "I|i:gi._glib.Timeout.__init__", kwlist,
-                                    &interval, &priority))
-       return -1;
-
-    self->source = g_timeout_source_new(interval);
-
-    if (priority != G_PRIORITY_DEFAULT)
-       g_source_set_priority(self->source, priority);
-
-    self->inst_dict = NULL;
-    self->weakreflist = NULL;
-
-    self->python_source = FALSE;
-
-    return 0;
-}
-
 /* glib.PollFD */
 
 PYGLIB_DEFINE_TYPE("gi._glib.PollFD", PyGPollFD_Type, PyGPollFD)
@@ -702,33 +89,6 @@ pyg_poll_fd_init(PyGPollFD *self, PyObject *args, PyObject *kwargs)
 void
 pyglib_source_register_types(PyObject *d)
 {
-    PyGSource_Type.tp_flags = (Py_TPFLAGS_DEFAULT |
-                              Py_TPFLAGS_BASETYPE |
-                              Py_TPFLAGS_HAVE_GC);
-    PyGSource_Type.tp_init = (initproc)pyg_source_init;
-    PyGSource_Type.tp_free = (freefunc)pyg_source_free;
-    PyGSource_Type.tp_dealloc = (destructor)pyg_source_dealloc;
-    PyGSource_Type.tp_methods = pyg_source_methods;
-    PyGSource_Type.tp_repr = (reprfunc)pyg_source_repr;
-    PyGSource_Type.tp_traverse = (traverseproc)pyg_source_traverse;
-    PyGSource_Type.tp_clear = (inquiry)pyg_source_clear;
-    PyGSource_Type.tp_getset = pyg_source_getsets;
-    PyGSource_Type.tp_weaklistoffset = offsetof(PyGSource, weakreflist);
-    PyGSource_Type.tp_dictoffset = offsetof(PyGSource, inst_dict);
-    PYGLIB_REGISTER_TYPE(d, PyGSource_Type, "Source");
-
-    PyGIdle_Type.tp_repr = (reprfunc)pyg_idle_repr;
-    PyGIdle_Type.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE;
-    PyGIdle_Type.tp_base = (PyTypeObject *)&PyGSource_Type;
-    PyGIdle_Type.tp_init = (initproc)pyg_idle_init;
-    PYGLIB_REGISTER_TYPE(d, PyGIdle_Type, "Idle");
-
-    PyGTimeout_Type.tp_repr = (reprfunc)pyg_timeout_repr;
-    PyGTimeout_Type.tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE;
-    PyGTimeout_Type.tp_base = (PyTypeObject *)&PyGSource_Type;
-    PyGTimeout_Type.tp_init = (initproc)pyg_timeout_init;
-    PYGLIB_REGISTER_TYPE(d, PyGTimeout_Type, "Timeout");
-
     PyGPollFD_Type.tp_dealloc = (destructor)pyg_poll_fd_dealloc;
     PyGPollFD_Type.tp_repr = (reprfunc)pyg_poll_fd_repr;
     PyGPollFD_Type.tp_flags = Py_TPFLAGS_DEFAULT;
index bf2c673..dbae9ac 100644 (file)
@@ -22,9 +22,6 @@
 #ifndef __PYG_SOURCE_H__
 #define __PYG_SOURCE_H__
 
-extern PyTypeObject PyGSource_Type;
-extern PyTypeObject PyGIdle_Type;
-extern PyTypeObject PyGTimeout_Type;
 extern PyTypeObject PyGPollFD_Type;
 
 typedef struct
index 61762fc..d8613a9 100644 (file)
@@ -84,4 +84,4 @@ check-local: $(pygobject_LTLIBRARIES:.la=.so) build_pylinks
 clean-local:
        rm -f $(pygobject_LTLIBRARIES:.la=.so)
 .la.so:
-       $(LN_S) .libs/$@ $@ || true
+       $(LN_S) -f .libs/$@ $@
index fec095b..8a2353d 100644 (file)
@@ -172,6 +172,9 @@ CAIRO_LIBS = @CAIRO_LIBS@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
+CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
+CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
+CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CYGPATH_W = @CYGPATH_W@
@@ -189,6 +192,7 @@ EXEEXT = @EXEEXT@
 FFI_CFLAGS = @FFI_CFLAGS@
 FFI_LIBS = @FFI_LIBS@
 FGREP = @FGREP@
+GENHTML = @GENHTML@
 GIO_CFLAGS = @GIO_CFLAGS@
 GIO_LIBS = @GIO_LIBS@
 GI_CFLAGS = @GI_CFLAGS@
@@ -208,6 +212,7 @@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
+LCOV = @LCOV@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBFFI_PC = @LIBFFI_PC@
@@ -217,7 +222,6 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
@@ -383,7 +387,7 @@ all: all-am
 
 .SUFFIXES:
 .SUFFIXES: .c .la .lo .o .obj .so
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
@@ -408,9 +412,9 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 $(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)
+$(top_srcdir)/configure:  $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
 install-pygobjectLTLIBRARIES: $(pygobject_LTLIBRARIES)
@@ -843,7 +847,7 @@ check-local: $(pygobject_LTLIBRARIES:.la=.so) build_pylinks
 clean-local:
        rm -f $(pygobject_LTLIBRARIES:.la=.so)
 .la.so:
-       $(LN_S) .libs/$@ $@ || true
+       $(LN_S) -f .libs/$@ $@
 
 # 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 7b6ab36..d3ea0e0 100644 (file)
@@ -27,245 +27,24 @@ import sys
 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 propertyhelper
 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()
+        propertyhelper.install_properties(cls)
         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:
@@ -276,9 +55,6 @@ class GObjectMeta(type):
         if cls.__module__.startswith('gi.overrides.'):
             return
 
-        type_register(cls, namespace.get('__gtype_name__'))
+        _gobject.type_register(cls, namespace.get('__gtype_name__'))
 
 _gobject._install_metaclass(GObjectMeta)
-
-# Deprecated naming still available for backwards compatibility.
-property = Property
index 3f83a3a..9565a66 100644 (file)
@@ -21,7 +21,7 @@
 
 from . import _gobject
 
-# TYPE_INVALID defined in gobjectmodule.c
+TYPE_INVALID = _gobject.TYPE_INVALID
 TYPE_NONE = _gobject.type_from_name('void')
 TYPE_INTERFACE = _gobject.type_from_name('GInterface')
 TYPE_CHAR = _gobject.type_from_name('gchar')
@@ -47,36 +47,3 @@ 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
-# as these were origianally defined here, and are
-# now defined in gobjectmodule.c
-G_MINFLOAT = _gobject.G_MINFLOAT
-G_MAXFLOAT = _gobject.G_MAXFLOAT
-G_MINDOUBLE = _gobject.G_MINDOUBLE
-G_MAXDOUBLE = _gobject.G_MAXDOUBLE
-G_MINSHORT = _gobject.G_MINSHORT
-G_MAXSHORT = _gobject.G_MAXSHORT
-G_MAXUSHORT = _gobject.G_MAXUSHORT
-G_MININT = _gobject.G_MININT
-G_MAXINT = _gobject.G_MAXINT
-G_MAXUINT = _gobject.G_MAXUINT
-G_MINLONG = _gobject.G_MINLONG
-G_MAXLONG = _gobject.G_MAXLONG
-G_MAXULONG = _gobject.G_MAXULONG
-G_MININT8 = _gobject.G_MININT8
-G_MAXINT8 = _gobject.G_MAXINT8
-G_MAXUINT8 = _gobject.G_MAXUINT8
-G_MININT16 = _gobject.G_MININT16
-G_MAXINT16 = _gobject.G_MAXINT16
-G_MAXUINT16 = _gobject.G_MAXUINT16
-G_MININT32 = _gobject.G_MININT32
-G_MAXINT32 = _gobject.G_MAXINT32
-G_MAXUINT32 = _gobject.G_MAXUINT32
-G_MININT64 = _gobject.G_MININT64
-G_MAXINT64 = _gobject.G_MAXINT64
-G_MAXUINT64 = _gobject.G_MAXUINT64
-G_MAXSIZE = _gobject.G_MAXSIZE
-G_MAXSSIZE = _gobject.G_MAXSSIZE
-G_MINOFFSET = _gobject.G_MINOFFSET
-G_MAXOFFSET = _gobject.G_MAXOFFSET
index 2b976aa..304a041 100644 (file)
@@ -141,28 +141,6 @@ pyg_type_from_name (PyObject *self, PyObject *args)
 }
 
 static PyObject *
-pyg_type_parent (PyObject *self, PyObject *args)
-{
-    PyObject *gtype;
-    GType type, parent;
-#if 0
-    if (PyErr_Warn(PyExc_DeprecationWarning,
-                  "gobject.type_parent is deprecated; "
-                  "use GType.parent instead"))
-        return NULL;
-#endif
-    if (!PyArg_ParseTuple(args, "O:gobject.type_parent", &gtype))
-       return NULL;
-    if ((type = pyg_type_from_object(gtype)) == 0)
-       return NULL;
-    parent = g_type_parent(type);
-    if (parent != 0)
-       return pyg_type_wrapper_new(parent);
-    PyErr_SetString(PyExc_RuntimeError, "no parent for type");
-    return NULL;
-}
-
-static PyObject *
 pyg_type_is_a (PyObject *self, PyObject *args)
 {
     PyObject *gtype, *gparent;
@@ -182,68 +160,6 @@ pyg_type_is_a (PyObject *self, PyObject *args)
     return PyBool_FromLong(g_type_is_a(type, parent));
 }
 
-static PyObject *
-pyg_type_children (PyObject *self, PyObject *args)
-{
-    PyObject *gtype, *list;
-    GType type, *children;
-    guint n_children, i;
-#if 0
-    if (PyErr_Warn(PyExc_DeprecationWarning,
-                  "gobject.type_children is deprecated; "
-                  "use GType.children instead"))
-        return NULL;
-#endif
-    if (!PyArg_ParseTuple(args, "O:gobject.type_children", &gtype))
-       return NULL;
-    if ((type = pyg_type_from_object(gtype)) == 0)
-       return NULL;
-    children = g_type_children(type, &n_children);
-    if (children) {
-        list = PyList_New(0);
-       for (i = 0; i < n_children; i++) {
-           PyObject *o;
-           PyList_Append(list, o=pyg_type_wrapper_new(children[i]));
-           Py_DECREF(o);
-       }
-       g_free(children);
-       return list;
-    }
-    PyErr_SetString(PyExc_RuntimeError, "invalid type, or no children");
-    return NULL;
-}
-
-static PyObject *
-pyg_type_interfaces (PyObject *self, PyObject *args)
-{
-    PyObject *gtype, *list;
-    GType type, *interfaces;
-    guint n_interfaces, i;
-#if 0
-    if (PyErr_Warn(PyExc_DeprecationWarning,
-                  "gobject.type_interfaces is deprecated; "
-                  "use GType.interfaces instead"))
-        return NULL;
-#endif
-    if (!PyArg_ParseTuple(args, "O:gobject.type_interfaces", &gtype))
-       return NULL;
-    if ((type = pyg_type_from_object(gtype)) == 0)
-       return NULL;
-    interfaces = g_type_interfaces(type, &n_interfaces);
-    if (interfaces) {
-        list = PyList_New(0);
-       for (i = 0; i < n_interfaces; i++) {
-           PyObject *o;
-           PyList_Append(list, o=pyg_type_wrapper_new(interfaces[i]));
-           Py_DECREF(o);
-       }
-       g_free(interfaces);
-       return list;
-    }
-    PyErr_SetString(PyExc_RuntimeError, "invalid type, or no interfaces");
-    return NULL;
-}
-
 static void
 pyg_object_set_property (GObject *object, guint property_id,
                         const GValue *value, GParamSpec *pspec)
@@ -309,13 +225,6 @@ pyg_object_get_property (GObject *object, guint property_id,
     pyglib_gil_state_release(state);
 }
 
-static void
-pyg_object_class_init(GObjectClass *class, PyObject *py_class)
-{
-    class->set_property = pyg_object_set_property;
-    class->get_property = pyg_object_get_property;
-}
-
 typedef struct _PyGSignalAccumulatorData {
     PyObject *callable;
     PyObject *user_data;
@@ -481,15 +390,14 @@ override_signal(GType instance_type, const gchar *signal_name)
 }
 
 static PyObject *
-add_signals (GType instance_type, PyObject *signals)
+add_signals (GObjectClass *klass, PyObject *signals)
 {
     gboolean ret = TRUE;
-    GObjectClass *oclass;
     Py_ssize_t pos = 0;
     PyObject *key, *value, *overridden_signals = NULL;
+    GType instance_type = G_OBJECT_CLASS_TYPE (klass);
 
     overridden_signals = PyDict_New();
-    oclass = g_type_class_ref(instance_type);
     while (PyDict_Next(signals, &pos, &key, &value)) {
        const gchar *signal_name;
         gchar *signal_name_canon, *c;
@@ -527,7 +435,6 @@ add_signals (GType instance_type, PyObject *signals)
        if (!ret)
            break;
     }
-    g_type_class_unref(oclass);
     if (ret)
         return overridden_signals;
     else {
@@ -732,6 +639,18 @@ create_property (const gchar  *prop_name,
            return NULL;
        pspec = g_param_spec_object (prop_name, nick, blurb, prop_type, flags);
        break;
+    case G_TYPE_VARIANT:
+       {
+           PyObject *pydefault;
+            GVariant *default_value = NULL;
+
+           if (!PyArg_ParseTuple(args, "O", &pydefault))
+               return NULL;
+            if (pydefault != Py_None)
+                default_value = pyg_boxed_get (pydefault, GVariant);
+           pspec = g_param_spec_variant (prop_name, nick, blurb, G_VARIANT_TYPE_ANY, default_value, flags);
+       }
+       break;
     default:
        /* unhandled pspec type ... */
        break;
@@ -800,14 +719,12 @@ pyg_param_spec_from_object (PyObject *tuple)
 }
 
 static gboolean
-add_properties (GType instance_type, PyObject *properties)
+add_properties (GObjectClass *klass, PyObject *properties)
 {
     gboolean ret = TRUE;
-    GObjectClass *oclass;
     Py_ssize_t pos = 0;
     PyObject *key, *value;
 
-    oclass = g_type_class_ref(instance_type);
     while (PyDict_Next(properties, &pos, &key, &value)) {
        const gchar *prop_name;
        GType prop_type;
@@ -873,7 +790,7 @@ add_properties (GType instance_type, PyObject *properties)
        Py_DECREF(slice);
 
        if (pspec) {
-           g_object_class_install_property(oclass, 1, pspec);
+           g_object_class_install_property(klass, 1, pspec);
        } else {
             PyObject *type, *value, *traceback;
            ret = FALSE;
@@ -883,7 +800,7 @@ add_properties (GType instance_type, PyObject *properties)
                 g_snprintf(msg, 256,
                           "%s (while registering property '%s' for GType '%s')",
                PYGLIB_PyUnicode_AsString(value),
-                          prop_name, g_type_name(instance_type));
+                          prop_name, G_OBJECT_CLASS_NAME(klass));
                 Py_DECREF(value);
                 value = PYGLIB_PyUnicode_FromString(msg);
             }
@@ -892,11 +809,63 @@ add_properties (GType instance_type, PyObject *properties)
        }
     }
 
-    g_type_class_unref(oclass);
     return ret;
 }
 
 static void
+pyg_object_class_init(GObjectClass *class, PyObject *py_class)
+{
+    PyObject *gproperties, *gsignals, *overridden_signals;
+    PyObject *class_dict = ((PyTypeObject*) py_class)->tp_dict;
+
+    class->set_property = pyg_object_set_property;
+    class->get_property = pyg_object_get_property;
+
+    /* install signals */
+    /* we look this up in the instance dictionary, so we don't
+     * accidentally get a parent type's __gsignals__ attribute. */
+    gsignals = PyDict_GetItemString(class_dict, "__gsignals__");
+    if (gsignals) {
+       if (!PyDict_Check(gsignals)) {
+           PyErr_SetString(PyExc_TypeError,
+                           "__gsignals__ attribute not a dict!");
+           return;
+       }
+       if (!(overridden_signals = add_signals(class, gsignals))) {
+           return;
+       }
+        if (PyDict_SetItemString(class_dict, "__gsignals__",
+                                overridden_signals)) {
+            return;
+        }
+        Py_DECREF(overridden_signals);
+
+        PyDict_DelItemString(class_dict, "__gsignals__");
+    } else {
+       PyErr_Clear();
+    }
+
+    /* install properties */
+    /* we look this up in the instance dictionary, so we don't
+     * accidentally get a parent type's __gproperties__ attribute. */
+    gproperties = PyDict_GetItemString(class_dict, "__gproperties__");
+    if (gproperties) {
+       if (!PyDict_Check(gproperties)) {
+           PyErr_SetString(PyExc_TypeError,
+                           "__gproperties__ attribute not a dict!");
+           return;
+       }
+       if (!add_properties(class, gproperties)) {
+           return;
+       }
+       PyDict_DelItemString(class_dict, "__gproperties__");
+       /* Borrowed reference. Py_DECREF(gproperties); */
+    } else {
+       PyErr_Clear();
+    }
+}
+
+static void
 pyg_register_class_init(GType gtype, PyGClassInitFunc class_init)
 {
     GSList *list;
@@ -1095,7 +1064,7 @@ pygobject__g_instance_init(GTypeInstance   *instance,
  */
 static void
 pyg_type_add_interfaces(PyTypeObject *class, GType instance_type,
-                        PyObject *bases, gboolean new_interfaces,
+                        PyObject *bases,
                         GType *parent_interfaces, guint n_parent_interfaces)
 {
     int i;
@@ -1106,10 +1075,8 @@ pyg_type_add_interfaces(PyTypeObject *class, GType instance_type,
     }
 
     for (i = 0; i < PyTuple_GET_SIZE(bases); ++i) {
-        guint k;
         PyObject *base = PyTuple_GET_ITEM(bases, i);
         GType itype;
-        gboolean is_new = TRUE;
         const GInterfaceInfo *iinfo;
         GInterfaceInfo iinfo_copy;
 
@@ -1126,16 +1093,6 @@ pyg_type_add_interfaces(PyTypeObject *class, GType instance_type,
         if (!G_TYPE_IS_INTERFACE(itype))
             continue;
 
-        for (k = 0; k < n_parent_interfaces; ++k) {
-            if (parent_interfaces[k] == itype) {
-                is_new = FALSE;
-                break;
-            }
-        }
-
-        if ((new_interfaces && !is_new) || (!new_interfaces && is_new))
-            continue;
-
         iinfo = pyg_lookup_interface_info(itype);
         if (!iinfo) {
             gchar *error;
@@ -1156,7 +1113,7 @@ pyg_type_add_interfaces(PyTypeObject *class, GType instance_type,
 int
 pyg_type_register(PyTypeObject *class, const char *type_name)
 {
-    PyObject *gtype, *gsignals, *gproperties, *overridden_signals;
+    PyObject *gtype;
     GType parent_type, instance_type;
     GType *parent_interfaces;
     guint n_parent_interfaces;
@@ -1234,88 +1191,22 @@ pyg_type_register(PyTypeObject *class, const char *type_name)
     }
 
     /*
-     * Note: Interfaces to be implemented are searched twice.  First
-     * we register interfaces that are already implemented by a parent
-     * type.  The second time, the remaining interfaces are
-     * registered, i.e. the ones that are not implemented by a parent
-     * type.  In between these two loops, properties and signals are
-     * registered.  It has to be done this way, in two steps,
-     * otherwise glib will complain.  If registering all interfaces
-     * always before properties, you get an error like:
-     *
-     *    ../gobject:121: Warning: Object class
-     *    test_interface+MyObject doesn't implement property
-     *    'some-property' from interface 'TestInterface'
-     *
-     * If, on the other hand, you register interfaces after
-     * registering the properties, you get something like:
-     *
-     *     ../gobject:121: Warning: cannot add interface type
-     *    `TestInterface' to type `test_interface+MyUnknown', since
-     *    type `test_interface+MyUnknown' already conforms to
-     *    interface
-     *
-     * This looks like a GLib quirk, but no bug has been filed
-     * upstream.  However we have a unit test for this particular
-     * problem, which can be found in test_interfaces.py, class
-     * TestInterfaceImpl.
+     * Note, all interfaces need to be registered before the first
+     * g_type_class_ref(), see bug #686149.
      *
      * See also comment above pyg_type_add_interfaces().
      */
-    pyg_type_add_interfaces(class, instance_type, class->tp_bases, FALSE,
+    pyg_type_add_interfaces(class, instance_type, class->tp_bases,
                             parent_interfaces, n_parent_interfaces);
 
-    /* we look this up in the instance dictionary, so we don't
-     * accidentally get a parent type's __gsignals__ attribute. */
-    gsignals = PyDict_GetItemString(class->tp_dict, "__gsignals__");
-    if (gsignals) {
-       if (!PyDict_Check(gsignals)) {
-           PyErr_SetString(PyExc_TypeError,
-                           "__gsignals__ attribute not a dict!");
-            g_free(parent_interfaces);
-           return -1;
-       }
-       if (!(overridden_signals = add_signals(instance_type, gsignals))) {
-            g_free(parent_interfaces);
-           return -1;
-       }
-        if (PyDict_SetItemString(class->tp_dict, "__gsignals__",
-                                overridden_signals)) {
-            g_free(parent_interfaces);
-            return -1;
-        }
-        Py_DECREF(overridden_signals);
-    } else {
-       PyErr_Clear();
-    }
 
-    /* we look this up in the instance dictionary, so we don't
-     * accidentally get a parent type's __gsignals__ attribute. */
-    gproperties = PyDict_GetItemString(class->tp_dict, "__gproperties__");
-    if (gproperties) {
-       if (!PyDict_Check(gproperties)) {
-           PyErr_SetString(PyExc_TypeError,
-                           "__gproperties__ attribute not a dict!");
-            g_free(parent_interfaces);
-           return -1;
-       }
-       if (!add_properties(instance_type, gproperties)) {
-            g_free(parent_interfaces);
-           return -1;
-       }
-       PyDict_DelItemString(class->tp_dict, "__gproperties__");
-       /* Borrowed reference. Py_DECREF(gproperties); */
-    } else {
-       PyErr_Clear();
+    gclass = g_type_class_ref(instance_type);
+    if (PyErr_Occurred() != NULL) {
+        g_type_class_unref(gclass);
+        g_free(parent_interfaces);
+        return -1;
     }
 
-    /* Register new interfaces, that are _not_ already defined by
-     * the parent type.  FIXME: See above.
-     */
-    pyg_type_add_interfaces(class, instance_type, class->tp_bases, TRUE,
-                            parent_interfaces, n_parent_interfaces);
-
-    gclass = g_type_class_ref(instance_type);
     if (pyg_run_class_init(instance_type, gclass, class)) {
         g_type_class_unref(gclass);
         g_free(parent_interfaces);
@@ -1324,9 +1215,8 @@ pyg_type_register(PyTypeObject *class, const char *type_name)
     g_type_class_unref(gclass);
     g_free(parent_interfaces);
 
-    if (gsignals)
-        PyDict_DelItemString(class->tp_dict, "__gsignals__");
-
+    if (PyErr_Occurred() != NULL)
+        return -1;
     return 0;
 }
 
@@ -1398,171 +1288,6 @@ pyg_signal_new(PyObject *self, PyObject *args)
 }
 
 static PyObject *
-pyg_signal_list_names (PyObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "type", NULL };
-    PyObject *py_itype, *list;
-    GObjectClass *class = NULL;
-    GType itype;
-    guint n;
-    guint *ids;
-    guint i;
-    gpointer iface = NULL;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O:gobject.signal_list_names",
-                                     kwlist, &py_itype))
-       return NULL;
-    if ((itype = pyg_type_from_object(py_itype)) == 0)
-       return NULL;
-
-    if (G_TYPE_IS_INSTANTIATABLE(itype)) {
-       class = g_type_class_ref(itype);
-       if (!class) {
-           PyErr_SetString(PyExc_RuntimeError,
-                           "could not get a reference to type class");
-           return NULL;
-       }
-    } else if (!G_TYPE_IS_INTERFACE(itype)) {
-       PyErr_SetString(PyExc_TypeError,
-                       "type must be instantiable or an interface");
-       return NULL;
-    } else {
-        iface = g_type_default_interface_ref(itype);
-    }
-
-    ids = g_signal_list_ids(itype, &n);
-
-    list = PyTuple_New((gint)n);
-    if (list != NULL) {
-       for (i = 0; i < n; i++)
-           PyTuple_SetItem(list, i,
-                       PYGLIB_PyUnicode_FromString(g_signal_name(ids[i])));
-    }
-
-    g_free(ids);
-    if (class)
-        g_type_class_unref(class);
-    else
-       g_type_default_interface_unref(iface);
-
-    return list;
-}
-
-static PyObject *
-pyg_signal_list_ids (PyObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "type", NULL };
-    PyObject *py_itype, *list;
-    GObjectClass *class = NULL;
-    GType itype;
-    guint n;
-    guint *ids;
-    guint i;
-    gpointer iface = NULL;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs,
-                                     "O:gobject.signal_list_ids",
-                                     kwlist, &py_itype))
-       return NULL;
-    if ((itype = pyg_type_from_object(py_itype)) == 0)
-       return NULL;
-
-    if (G_TYPE_IS_INSTANTIATABLE(itype)) {
-       class = g_type_class_ref(itype);
-       if (!class) {
-           PyErr_SetString(PyExc_RuntimeError,
-                           "could not get a reference to type class");
-           return NULL;
-       }
-    } else if (!G_TYPE_IS_INTERFACE(itype)) {
-       PyErr_SetString(PyExc_TypeError,
-                       "type must be instantiable or an interface");
-       return NULL;
-    } else {
-        iface = g_type_default_interface_ref(itype);
-    }
-
-    ids = g_signal_list_ids(itype, &n);
-
-    list = PyTuple_New((gint)n);
-    if (list == NULL) {
-       g_free(ids);
-       g_type_class_unref(class);
-       return NULL;
-    }
-
-    for (i = 0; i < n; i++)
-       PyTuple_SetItem(list, i, PYGLIB_PyLong_FromLong(ids[i]));
-    g_free(ids);
-    if (class)
-        g_type_class_unref(class);
-    else
-       g_type_default_interface_unref(iface);
-
-    return list;
-}
-
-static PyObject *
-pyg_signal_lookup (PyObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "name", "type", NULL };
-    PyObject *py_itype;
-    GObjectClass *class = NULL;
-    GType itype;
-    gchar *signal_name;
-    guint id;
-    gpointer iface = NULL;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "sO:gobject.signal_lookup",
-                                     kwlist, &signal_name, &py_itype))
-       return NULL;
-    if ((itype = pyg_type_from_object(py_itype)) == 0)
-       return NULL;
-
-    if (G_TYPE_IS_INSTANTIATABLE(itype)) {
-       class = g_type_class_ref(itype);
-       if (!class) {
-           PyErr_SetString(PyExc_RuntimeError,
-                           "could not get a reference to type class");
-           return NULL;
-       }
-    } else if (!G_TYPE_IS_INTERFACE(itype)) {
-       PyErr_SetString(PyExc_TypeError,
-                       "type must be instantiable or an interface");
-       return NULL;
-    } else {
-        iface = g_type_default_interface_ref(itype);
-    }
-
-    id = g_signal_lookup(signal_name, itype);
-
-    if (class)
-        g_type_class_unref(class);
-    else
-       g_type_default_interface_unref(iface);
-    return PYGLIB_PyLong_FromLong(id);
-}
-
-static PyObject *
-pyg_signal_name (PyObject *self, PyObject *args, PyObject *kwargs)
-{
-    static char *kwlist[] = { "signal_id", NULL };
-    const gchar *signal_name;
-    guint id;
-
-    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "i:gobject.signal_name",
-                                     kwlist, &id))
-       return NULL;
-    signal_name = g_signal_name(id);
-    if (signal_name)
-        return PYGLIB_PyUnicode_FromString(signal_name);
-
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
 pyg_signal_query (PyObject *self, PyObject *args, PyObject *kwargs)
 {
     static char *kwlist1[] = { "name", "type", NULL };
@@ -1987,20 +1712,9 @@ pyg__install_metaclass(PyObject *dummy, PyTypeObject *metaclass)
 static PyMethodDef _gobject_functions[] = {
     { "type_name", pyg_type_name, METH_VARARGS },
     { "type_from_name", pyg_type_from_name, METH_VARARGS },
-    { "type_parent", pyg_type_parent, METH_VARARGS },
     { "type_is_a", pyg_type_is_a, METH_VARARGS },
-    { "type_children", pyg_type_children, METH_VARARGS },
-    { "type_interfaces", pyg_type_interfaces, METH_VARARGS },
     { "type_register", _wrap_pyg_type_register, METH_VARARGS },
     { "signal_new", pyg_signal_new, METH_VARARGS },
-    { "signal_list_names",
-      (PyCFunction)pyg_signal_list_names, METH_VARARGS|METH_KEYWORDS },
-    { "signal_list_ids",
-      (PyCFunction)pyg_signal_list_ids, METH_VARARGS|METH_KEYWORDS },
-    { "signal_lookup",
-      (PyCFunction)pyg_signal_lookup, METH_VARARGS|METH_KEYWORDS },
-    { "signal_name",
-      (PyCFunction)pyg_signal_name, METH_VARARGS|METH_KEYWORDS },
     { "signal_query",
       (PyCFunction)pyg_signal_query, METH_VARARGS|METH_KEYWORDS },
     { "list_properties",
@@ -2431,44 +2145,17 @@ pygobject_register_constants(PyObject *m)
     PyModule_AddIntConstant(m,  "G_MAXUSHORT", G_MAXUSHORT);
     PyModule_AddIntConstant(m,  "G_MININT", G_MININT);
     PyModule_AddIntConstant(m,  "G_MAXINT", G_MAXINT);
+    PyModule_AddObject(m,       "G_MAXUINT", PyLong_FromUnsignedLong(G_MAXUINT));
     PyModule_AddObject(m,       "G_MINLONG", PyLong_FromLong(G_MINLONG));
     PyModule_AddObject(m,       "G_MAXLONG", PyLong_FromLong(G_MAXLONG));
     PyModule_AddObject(m,       "G_MAXULONG", PyLong_FromUnsignedLong(G_MAXULONG));
-    PyModule_AddIntConstant(m,  "G_MININT8", G_MININT8);
-    PyModule_AddIntConstant(m,  "G_MAXINT8", G_MAXINT8);
-    PyModule_AddIntConstant(m,  "G_MAXUINT8", G_MAXUINT8);
-    PyModule_AddIntConstant(m,  "G_MININT16", G_MININT16);
-    PyModule_AddIntConstant(m,  "G_MAXINT16", G_MAXINT16);
-    PyModule_AddIntConstant(m,  "G_MAXUINT16", G_MAXUINT16);
-    PyModule_AddIntConstant(m,  "G_MININT32", G_MININT32);
-    PyModule_AddIntConstant(m,  "G_MAXINT32", G_MAXINT32);
-    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));
     PyModule_AddObject(m,       "G_MAXSIZE", PyLong_FromSize_t(G_MAXSIZE));
     PyModule_AddObject(m,       "G_MAXSSIZE", PyLong_FromSsize_t(G_MAXSSIZE));
+    PyModule_AddObject(m,       "G_MINSSIZE", PyLong_FromSsize_t(G_MINSSIZE));
     PyModule_AddObject(m,       "G_MINOFFSET", PyLong_FromLongLong(G_MINOFFSET));
     PyModule_AddObject(m,       "G_MAXOFFSET", PyLong_FromLongLong(G_MAXOFFSET));
 
-    /* in order for test_properties to pass, G_MAXUINT must be initialized using
-       PyLong_FromUnsignedLong, despite AFAICT it is unecessary for 32bit int types.
-       In the interests of consistancy I did the same for MAXUINT32 */
-    PyModule_AddObject(m,       "G_MAXUINT32", PyLong_FromUnsignedLong(G_MAXUINT32));
-    PyModule_AddObject(m,       "G_MAXUINT", PyLong_FromUnsignedLong(G_MAXUINT));
-
     PyModule_AddIntConstant(m, "SIGNAL_RUN_FIRST", G_SIGNAL_RUN_FIRST);
-    PyModule_AddIntConstant(m, "SIGNAL_RUN_LAST", G_SIGNAL_RUN_LAST);
-    PyModule_AddIntConstant(m, "SIGNAL_RUN_CLEANUP", G_SIGNAL_RUN_CLEANUP);
-    PyModule_AddIntConstant(m, "SIGNAL_NO_RECURSE", G_SIGNAL_NO_RECURSE);
-    PyModule_AddIntConstant(m, "SIGNAL_DETAILED", G_SIGNAL_DETAILED);
-    PyModule_AddIntConstant(m, "SIGNAL_ACTION", G_SIGNAL_ACTION);
-    PyModule_AddIntConstant(m, "SIGNAL_NO_HOOKS", G_SIGNAL_NO_HOOKS);
-
-    PyModule_AddIntConstant(m, "PARAM_READABLE", G_PARAM_READABLE);
-    PyModule_AddIntConstant(m, "PARAM_WRITABLE", G_PARAM_WRITABLE);
-    PyModule_AddIntConstant(m, "PARAM_CONSTRUCT", G_PARAM_CONSTRUCT);
-    PyModule_AddIntConstant(m, "PARAM_CONSTRUCT_ONLY", G_PARAM_CONSTRUCT_ONLY);
-    PyModule_AddIntConstant(m, "PARAM_LAX_VALIDATION", G_PARAM_LAX_VALIDATION);
     PyModule_AddIntConstant(m, "PARAM_READWRITE", G_PARAM_READWRITE);
 
     /* The rest of the types are set in __init__.py */
index 82b06b0..a038f1b 100644 (file)
@@ -29,8 +29,8 @@ from .constants import \
     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 \
+    TYPE_PYOBJECT, TYPE_GTYPE, TYPE_STRV, TYPE_VARIANT
+from ._gobject import \
     G_MAXFLOAT, G_MAXDOUBLE, \
     G_MININT, G_MAXINT, G_MAXUINT, G_MINLONG, G_MAXLONG, \
     G_MAXULONG
@@ -93,14 +93,14 @@ class Property(object):
         TYPE_DOUBLE: -G_MAXDOUBLE,
         TYPE_INT: G_MININT,
         TYPE_LONG: G_MINLONG,
-        TYPE_INT64: -2 ** 62 - 1,
+        TYPE_INT64: -2 ** 63,
     }
 
     _max_value_lookup = {
         TYPE_UINT: G_MAXUINT,
         TYPE_ULONG: G_MAXULONG,
-        TYPE_INT64: 2 ** 62 - 1,
-        TYPE_UINT64: 2 ** 63 - 1,
+        TYPE_INT64: 2 ** 63 - 1,
+        TYPE_UINT64: 2 ** 64 - 1,
         TYPE_FLOAT: G_MAXFLOAT,
         TYPE_DOUBLE: G_MAXDOUBLE,
         TYPE_INT: G_MAXINT,
@@ -162,6 +162,10 @@ class Property(object):
         if not isinstance(blurb, _basestring):
             raise TypeError("blurb must be a string")
         self.blurb = blurb
+        # Always clobber __doc__ with blurb even if blurb is empty because
+        # we don't want the lengthy Property class documentation showing up
+        # on instances.
+        self.__doc__ = blurb
 
         if flags < 0 or flags > 32:
             raise TypeError("invalid flag value: %r" % (flags,))
@@ -234,10 +238,10 @@ class Property(object):
 
     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__:
+        if fget.__doc__:
+            # Always clobber docstring and blurb with the getter docstring.
             self.blurb = fget.__doc__
+            self.__doc__ = fget.__doc__
         self.fget = fget
         return self
 
@@ -260,7 +264,7 @@ class Property(object):
                        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):
+                       TYPE_PYOBJECT, TYPE_GTYPE, TYPE_STRV, TYPE_VARIANT):
             return type_
         else:
             raise TypeError("Unsupported type: %r" % (type_,))
@@ -298,6 +302,10 @@ class Property(object):
             for val in default:
                 if type(val) not in (str, bytes):
                     raise TypeError("Strv value %s must contain only strings" % str(default))
+        elif _gobject.type_is_a(ptype, TYPE_VARIANT) and default is not None:
+            if not hasattr(default, '__gtype__') or not _gobject.type_is_a(default, TYPE_VARIANT):
+                raise TypeError("variant value %s must be an instance of %r" %
+                                (default, ptype))
 
     def _get_minimum(self):
         return self._min_value_lookup.get(self.type, None)
@@ -333,7 +341,8 @@ class Property(object):
                      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)):
+              ptype.is_a(TYPE_ENUM) or ptype.is_a(TYPE_FLAGS) or
+              ptype.is_a(TYPE_VARIANT)):
             args = (self.default,)
         elif ptype in (TYPE_PYOBJECT, TYPE_GTYPE):
             args = ()
@@ -343,3 +352,48 @@ class Property(object):
             raise NotImplementedError(ptype)
 
         return (self.type, self.nick, self.blurb) + args + (self.flags,)
+
+
+def install_properties(cls):
+    """
+    Scans the given class for instances of Property and merges them
+    into the classes __gproperties__ dict if it exists or adds it if not.
+    """
+    gproperties = cls.__dict__.get('__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('Property %s was already found in __gproperties__' % name)
+            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
index fd6bd4b..3d0c819 100644 (file)
@@ -51,6 +51,25 @@ GQuark pygobject_wrapper_key;
 GQuark pygobject_has_updated_constructor_key;
 GQuark pygobject_instance_data_key;
 
+/* Copied from glib. gobject uses hyphens in property names, but in Python
+ * we can only represent hyphens as underscores. Convert underscores to
+ * hyphens for glib compatibility. */
+static void
+canonicalize_key (gchar *key)
+{
+    gchar *p;
+
+    for (p = key; *p != 0; p++)
+    {
+        gchar c = *p;
+
+        if (c != '-' &&
+            (c < '0' || c > '9') &&
+            (c < 'A' || c > 'Z') &&
+            (c < 'a' || c > 'z'))
+                *p = '-';
+    }
+}
 
 /* -------------- class <-> wrapper manipulation --------------- */
 
@@ -226,6 +245,8 @@ build_parameter_list(GObjectClass *class)
        g_free(name);
     }
 
+    g_type_class_unref(class);
+
     if (props)
         g_free(props);
     
@@ -235,7 +256,7 @@ build_parameter_list(GObjectClass *class)
 static PyObject*
 PyGProps_getattro(PyGProps *self, PyObject *attr)
 {
-    char *attr_name;
+    char *attr_name, *property_name;
     GObjectClass *class;
     GParamSpec *pspec;
     GValue value = { 0, };
@@ -250,16 +271,18 @@ PyGProps_getattro(PyGProps *self, PyObject *attr)
     class = g_type_class_ref(self->gtype);
     
     if (!strcmp(attr_name, "__members__")) {
-       return build_parameter_list(class);
-    }
-
-    if (self->pygobject != NULL) {
-        ret = pygi_get_property_value (self->pygobject, attr_name);
-        if (ret != NULL)
-            return ret;
-    }
-
-    pspec = g_object_class_find_property(class, attr_name);
+        ret = build_parameter_list(class);
+        g_type_class_unref(class);
+       return ret;
+    }
+
+    /* g_object_class_find_property recurses through the class hierarchy,
+     * so the resulting pspec tells us the owner_type that owns the property
+     * we're dealing with. */
+    property_name = g_strdup(attr_name);
+    canonicalize_key(property_name);
+    pspec = g_object_class_find_property(class, property_name);
+    g_free(property_name);
     g_type_class_unref(class);
 
     if (!pspec) {
@@ -272,14 +295,23 @@ PyGProps_getattro(PyGProps *self, PyObject *attr)
        return NULL;
     }
 
-    /* If we're doing it without an instance, return a GParamSpec */
     if (!self->pygobject) {
+        /* If we're doing it without an instance, return a GParamSpec */
         return pyg_param_spec_new(pspec);
     }
+
+    /* See if the property's class is from the gi repository. If so,
+     * use gi to correctly read the property value. */
+    ret = pygi_get_property_value (self->pygobject, pspec);
+    if (ret != NULL) {
+        return ret;
+    }
     
+    /* If we reach here, it must be a property defined outside of gi.
+     * Just do a straightforward read. */
     g_value_init(&value, G_PARAM_SPEC_VALUE_TYPE(pspec));
     pyg_begin_allow_threads;
-    g_object_get_property(self->pygobject->obj, attr_name, &value);
+    g_object_get_property(self->pygobject->obj, pspec->name, &value);
     pyg_end_allow_threads;
     ret = pyg_param_gvalue_as_pyobject(&value, TRUE, pspec);
     g_value_unset(&value);
@@ -289,7 +321,6 @@ PyGProps_getattro(PyGProps *self, PyObject *attr)
 
 static gboolean
 set_property_from_pspec(GObject *obj,
-                       char *attr_name,
                        GParamSpec *pspec,
                        PyObject *pvalue)
 {
@@ -298,13 +329,13 @@ set_property_from_pspec(GObject *obj,
     if (pspec->flags & G_PARAM_CONSTRUCT_ONLY) {
        PyErr_Format(PyExc_TypeError,
                     "property '%s' can only be set in constructor",
-                    attr_name);
+                    pspec->name);
        return FALSE;
     }  
 
     if (!(pspec->flags & G_PARAM_WRITABLE)) {
        PyErr_Format(PyExc_TypeError,
-                    "property '%s' is not writable", attr_name);
+                    "property '%s' is not writable", pspec->name);
        return FALSE;
     }  
 
@@ -316,7 +347,7 @@ set_property_from_pspec(GObject *obj,
     }
 
     pyg_begin_allow_threads;
-    g_object_set_property(obj, attr_name, &value);
+    g_object_set_property(obj, pspec->name, &value);
     pyg_end_allow_threads;
 
     g_value_unset(&value);
@@ -330,7 +361,7 @@ static int
 PyGProps_setattro(PyGProps *self, PyObject *attr, PyObject *pvalue)
 {
     GParamSpec *pspec;
-    char *attr_name;
+    char *attr_name, *property_name;
     GObject *obj;
     int ret = -1;
     
@@ -352,20 +383,33 @@ PyGProps_setattro(PyGProps *self, PyObject *attr, PyObject *pvalue)
         return -1;
     }
 
-    ret = pygi_set_property_value (self->pygobject, attr_name, pvalue);
+    obj = self->pygobject->obj;
+
+    property_name = g_strdup(attr_name);
+    canonicalize_key(property_name);
+
+    /* g_object_class_find_property recurses through the class hierarchy,
+     * so the resulting pspec tells us the owner_type that owns the property
+     * we're dealing with. */
+    pspec = g_object_class_find_property(G_OBJECT_GET_CLASS(obj),
+                                         property_name);
+    g_free(property_name);
+    if (!pspec) {
+       return PyObject_GenericSetAttr((PyObject *)self, attr, pvalue);
+    }
+
+    /* See if the property's class is from the gi repository. If so,
+     * use gi to correctly read the property value. */
+    ret = pygi_set_property_value (self->pygobject, pspec, pvalue);
     if (ret == 0)
         return 0;
     else if (ret == -1)
         if (PyErr_Occurred())
             return -1;
 
-    obj = self->pygobject->obj;
-    pspec = g_object_class_find_property(G_OBJECT_GET_CLASS(obj), attr_name);
-    if (!pspec) {
-       return PyObject_GenericSetAttr((PyObject *)self, attr, pvalue);
-    }
-
-    if (!set_property_from_pspec(obj, attr_name, pspec, pvalue))
+    /* If we reach here, it must be a property defined outside of gi.
+     * Just do a straightforward set. */
+    if (!set_property_from_pspec(obj, pspec, pvalue))
        return -1;
                                  
     return 0;
@@ -1011,115 +1055,6 @@ pygobject_watch_closure(PyObject *self, GClosure *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("gi._gobject.GObject", PyGObject_Type, PyGObject);
@@ -1452,7 +1387,7 @@ pygobject_set_property(PyGObject *self, PyObject *args)
        return NULL;
     }
     
-    if (!set_property_from_pspec(self->obj, param_name, pspec, pvalue))
+    if (!set_property_from_pspec(self->obj, pspec, pvalue))
        return NULL;
     
     Py_INCREF(Py_None);
@@ -1490,7 +1425,7 @@ pygobject_set_properties(PyGObject *self, PyObject *args, PyObject *kwargs)
            goto exit;
        }
 
-       if (!set_property_from_pspec(G_OBJECT(self->obj), key_str, pspec, value))
+       if (!set_property_from_pspec(G_OBJECT(self->obj), pspec, value))
            goto exit;
     }
 
@@ -1661,88 +1596,6 @@ pygobject_bind_property(PyGObject *self, PyObject *args)
 }
 
 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);
-    return pygcontext_freeze_notify_new(self->obj);
-}
-
-static PyObject *
-pygobject_notify(PyGObject *self, PyObject *args)
-{
-    char *property_name;
-
-    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;
-}
-
-static PyObject *
-pygobject_thaw_notify(PyGObject *self, PyObject *args)
-{
-    if (!PyArg_ParseTuple(args, ":GObject.thaw_notify"))
-       return NULL;
-    
-    CHECK_GOBJECT(self);
-    
-    g_object_thaw_notify(self->obj);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
-pygobject_get_data(PyGObject *self, PyObject *args)
-{
-    char *key;
-    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;
-    
-    CHECK_GOBJECT(self);
-    
-    quark = g_quark_from_string(key);
-    data = g_object_get_qdata(self->obj, quark);
-    if (!data) data = Py_None;
-    Py_INCREF(data);
-    return data;
-}
-
-static PyObject *
-pygobject_set_data(PyGObject *self, PyObject *args)
-{
-    char *key;
-    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;
-    
-    CHECK_GOBJECT(self);
-    
-    quark = g_quark_from_string(key);
-    Py_INCREF(data);
-    g_object_set_qdata_full(self->obj, quark, data, pyg_destroy_notify);
-    Py_INCREF(Py_None);
-    return Py_None;
-}
-
-static PyObject *
 pygobject_connect(PyGObject *self, PyObject *args)
 {
     PyObject *first, *callback, *extra_args, *repr = NULL;
@@ -1996,11 +1849,12 @@ pygobject_handler_block(PyGObject *self, PyObject *args)
 
     if (!PyArg_ParseTuple(args, "k:GObject.handler_block", &handler_id))
        return NULL;
-    
+
     CHECK_GOBJECT(self);
-    
+
     g_signal_handler_block(self->obj, handler_id);
-    return pygcontext_handler_block_new(self->obj, handler_id);
+    Py_INCREF(Py_None);
+    return Py_None;
 }
 
 static PyObject *
@@ -2361,11 +2215,6 @@ static PyMethodDef pygobject_methods[] = {
     { "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 },
-    { "get_data", (PyCFunction)pygobject_get_data, METH_VARARGS },
-    { "set_data", (PyCFunction)pygobject_set_data, METH_VARARGS },
     { "connect", (PyCFunction)pygobject_connect, METH_VARARGS },
     { "connect_after", (PyCFunction)pygobject_connect_after, METH_VARARGS },
     { "connect_object", (PyCFunction)pygobject_connect_object, METH_VARARGS },
@@ -2722,18 +2571,4 @@ pygobject_object_register_types(PyObject *d)
     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;
 }
index fe2c3b6..79c8387 100644 (file)
@@ -727,26 +727,6 @@ 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.
@@ -831,11 +811,15 @@ pyg_value_from_pyobject(GValue *value, PyObject *obj)
     case G_TYPE_UINT:
        {
            if (PYGLIB_PyLong_Check(obj)) {
-               glong val;
+               guint val;
+
+                /* check that number is not negative */
+                if (PyLong_AsLongLong(obj) < 0)
+                    return -1;
 
-               val = PYGLIB_PyLong_AsLong(obj);
-               if (val >= 0 && val <= G_MAXUINT)
-                   g_value_set_uint(value, (guint)val);
+               val = PyLong_AsUnsignedLong(obj);
+               if (val <= G_MAXUINT)
+                   g_value_set_uint(value, val);
                else
                    return -1;
            } else {
@@ -1013,10 +997,9 @@ pyg_value_from_pyobject(GValue *value, PyObject *obj)
        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))
+            else if (pyg_type_from_object_strict(obj, FALSE) == G_TYPE_VARIANT)
                 g_value_set_variant(value, pyg_boxed_get(obj, GVariant));
             else
                 return -1;
index 0bd631d..554b724 100644 (file)
@@ -223,7 +223,7 @@ 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__', {})
+    gsignals = cls.__dict__.get('__gsignals__', {})
     newsignals = {}
     for name, signal in cls.__dict__.items():
         if isinstance(signal, Signal):
index 6ccd87f..76530f1 100644 (file)
@@ -23,6 +23,7 @@
 
 #include "pygi-private.h"
 #include "pygi.h"
+#include "pyglib.h"
 
 #include <pygobject.h>
 #include <pyglib-python-compat.h>
@@ -455,6 +456,83 @@ _wrap_pyg_variant_type_from_string (PyObject *self, PyObject *args)
     return py_variant;
 }
 
+static PyObject *
+_wrap_pyg_source_new (PyObject *self, PyObject *args)
+{
+    return pyg_source_new ();
+}
+
+#define CHUNK_SIZE 8192
+
+static PyObject*
+pyg_channel_read(PyObject* self, PyObject *args, PyObject *kwargs)
+{
+    int max_count = -1;
+    PyObject *py_iochannel, *ret_obj = NULL;
+    gsize total_read = 0;
+    GError* error = NULL;
+    GIOStatus status = G_IO_STATUS_NORMAL;
+
+    if (!PyArg_ParseTuple (args, "Oi:pyg_channel_read", &py_iochannel, &max_count)) {
+        return NULL;
+    }
+    if (!pyg_boxed_check (py_iochannel, G_TYPE_IO_CHANNEL)) {
+        PyErr_SetString(PyExc_TypeError, "first argument is not a GLib.IOChannel");
+        return NULL;
+    }
+       
+    if (max_count == 0)
+        return PYGLIB_PyBytes_FromString("");
+    
+    while (status == G_IO_STATUS_NORMAL
+          && (max_count == -1 || total_read < max_count)) {
+       gsize single_read;
+       char* buf;
+       gsize buf_size;
+       
+       if (max_count == -1) 
+           buf_size = CHUNK_SIZE;
+       else {
+           buf_size = max_count - total_read;
+           if (buf_size > CHUNK_SIZE)
+               buf_size = CHUNK_SIZE;
+        }
+       
+       if ( ret_obj == NULL ) {
+           ret_obj = PYGLIB_PyBytes_FromStringAndSize((char *)NULL, buf_size);
+           if (ret_obj == NULL)
+               goto failure;
+       }
+       else if (buf_size + total_read > PYGLIB_PyBytes_Size(ret_obj)) {
+           if (PYGLIB_PyBytes_Resize(&ret_obj, buf_size + total_read) == -1)
+               goto failure;
+       }
+       
+        buf = PYGLIB_PyBytes_AsString(ret_obj) + total_read;
+
+        pyglib_unblock_threads();
+        status = g_io_channel_read_chars(pyg_boxed_get (py_iochannel, GIOChannel),
+                                         buf, buf_size, &single_read, &error);
+        pyglib_block_threads();
+       if (pyglib_error_check(&error))
+           goto failure;
+       
+       total_read += single_read;
+    }
+       
+    if ( total_read != PYGLIB_PyBytes_Size(ret_obj) ) {
+       if (PYGLIB_PyBytes_Resize(&ret_obj, total_read) == -1)
+           goto failure;
+    }
+
+    return ret_obj;
+
+  failure:
+    Py_XDECREF(ret_obj);
+    return NULL;
+}
+
+
 static PyMethodDef _gi_functions[] = {
     { "enum_add", (PyCFunction) _wrap_pyg_enum_add, METH_VARARGS | METH_KEYWORDS },
     { "enum_register_new_gtype_and_add", (PyCFunction) _wrap_pyg_enum_register_new_gtype_and_add, METH_VARARGS | METH_KEYWORDS },
@@ -465,6 +543,9 @@ static PyMethodDef _gi_functions[] = {
     { "hook_up_vfunc_implementation", (PyCFunction) _wrap_pyg_hook_up_vfunc_implementation, METH_VARARGS },
     { "variant_new_tuple", (PyCFunction) _wrap_pyg_variant_new_tuple, METH_VARARGS },
     { "variant_type_from_string", (PyCFunction) _wrap_pyg_variant_type_from_string, METH_VARARGS },
+    { "source_new", (PyCFunction) _wrap_pyg_source_new, METH_NOARGS },
+    { "source_set_callback", (PyCFunction) pyg_source_set_callback, METH_VARARGS },
+    { "io_channel_read", (PyCFunction) pyg_channel_read, METH_VARARGS },
     { NULL, NULL, 0 }
 };
 
index d83a384..aa95cf6 100644 (file)
@@ -25,7 +25,7 @@ import logging
 import sys
 
 from ._gi import Repository
-from .module import DynamicModule, DynamicGObjectModule, DynamicGLibModule
+from .module import DynamicModule
 
 
 repository = Repository.get_default()
@@ -58,15 +58,7 @@ class DynamicImporter(object):
             return sys.modules[fullname]
 
         path, namespace = fullname.rsplit('.', 1)
-
-        # Special case GObject and GLib
-        if namespace == 'GObject':
-            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
index e115fc7..db5adf5 100644 (file)
@@ -27,7 +27,6 @@ import types
 
 _have_py3 = (sys.version_info[0] >= 3)
 
-from . import _glib, _gobject
 try:
     maketrans = ''.maketrans
 except AttributeError:
@@ -60,22 +59,37 @@ from .types import \
     StructMeta, \
     Function
 
+from ._gobject._gobject import \
+    GInterface, \
+    GObject
+
+from ._gobject.constants import \
+    TYPE_NONE, \
+    TYPE_BOXED, \
+    TYPE_POINTER, \
+    TYPE_ENUM, \
+    TYPE_FLAGS
+
+
 repository = Repository.get_default()
 
+# Cache of IntrospectionModules that have been loaded.
+_introspection_modules = {}
+
 
 def get_parent_for_object(object_info):
     parent_object_info = object_info.get_parent()
 
     if not parent_object_info:
+        # Special case GObject.Object as being derived from the static GObject.
+        if object_info.get_namespace() == 'GObject' and object_info.get_name() == 'Object':
+            return GObject
+
         return object
 
     namespace = parent_object_info.get_namespace()
     name = parent_object_info.get_name()
 
-    # Workaround for GObject.Object and GObject.InitiallyUnowned.
-    if namespace == 'GObject' and name == 'Object' or name == 'InitiallyUnowned':
-        return _gobject.GObject
-
     module = __import__('gi.repository.%s' % namespace, fromlist=[name])
     return getattr(module, name)
 
@@ -92,7 +106,13 @@ def get_interfaces_for_object(object_info):
 
 
 class IntrospectionModule(object):
+    """An object which wraps an introspection typelib.
 
+    This wrapping creates a python module like representation of the typelib
+    using gi repository as a foundation. Accessing attributes of the module
+    will dynamically pull them in and create wrappers for the members.
+    These members are then cached on this introspection module.
+    """
     def __init__(self, namespace, version=None):
         repository.require(namespace, version)
         self._namespace = namespace
@@ -120,16 +140,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(TYPE_FLAGS):
                         wrapper = flags_add(g_type)
                     else:
-                        assert g_type == _gobject.TYPE_NONE
+                        assert g_type == TYPE_NONE
                         wrapper = flags_register_new_gtype_and_add(info)
                 else:
-                    if g_type.is_a(_gobject.TYPE_ENUM):
+                    if g_type.is_a(TYPE_ENUM):
                         wrapper = enum_add(g_type)
                     else:
-                        assert g_type == _gobject.TYPE_NONE
+                        assert g_type == TYPE_NONE
                         wrapper = enum_register_new_gtype_and_add(info)
 
                 wrapper.__info__ = info
@@ -145,19 +165,12 @@ class IntrospectionModule(object):
                     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 != 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:
-                type_ = g_type.pytype
-                if type_ is not None:
-                    self.__dict__[name] = type_
-                    return type_
-
             # Create a wrapper.
             if isinstance(info, ObjectInfo):
                 parent = get_parent_for_object(info)
@@ -169,13 +182,13 @@ class IntrospectionModule(object):
                 bases = (CCallback,)
                 metaclass = GObjectMeta
             elif isinstance(info, InterfaceInfo):
-                bases = (_gobject.GInterface,)
+                bases = (GInterface,)
                 metaclass = GObjectMeta
             elif isinstance(info, (StructInfo, UnionInfo)):
-                if g_type.is_a(_gobject.TYPE_BOXED):
+                if g_type.is_a(TYPE_BOXED):
                     bases = (Boxed,)
-                elif (g_type.is_a(_gobject.TYPE_POINTER) or
-                      g_type == _gobject.TYPE_NONE or
+                elif (g_type.is_a(TYPE_POINTER) or
+                      g_type == TYPE_NONE or
                       g_type.fundamental == g_type):
                     bases = (Struct,)
                 else:
@@ -184,6 +197,17 @@ class IntrospectionModule(object):
             else:
                 raise NotImplementedError(info)
 
+            # Check if there is already a Python wrapper that is not a parent class
+            # of the wrapper being created. If it is a parent, it is ok to clobber
+            # g_type.pytype with a new child class wrapper of the existing parent.
+            # Note that the return here never occurs under normal circumstances due
+            # to caching on the __dict__ itself.
+            if g_type != TYPE_NONE:
+                type_ = g_type.pytype
+                if type_ is not None and type_ not in bases:
+                    self.__dict__[name] = type_
+                    return type_
+
             name = info.get_name()
             dict_ = {
                 '__info__': info,
@@ -193,7 +217,7 @@ class IntrospectionModule(object):
             wrapper = metaclass(name, bases, dict_)
 
             # Register the new Python wrapper.
-            if g_type != _gobject.TYPE_NONE:
+            if g_type != TYPE_NONE:
                 g_type.pytype = wrapper
 
         elif isinstance(info, FunctionInfo):
@@ -203,6 +227,9 @@ class IntrospectionModule(object):
         else:
             raise NotImplementedError(info)
 
+        # Cache the newly created wrapper which will then be
+        # available directly on this introspection module instead of being
+        # lazily constructed through the __getattr__ we are currently in.
         self.__dict__[name] = wrapper
         return wrapper
 
@@ -229,7 +256,29 @@ class IntrospectionModule(object):
         return list(result)
 
 
+def get_introspection_module(namespace):
+    """
+    :Returns:
+        An object directly wrapping the gi module without overrides.
+    """
+    if namespace in _introspection_modules:
+        return _introspection_modules[namespace]
+
+    version = gi.get_required_version(namespace)
+    module = IntrospectionModule(namespace, version)
+    _introspection_modules[namespace] = module
+    return module
+
+
 class DynamicModule(types.ModuleType):
+    """A module composed of an IntrospectionModule and an overrides module.
+
+    DynamicModule wraps up an IntrospectionModule and an overrides module
+    into a single accessible module. This is what is returned from statements
+    like "from gi.repository import Foo". Accessing attributes on a DynamicModule
+    will first look overrides (or the gi.overrides.registry cache) and then
+    in the introspection module if it was not found as an override.
+    """
     def __init__(self, namespace):
         self._namespace = namespace
         self._introspection_module = None
@@ -237,9 +286,7 @@ class DynamicModule(types.ModuleType):
         self.__path__ = None
 
     def _load(self):
-        version = gi.get_required_version(self._namespace)
-        self._introspection_module = IntrospectionModule(self._namespace,
-                                                         version)
+        self._introspection_module = get_introspection_module(self._namespace)
         try:
             overrides_modules = __import__('gi.overrides', fromlist=[self._namespace])
             self._overrides_module = getattr(overrides_modules, self._namespace, None)
@@ -288,62 +335,3 @@ class DynamicModule(types.ModuleType):
                                        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 a25eda7..cc967b4 100644 (file)
@@ -19,9 +19,9 @@
 # USA
 
 from ..overrides import override
-from ..importer import modules
+from ..module import get_introspection_module
 
-GIMarshallingTests = modules['GIMarshallingTests']._introspection_module
+GIMarshallingTests = get_introspection_module('GIMarshallingTests')
 
 __all__ = []
 
@@ -63,6 +63,7 @@ class OverridesObject(GIMarshallingTests.OverridesObject):
         return self
 
     def method(self):
+        """Overridden doc string."""
         return GIMarshallingTests.OverridesObject.method(self) / 7
 
 OverridesObject = override(OverridesObject)
index c41f523..6ae5dba 100644 (file)
@@ -2,6 +2,7 @@
 # vim: tabstop=4 shiftwidth=4 expandtab
 #
 # Copyright (C) 2010 Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+# Copyright (C) 2011, 2012 Canonical Ltd.
 #
 # This library is free software; you can redistribute it and/or
 # modify it under the terms of the GNU Lesser General Public
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301
 # USA
 
-from ..importer import modules
-from .._gi import variant_new_tuple, variant_type_from_string
+import signal
+import warnings
 
-GLib = modules['GLib']._introspection_module
+from ..module import get_introspection_module
+from .._gi import (variant_new_tuple, variant_type_from_string, source_new,
+                   source_set_callback, io_channel_read)
+from ..overrides import override, deprecated
+from gi import PyGIDeprecationWarning, version_info
+
+GLib = get_introspection_module('GLib')
 
 __all__ = []
 
+from gi._glib import option
+option  # pyflakes
+__all__.append('option')
+
+
+# Types and functions still needed from static bindings
+from gi._glib import _glib
+GError = _glib.GError
+OptionContext = _glib.OptionContext
+OptionGroup = _glib.OptionGroup
+Pid = _glib.Pid
+PollFD = _glib.PollFD
+spawn_async = _glib.spawn_async
+threads_init = _glib.threads_init
+
+__all__ += ['GError', 'OptionContext', 'OptionGroup', 'Pid', 'PollFD',
+            'spawn_async', 'threads_init']
+
 
 class _VariantCreator(object):
 
@@ -85,11 +110,23 @@ class _VariantCreator(object):
         '''Handle the case where the outermost type of format is a tuple.'''
 
         format = format[1:]  # eat the '('
-        builder = GLib.VariantBuilder.new(variant_type_from_string('r'))
-        if args is not None:
+        if args is None:
+            # empty value: we need to call _create() to parse the subtype
+            rest_format = format
+            while rest_format:
+                if rest_format.startswith(')'):
+                    break
+                rest_format = self._create(rest_format, None)[1]
+            else:
+                raise TypeError('tuple type string not closed with )')
+
+            rest_format = rest_format[1:]  # eat the )
+            return (None, rest_format, None)
+        else:
             if not args or not isinstance(args[0], tuple):
                 raise TypeError('expected tuple argument')
 
+            builder = GLib.VariantBuilder.new(variant_type_from_string('r'))
             for i in range(len(args[0])):
                 if format.startswith(')'):
                     raise TypeError('too many arguments for tuple signature')
@@ -97,7 +134,11 @@ class _VariantCreator(object):
                 (v, format, _) = self._create(format, args[0][i:])
                 builder.add_value(v)
             args = args[1:]
-        return (builder.end(), format[1:], args)
+            if not format.startswith(')'):
+                raise TypeError('tuple type string not closed with )')
+
+            rest_format = format[1:]  # eat the )
+            return (builder.end(), rest_format, args)
 
     def _create_dict(self, format, args):
         '''Handle the case where the outermost type of format is a dict.'''
@@ -109,8 +150,8 @@ class _VariantCreator(object):
             rest_format = self._create(format[2:], None)[1]
             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}
+                raise TypeError('dictionary type string not closed with }')
+            rest_format = rest_format[1:]  # eat the }
             element_type = format[:len(format) - len(rest_format)]
             builder = GLib.VariantBuilder.new(variant_type_from_string(element_type))
         else:
@@ -120,8 +161,8 @@ class _VariantCreator(object):
                 (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}
+                    raise TypeError('dictionary type string not closed with }')
+                rest_format = rest_format[1:]  # eat the }
 
                 entry = GLib.VariantBuilder.new(variant_type_from_string('{?*}'))
                 entry.add_value(key_v)
@@ -390,3 +431,425 @@ setattr(Variant, 'new_tuple', new_tuple)
 setattr(Variant, 'get_string', get_string)
 
 __all__.append('Variant')
+
+
+def markup_escape_text(text, length=-1):
+    if isinstance(text, bytes):
+        return GLib.markup_escape_text(text.decode('UTF-8'), length)
+    else:
+        return GLib.markup_escape_text(text, length)
+__all__.append('markup_escape_text')
+
+
+# backwards compatible names from old static bindings
+for n in ['DESKTOP', 'DOCUMENTS', 'DOWNLOAD', 'MUSIC', 'PICTURES',
+          'PUBLIC_SHARE', 'TEMPLATES', 'VIDEOS']:
+    globals()['USER_DIRECTORY_' + n] = getattr(GLib.UserDirectory, 'DIRECTORY_' + n)
+    __all__.append('USER_DIRECTORY_' + n)
+
+for n in ['ERR', 'HUP', 'IN', 'NVAL', 'OUT', 'PRI']:
+    globals()['IO_' + n] = getattr(GLib.IOCondition, n)
+    __all__.append('IO_' + n)
+
+for n in ['APPEND', 'GET_MASK', 'IS_READABLE', 'IS_SEEKABLE',
+          'MASK', 'NONBLOCK', 'SET_MASK']:
+    globals()['IO_FLAG_' + n] = getattr(GLib.IOFlags, n)
+    __all__.append('IO_FLAG_' + n)
+# spelling for the win
+IO_FLAG_IS_WRITEABLE = GLib.IOFlags.IS_WRITABLE
+__all__.append('IO_FLAG_IS_WRITEABLE')
+
+for n in ['AGAIN', 'EOF', 'ERROR', 'NORMAL']:
+    globals()['IO_STATUS_' + n] = getattr(GLib.IOStatus, n)
+    __all__.append('IO_STATUS_' + n)
+
+for n in ['CHILD_INHERITS_STDIN', 'DO_NOT_REAP_CHILD', 'FILE_AND_ARGV_ZERO',
+          'LEAVE_DESCRIPTORS_OPEN', 'SEARCH_PATH', 'STDERR_TO_DEV_NULL',
+          'STDOUT_TO_DEV_NULL']:
+    globals()['SPAWN_' + n] = getattr(GLib.SpawnFlags, n)
+    __all__.append('SPAWN_' + n)
+
+for n in ['HIDDEN', 'IN_MAIN', 'REVERSE', 'NO_ARG', 'FILENAME', 'OPTIONAL_ARG',
+          'NOALIAS']:
+    globals()['OPTION_FLAG_' + n] = getattr(GLib.OptionFlags, n)
+    __all__.append('OPTION_FLAG_' + n)
+
+for n in ['UNKNOWN_OPTION', 'BAD_VALUE', 'FAILED']:
+    globals()['OPTION_ERROR_' + n] = getattr(GLib.OptionError, n)
+    __all__.append('OPTION_ERROR_' + n)
+
+
+class MainLoop(GLib.MainLoop):
+    # Backwards compatible constructor API
+    def __new__(cls, context=None):
+        return GLib.MainLoop.new(context, False)
+
+    # Retain classic pygobject behaviour of quitting main loops on SIGINT
+    def __init__(self, context=None):
+        def _handler(loop):
+            loop.quit()
+            loop._quit_by_sigint = True
+
+        # compatibility shim, keep around until we depend on glib 2.36
+        if hasattr(GLib, 'unix_signal_add'):
+            fn = GLib.unix_signal_add
+        else:
+            fn = GLib.unix_signal_add_full
+        self._signal_source = fn(GLib.PRIORITY_DEFAULT, signal.SIGINT, _handler, self)
+
+    def __del__(self):
+        GLib.source_remove(self._signal_source)
+
+    def run(self):
+        super(MainLoop, self).run()
+        if hasattr(self, '_quit_by_sigint'):
+            # caught by _main_loop_sigint_handler()
+            raise KeyboardInterrupt
+
+MainLoop = override(MainLoop)
+__all__.append('MainLoop')
+
+
+class MainContext(GLib.MainContext):
+    # Backwards compatible API with default value
+    def iteration(self, may_block=True):
+        return super(MainContext, self).iteration(may_block)
+
+MainContext = override(MainContext)
+__all__.append('MainContext')
+
+
+class Source(GLib.Source):
+    def __new__(cls):
+        # use our custom pyg_source_new() here as g_source_new() is not
+        # bindable
+        source = source_new()
+        source.__class__ = cls
+        setattr(source, '__pygi_custom_source', True)
+        return source
+
+    # Backwards compatible API for optional arguments
+    def attach(self, context=None):
+        id = super(Source, self).attach(context)
+        return id
+
+    def set_callback(self, fn, user_data=None):
+        if hasattr(self, '__pygi_custom_source'):
+            # use our custom pyg_source_set_callback() if for a GSource object
+            # with custom functions
+            source_set_callback(self, fn, user_data)
+        else:
+            # otherwise, for Idle and Timeout, use the standard method
+            super(Source, self).set_callback(fn, user_data)
+
+    def get_current_time(self):
+        return GLib.get_real_time() * 0.000001
+
+    get_current_time = deprecated(get_current_time,
+                                  'GLib.Source.get_time() or GLib.get_real_time()')
+
+    # as get/set_priority are introspected, we can't use the static
+    # property(get_priority, ..) here
+    def __get_priority(self):
+        return self.get_priority()
+
+    def __set_priority(self, value):
+        self.set_priority(value)
+
+    priority = property(__get_priority, __set_priority)
+
+    def __get_can_recurse(self):
+        return self.get_can_recurse()
+
+    def __set_can_recurse(self, value):
+        self.set_can_recurse(value)
+
+    can_recurse = property(__get_can_recurse, __set_can_recurse)
+
+Source = override(Source)
+__all__.append('Source')
+
+
+class Idle(Source):
+    def __new__(cls, priority=GLib.PRIORITY_DEFAULT):
+        source = GLib.idle_source_new()
+        source.__class__ = cls
+        return source
+
+    def __init__(self, priority=GLib.PRIORITY_DEFAULT):
+        super(Source, self).__init__()
+        if priority != GLib.PRIORITY_DEFAULT:
+            self.set_priority(priority)
+
+__all__.append('Idle')
+
+
+class Timeout(Source):
+    def __new__(cls, interval=0, priority=GLib.PRIORITY_DEFAULT):
+        source = GLib.timeout_source_new(interval)
+        source.__class__ = cls
+        return source
+
+    def __init__(self, interval=0, priority=GLib.PRIORITY_DEFAULT):
+        if priority != GLib.PRIORITY_DEFAULT:
+            self.set_priority(priority)
+
+__all__.append('Timeout')
+
+
+def user_data_varargs_shim(callback, user_data, cb_num_args=0):
+    '''Adjust callback and user_data varargs for PyGTK backwards compatibility
+
+    GLib only accepts exactly one user_data argument, but older pygtk
+    traditionally accepted zero or more for some specific functions. For "one
+    argument", use the actual user-supplied callback for efficiency; for all
+    others, rewire it to accept zero or more than one.
+
+    Return the adjusted callback and the real user data to pass to GLib.
+    '''
+    if len(user_data) == 1:
+        return (callback, user_data[0])
+
+    if cb_num_args == 0:
+        return (lambda data: callback(*data), user_data)
+    if cb_num_args == 2:
+        return (lambda a1, a2, data: callback(a1, a2, *data), user_data)
+    raise NotImplementedError('%i number of callback arguments not supported' % cb_num_args)
+
+
+# backwards compatible API
+def idle_add(function, *user_data, **kwargs):
+    (fn, data) = user_data_varargs_shim(function, user_data)
+    priority = kwargs.get('priority', GLib.PRIORITY_DEFAULT_IDLE)
+    return GLib.idle_add(priority, fn, data)
+
+__all__.append('idle_add')
+
+
+def timeout_add(interval, function, *user_data, **kwargs):
+    (fn, data) = user_data_varargs_shim(function, user_data)
+    priority = kwargs.get('priority', GLib.PRIORITY_DEFAULT)
+    return GLib.timeout_add(priority, interval, fn, data)
+
+__all__.append('timeout_add')
+
+
+def timeout_add_seconds(interval, function, *user_data, **kwargs):
+    (fn, data) = user_data_varargs_shim(function, user_data)
+    priority = kwargs.get('priority', GLib.PRIORITY_DEFAULT)
+    return GLib.timeout_add_seconds(priority, interval, fn, data)
+
+__all__.append('timeout_add_seconds')
+
+
+# The real GLib API is io_add_watch(IOChannel, priority, condition, callback,
+# user_data). This needs to take into account several historical APIs:
+# - calling with an fd as first argument
+# - calling with a Python file object as first argument (we keep this one as
+#   it's really convenient and does not change the number of arguments)
+# - calling without a priority as second argument
+# and the usual "call without or multiple user_data", in which case the
+# callback gets the same user data arguments.
+def io_add_watch(channel, priority_, condition, *cb_and_user_data, **kwargs):
+    if not isinstance(priority_, int) or isinstance(priority_, GLib.IOCondition):
+        warnings.warn('Calling io_add_watch without priority as second argument is deprecated',
+                      PyGIDeprecationWarning)
+        # shift the arguments around
+        user_data = cb_and_user_data
+        callback = condition
+        condition = priority_
+        if not callable(callback):
+            raise TypeError('third argument must be callable')
+
+        # backwards compatibility: Call with priority kwarg
+        if 'priority' in kwargs:
+            warnings.warn('Calling io_add_watch with priority keyword argument is deprecated, put it as second positional argument',
+                          PyGIDeprecationWarning)
+            priority_ = kwargs['priority']
+        else:
+            priority_ = GLib.PRIORITY_DEFAULT
+    else:
+        if len(cb_and_user_data) < 1 or not callable(cb_and_user_data[0]):
+            raise TypeError('expecting callback as fourth argument')
+        callback = cb_and_user_data[0]
+        user_data = cb_and_user_data[1:]
+
+    (func, user_data) = user_data_varargs_shim(callback, user_data, 2)
+
+    # backwards compatibility: Allow calling with fd
+    if isinstance(channel, int):
+        func_fdtransform = lambda _, cond, data: func(channel, cond, data)
+        real_channel = GLib.IOChannel.unix_new(channel)
+    elif hasattr(channel, 'fileno'):
+        # backwards compatibility: Allow calling with Python file
+        func_fdtransform = lambda _, cond, data: func(channel, cond, data)
+        real_channel = GLib.IOChannel.unix_new(channel.fileno())
+    else:
+        assert isinstance(channel, GLib.IOChannel)
+        func_fdtransform = func
+        real_channel = channel
+
+    return GLib.io_add_watch(real_channel, priority_, condition,
+                             func_fdtransform, user_data)
+
+__all__.append('io_add_watch')
+
+
+# backwards compatible API
+class IOChannel(GLib.IOChannel):
+    def __new__(cls, filedes=None, filename=None, mode=None, hwnd=None):
+        if filedes is not None:
+            return GLib.IOChannel.unix_new(filedes)
+        if filename is not None:
+            return GLib.IOChannel.new_file(filename, mode or 'r')
+        if hwnd is not None:
+            return GLib.IOChannel.win32_new_fd(hwnd)
+        raise TypeError('either a valid file descriptor, file name, or window handle must be supplied')
+
+    def read(self, max_count=-1):
+        return io_channel_read(self, max_count)
+
+    def readline(self, size_hint=-1):
+        # note, size_hint is just to maintain backwards compatible API; the
+        # old static binding did not actually use it
+        (status, buf, length, terminator_pos) = self.read_line()
+        if buf is None:
+            return ''
+        return buf
+
+    def readlines(self, size_hint=-1):
+        # note, size_hint is just to maintain backwards compatible API;
+        # the old static binding did not actually use it
+        lines = []
+        status = GLib.IOStatus.NORMAL
+        while status == GLib.IOStatus.NORMAL:
+            (status, buf, length, terminator_pos) = self.read_line()
+            # note, this appends an empty line after EOF; this is
+            # bug-compatible with the old static bindings
+            if buf is None:
+                buf = ''
+            lines.append(buf)
+        return lines
+
+    def write(self, buf, buflen=-1):
+        if not isinstance(buf, bytes):
+            buf = buf.encode('UTF-8')
+        if buflen == -1:
+            buflen = len(buf)
+        (status, written) = self.write_chars(buf, buflen)
+        return written
+
+    def writelines(self, lines):
+        for line in lines:
+            self.write(line)
+
+    _whence_map = {0: GLib.SeekType.SET, 1: GLib.SeekType.CUR, 2: GLib.SeekType.END}
+
+    def seek(self, offset, whence=0):
+        try:
+            w = self._whence_map[whence]
+        except KeyError:
+            raise ValueError("invalid 'whence' value")
+        return self.seek_position(offset, w)
+
+    def add_watch(self, condition, callback, *user_data, **kwargs):
+        priority = kwargs.get('priority', GLib.PRIORITY_DEFAULT)
+        return io_add_watch(self, priority, condition, callback, *user_data)
+
+    add_watch = deprecated(add_watch, 'GLib.io_add_watch()')
+
+    def __iter__(self):
+        return self
+
+    def __next__(self):
+        (status, buf, length, terminator_pos) = self.read_line()
+        if status == GLib.IOStatus.NORMAL:
+            return buf
+        raise StopIteration
+
+    # Python 2.x compatibility
+    next = __next__
+
+IOChannel = override(IOChannel)
+__all__.append('IOChannel')
+
+
+# The real GLib API is child_watch_add(priority, pid, callback, data).
+# The old static bindings had the following API which we still need to support
+# for a while:
+#   child_watch_add(pid, callback, data=None, priority=GLib.PRIORITY_DEFAULT)
+# and the usual "call without user_data", in which case the callback does not
+# get an user_data either.
+def child_watch_add(priority_or_pid, pid_or_callback, *args, **kwargs):
+    _unspecified = object()
+
+    if callable(pid_or_callback):
+        warnings.warn('Calling child_watch_add without priority as first argument is deprecated',
+                      PyGIDeprecationWarning)
+        pid = priority_or_pid
+        callback = pid_or_callback
+        if len(args) == 0:
+            user_data = kwargs.get('data', _unspecified)
+            priority = kwargs.get('priority', GLib.PRIORITY_DEFAULT)
+        elif len(args) == 1:
+            user_data = args[0]
+            priority = kwargs.get('priority', GLib.PRIORITY_DEFAULT)
+        elif len(args) == 2:
+            user_data = args[0]
+            priority = args[1]
+        else:
+            raise TypeError('expected at most 4 positional arguments')
+    else:
+        priority = priority_or_pid
+        pid = pid_or_callback
+        if len(args) == 0 or not callable(args[0]):
+            raise TypeError('expected callback as third argument')
+        callback = args[0]
+        if len(args) == 1:
+            user_data = kwargs.get('data', _unspecified)
+        else:
+            user_data = args[1]
+
+    if user_data is _unspecified:
+        # we have to call the callback without the user_data argument
+        func = lambda pid, status, data: callback(pid, status)
+        user_data = None
+    else:
+        func = callback
+
+    return GLib.child_watch_add(priority, pid, func, user_data)
+
+__all__.append('child_watch_add')
+
+
+def get_current_time():
+    return GLib.get_real_time() * 0.000001
+
+get_current_time = deprecated(get_current_time, 'GLib.get_real_time()')
+
+__all__.append('get_current_time')
+
+
+# backwards compatible API with default argument, and ignoring bytes_read
+# output argument
+def filename_from_utf8(utf8string, len=-1):
+    return GLib.filename_from_utf8(utf8string, len)[0]
+
+__all__.append('filename_from_utf8')
+
+
+# backwards compatible API for renamed function
+if not hasattr(GLib, 'unix_signal_add_full'):
+    def add_full_compat(*args):
+        warnings.warn('GLib.unix_signal_add_full() was renamed to GLib.unix_signal_add()',
+                      PyGIDeprecationWarning)
+        return GLib.unix_signal_add(*args)
+
+    GLib.unix_signal_add_full = add_full_compat
+
+
+# obsolete constants for backwards compatibility
+glib_version = (GLib.MAJOR_VERSION, GLib.MINOR_VERSION, GLib.MICRO_VERSION)
+__all__.append('glib_version')
+pyglib_version = version_info
+__all__.append('pyglib_version')
diff --git a/gi/overrides/GObject.py b/gi/overrides/GObject.py
new file mode 100644 (file)
index 0000000..c0198b3
--- /dev/null
@@ -0,0 +1,419 @@
+# -*- Mode: Python; py-indent-offset: 4 -*-
+# vim: tabstop=4 shiftwidth=4 expandtab
+#
+# Copyright (C) 2012 Canonical Ltd.
+# Author: Martin Pitt <martin.pitt@ubuntu.com>
+# Copyright (C) 2012 Simon Feltman <sfeltman@src.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
+
+import sys
+from collections import namedtuple
+
+import gi.overrides
+import gi.module
+from gi.overrides import override
+from gi.repository import GLib
+
+from gi._gobject import _gobject
+from gi._gobject import propertyhelper
+from gi._gobject import signalhelper
+
+GObjectModule = gi.module.get_introspection_module('GObject')
+
+__all__ = []
+
+
+from gi._glib import option
+sys.modules['gi._gobject.option'] = option
+
+
+# API aliases for backwards compatibility
+for name in ['markup_escape_text', 'get_application_name',
+             'set_application_name', 'get_prgname', 'set_prgname',
+             'main_depth', 'filename_display_basename',
+             'filename_display_name', 'filename_from_utf8',
+             'uri_list_extract_uris',
+             'MainLoop', 'MainContext', 'main_context_default',
+             'source_remove', 'Source', 'Idle', 'Timeout', 'PollFD',
+             'idle_add', 'timeout_add', 'timeout_add_seconds',
+             'io_add_watch', 'child_watch_add', 'get_current_time',
+             'spawn_async']:
+    globals()[name] = gi.overrides.deprecated(getattr(GLib, name), 'GLib.' + name)
+    __all__.append(name)
+
+# constants are also deprecated, but cannot mark them as such
+for name in ['PRIORITY_DEFAULT', 'PRIORITY_DEFAULT_IDLE', 'PRIORITY_HIGH',
+             'PRIORITY_HIGH_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',
+             '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',
+             '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',
+             'glib_version']:
+    globals()[name] = getattr(GLib, name)
+    __all__.append(name)
+
+
+G_MININT8 = GLib.MININT8
+G_MAXINT8 = GLib.MAXINT8
+G_MAXUINT8 = GLib.MAXUINT8
+G_MININT16 = GLib.MININT16
+G_MAXINT16 = GLib.MAXINT16
+G_MAXUINT16 = GLib.MAXUINT16
+G_MININT32 = GLib.MININT32
+G_MAXINT32 = GLib.MAXINT32
+G_MAXUINT32 = GLib.MAXUINT32
+G_MININT64 = GLib.MININT64
+G_MAXINT64 = GLib.MAXINT64
+G_MAXUINT64 = GLib.MAXUINT64
+__all__ += ['G_MININT8', 'G_MAXINT8', 'G_MAXUINT8', 'G_MININT16',
+            'G_MAXINT16', 'G_MAXUINT16', 'G_MININT32', 'G_MAXINT32',
+            'G_MAXUINT32', 'G_MININT64', 'G_MAXINT64', 'G_MAXUINT64']
+
+# these are not currently exported in GLib gir, presumably because they are
+# platform dependent; so get them from our static bindings
+for name in ['G_MINFLOAT', 'G_MAXFLOAT', 'G_MINDOUBLE', 'G_MAXDOUBLE',
+             'G_MINSHORT', 'G_MAXSHORT', 'G_MAXUSHORT', 'G_MININT', 'G_MAXINT',
+             'G_MAXUINT', 'G_MINLONG', 'G_MAXLONG', 'G_MAXULONG', 'G_MAXSIZE',
+             'G_MINSSIZE', 'G_MAXSSIZE', 'G_MINOFFSET', 'G_MAXOFFSET']:
+    globals()[name] = getattr(_gobject, name)
+    __all__.append(name)
+
+
+TYPE_INVALID = GObjectModule.type_from_name('invalid')
+TYPE_NONE = GObjectModule.type_from_name('void')
+TYPE_INTERFACE = GObjectModule.type_from_name('GInterface')
+TYPE_CHAR = GObjectModule.type_from_name('gchar')
+TYPE_UCHAR = GObjectModule.type_from_name('guchar')
+TYPE_BOOLEAN = GObjectModule.type_from_name('gboolean')
+TYPE_INT = GObjectModule.type_from_name('gint')
+TYPE_UINT = GObjectModule.type_from_name('guint')
+TYPE_LONG = GObjectModule.type_from_name('glong')
+TYPE_ULONG = GObjectModule.type_from_name('gulong')
+TYPE_INT64 = GObjectModule.type_from_name('gint64')
+TYPE_UINT64 = GObjectModule.type_from_name('guint64')
+TYPE_ENUM = GObjectModule.type_from_name('GEnum')
+TYPE_FLAGS = GObjectModule.type_from_name('GFlags')
+TYPE_FLOAT = GObjectModule.type_from_name('gfloat')
+TYPE_DOUBLE = GObjectModule.type_from_name('gdouble')
+TYPE_STRING = GObjectModule.type_from_name('gchararray')
+TYPE_POINTER = GObjectModule.type_from_name('gpointer')
+TYPE_BOXED = GObjectModule.type_from_name('GBoxed')
+TYPE_PARAM = GObjectModule.type_from_name('GParam')
+TYPE_OBJECT = GObjectModule.type_from_name('GObject')
+TYPE_PYOBJECT = GObjectModule.type_from_name('PyObject')
+TYPE_GTYPE = GObjectModule.type_from_name('GType')
+TYPE_STRV = GObjectModule.type_from_name('GStrv')
+TYPE_VARIANT = GObjectModule.type_from_name('GVariant')
+TYPE_GSTRING = GObjectModule.type_from_name('GString')
+TYPE_UNICHAR = TYPE_UINT
+__all__ += ['TYPE_INVALID', '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', 'TYPE_VARIANT', 'TYPE_GSTRING', 'TYPE_UNICHAR']
+
+
+# Deprecated, use GLib directly
+Pid = GLib.Pid
+GError = GLib.GError
+OptionGroup = GLib.OptionGroup
+OptionContext = GLib.OptionContext
+__all__ += ['Pid', 'GError', 'OptionGroup', 'OptionContext']
+
+
+# Deprecated, use: GObject.ParamFlags.* directly
+PARAM_CONSTRUCT = GObjectModule.ParamFlags.CONSTRUCT
+PARAM_CONSTRUCT_ONLY = GObjectModule.ParamFlags.CONSTRUCT_ONLY
+PARAM_LAX_VALIDATION = GObjectModule.ParamFlags.LAX_VALIDATION
+PARAM_READABLE = GObjectModule.ParamFlags.READABLE
+PARAM_WRITABLE = GObjectModule.ParamFlags.WRITABLE
+# PARAM_READWRITE should come from the gi module but cannot due to:
+# https://bugzilla.gnome.org/show_bug.cgi?id=687615
+PARAM_READWRITE = PARAM_READABLE | PARAM_WRITABLE
+__all__ += ['PARAM_CONSTRUCT', 'PARAM_CONSTRUCT_ONLY', 'PARAM_LAX_VALIDATION',
+            'PARAM_READABLE', 'PARAM_WRITABLE', 'PARAM_READWRITE']
+
+
+# Deprecated, use: GObject.SignalFlags.* directly
+SIGNAL_ACTION = GObjectModule.SignalFlags.ACTION
+SIGNAL_DETAILED = GObjectModule.SignalFlags.DETAILED
+SIGNAL_NO_HOOKS = GObjectModule.SignalFlags.NO_HOOKS
+SIGNAL_NO_RECURSE = GObjectModule.SignalFlags.NO_RECURSE
+SIGNAL_RUN_CLEANUP = GObjectModule.SignalFlags.RUN_CLEANUP
+SIGNAL_RUN_FIRST = GObjectModule.SignalFlags.RUN_FIRST
+SIGNAL_RUN_LAST = GObjectModule.SignalFlags.RUN_LAST
+__all__ += ['SIGNAL_ACTION', 'SIGNAL_DETAILED', 'SIGNAL_NO_HOOKS',
+            'SIGNAL_NO_RECURSE', 'SIGNAL_RUN_CLEANUP', 'SIGNAL_RUN_FIRST',
+            'SIGNAL_RUN_LAST']
+
+
+# Static types
+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
+Warning = _gobject.Warning
+__all__ += ['GBoxed', 'GEnum', 'GFlags', 'GInterface', 'GObject',
+            'GObjectWeakRef', 'GParamSpec', 'GPointer', 'GType',
+            'Warning']
+
+
+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_new = _gobject.signal_new
+threads_init = _gobject.threads_init
+type_register = _gobject.type_register
+__all__ += ['add_emission_hook', 'features', 'list_properties',
+            'new', 'pygobject_version', 'remove_emission_hook',
+            'signal_accumulator_true_handled',
+            'signal_new', 'threads_init', 'type_register']
+
+
+class Value(GObjectModule.Value):
+    def __del__(self):
+        if self._free_on_dealloc:
+            self.unset()
+
+Value = override(Value)
+__all__.append('Value')
+
+
+def type_from_name(name):
+    type_ = GObjectModule.type_from_name(name)
+    if type_ == TYPE_INVALID:
+        raise RuntimeError('unknown type name: %s' % name)
+    return type_
+
+__all__.append('type_from_name')
+
+
+def type_parent(type_):
+    parent = GObjectModule.type_parent(type_)
+    if parent == TYPE_INVALID:
+        raise RuntimeError('no parent for type')
+    return parent
+
+__all__.append('type_parent')
+
+
+def _validate_type_for_signal_method(type_):
+    if hasattr(type_, '__gtype__'):
+        type_ = type_.__gtype__
+    if not type_.is_instantiatable() and not type_.is_interface():
+        raise TypeError('type must be instantiable or an interface, got %s' % type_)
+
+
+def signal_list_ids(type_):
+    _validate_type_for_signal_method(type_)
+    return GObjectModule.signal_list_ids(type_)
+
+__all__.append('signal_list_ids')
+
+
+def signal_list_names(type_):
+    ids = signal_list_ids(type_)
+    return tuple(GObjectModule.signal_name(i) for i in ids)
+
+__all__.append('signal_list_names')
+
+
+def signal_lookup(name, type_):
+    _validate_type_for_signal_method(type_)
+    return GObjectModule.signal_lookup(name, type_)
+
+__all__.append('signal_lookup')
+
+
+def signal_query(id_or_name, type_=None):
+    SignalQuery = namedtuple('SignalQuery',
+                             ['signal_id',
+                              'signal_name',
+                              'itype',
+                              'signal_flags',
+                              'return_type',
+                              # n_params',
+                              'param_types'])
+
+    # signal_query needs to use a static method until the following bugs are fixed:
+    # https://bugzilla.gnome.org/show_bug.cgi?id=687550
+    # https://bugzilla.gnome.org/show_bug.cgi?id=687545
+    # https://bugzilla.gnome.org/show_bug.cgi?id=687541
+    if type_ is not None:
+        id_or_name = signal_lookup(id_or_name, type_)
+
+    res = _gobject.signal_query(id_or_name)
+    if res is None:
+        return None
+
+    # Return a named tuple which allows indexing like the static bindings
+    # along with field like access of the gi struct.
+    # Note however that the n_params was not returned from the static bindings.
+    return SignalQuery(*res)
+
+__all__.append('signal_query')
+
+
+class _HandlerBlockManager(object):
+    def __init__(self, obj, handler_id):
+        self.obj = obj
+        self.handler_id = handler_id
+
+    def __enter__(self):
+        pass
+
+    def __exit__(self, exc_type, exc_value, traceback):
+        _gobject.GObject.handler_unblock(self.obj, self.handler_id)
+
+
+class _FreezeNotifyManager(object):
+    def __init__(self, obj):
+        self.obj = obj
+
+    def __enter__(self):
+        pass
+
+    def __exit__(self, exc_type, exc_value, traceback):
+        self.obj.thaw_notify()
+
+
+class Object(GObjectModule.Object):
+    def _unsupported_method(self, *args, **kargs):
+        raise RuntimeError('This method is currently unsupported.')
+
+    def _unsupported_data_method(self, *args, **kargs):
+        raise RuntimeError('Data access methods are unsupported. '
+                           'Use normal Python attributes instead')
+
+    # Generic data methods are not needed in python as it can be handled
+    # with standard attribute access: https://bugzilla.gnome.org/show_bug.cgi?id=641944
+    get_data = _unsupported_data_method
+    get_qdata = _unsupported_data_method
+    set_data = _unsupported_data_method
+    steal_data = _unsupported_data_method
+    steal_qdata = _unsupported_data_method
+    replace_data = _unsupported_data_method
+    replace_qdata = _unsupported_data_method
+
+    # The following methods as unsupported until we verify
+    # they work as gi methods.
+    bind_property_full = _unsupported_method
+    compat_control = _unsupported_method
+    force_floating = _unsupported_method
+    interface_find_property = _unsupported_method
+    interface_install_property = _unsupported_method
+    interface_list_properties = _unsupported_method
+    is_floating = _unsupported_method
+    notify_by_pspec = _unsupported_method
+    ref = _unsupported_method
+    ref_count = _unsupported_method
+    ref_sink = _unsupported_method
+    run_dispose = _unsupported_method
+    unref = _unsupported_method
+    watch_closure = _unsupported_method
+
+    # The following methods are static APIs which need to leap frog the
+    # gi methods until we verify the gi methods can replace them.
+    get_property = _gobject.GObject.get_property
+    get_properties = _gobject.GObject.get_properties
+    set_property = _gobject.GObject.set_property
+    set_properties = _gobject.GObject.set_properties
+    bind_property = _gobject.GObject.bind_property
+    connect = _gobject.GObject.connect
+    connect_after = _gobject.GObject.connect_after
+    connect_object = _gobject.GObject.connect_object
+    connect_object_after = _gobject.GObject.connect_object_after
+    disconnect = _gobject.GObject.disconnect
+    disconnect_by_func = _gobject.GObject.disconnect_by_func
+    handler_disconnect = _gobject.GObject.handler_disconnect
+    handler_is_connected = _gobject.GObject.handler_is_connected
+    handler_block_by_func = _gobject.GObject.handler_block_by_func
+    handler_unblock_by_func = _gobject.GObject.handler_unblock_by_func
+    emit = _gobject.GObject.emit
+    emit_stop_by_name = _gobject.GObject.emit_stop_by_name
+    stop_emission = _gobject.GObject.stop_emission
+    chain = _gobject.GObject.chain
+    weak_ref = _gobject.GObject.weak_ref
+    __copy__ = _gobject.GObject.__copy__
+    __deepcopy__ = _gobject.GObject.__deepcopy__
+
+    def handler_block(self, handler_id):
+        """Blocks the signal handler from being invoked until handler_unblock() is called.
+
+        Returns a context manager which optionally can be used to
+        automatically unblock the handler:
+
+        >>> with obj.handler_block(id):
+        >>>    pass
+        """
+
+        # Note Object.handler_block is a static method specific to pygobject and not
+        # found in introspection. We need to continue using the static method
+        # until we figure out a technique to call the global signal_handler_block.
+        # But this requires a gpointer to the Object which we currently don't have
+        # access to in python.
+        _gobject.GObject.handler_block(self, handler_id)
+        return _HandlerBlockManager(self, handler_id)
+
+    def freeze_notify(self):
+        """Freezes the object's property-changed notification queue.
+
+        This will freeze the object so that "notify" signals are blocked until
+        the thaw_notify() method is called.
+
+        Returns a context manager which optionally can be used to
+        automatically thaw notifications:
+
+        >>> with obj.freeze_notify():
+        >>>     pass
+        """
+        super(Object, self).freeze_notify()
+        return _FreezeNotifyManager(self)
+
+
+Object = override(Object)
+GObject = Object
+__all__ += ['Object', 'GObject']
+
+
+Property = propertyhelper.Property
+Signal = signalhelper.Signal
+SignalOverride = signalhelper.SignalOverride
+# Deprecated naming "property" available for backwards compatibility.
+# Keep this at the end of the file to avoid clobbering the builtin.
+property = Property
+__all__ += ['Property', 'Signal', 'SignalOverride', 'property']
index 20ef910..dc06f92 100644 (file)
 # USA
 
 from ..overrides import override
-from ..importer import modules
+from ..module import get_introspection_module
 
 import sys
 
-Gdk = modules['Gdk']._introspection_module
+Gdk = get_introspection_module('Gdk')
 
 __all__ = []
 
@@ -287,7 +287,7 @@ for event_class in event_member_classes:
 
 class DragContext(Gdk.DragContext):
     def finish(self, success, del_, time):
-        Gtk = modules['Gtk']._introspection_module
+        Gtk = get_introspection_module('Gtk')
         Gtk.drag_finish(self, success, del_, time)
 
 DragContext = override(DragContext)
@@ -345,6 +345,29 @@ def color_parse(color):
         return None
     return color
 
+
+# Note, we cannot override the entire class as Gdk.Atom has no gtype, so just
+# hack some individual methods
+def _gdk_atom_str(atom):
+    n = atom.name()
+    if n:
+        return n
+    # fall back to atom index
+    return 'Gdk.Atom<%i>' % hash(atom)
+
+
+def _gdk_atom_repr(atom):
+    n = atom.name()
+    if n:
+        return 'Gdk.Atom<%s>' % n
+    # fall back to atom index
+    return 'Gdk.Atom<%i>' % hash(atom)
+
+
+Gdk.Atom.__str__ = _gdk_atom_str
+Gdk.Atom.__repr__ = _gdk_atom_repr
+
+
 # constants
 if Gdk._version >= '3.0':
     SELECTION_PRIMARY = Gdk.atom_intern('PRIMARY', True)
index 7f6e5c7..6ecd1c4 100644 (file)
 # USA
 
 from ..overrides import override
-from ..importer import modules
+from ..module import get_introspection_module
 
 from gi.repository import GLib
 
 import sys
 
-Gio = modules['Gio']._introspection_module
+Gio = get_introspection_module('Gio')
 
 __all__ = []
 
@@ -101,8 +101,15 @@ class Settings(Gio.Settings):
             type_str = v.get_child_value(0).get_type_string()
             assert type_str.startswith('a')
             type_str = type_str[1:]
+        elif type_ == 'enum':
+            # v is an array with the allowed values
+            assert v.get_child_value(0).get_type_string().startswith('a')
+            type_str = v.get_child_value(0).get_child_value(0).get_type_string()
+            allowed = v.unpack()
+            if value not in allowed:
+                raise ValueError('value %s is not an allowed enum (%s)' % (value, allowed))
         else:
-            raise NotImplementedError('Cannot handle allowed type range class' + str(type_))
+            raise NotImplementedError('Cannot handle allowed type range class ' + str(type_))
 
         self.set_value(key, GLib.Variant(type_str, value))
 
index 5eab41b..78bbd36 100644 (file)
@@ -22,7 +22,8 @@
 import sys
 from gi.repository import GObject
 from ..overrides import override
-from ..importer import modules
+from ..module import get_introspection_module
+from gi import PyGIDeprecationWarning
 
 if sys.version_info >= (3, 0):
     _basestring = str
@@ -31,7 +32,8 @@ else:
     _basestring = basestring
     _callable = callable
 
-Gtk = modules['Gtk']._introspection_module
+Gtk = get_introspection_module('Gtk')
+
 __all__ = []
 
 if Gtk._version == '2.0':
@@ -441,7 +443,7 @@ class Dialog(Gtk.Dialog, Container):
         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)
+            warnings.warn("Gtk.DialogFlags.NO_SEPARATOR has been depricated since Gtk+-3.0", PyGIDeprecationWarning)
 
         if buttons is not None:
             self.add_buttons(*buttons)
@@ -492,7 +494,7 @@ class MessageDialog(Gtk.MessageDialog, Dialog):
         # 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)
+            warnings.warn("The use of the keyword type as a parameter of the Gtk.MessageDialog constructor has been depricated. Please use message_type instead.", PyGIDeprecationWarning)
             message_type = kwds.pop('type')
 
         Gtk.MessageDialog.__init__(self,
index 8d95eee..e69c91c 100644 (file)
@@ -4,6 +4,7 @@ pygioverrides_PYTHON = \
        GLib.py \
        Gtk.py \
        Gdk.py \
+       GObject.py \
        Gio.py \
        GIMarshallingTests.py \
        Pango.py \
index 2c78fe1..14b3f4b 100644 (file)
@@ -124,6 +124,9 @@ CAIRO_LIBS = @CAIRO_LIBS@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
+CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
+CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
+CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CYGPATH_W = @CYGPATH_W@
@@ -141,6 +144,7 @@ EXEEXT = @EXEEXT@
 FFI_CFLAGS = @FFI_CFLAGS@
 FFI_LIBS = @FFI_LIBS@
 FGREP = @FGREP@
+GENHTML = @GENHTML@
 GIO_CFLAGS = @GIO_CFLAGS@
 GIO_LIBS = @GIO_LIBS@
 GI_CFLAGS = @GI_CFLAGS@
@@ -160,6 +164,7 @@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
+LCOV = @LCOV@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBFFI_PC = @LIBFFI_PC@
@@ -169,7 +174,6 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
@@ -273,6 +277,7 @@ pygioverrides_PYTHON = \
        GLib.py \
        Gtk.py \
        Gdk.py \
+       GObject.py \
        Gio.py \
        GIMarshallingTests.py \
        Pango.py \
@@ -282,7 +287,7 @@ pygioverrides_PYTHON = \
 all: all-am
 
 .SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
@@ -307,9 +312,9 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 $(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)
+$(top_srcdir)/configure:  $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
 
index 34c76cc..15d5edc 100644 (file)
@@ -19,9 +19,9 @@
 # USA
 
 from ..overrides import override
-from ..importer import modules
+from ..module import get_introspection_module
 
-Pango = modules['Pango']._introspection_module
+Pango = get_introspection_module('Pango')
 
 __all__ = []
 
index 0e4c489..b7d365c 100644 (file)
@@ -1,6 +1,11 @@
 import types
+import warnings
+import functools
 
-from gi import _gobject
+from gi import PyGIDeprecationWarning
+from gi._gobject.constants import \
+    TYPE_NONE, \
+    TYPE_INVALID
 
 # support overrides in different directories than our gi module
 from pkgutil import extend_path
@@ -31,8 +36,8 @@ class _Registry(dict):
             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:
+        assert g_type != TYPE_NONE
+        if g_type != TYPE_INVALID:
             g_type.pytype = value
 
             # strip gi.overrides from module name
@@ -69,3 +74,13 @@ def override(type_):
     else:
         registry.register(type_)
         return type_
+
+
+def deprecated(fn, replacement):
+    '''Decorator for marking methods and classes as deprecated'''
+    @functools.wraps(fn)
+    def wrapped(*args, **kwargs):
+        warnings.warn('%s is deprecated; use %s instead' % (fn.__name__, replacement),
+                      PyGIDeprecationWarning, stacklevel=2)
+        return fn(*args, **kwargs)
+    return wrapped
index 5fd633a..4e3c464 100644 (file)
@@ -83,6 +83,15 @@ _pygi_hash_pointer_to_arg (GIArgument *arg,
         case GI_TYPE_TAG_INT32:
             arg->v_int32 = GPOINTER_TO_INT (arg->v_pointer);
             break;
+        case GI_TYPE_TAG_UINT8:
+            arg->v_uint8 = GPOINTER_TO_UINT (arg->v_pointer);
+            break;
+        case GI_TYPE_TAG_UINT16:
+            arg->v_uint16 = GPOINTER_TO_UINT (arg->v_pointer);
+            break;
+        case GI_TYPE_TAG_UINT32:
+            arg->v_uint32 = GPOINTER_TO_UINT (arg->v_pointer);
+            break;
         case GI_TYPE_TAG_UTF8:
         case GI_TYPE_TAG_FILENAME:
         case GI_TYPE_TAG_INTERFACE:
@@ -810,11 +819,14 @@ _pygi_argument_to_array (GIArgument  *arg,
                     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);
+                    g_base_info_unref ( (GIBaseInfo *) length_arg_info);
                     if (!gi_argument_to_gssize (args[length_arg_pos],
                                                 g_type_info_get_tag (length_type_info),
                                                 &length)) {
+                        g_base_info_unref ( (GIBaseInfo *) length_type_info);
                         return NULL;
                     }
+                    g_base_info_unref ( (GIBaseInfo *) length_type_info);
                 }
             }
 
@@ -867,7 +879,15 @@ _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 == Py_None ? NULL : object;
+            if (object == Py_None) {
+                arg.v_pointer = NULL;
+            } else if (!PYGLIB_PyLong_Check(object)  && !PyLong_Check(object)) {
+                PyErr_SetString(PyExc_TypeError,
+                    "Pointer assignment is restricted to integer values. "
+                    "See: https://bugzilla.gnome.org/show_bug.cgi?id=683599");
+            } else {
+                arg.v_pointer = PyLong_AsVoidPtr (object);
+            }
             break;
         case GI_TYPE_TAG_BOOLEAN:
         {
@@ -1126,7 +1146,11 @@ _pygi_argument_from_object (PyObject   *object,
             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);
+            /* we handle arrays that are really strings specially, see below */
+            if (g_type_info_get_tag (item_type_info) == GI_TYPE_TAG_UINT8)
+               item_size = 1;
+            else
+               item_size = sizeof (GIArgument);
 
             array = g_array_sized_new (is_zero_terminated, FALSE, item_size, length);
             if (array == NULL) {
@@ -1260,9 +1284,7 @@ array_success:
 
                         arg.v_pointer = closure;
                     } else if (g_struct_info_is_foreign (info)) {
-                        PyObject *result;
-                        result = pygi_struct_foreign_convert_to_g_argument (
-                                     object, info, transfer, &arg);
+                        pygi_struct_foreign_convert_to_g_argument (object, info, transfer, &arg);
                     } else if (g_type_is_a (type, G_TYPE_BOXED)) {
                         if (pyg_boxed_check (object, type)) {
                             arg.v_pointer = pyg_boxed_get (object, void);
@@ -1275,7 +1297,12 @@ array_success:
                     } 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);
+                        g_warn_if_fail (g_type_is_a (type, G_TYPE_VARIANT) || !g_type_info_is_pointer (type_info) || transfer == GI_TRANSFER_NOTHING);
+
+                        if (g_type_is_a (type, G_TYPE_VARIANT) && pyg_type_from_object (object) != G_TYPE_VARIANT) {
+                            PyErr_SetString (PyExc_TypeError, "expected GLib.Variant");
+                            break;
+                        }
                         arg.v_pointer = pyg_pointer_get (object, void);
                     } else {
                         PyErr_Format (PyExc_NotImplementedError, "structure type '%s' is not supported yet", g_type_name (type));
@@ -1521,15 +1548,22 @@ _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) &&
                     (arg->v_pointer != NULL)) {
-                /* Raw Python objects are passed to void* args */
                 g_warn_if_fail (transfer == GI_TRANSFER_NOTHING);
-                object = arg->v_pointer;
-            } else
+                object = PyLong_FromVoidPtr (arg->v_pointer);
+            } else {
+                /* None is used instead of zero for parity with ctypes.
+                 * This is helpful in case the values are being used for
+                 * actual memory addressing, in which case None will
+                 * raise as opposed to 0 which will crash.
+                 */
                 object = Py_None;
-            Py_XINCREF (object);
+                Py_INCREF (object);
+            }
             break;
+        }
         case GI_TYPE_TAG_BOOLEAN:
         {
             object = PyBool_FromLong (arg->v_boolean);
@@ -1991,6 +2025,11 @@ _pygi_argument_from_g_value(const GValue *value,
     GIArgument arg = { 0, };
 
     GITypeTag type_tag = g_type_info_get_tag (type_info);
+
+    /* For the long handling: long can be equivalent to
+       int32 or int64, depending on the architecture, but
+       gi doesn't tell us (and same for ulong)
+    */
     switch (type_tag) {
         case GI_TYPE_TAG_BOOLEAN:
             arg.v_boolean = g_value_get_boolean (value);
@@ -1998,18 +2037,30 @@ _pygi_argument_from_g_value(const GValue *value,
         case GI_TYPE_TAG_INT8:
         case GI_TYPE_TAG_INT16:
         case GI_TYPE_TAG_INT32:
-            arg.v_int = g_value_get_int (value);
+           if (g_type_is_a (G_VALUE_TYPE (value), G_TYPE_LONG))
+               arg.v_int = g_value_get_long (value);
+           else
+               arg.v_int = g_value_get_int (value);
             break;
         case GI_TYPE_TAG_INT64:
-            arg.v_int64 = g_value_get_int64 (value);
+           if (g_type_is_a (G_VALUE_TYPE (value), G_TYPE_LONG))
+               arg.v_int64 = g_value_get_long (value);
+           else
+               arg.v_int64 = g_value_get_int64 (value);
             break;
         case GI_TYPE_TAG_UINT8:
         case GI_TYPE_TAG_UINT16:
         case GI_TYPE_TAG_UINT32:
-            arg.v_uint = g_value_get_uint (value);
+           if (g_type_is_a (G_VALUE_TYPE (value), G_TYPE_ULONG))
+               arg.v_uint = g_value_get_ulong (value);
+           else
+               arg.v_uint = g_value_get_uint (value);
             break;
         case GI_TYPE_TAG_UINT64:
-            arg.v_uint64 = g_value_get_uint64 (value);
+           if (g_type_is_a (G_VALUE_TYPE (value), G_TYPE_ULONG))
+               arg.v_uint64 = g_value_get_ulong (value);
+           else
+               arg.v_uint64 = g_value_get_uint64 (value);
             break;
         case GI_TYPE_TAG_UNICHAR:
             arg.v_uint32 = g_value_get_schar (value);
index 2fd446c..ff3db9b 100644 (file)
@@ -165,6 +165,17 @@ _pygi_boxed_new (PyTypeObject *type,
     return (PyObject *) self;
 }
 
+static PyObject *
+_pygi_boxed_get_free_on_dealloc(PyGIBoxed *self, void *closure)
+{
+  return PyBool_FromLong( ((PyGBoxed *)self)->free_on_dealloc );
+}
+
+static PyGetSetDef pygi_boxed_getsets[] = {
+    { "_free_on_dealloc", (getter)_pygi_boxed_get_free_on_dealloc, (setter)0 },
+    { NULL, 0, 0 }
+};
+
 void
 _pygi_boxed_register_types (PyObject *m)
 {
@@ -174,6 +185,7 @@ _pygi_boxed_register_types (PyObject *m)
     PyGIBoxed_Type.tp_init = (initproc) _boxed_init;
     PyGIBoxed_Type.tp_dealloc = (destructor) _boxed_dealloc;
     PyGIBoxed_Type.tp_flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE);
+    PyGIBoxed_Type.tp_getset = pygi_boxed_getsets;
 
     if (PyType_Ready (&PyGIBoxed_Type))
         return;
index d6531ed..2a44c02 100644 (file)
@@ -678,6 +678,7 @@ _arg_cache_from_py_interface_callback_setup (PyGIArgCache *arg_cache,
         callable_cache->args_cache[callback_cache->destroy_notify_index] = destroy_arg_cache;
     }
     arg_cache->from_py_marshaller = _pygi_marshal_from_py_interface_callback;
+    arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_interface_callback;
 }
 
 static void
@@ -1369,7 +1370,7 @@ _args_cache_generate (GICallableInfo *callable_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)
+        if (type_tag == GI_TYPE_TAG_INTERFACE || type_tag == GI_TYPE_TAG_ARRAY)
             is_caller_allocates = g_arg_info_is_caller_allocates (arg_info);
 
         /* must be an child arg filled in by its owner
diff --git a/gi/pygi-callbacks.c b/gi/pygi-callbacks.c
deleted file mode 100644 (file)
index bae4001..0000000
+++ /dev/null
@@ -1,221 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * vim: tabstop=4 shiftwidth=4 expandtab
- *
- *   pygi-callbacks.c: PyGI C Callback Functions and Helpers
- *
- * 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"
-
-static PyGICClosure *global_destroy_notify;
-
-static void
-_pygi_destroy_notify_callback_closure (ffi_cif *cif,
-                                       void *result,
-                                       void **args,
-                                       void *data)
-{
-    PyGICClosure *info = * (void**) (args[0]);
-
-    g_assert (info);
-
-    _pygi_invoke_closure_free (info);
-}
-
-
-PyGICClosure*
-_pygi_destroy_notify_create (void)
-{
-    if (!global_destroy_notify) {
-
-        PyGICClosure *destroy_notify = g_slice_new0 (PyGICClosure);
-
-        g_assert (destroy_notify);
-
-        GIBaseInfo* glib_destroy_notify = g_irepository_find_by_name (NULL, "GLib", "DestroyNotify");
-        g_assert (glib_destroy_notify != NULL);
-        g_assert (g_base_info_get_type (glib_destroy_notify) == GI_INFO_TYPE_CALLBACK);
-
-        destroy_notify->closure = g_callable_info_prepare_closure ( (GICallableInfo*) glib_destroy_notify,
-                                                                    &destroy_notify->cif,
-                                                                    _pygi_destroy_notify_callback_closure,
-                                                                    NULL);
-
-        global_destroy_notify = destroy_notify;
-    }
-
-    return global_destroy_notify;
-}
-
-
-gboolean
-_pygi_scan_for_callbacks (GIFunctionInfo *function_info,
-                          gboolean       is_method,
-                          guint8        *callback_index,
-                          guint8        *user_data_index,
-                          guint8        *destroy_notify_index)
-{
-    guint i, n_args;
-
-    *callback_index = G_MAXUINT8;
-    *user_data_index = G_MAXUINT8;
-    *destroy_notify_index = G_MAXUINT8;
-
-    n_args = g_callable_info_get_n_args ( (GICallableInfo *) function_info);
-    for (i = 0; i < n_args; i++) {
-        GIDirection direction;
-        GIArgInfo *arg_info;
-        GITypeInfo *type_info;
-        guint8 destroy, closure;
-        GITypeTag type_tag;
-
-        arg_info = g_callable_info_get_arg ( (GICallableInfo*) function_info, i);
-        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) {
-            GIBaseInfo* interface_info;
-            GIInfoType interface_type;
-
-            interface_info = g_type_info_get_interface (type_info);
-            interface_type = g_base_info_get_type (interface_info);
-            if (interface_type == GI_INFO_TYPE_CALLBACK &&
-                    ! (strcmp (g_base_info_get_namespace ( (GIBaseInfo*) interface_info), "GLib") == 0 &&
-                       (strcmp (g_base_info_get_name ( (GIBaseInfo*) interface_info), "DestroyNotify") == 0 ||
-                       (strcmp (g_base_info_get_name ( (GIBaseInfo*) interface_info), "FreeFunc") == 0)))) {
-                if (*callback_index != G_MAXUINT8) {
-                    PyErr_Format (PyExc_TypeError, "Function %s.%s has multiple callbacks, not supported",
-                                  g_base_info_get_namespace ( (GIBaseInfo*) function_info),
-                                  g_base_info_get_name ( (GIBaseInfo*) function_info));
-                    g_base_info_unref (interface_info);
-                    return FALSE;
-                }
-                *callback_index = i;
-            }
-            g_base_info_unref (interface_info);
-        }
-        destroy = g_arg_info_get_destroy (arg_info);
-        
-        closure = g_arg_info_get_closure (arg_info);
-        direction = g_arg_info_get_direction (arg_info);
-
-        if (destroy > 0 && destroy < n_args) {
-            if (*destroy_notify_index != G_MAXUINT8) {
-                PyErr_Format (PyExc_TypeError, "Function %s has multiple GDestroyNotify, not supported",
-                              g_base_info_get_name ( (GIBaseInfo*) function_info));
-                return FALSE;
-            }
-            *destroy_notify_index = destroy;
-        }
-
-        if (closure > 0 && closure < n_args) {
-            if (*user_data_index != G_MAXUINT8) {
-                PyErr_Format (PyExc_TypeError, "Function %s has multiple user_data arguments, not supported",
-                              g_base_info_get_name ( (GIBaseInfo*) function_info));
-                return FALSE;
-            }
-            *user_data_index = closure;
-        }
-
-        g_base_info_unref ( (GIBaseInfo*) arg_info);
-        g_base_info_unref ( (GIBaseInfo*) type_info);
-    }
-
-    return TRUE;
-}
-
-gboolean
-_pygi_create_callback (GIBaseInfo  *function_info,
-                       gboolean       is_method,
-                       gboolean       is_constructor,
-                       int            n_args,
-                       Py_ssize_t     py_argc,
-                       PyObject      *py_argv,
-                       guint8         callback_index,
-                       guint8         user_data_index,
-                       guint8         destroy_notify_index,
-                       PyGICClosure **closure_out)
-{
-    GIArgInfo *callback_arg;
-    GITypeInfo *callback_type;
-    GICallbackInfo *callback_info;
-    GIScopeType scope;
-    gboolean found_py_function;
-    PyObject *py_function;
-    guint8 i, py_argv_pos;
-    PyObject *py_user_data;
-    gboolean allow_none;
-
-    callback_arg = g_callable_info_get_arg ( (GICallableInfo*) function_info, callback_index);
-    scope = g_arg_info_get_scope (callback_arg);
-    allow_none = g_arg_info_may_be_null (callback_arg);
-
-    callback_type = g_arg_info_get_type (callback_arg);
-    g_assert (g_type_info_get_tag (callback_type) == GI_TYPE_TAG_INTERFACE);
-
-    callback_info = (GICallbackInfo*) g_type_info_get_interface (callback_type);
-    g_assert (g_base_info_get_type ( (GIBaseInfo*) callback_info) == GI_INFO_TYPE_CALLBACK);
-
-    /* Find the Python function passed for the callback */
-    found_py_function = FALSE;
-    py_function = Py_None;
-    py_user_data = NULL;
-
-    /* if its a method then we need to skip over 'self' */
-    if (is_method || is_constructor)
-        py_argv_pos = 1;
-    else
-        py_argv_pos = 0;
-
-    for (i = 0; i < n_args && i < py_argc; i++) {
-        if (i == callback_index) {
-            py_function = PyTuple_GetItem (py_argv, py_argv_pos);
-            /* if we allow none then set the closure to NULL and return */
-            if (allow_none && py_function == Py_None) {
-                *closure_out = NULL;
-                goto out;
-            }
-            found_py_function = TRUE;
-        } else if (i == user_data_index) {
-            py_user_data = PyTuple_GetItem (py_argv, py_argv_pos);
-        }
-        py_argv_pos++;
-    }
-
-    if (!found_py_function
-            || (py_function == Py_None || !PyCallable_Check (py_function))) {
-        PyErr_Format (PyExc_TypeError, "Error invoking %s.%s: Unexpected value "
-                      "for argument '%s'",
-                      g_base_info_get_namespace ( (GIBaseInfo*) function_info),
-                      g_base_info_get_name ( (GIBaseInfo*) function_info),
-                      g_base_info_get_name ( (GIBaseInfo*) callback_arg));
-        g_base_info_unref ( (GIBaseInfo*) callback_info);
-        g_base_info_unref ( (GIBaseInfo*) callback_type);
-        return FALSE;
-    }
-
-    /** Now actually build the closure **/
-    *closure_out = _pygi_make_native_closure ( (GICallableInfo *) callback_info,
-                                               g_arg_info_get_scope (callback_arg),
-                                               py_function,
-                                               py_user_data);
-out:
-    g_base_info_unref ( (GIBaseInfo*) callback_info);
-    g_base_info_unref ( (GIBaseInfo*) callback_type);
-
-    return TRUE;
-}
diff --git a/gi/pygi-callbacks.h b/gi/pygi-callbacks.h
deleted file mode 100644 (file)
index 7535bba..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * vim: tabstop=4 shiftwidth=4 expandtab
- *
- * 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_CALLBACKS_H__
-#define __PYGI_CALLBACKS_H__
-
-G_BEGIN_DECLS
-
-void _pygi_callback_notify_info_free (gpointer user_data);
-
-PyGICClosure*_pygi_destroy_notify_create (void);
-
-gboolean _pygi_scan_for_callbacks (GIFunctionInfo *self,
-                                   gboolean       is_method,
-                                   guint8        *callback_index,
-                                   guint8        *user_data_index,
-                                   guint8        *destroy_notify_index);
-
-gboolean _pygi_create_callback (GIFunctionInfo *self,
-                                gboolean       is_method,
-                                gboolean       is_constructor,
-                                int            n_args,
-                                Py_ssize_t     py_argc,
-                                PyObject      *py_argv,
-                                guint8         callback_index,
-                                guint8         user_data_index,
-                                guint8         destroy_notify_index,
-                                PyGICClosure **closure_out);
-
-G_END_DECLS
-
-#endif
index bf3ec8a..82777fb 100644 (file)
@@ -32,7 +32,6 @@ 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);
index f6f5c51..0e49c72 100644 (file)
@@ -455,6 +455,24 @@ _pygi_closure_set_out_arguments (GICallableInfo *callable_info,
     }
 }
 
+static void
+_pygi_invoke_closure_clear_py_data(PyGICClosure *invoke_closure)
+{
+    PyGILState_STATE state = PyGILState_Ensure();
+
+    if (invoke_closure->function != NULL) {
+        Py_DECREF (invoke_closure->function);
+        invoke_closure->function = NULL;
+    }
+
+    if (invoke_closure->user_data != NULL) {
+        Py_DECREF (invoke_closure->user_data);
+        invoke_closure->user_data = NULL;
+    }
+
+    PyGILState_Release (state);
+}
+
 void
 _pygi_closure_handle (ffi_cif *cif,
                       void    *result,
@@ -488,6 +506,7 @@ _pygi_closure_handle (ffi_cif *cif,
     }
 
     _pygi_closure_set_out_arguments (closure->info, retval, out_args, result);
+    Py_DECREF (retval);
 
 end:
     g_free (out_args);
@@ -495,10 +514,12 @@ end:
     PyGILState_Release (state);
 
     /* Now that the closure has finished we can make a decision about how
-       to free it.  Scope call gets free'd at the end of wrap_g_function_info_invoke
-       scope notified will be freed,  when the notify is called and we can free async
-       anytime we want as long as its after we return from this function (you can't free the closure
-       you are currently using!)
+       to free it.  Scope call gets free'd at the end of wrap_g_function_info_invoke.
+       Scope notified will be freed when the notify is called.
+       Scope async closures free only their python data now and the closure later
+       during the next creation of a closure. This minimizes potential ref leaks
+       at least in regards to the python objects.
+       (you can't free the closure you are currently using!)
     */
     switch (closure->scope) {
         case GI_SCOPE_TYPE_CALL:
@@ -507,6 +528,7 @@ end:
         case GI_SCOPE_TYPE_ASYNC:
             /* Append this PyGICClosure to a list of closure that we will free
                after we're done with this function invokation */
+            _pygi_invoke_closure_clear_py_data(closure);
             async_free_list = g_slist_prepend (async_free_list, closure);
             break;
         default:
@@ -517,20 +539,15 @@ 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,
                                   invoke_closure->closure);
 
     if (invoke_closure->info)
         g_base_info_unref ( (GIBaseInfo*) invoke_closure->info);
 
-    Py_XDECREF (invoke_closure->user_data);
-    PyGILState_Release (state);
+    _pygi_invoke_closure_clear_py_data(invoke_closure);
 
     g_slice_free (PyGICClosure, invoke_closure);
 }
@@ -553,11 +570,10 @@ _pygi_make_native_closure (GICallableInfo* info,
     closure = g_slice_new0 (PyGICClosure);
     closure->info = (GICallableInfo *) g_base_info_ref ( (GIBaseInfo *) info);
     closure->function = py_function;
-    closure->user_data = py_user_data;
+    closure->user_data = py_user_data ? py_user_data : Py_None;
 
     Py_INCREF (py_function);
-    if (closure->user_data)
-        Py_INCREF (closure->user_data);
+    Py_INCREF (closure->user_data);
 
     fficlosure =
         g_callable_info_prepare_closure (info, &closure->cif, _pygi_closure_handle,
index d1846c5..3fe6a39 100644 (file)
 
 #if PY_VERSION_HEX < 0x03000000
 #include <pycairo.h>
+static Pycairo_CAPI_t *Pycairo_CAPI;
 #else
 #include <pycairo/py3cairo.h>
 #endif
 
-static Pycairo_CAPI_t *Pycairo_CAPI;
 
 #include "pygi-foreign.h"
 
@@ -191,7 +191,7 @@ 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);
+    import_cairo();
 #endif
 
     if (Pycairo_CAPI == NULL)
diff --git a/gi/pygi-foreign-gvariant.c b/gi/pygi-foreign-gvariant.c
deleted file mode 100644 (file)
index e799d98..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
-/*
- * Copyright (c) 2010  Collabora Ltd. <http://www.collabora.co.uk/>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to
- * deal in the Software without restriction, including without limitation the
- * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
- * sell copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
- * IN THE SOFTWARE.
- */
-
-#include "pygobject.h"
-
-#include "pygi-private.h"
-#include "pygi-foreign-gvariant.h"
-
-PyObject *
-g_variant_to_arg (PyObject        *value,
-                  GIInterfaceInfo *interface_info,
-                  GITransfer       transfer,
-                  GIArgument      *arg)
-{
-    g_assert (transfer == GI_TRANSFER_NOTHING);
-
-    /* TODO check that value is a PyGPointer */
-
-    arg->v_pointer = (GVariant *) ( (PyGPointer *) value)->pointer;
-    Py_RETURN_NONE;
-}
-
-PyObject *
-g_variant_from_arg (GIInterfaceInfo *interface_info,
-                    gpointer         data)
-{
-    GVariant *variant = (GVariant *) data;
-
-    PyObject *type = _pygi_type_import_by_gi_info (interface_info);
-
-    g_variant_ref_sink (variant);
-
-    return _pygi_struct_new ( (PyTypeObject *) type, variant, FALSE);
-}
-
-PyObject *
-g_variant_release_foreign (GIBaseInfo *base_info,
-                           gpointer struct_)
-{
-    g_variant_unref ( (GVariant *) struct_);
-    Py_RETURN_NONE;
-}
-
index 14d20af..ef5abaa 100644 (file)
@@ -26,8 +26,8 @@
 #  include <config.h>
 #endif
 
+#include "pygobject.h"
 #include "pygi-foreign.h"
-#include "pygi-foreign-gvariant.h"
 
 #include <girepository.h>
 
@@ -45,12 +45,6 @@ static void
 init_foreign_structs ()
 {
     foreign_structs = g_ptr_array_new ();
-
-    pygi_register_foreign_struct ("GLib",
-                                  "Variant",
-                                  g_variant_to_arg,
-                                  g_variant_from_arg,
-                                  g_variant_release_foreign);
 }
 
 static PyGIForeignStruct *
index dfcaf55..e726b2d 100644 (file)
@@ -357,13 +357,91 @@ static PyMethodDef _PyGIPropertyInfo_methods[] = {
     { NULL, NULL, 0 }
 };
 
+
 /* ArgInfo */
 PYGLIB_DEFINE_TYPE ("gi.ArgInfo", PyGIArgInfo_Type, PyGIBaseInfo);
 
+static PyObject *
+_wrap_g_arg_info_get_direction (PyGIBaseInfo *self)
+{
+    return PyLong_FromLong (
+           g_arg_info_get_direction ((GIArgInfo*)self->info) );
+}
+
+static PyObject *
+_wrap_g_arg_info_is_caller_allocates (PyGIBaseInfo *self)
+{
+    return PyBool_FromLong (
+           g_arg_info_is_caller_allocates ((GIArgInfo*)self->info) );
+}
+
+static PyObject *
+_wrap_g_arg_info_is_return_value (PyGIBaseInfo *self)
+{
+    return PyBool_FromLong (
+           g_arg_info_is_return_value ((GIArgInfo*)self->info) );
+}
+
+static PyObject *
+_wrap_g_arg_info_is_optional (PyGIBaseInfo *self)
+{
+    return PyBool_FromLong (
+           g_arg_info_is_optional ((GIArgInfo*)self->info) );
+}
+
+static PyObject *
+_wrap_g_arg_info_may_be_null (PyGIBaseInfo *self)
+{
+    return PyBool_FromLong (
+           g_arg_info_may_be_null ((GIArgInfo*)self->info) );
+}
+
+/* _g_arg_get_pytype_hint
+ *
+ * Returns new value reference to a string hinting at the python type
+ * which can be used for the given gi argument info.
+ */
+static PyObject *
+_g_arg_get_pytype_hint (PyGIBaseInfo *self)
+{
+    GIArgInfo *arg_info = (GIArgInfo*)self->info;
+    GITypeInfo type_info;
+    g_arg_info_load_type(arg_info, &type_info);
+    GITypeTag type_tag = g_type_info_get_tag(&type_info);
+
+    /* First attempt getting a python type object. */
+    PyObject *py_type = _pygi_get_py_type_hint(type_tag);
+    if (py_type != Py_None && PyObject_HasAttrString(py_type, "__name__")) {
+       PyObject *name = PyObject_GetAttrString(py_type, "__name__");
+       Py_DecRef(py_type);
+       return name;
+    } else {
+       Py_DecRef(py_type);
+       if (type_tag == GI_TYPE_TAG_INTERFACE) {
+           GIBaseInfo *iface = g_type_info_get_interface(&type_info);
+           gchar *name = g_strdup_printf("%s.%s",
+                   g_base_info_get_namespace(iface),
+                   g_base_info_get_name (iface));
+           g_base_info_unref(iface);
+           PyObject *py_string = PYGLIB_PyUnicode_FromString(name);
+           g_free(name);
+           return py_string;
+       }
+       return PYGLIB_PyUnicode_FromString(g_type_tag_to_string(type_tag));
+    }
+}
+
 static PyMethodDef _PyGIArgInfo_methods[] = {
+    { "get_direction", (PyCFunction) _wrap_g_arg_info_get_direction, METH_NOARGS },
+    { "is_caller_allocates", (PyCFunction) _wrap_g_arg_info_is_caller_allocates, METH_NOARGS },
+    { "is_return_value", (PyCFunction) _wrap_g_arg_info_is_return_value, METH_NOARGS },
+    { "is_optional", (PyCFunction) _wrap_g_arg_info_is_optional, METH_NOARGS },
+    { "may_be_null", (PyCFunction) _wrap_g_arg_info_may_be_null, METH_NOARGS },
+    { "get_pytype_hint", (PyCFunction) _g_arg_get_pytype_hint, METH_NOARGS },
     { NULL, NULL, 0 }
 };
 
+
 /* TypeInfo */
 PYGLIB_DEFINE_TYPE ("gi.TypeInfo", PyGITypeInfo_Type, PyGIBaseInfo);
 
@@ -1433,34 +1511,14 @@ _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);
+        if (PyErr_Occurred()) {
+            goto out;
+        }
 
-        /* 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);
-         */
+        int offset = g_field_info_get_offset ((GIFieldInfo *) self->info);
         G_STRUCT_MEMBER (gpointer, pointer, offset) = (gpointer)value.v_pointer;
-        Py_XINCREF(G_STRUCT_MEMBER (gpointer, pointer, offset));
 
         retval = Py_None;
         goto out;
@@ -1664,27 +1722,34 @@ _pygi_info_register_types (PyObject *m)
     if (PyModule_AddObject(m, "BaseInfo", (PyObject *)&PyGIBaseInfo_Type))
         return;
 
+    if (PyModule_AddObject(m, "DIRECTION_IN", PyLong_FromLong(GI_DIRECTION_IN)))
+        return;
+    if (PyModule_AddObject(m, "DIRECTION_OUT", PyLong_FromLong(GI_DIRECTION_OUT)))
+        return;
+    if (PyModule_AddObject(m, "DIRECTION_INOUT", PyLong_FromLong(GI_DIRECTION_INOUT)))
+        return;
+
     _PyGI_REGISTER_TYPE (m, PyGIUnresolvedInfo_Type, UnresolvedInfo,
                          PyGIBaseInfo_Type);
-    _PyGI_REGISTER_TYPE (m, PyGICallableInfo_Type, CallableInfo, 
+    _PyGI_REGISTER_TYPE (m, PyGICallableInfo_Type, CallableInfo,
                          PyGIBaseInfo_Type);
     _PyGI_REGISTER_TYPE (m, PyGICallbackInfo_Type, CallbackInfo,
                          PyGIBaseInfo_Type);
-    _PyGI_REGISTER_TYPE (m, PyGIFunctionInfo_Type, FunctionInfo, 
+    _PyGI_REGISTER_TYPE (m, PyGIFunctionInfo_Type, FunctionInfo,
                          PyGICallableInfo_Type);
-    _PyGI_REGISTER_TYPE (m, PyGIRegisteredTypeInfo_Type, RegisteredTypeInfo, 
+    _PyGI_REGISTER_TYPE (m, PyGIRegisteredTypeInfo_Type, RegisteredTypeInfo,
                          PyGIBaseInfo_Type);
-    _PyGI_REGISTER_TYPE (m, PyGIStructInfo_Type, StructInfo, 
+    _PyGI_REGISTER_TYPE (m, PyGIStructInfo_Type, StructInfo,
                          PyGIRegisteredTypeInfo_Type);
-    _PyGI_REGISTER_TYPE (m, PyGIEnumInfo_Type, EnumInfo, 
+    _PyGI_REGISTER_TYPE (m, PyGIEnumInfo_Type, EnumInfo,
                          PyGIRegisteredTypeInfo_Type);
-    _PyGI_REGISTER_TYPE (m, PyGIObjectInfo_Type, ObjectInfo, 
+    _PyGI_REGISTER_TYPE (m, PyGIObjectInfo_Type, ObjectInfo,
                          PyGIRegisteredTypeInfo_Type);
-    _PyGI_REGISTER_TYPE (m, PyGIInterfaceInfo_Type, InterfaceInfo, 
+    _PyGI_REGISTER_TYPE (m, PyGIInterfaceInfo_Type, InterfaceInfo,
                          PyGIRegisteredTypeInfo_Type);
-    _PyGI_REGISTER_TYPE (m, PyGIConstantInfo_Type, ConstantInfo, 
+    _PyGI_REGISTER_TYPE (m, PyGIConstantInfo_Type, ConstantInfo,
                          PyGIBaseInfo_Type);
-    _PyGI_REGISTER_TYPE (m, PyGIValueInfo_Type, ValueInfo, 
+    _PyGI_REGISTER_TYPE (m, PyGIValueInfo_Type, ValueInfo,
                          PyGIBaseInfo_Type);
     _PyGI_REGISTER_TYPE (m, PyGIFieldInfo_Type, FieldInfo,
                          PyGIBaseInfo_Type);
index f5a3d3e..1d9e49c 100644 (file)
@@ -18,6 +18,10 @@ typedef struct _PyGIInvokeState
     GIArgument **args;
     GIArgument *in_args;
 
+    /* Generic array allocated to the same length as args
+     * for use as extra per-arg state data. */
+    gpointer *args_data;
+
     /* 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.
index cabdab9..195a830 100644 (file)
@@ -315,6 +315,12 @@ _invoke_state_init_from_callable_cache (PyGIInvokeState *state,
         return FALSE;
     }
 
+    state->args_data = g_slice_alloc0 (cache->n_args * sizeof (gpointer));
+    if (state->args_data == NULL && cache->n_args != 0) {
+        PyErr_NoMemory();
+        return 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 ();
@@ -342,6 +348,7 @@ static inline void
 _invoke_state_clear (PyGIInvokeState *state, PyGICallableCache *cache)
 {
     g_slice_free1 (cache->n_args * sizeof(GIArgument *), state->args);
+    g_slice_free1 (cache->n_args * sizeof(gpointer), state->args_data);
     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);
@@ -354,33 +361,38 @@ static gboolean _caller_alloc (PyGIInvokeState *state,
                                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]);
+    if (arg_cache->type_tag == GI_TYPE_TAG_INTERFACE) {
+        PyGIInterfaceCache *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 {
+                gssize size = g_struct_info_get_size(
+                    (GIStructInfo *)iface_cache->interface_info);
+                state->args[arg_count]->v_pointer = g_malloc0 (size);
+        }
+    } else if (arg_cache->type_tag == GI_TYPE_TAG_ARRAY) {
+        PyGISequenceCache *seq_cache = (PyGISequenceCache *)arg_cache;
+
+        state->out_args[out_count].v_pointer = g_array_new (TRUE, TRUE, seq_cache->item_size);
+        state->args[arg_count] = &state->out_args[out_count];
     } else {
-            gssize size = g_struct_info_get_size(
-                (GIStructInfo *)iface_cache->interface_info);
-            state->args[arg_count]->v_pointer = g_malloc0 (size);
+        return FALSE;
     }
 
     if (state->args[arg_count]->v_pointer == NULL)
index 503c61d..0246f31 100644 (file)
@@ -221,6 +221,20 @@ _pygi_marshal_cleanup_to_py_interface_object (PyGIInvokeState *state,
         g_object_unref (G_OBJECT(data));
 }
 
+
+void
+_pygi_marshal_cleanup_from_py_interface_callback (PyGIInvokeState *state,
+                                                  PyGIArgCache    *arg_cache,
+                                                  gpointer         data,
+                                                  gboolean         was_processed)
+{
+    PyGICallbackCache *callback_cache = (PyGICallbackCache *)arg_cache;
+    if (was_processed && callback_cache->scope == GI_SCOPE_TYPE_CALL) {
+        _pygi_invoke_closure_free (state->args_data[arg_cache->c_arg_index]);
+        state->args_data[arg_cache->c_arg_index] = NULL;
+    }
+}
+
 void 
 _pygi_marshal_cleanup_from_py_interface_struct_gvalue (PyGIInvokeState *state,
                                                        PyGIArgCache    *arg_cache,
index 92027be..234e49c 100644 (file)
@@ -68,6 +68,10 @@ void _pygi_marshal_cleanup_to_py_interface_object         (PyGIInvokeState *stat
                                                            PyGIArgCache    *arg_cache,
                                                            gpointer         data,
                                                            gboolean         was_processed);
+void _pygi_marshal_cleanup_from_py_interface_callback     (PyGIInvokeState *state,
+                                                           PyGIArgCache    *arg_cache,
+                                                           gpointer         data,
+                                                           gboolean         was_processed);
 void _pygi_marshal_cleanup_from_py_array                  (PyGIInvokeState *state,
                                                            PyGIArgCache    *arg_cache,
                                                            gpointer         data,
index a6572ef..dc14ca5 100644 (file)
@@ -40,11 +40,39 @@ gi_argument_from_py_ssize_t (GIArgument   *arg_out,
     switch (type_tag) {
     case GI_TYPE_TAG_VOID:
     case GI_TYPE_TAG_BOOLEAN:
+        goto unhandled_type;
+
     case GI_TYPE_TAG_INT8:
+        if (size_in >= G_MININT8 && size_in <= G_MAXINT8) {
+            arg_out->v_int8 = size_in;
+            return TRUE;
+        } else {
+            goto overflow;
+        }
+
     case GI_TYPE_TAG_UINT8:
+        if (size_in >= 0 && size_in <= G_MAXUINT8) {
+            arg_out->v_uint8 = size_in;
+            return TRUE;
+        } else {
+            goto overflow;
+        }
+
     case GI_TYPE_TAG_INT16:
+        if (size_in >= G_MININT16 && size_in <= G_MAXINT16) {
+            arg_out->v_int16 = size_in;
+            return TRUE;
+        } else {
+            goto overflow;
+        }
+
     case GI_TYPE_TAG_UINT16:
-        goto unhandled_type;
+        if (size_in >= 0 && size_in <= G_MAXUINT16) {
+            arg_out->v_uint16 = size_in;
+            return TRUE;
+        } else {
+            goto overflow;
+        }
 
         /* Ranges assume two's complement */
     case GI_TYPE_TAG_INT32:
@@ -376,12 +404,12 @@ _pygi_marshal_from_py_uint16 (PyGIInvokeState   *state,
 
     if (PyErr_Occurred ()) {
         PyErr_Clear ();
-        PyErr_Format (PyExc_ValueError, "%li not in range %d to %d", long_, 0, 65535);
+        PyErr_Format (PyExc_ValueError, "%ld 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);
+        PyErr_Format (PyExc_ValueError, "%ld not in range %d to %d", long_, 0, 65535);
         return FALSE;
     }
 
@@ -460,12 +488,12 @@ _pygi_marshal_from_py_uint32 (PyGIInvokeState   *state,
 
     if (PyErr_Occurred ()) {
         PyErr_Clear ();
-        PyErr_Format (PyExc_ValueError, "%lli not in range %i to %u", long_, 0, G_MAXUINT32);
+        PyErr_Format (PyExc_ValueError, "%lld 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);
+        PyErr_Format (PyExc_ValueError, "%lld not in range %i to %u", long_, 0, G_MAXUINT32);
         return FALSE;
     }
 
@@ -531,18 +559,13 @@ _pygi_marshal_from_py_int64 (PyGIInvokeState   *state,
             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);
+        PyErr_Format (PyExc_ValueError, "%s not in range %lld to %lld",
+                      long_str, (long long) G_MININT64, (long long) 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;
@@ -570,13 +593,13 @@ _pygi_marshal_from_py_uint64 (PyGIInvokeState   *state,
 
 #if PY_VERSION_HEX < 0x03000000
     if (PyInt_Check (py_long)) {
-        gint64 long_ = (gint64) PyInt_AsLong (py_long);
-        if (long_ < 0) {
+        long long_ =  PyInt_AsLong (py_long);
+        if (long_ < 0 || long_ > G_MAXUINT64) {
             PyErr_Format (PyExc_ValueError, "%" G_GUINT64_FORMAT " not in range %d to %" G_GUINT64_FORMAT,
                           (gint64) long_, 0, G_MAXUINT64);
             return FALSE;
         }
-        ulong_ = long_;
+        ulong_ = (guint64) long_;
     } else
 #endif
         ulong_ = PyLong_AsUnsignedLongLong (py_long);
@@ -741,8 +764,8 @@ _pygi_marshal_from_py_unichar (PyGIInvokeState   *state,
     }
 
     if (size != 1) {
-       PyErr_Format (PyExc_TypeError, "Must be a one character string, not %" G_GINT64_FORMAT " characters",
-                     (gint64) size);
+       PyErr_Format (PyExc_TypeError, "Must be a one character string, not %lld characters",
+                     (long long) size);
        g_free (string_);
        return FALSE;
     }
@@ -907,6 +930,7 @@ _pygi_marshal_from_py_array (PyGIInvokeState   *state,
     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);
+        array_->len = 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. */
@@ -1310,6 +1334,59 @@ _pygi_marshal_from_py_gerror (PyGIInvokeState   *state,
     return FALSE;
 }
 
+/* _pygi_destroy_notify_dummy:
+ *
+ * Dummy method used in the occasion when a method has a GDestroyNotify
+ * argument without user data.
+ */
+static void
+_pygi_destroy_notify_dummy (gpointer data) {
+}
+
+static PyGICClosure *global_destroy_notify;
+
+static void
+_pygi_destroy_notify_callback_closure (ffi_cif *cif,
+                                       void *result,
+                                       void **args,
+                                       void *data)
+{
+    PyGICClosure *info = * (void**) (args[0]);
+
+    g_assert (info);
+
+    _pygi_invoke_closure_free (info);
+}
+
+/* _pygi_destroy_notify_create:
+ *
+ * Method used in the occasion when a method has a GDestroyNotify
+ * argument with user data.
+ */
+static PyGICClosure*
+_pygi_destroy_notify_create (void)
+{
+    if (!global_destroy_notify) {
+
+        PyGICClosure *destroy_notify = g_slice_new0 (PyGICClosure);
+
+        g_assert (destroy_notify);
+
+        GIBaseInfo* glib_destroy_notify = g_irepository_find_by_name (NULL, "GLib", "DestroyNotify");
+        g_assert (glib_destroy_notify != NULL);
+        g_assert (g_base_info_get_type (glib_destroy_notify) == GI_INFO_TYPE_CALLBACK);
+
+        destroy_notify->closure = g_callable_info_prepare_closure ( (GICallableInfo*) glib_destroy_notify,
+                                                                    &destroy_notify->cif,
+                                                                    _pygi_destroy_notify_callback_closure,
+                                                                    NULL);
+
+        global_destroy_notify = destroy_notify;
+    }
+
+    return global_destroy_notify;
+}
+
 gboolean
 _pygi_marshal_from_py_interface_callback (PyGIInvokeState   *state,
                                           PyGICallableCache *callable_cache,
@@ -1329,17 +1406,14 @@ _pygi_marshal_from_py_interface_callback (PyGIInvokeState   *state,
     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 is a borrowed reference. */
             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");
 
@@ -1347,12 +1421,10 @@ _pygi_marshal_from_py_interface_callback (PyGIInvokeState   *state,
     }
 
     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);
@@ -1360,22 +1432,53 @@ _pygi_marshal_from_py_interface_callback (PyGIInvokeState   *state,
         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;
+
+    /* The PyGICClosure instance is used as user data passed into the C function.
+     * The return trip to python will marshal this back and pull the python user data out.
+     */
     if (user_data_cache != NULL) {
         state->in_args[user_data_cache->c_arg_index].v_pointer = closure;
     }
 
+    /* Setup a GDestroyNotify callback if this method supports it along with
+     * a user data field. The user data field is a requirement in order
+     * free resources and ref counts associated with this arguments closure.
+     * In case a user data field is not available, show a warning giving
+     * explicit information and setup a dummy notification to avoid a crash
+     * later on in _pygi_destroy_notify_callback_closure.
+     */
+    if (callback_cache->destroy_notify_index > 0) {
+        destroy_cache = callable_cache->args_cache[callback_cache->destroy_notify_index];
+    }
+
     if (destroy_cache) {
-        PyGICClosure *destroy_notify = _pygi_destroy_notify_create ();
-        state->in_args[destroy_cache->c_arg_index].v_pointer = destroy_notify->closure;
+        if (user_data_cache != NULL) {
+            PyGICClosure *destroy_notify = _pygi_destroy_notify_create ();
+            state->in_args[destroy_cache->c_arg_index].v_pointer = destroy_notify->closure;
+        } else {
+            gchar *msg = g_strdup_printf("Callables passed to %s will leak references because "
+                                         "the method does not support a user_data argument. "
+                                         "See: https://bugzilla.gnome.org/show_bug.cgi?id=685598",
+                                         callable_cache->name);
+            if (PyErr_WarnEx(PyExc_RuntimeWarning, msg, 2)) {
+                g_free(msg);
+                _pygi_invoke_closure_free(closure);
+                return FALSE;
+            }
+            g_free(msg);
+            state->in_args[destroy_cache->c_arg_index].v_pointer = _pygi_destroy_notify_dummy;
+        }
     }
 
+    /* Store the PyGIClosure as extra args data so _pygi_marshal_cleanup_from_py_interface_callback
+     * can clean it up later for GI_SCOPE_TYPE_CALL based closures.
+     */
+    state->args_data[arg_cache->c_arg_index] = closure;
+
     return TRUE;
 }
 
index 811d8b0..950895d 100644 (file)
@@ -439,7 +439,10 @@ _pygi_marshal_to_py_array (PyGIInvokeState   *state,
                                 memcpy (_struct, array_->data + i * item_size,
                                         item_size);
                                 item_arg.v_pointer = _struct;
-                            } else
+                            } else if (item_arg_cache->is_pointer)
+                                /* this is the case for GAtom* arrays */
+                                item_arg.v_pointer = g_array_index (array_, gpointer, i);
+                            else
                                 item_arg.v_pointer = array_->data + i * item_size;
                             break;
                         default:
index 29ec131..1f59fdf 100644 (file)
 #include "pygi-foreign.h"
 #include "pygi-closure.h"
 #include "pygi-ccallback.h"
-#include "pygi-callbacks.h"
 #include "pygi-property.h"
 #include "pygi-signal-closure.h"
 #include "pygi-invoke.h"
 #include "pygi-cache.h"
+#include "pygi-source.h"
 
 G_BEGIN_DECLS
 #if PY_VERSION_HEX >= 0x03000000
index 7c83eef..6079efc 100644 (file)
 
 #include <girepository.h>
 
-/* Copied from glib */
-static void
-canonicalize_key (gchar *key)
+static GIPropertyInfo *
+lookup_property_from_object_info (GIObjectInfo *info, const gchar *attr_name)
 {
-    gchar *p;
+    gssize n_infos;
+    gssize i;
+
+    n_infos = g_object_info_get_n_properties (info);
+    for (i = 0; i < n_infos; i++) {
+        GIPropertyInfo *property_info;
 
-    for (p = key; *p != 0; p++)
-    {
-        gchar c = *p;
+        property_info = g_object_info_get_property (info, i);
+        g_assert (info != NULL);
+
+        if (strcmp (attr_name, g_base_info_get_name (property_info)) == 0) {
+            return property_info;
+        }
 
-        if (c != '-' &&
-            (c < '0' || c > '9') &&
-            (c < 'A' || c > 'Z') &&
-            (c < 'a' || c > 'z'))
-                *p = '-';
+        g_base_info_unref (property_info);
     }
+
+    return NULL;
 }
 
 static GIPropertyInfo *
-_pygi_lookup_property_from_g_type (GType g_type, const gchar *attr_name)
+lookup_property_from_interface_info (GIInterfaceInfo *info,
+                                     const gchar *attr_name)
 {
-    GIRepository *repository;
-    GIBaseInfo *info;
     gssize n_infos;
     gssize i;
-    GType parent;
-
-    repository = g_irepository_get_default();
-    info = g_irepository_find_by_gtype (repository, g_type);
-    if (info == NULL) {
-        return NULL;
-    }
 
-    n_infos = g_object_info_get_n_properties ( (GIObjectInfo *) info);
+    n_infos = g_interface_info_get_n_properties (info);
     for (i = 0; i < n_infos; i++) {
         GIPropertyInfo *property_info;
 
-        property_info = g_object_info_get_property ( (GIObjectInfo *) info, i);
+        property_info = g_interface_info_get_property (info, i);
         g_assert (info != NULL);
 
         if (strcmp (attr_name, g_base_info_get_name (property_info)) == 0) {
-            g_base_info_unref (info);
             return property_info;
         }
 
         g_base_info_unref (property_info);
     }
 
-    g_base_info_unref (info);
+    return NULL;
+}
+
+static GIPropertyInfo *
+_pygi_lookup_property_from_g_type (GType g_type, const gchar *attr_name)
+{
+    GIPropertyInfo *ret = NULL;
+    GIRepository *repository;
+    GIBaseInfo *info;
+
+    repository = g_irepository_get_default();
+    info = g_irepository_find_by_gtype (repository, g_type);
+    if (info == NULL)
+       return NULL;
 
-    parent = g_type_parent (g_type);
-    if (parent > 0)
-        return _pygi_lookup_property_from_g_type (parent, attr_name);
+    if (GI_IS_OBJECT_INFO (info))
+        ret = lookup_property_from_object_info ((GIObjectInfo *) info,
+                                                attr_name);
+    else if (GI_IS_INTERFACE_INFO (info))
+        ret = lookup_property_from_interface_info ((GIInterfaceInfo *) info,
+                                                   attr_name);
 
-    return NULL;
+    g_base_info_unref (info);
+    return ret;
 }
 
 PyObject *
-pygi_get_property_value_real (PyGObject *instance,
-                              const gchar *attr_name)
+pygi_get_property_value_real (PyGObject *instance, GParamSpec *pspec)
 {
-    GType g_type;
     GIPropertyInfo *property_info = NULL;
-    char *property_name = g_strdup (attr_name);
-    GParamSpec *pspec = NULL;
     GValue value = { 0, };
     GIArgument arg = { 0, };
     PyObject *py_value = NULL;
     GITypeInfo *type_info = NULL;
     GITransfer transfer;
 
-    canonicalize_key (property_name);
-
-    g_type = pyg_type_from_object ((PyObject *)instance);
-    property_info = _pygi_lookup_property_from_g_type (g_type, property_name);
+    /* The owner_type of the pspec gives us the exact type that introduced the
+     * property, even if it is a parent class of the instance in question. */
+    property_info = _pygi_lookup_property_from_g_type (pspec->owner_type, pspec->name);
 
     if (property_info == NULL)
         goto out;
 
-    pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (instance->obj),
-                                          attr_name);
-    if (pspec == NULL)
-        goto out;
-
     g_value_init (&value, G_PARAM_SPEC_VALUE_TYPE (pspec));
-    g_object_get_property (instance->obj, attr_name, &value);
+    g_object_get_property (instance->obj, pspec->name, &value);
 
     type_info = g_property_info_get_type (property_info);
     transfer = g_property_info_get_ownership_transfer (property_info);
@@ -193,6 +196,8 @@ pygi_get_property_value_real (PyGObject *instance,
                         arg.v_pointer = g_value_get_boxed (&value);
                     } else if (g_type_is_a (type, G_TYPE_POINTER)) {
                         arg.v_pointer = g_value_get_pointer (&value);
+                    } else if (g_type_is_a (type, G_TYPE_VARIANT)) {
+                        arg.v_pointer = g_value_get_variant (&value);
                     } else {
                         PyErr_Format (PyExc_NotImplementedError,
                                       "Retrieving properties of type '%s' is not implemented",
@@ -243,7 +248,6 @@ pygi_get_property_value_real (PyGObject *instance,
     py_value = _pygi_argument_to_object (&arg, type_info, transfer);
 
 out:
-    g_free (property_name);
     if (property_info != NULL)
         g_base_info_unref (property_info);
     if (type_info != NULL)
@@ -254,33 +258,24 @@ out:
 
 gint
 pygi_set_property_value_real (PyGObject *instance,
-                              const gchar *attr_name,
+                              GParamSpec *pspec,
                               PyObject *py_value)
 {
-    GType g_type;
     GIPropertyInfo *property_info = NULL;
-    char *property_name = g_strdup (attr_name);
     GITypeInfo *type_info = NULL;
     GITypeTag type_tag;
     GITransfer transfer;
     GValue value = { 0, };
     GIArgument arg = { 0, };
-    GParamSpec *pspec = NULL;
     gint ret_value = -1;
 
-    canonicalize_key (property_name);
-
-    g_type = pyg_type_from_object ((PyObject *)instance);
-    property_info = _pygi_lookup_property_from_g_type (g_type, property_name);
-
+    /* The owner_type of the pspec gives us the exact type that introduced the
+     * property, even if it is a parent class of the instance in question. */
+    property_info = _pygi_lookup_property_from_g_type (pspec->owner_type,
+                                                       pspec->name);
     if (property_info == NULL)
         goto out;
 
-    pspec = g_object_class_find_property (G_OBJECT_GET_CLASS (instance->obj),
-                                          attr_name);
-    if (pspec == NULL)
-        goto out;
-
     if (! (pspec->flags & G_PARAM_WRITABLE))
         goto out;
 
@@ -321,12 +316,14 @@ pygi_set_property_value_real (PyGObject *instance,
                 case GI_INFO_TYPE_UNION:
                     if (g_type_is_a (type, G_TYPE_BOXED)) {
                         g_value_set_boxed (&value, arg.v_pointer);
+                    } else if (g_type_is_a (type, G_TYPE_VARIANT)) {
+                        g_value_set_variant (&value, arg.v_pointer);
                     } else {
                         PyErr_Format (PyExc_NotImplementedError,
                                       "Setting properties of type '%s' is not implemented",
                                       g_type_name (type));
                     }
-                    break;
+                    goto out;
                 default:
                     PyErr_Format (PyExc_NotImplementedError,
                                   "Setting properties of type '%s' is not implemented",
@@ -391,6 +388,9 @@ pygi_set_property_value_real (PyGObject *instance,
             break;
         case GI_TYPE_TAG_ARRAY:
         {
+            /* This is assumes GI_TYPE_TAG_ARRAY is always a GStrv
+             * https://bugzilla.gnome.org/show_bug.cgi?id=688232
+             */
             GArray *arg_items = (GArray*) arg.v_pointer;
             gchar** strings;
             int i;
@@ -398,12 +398,13 @@ pygi_set_property_value_real (PyGObject *instance,
             if (arg_items == NULL)
                 goto out;
 
-            strings = g_new0 (char*, arg_items->len);
+            strings = g_new0 (char*, arg_items->len + 1);
             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);
+            strings[arg_items->len] = NULL;
             g_value_set_boxed (&value, strings);
+            g_array_free (arg_items, TRUE);
             break;
         }
         default:
@@ -413,12 +414,11 @@ pygi_set_property_value_real (PyGObject *instance,
             goto out;
     }
 
-    g_object_set_property (instance->obj, attr_name, &value);
+    g_object_set_property (instance->obj, pspec->name, &value);
 
     ret_value = 0;
 
 out:
-    g_free (property_name);
     if (property_info != NULL)
         g_base_info_unref (property_info);
     if (type_info != NULL)
index 31d0e42..875d21e 100644 (file)
 #include "pygi.h"
 
 PyObject *pygi_get_property_value_real (PyGObject *instance,
-                                        const gchar *attr_name);
+                                        GParamSpec *pspec);
 
 gint pygi_set_property_value_real (PyGObject *instance,
-                                   const gchar *attr_name,
+                                   GParamSpec *pspec,
                                    PyObject *py_value);
 
 #endif /* __PYGI_PROPERTY_H__ */
index c48d2ce..7de293a 100644 (file)
@@ -89,7 +89,6 @@ _wrap_g_irepository_require (PyGIRepository *self,
     const char *version = NULL;
     PyObject *lazy = NULL;
     GIRepositoryLoadFlags flags = 0;
-    GTypelib *typelib;
     GError *error;
 
     if (!PyArg_ParseTupleAndKeywords (args, kwargs, "s|zO:Repository.require",
@@ -102,7 +101,7 @@ _wrap_g_irepository_require (PyGIRepository *self,
     }
 
     error = NULL;
-    typelib = g_irepository_require (self->repository, namespace_, version, flags, &error);
+    g_irepository_require (self->repository, namespace_, version, flags, &error);
     if (error != NULL) {
         PyErr_SetString (PyGIRepositoryError, error->message);
         g_error_free (error);
index 83f9a41..36ea168 100644 (file)
@@ -44,29 +44,16 @@ _pygi_lookup_signal_from_g_type (GType g_type,
 {
     GIRepository *repository;
     GIBaseInfo *info;
-    gssize n_infos;
-    gssize i;
     GType parent;
 
     repository = g_irepository_get_default();
     info = g_irepository_find_by_gtype (repository, g_type);
     if (info != NULL) {
-        n_infos = g_object_info_get_n_signals ( (GIObjectInfo *) info);
-        for (i = 0; i < n_infos; i++) {
-            GISignalInfo *signal_info;
-
-            signal_info = g_object_info_get_signal ( (GIObjectInfo *) info, i);
-            g_assert (info != NULL);
-
-            if (strcmp (signal_name, g_base_info_get_name (signal_info)) == 0) {
-                g_base_info_unref (info);
-                return signal_info;
-            }
-
-            g_base_info_unref (signal_info);
-        }
-
+        GISignalInfo *signal_info;
+        signal_info = g_object_info_find_signal ((GIObjectInfo *) info, signal_name);
         g_base_info_unref (info);
+        if (signal_info != NULL)
+            return signal_info;
     }
 
     parent = g_type_parent (g_type);
diff --git a/gi/pygi-source.c b/gi/pygi-source.c
new file mode 100644 (file)
index 0000000..73772bd
--- /dev/null
@@ -0,0 +1,246 @@
+/* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
+/*
+ * Copyright (C) 1998-2003  James Henstridge
+ * Copyright (C) 2005       Oracle
+ * Copyright (c) 2012       Canonical Ltd.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ */
+
+#define NO_IMPORT
+#include "pygobject.h"
+
+#include "pygi-private.h"
+#include "pyglib.h"
+#include "pyglib-private.h"
+#include "pygi-source.h"
+
+typedef struct
+{
+    GSource source;
+    PyObject *obj;
+} PyGRealSource;
+
+static gboolean
+pyg_source_prepare(GSource *source, gint *timeout)
+{
+    PyGRealSource *pysource = (PyGRealSource *)source;
+    PyObject *t;
+    gboolean ret = FALSE;
+    gboolean got_err = TRUE;
+    PyGILState_STATE state;
+
+    state = pyglib_gil_state_ensure();
+
+    t = PyObject_CallMethod(pysource->obj, "prepare", NULL);
+
+    if (t == NULL) {
+       goto bail;
+    } else if (!PyObject_IsTrue(t)) {
+       got_err = FALSE;
+       goto bail;
+    } else if (!PyTuple_Check(t)) {
+       PyErr_SetString(PyExc_TypeError,
+                       "source prepare function must return a tuple or False");
+       goto bail;
+    } else if (PyTuple_Size(t) != 2) {
+       PyErr_SetString(PyExc_TypeError,
+                       "source prepare function return tuple must be exactly "
+                       "2 elements long");
+       goto bail;
+    }
+
+    ret = PyObject_IsTrue(PyTuple_GET_ITEM(t, 0));
+       *timeout = PYGLIB_PyLong_AsLong(PyTuple_GET_ITEM(t, 1));
+
+       if (*timeout == -1 && PyErr_Occurred()) {
+           ret = FALSE;
+           goto bail;
+       }
+
+    got_err = FALSE;
+
+bail:
+    if (got_err)
+       PyErr_Print();
+
+    Py_XDECREF(t);
+
+    pyglib_gil_state_release(state);
+
+    return ret;
+}
+
+static gboolean
+pyg_source_check(GSource *source)
+{
+    PyGRealSource *pysource = (PyGRealSource *)source;
+    PyObject *t;
+    gboolean ret;
+    PyGILState_STATE state;
+
+    state = pyglib_gil_state_ensure();
+
+    t = PyObject_CallMethod(pysource->obj, "check", NULL);
+
+    if (t == NULL) {
+       PyErr_Print();
+       ret = FALSE;
+    } else {
+       ret = PyObject_IsTrue(t);
+       Py_DECREF(t);
+    }
+
+    pyglib_gil_state_release(state);
+
+    return ret;
+}
+
+static gboolean
+pyg_source_dispatch(GSource *source, GSourceFunc callback, gpointer user_data)
+{
+    PyGRealSource *pysource = (PyGRealSource *)source;
+    PyObject *func, *args, *tuple, *t;
+    gboolean ret;
+    PyGILState_STATE state;
+
+    state = pyglib_gil_state_ensure();
+
+    if (callback) {
+       tuple = user_data;
+
+       func = PyTuple_GetItem(tuple, 0);
+        args = PyTuple_GetItem(tuple, 1);
+    } else {
+       func = Py_None;
+       args = Py_None;
+    }
+
+    t = PyObject_CallMethod(pysource->obj, "dispatch", "OO", func, args);
+
+    if (t == NULL) {
+       PyErr_Print();
+       ret = FALSE;
+    } else {
+       ret = PyObject_IsTrue(t);
+       Py_DECREF(t);
+    }
+
+    pyglib_gil_state_release(state);
+
+    return ret;
+}
+
+static void
+pyg_source_finalize(GSource *source)
+{
+    PyGRealSource *pysource = (PyGRealSource *)source;
+    PyObject *func, *t;
+    PyGILState_STATE state;
+
+    state = pyglib_gil_state_ensure();
+
+    func = PyObject_GetAttrString(pysource->obj, "finalize");
+    if (func) {
+       t = PyObject_CallObject(func, NULL);
+       Py_DECREF(func);
+
+       if (t == NULL) {
+           PyErr_Print();
+       } else {
+           Py_DECREF(t);
+       }
+    }
+
+    pyglib_gil_state_release(state);
+}
+
+static GSourceFuncs pyg_source_funcs =
+{
+    pyg_source_prepare,
+    pyg_source_check,
+    pyg_source_dispatch,
+    pyg_source_finalize
+};
+
+PyObject *
+pyg_source_set_callback(PyGObject *self_module, PyObject *args)
+{
+    PyObject *self, *first, *callback, *cbargs = NULL, *data;
+    gint len;
+
+    len = PyTuple_Size (args);
+    if (len < 2) {
+       PyErr_SetString(PyExc_TypeError,
+                       "set_callback requires at least 2 arguments");
+       return NULL;
+    }
+
+    first = PySequence_GetSlice(args, 0, 2);
+    if (!PyArg_ParseTuple(first, "OO:set_callback", &self, &callback)) {
+       Py_DECREF (first);
+       return NULL;
+    }
+    Py_DECREF(first);
+    
+    if (!pyg_boxed_check (self, G_TYPE_SOURCE)) {
+       PyErr_SetString(PyExc_TypeError, "first argument is not a GLib.Source");
+       return NULL;
+    }
+
+    if (!PyCallable_Check(callback)) {
+       PyErr_SetString(PyExc_TypeError, "second argument not callable");
+       return NULL;
+    }
+
+    cbargs = PySequence_GetSlice(args, 2, len);
+    if (cbargs == NULL)
+       return NULL;
+
+    data = Py_BuildValue("(ON)", callback, cbargs);
+    if (data == NULL)
+       return NULL;
+
+    g_source_set_callback(pyg_boxed_get (self, GSource),
+                         _pyglib_handler_marshal, data,
+                         _pyglib_destroy_notify);
+
+    Py_INCREF(Py_None);
+    return Py_None;
+}
+
+/**
+ * pyg_source_new:
+ *
+ * Wrap the un-bindable g_source_new() and provide wrapper callbacks in the
+ * GSourceFuncs which call back to Python.
+ */
+PyObject*
+pyg_source_new ()
+{
+    PyGRealSource *source = NULL;
+    PyObject      *py_type;
+
+    source = (PyGRealSource*) g_source_new (&pyg_source_funcs, sizeof (PyGRealSource));
+
+    py_type = _pygi_type_import_by_name ("GLib", "Source");
+    source->obj = _pygi_boxed_new ( (PyTypeObject *) py_type, source, FALSE);
+
+    return source->obj;
+}
similarity index 64%
rename from gi/pygi-foreign-gvariant.h
rename to gi/pygi-source.h
index 43ea9c7..024cf15 100644 (file)
@@ -1,6 +1,6 @@
 /* -*- mode: C; c-basic-offset: 4; indent-tabs-mode: nil; -*- */
 /*
- * Copyright (c) 2010  Collabora Ltd. <http://www.collabora.co.uk/>
+ * Copyright (c) 2012 Canonical Ltd.
  *
  * Permission is hereby granted, free of charge, to any person obtaining a copy
  * of this software and associated documentation files (the "Software"), to
  * IN THE SOFTWARE.
  */
 
-#ifndef __PYGI_FOREIGN_G_VARIANT_H__
-#define __PYGI_FOREIGN_G_VARIANT_H__
+#ifndef __PYGI_SOURCE_H__
+#define __PYGI_SOURCE_H__
 
-#include "pygi-foreign.h"
+PyObject *pyg_source_new ();
+PyObject *pyg_source_set_callback (PyGObject *self, PyObject *args);
 
-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_);
-
-#endif /* __PYGI_FOREIGN_G_VARIANT_H__ */
+#endif /* __PYGI_SOURCE_H__ */
 
index 129ea98..dfaadb0 100644 (file)
@@ -23,6 +23,8 @@
 
 #include "pygi-private.h"
 
+#include <pyglib-python-compat.h>
+
 
 PyObject *
 _pygi_type_import_by_name (const char *namespace_,
@@ -97,3 +99,61 @@ _pygi_type_get_from_g_type (GType g_type)
     return py_type;
 }
 
+/* _pygi_get_py_type_hint
+ *
+ * This gives a hint to what python type might be used as
+ * a particular gi type.
+ */
+PyObject *
+_pygi_get_py_type_hint(GITypeTag type_tag)
+{
+    PyObject *type = Py_None;
+
+    switch (type_tag) {
+        case GI_TYPE_TAG_BOOLEAN:
+            type = (PyObject *) &PyBool_Type;
+            break;
+
+        case GI_TYPE_TAG_INT8:
+        case GI_TYPE_TAG_UINT8:
+        case GI_TYPE_TAG_INT16:
+        case GI_TYPE_TAG_UINT16:
+        case GI_TYPE_TAG_INT32:
+        case GI_TYPE_TAG_UINT32:
+        case GI_TYPE_TAG_INT64:
+        case GI_TYPE_TAG_UINT64:
+            type = (PyObject *) &PYGLIB_PyLong_Type;
+            break;
+
+        case GI_TYPE_TAG_FLOAT:
+        case GI_TYPE_TAG_DOUBLE:
+            type = (PyObject *) &PyFloat_Type;
+            break;
+
+        case GI_TYPE_TAG_GLIST:
+        case GI_TYPE_TAG_GSLIST:
+        case GI_TYPE_TAG_ARRAY:
+            type = (PyObject *) &PyList_Type;
+            break;
+
+        case GI_TYPE_TAG_GHASH:
+            type = (PyObject *) &PyDict_Type;
+            break;
+
+        case GI_TYPE_TAG_UTF8:
+        case GI_TYPE_TAG_FILENAME:
+        case GI_TYPE_TAG_UNICHAR:
+            type = (PyObject *) &PYGLIB_PyUnicode_Type;
+            break;
+
+        case GI_TYPE_TAG_INTERFACE:
+        case GI_TYPE_TAG_GTYPE:
+        case GI_TYPE_TAG_ERROR:
+        case GI_TYPE_TAG_VOID:
+            break;
+    }
+
+    Py_INCREF(type);
+    return type;
+}
+
index bb43d19..01b5994 100644 (file)
@@ -39,6 +39,7 @@ PyObject *_pygi_type_import_by_gi_info (GIBaseInfo *info);
 
 PyObject *_pygi_type_get_from_g_type (GType g_type);
 
+PyObject *_pygi_get_py_type_hint (GITypeTag type_tag);
 
 G_END_DECLS
 
index 121eae5..86da07f 100644 (file)
--- a/gi/pygi.h
+++ b/gi/pygi.h
@@ -77,9 +77,9 @@ typedef PyObject * (*PyGIArgOverrideReleaseFunc) (GITypeInfo *type_info,
 struct PyGI_API {
     PyObject* (*type_import_by_g_type) (GType g_type);
     PyObject* (*get_property_value) (PyGObject *instance,
-                                     const gchar *attr_name);
+                                     GParamSpec *pspec);
     gint (*set_property_value) (PyGObject *instance,
-                                const gchar *attr_name,
+                                GParamSpec *pspec,
                                 PyObject *value);
     GClosure * (*signal_closure_new) (PyGObject *instance,
                                       const gchar *sig_name,
@@ -124,23 +124,23 @@ pygi_type_import_by_g_type (GType g_type)
 
 static inline PyObject *
 pygi_get_property_value (PyGObject *instance,
-                         const gchar *attr_name)
+                         GParamSpec *pspec)
 {
     if (_pygi_import() < 0) {
         return NULL;
     }
-    return PyGI_API->get_property_value(instance, attr_name);
+    return PyGI_API->get_property_value(instance, pspec);
 }
 
 static inline gint
 pygi_set_property_value (PyGObject *instance,
-                         const gchar *attr_name,
+                         GParamSpec *pspec,
                          PyObject *value)
 {
     if (_pygi_import() < 0) {
         return -1;
     }
-    return PyGI_API->set_property_value(instance, attr_name, value);
+    return PyGI_API->set_property_value(instance, pspec, value);
 }
 
 static inline GClosure *
index 113c229..4a1456d 100644 (file)
 
 G_BEGIN_DECLS
 
-static PyTypeObject *_PyGObject_Type;
 static PyTypeObject *_PyGTypeWrapper_Type;
 
-#define PyGObject_Type (*_PyGObject_Type)
 #define PyGTypeWrapper_Type (*_PyGTypeWrapper_Type)
 
 __attribute__ ( (unused))
@@ -45,7 +43,7 @@ _pygobject_import (void)
         return 1;
     }
 
-    from_list = Py_BuildValue ("(ss)", "GObject", "GType");
+    from_list = Py_BuildValue ("(s)", "GType");
     if (from_list == NULL) {
         return -1;
     }
@@ -58,12 +56,6 @@ _pygobject_import (void)
         return -1;
     }
 
-    _PyGObject_Type = (PyTypeObject *) PyObject_GetAttrString (module, "GObject");
-    if (_PyGObject_Type == NULL) {
-        retval = -1;
-        goto out;
-    }
-
     _PyGTypeWrapper_Type = (PyTypeObject *) PyObject_GetAttrString (module, "GType");
     if (_PyGTypeWrapper_Type == NULL) {
         retval = -1;
index 2c81d3f..91b5cc1 100644 (file)
-# -*- 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
+from gi import PyGIDeprecationWarning
+
+warnings.warn('gi.pygtkcompat is being deprecated in favor of using "pygtkcompat" directly.',
+              PyGIDeprecationWarning, stacklevel=2)
+
+# pyflakes.ignore
+from pygtkcompat import (enable,
+                         enable_gtk,
+                         enable_vte,
+                         enable_poppler,
+                         enable_webkit,
+                         enable_gudev,
+                         enable_gst,
+                         enable_goocanvas)
+
+
+__all__ = ['enable',
+           'enable_gtk',
+           'enable_vte',
+           'enable_poppler',
+           'enable_webkit',
+           'enable_gudev',
+           'enable_gst',
+           'enable_goocanvas']
index b6f258b..ed0ae40 100644 (file)
@@ -124,6 +124,9 @@ CAIRO_LIBS = @CAIRO_LIBS@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
+CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
+CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
+CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CYGPATH_W = @CYGPATH_W@
@@ -141,6 +144,7 @@ EXEEXT = @EXEEXT@
 FFI_CFLAGS = @FFI_CFLAGS@
 FFI_LIBS = @FFI_LIBS@
 FGREP = @FGREP@
+GENHTML = @GENHTML@
 GIO_CFLAGS = @GIO_CFLAGS@
 GIO_LIBS = @GIO_LIBS@
 GI_CFLAGS = @GI_CFLAGS@
@@ -160,6 +164,7 @@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
+LCOV = @LCOV@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBFFI_PC = @LIBFFI_PC@
@@ -169,7 +174,6 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
@@ -275,7 +279,7 @@ pygirepository_PYTHON = \
 all: all-am
 
 .SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
@@ -300,9 +304,9 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 $(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)
+$(top_srcdir)/configure:  $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
 
index 3b94294..f049da7 100644 (file)
 from __future__ import absolute_import
 
 import sys
+
 from . import _gobject
+from ._gobject._gobject import GInterface
+from ._gobject.constants import TYPE_INVALID
 
 from ._gi import \
     InterfaceInfo, \
     ObjectInfo, \
     StructInfo, \
     VFuncInfo, \
+    FunctionInfo, \
     register_interface_info, \
-    hook_up_vfunc_implementation
+    hook_up_vfunc_implementation, \
+    DIRECTION_IN, \
+    DIRECTION_OUT, \
+    DIRECTION_INOUT
 
 
 StructInfo  # pyflakes
 
-if sys.version_info > (3, 0):
+if (3, 0) <= sys.version_info < (3, 3):
+    # callable not available for python 3.0 thru 3.2
     def callable(obj):
         return hasattr(obj, '__call__')
 
 
-def Function(info):
+def split_function_info_args(info):
+    """Split a functions args into a tuple of two lists.
 
+    Note that args marked as DIRECTION_INOUT will be in both lists.
+
+    :Returns:
+        Tuple of (in_args, out_args)
+    """
+    in_args = []
+    out_args = []
+    for arg in info.get_arguments():
+        direction = arg.get_direction()
+        if direction in (DIRECTION_IN, DIRECTION_INOUT):
+            in_args.append(arg)
+        if direction in (DIRECTION_OUT, DIRECTION_INOUT):
+            out_args.append(arg)
+    return (in_args, out_args)
+
+
+def get_callable_info_doc_string(info):
+    """Build a signature string which can be used for documentation."""
+    in_args, out_args = split_function_info_args(info)
+    in_args_strs = []
+    if isinstance(info, VFuncInfo):
+        in_args_strs = ['self']
+    elif isinstance(info, FunctionInfo):
+        if info.is_method():
+            in_args_strs = ['self']
+        elif info.is_constructor():
+            in_args_strs = ['cls']
+
+    for arg in in_args:
+        argstr = arg.get_name() + ':' + arg.get_pytype_hint()
+        if arg.is_optional():
+            argstr += '=<optional>'
+        in_args_strs.append(argstr)
+    in_args_str = ', '.join(in_args_strs)
+
+    if out_args:
+        out_args_str = ', '.join(arg.get_name() + ':' + arg.get_pytype_hint()
+                                 for arg in out_args)
+        return '%s(%s) -> %s' % (info.get_name(), in_args_str, out_args_str)
+    else:
+        return '%s(%s)' % (info.get_name(), in_args_str)
+
+
+def wraps_callable_info(info):
+    """Similar to functools.wraps but with specific GICallableInfo support."""
+    def update_func(func):
+        func.__info__ = info
+        func.__name__ = info.get_name()
+        func.__module__ = info.get_namespace()
+        func.__doc__ = get_callable_info_doc_string(info)
+        return func
+    return update_func
+
+
+def Function(info):
+    """Warps GIFunctionInfo"""
+    @wraps_callable_info(info)
     def function(*args, **kwargs):
         return info.invoke(*args, **kwargs)
-    function.__info__ = info
-    function.__name__ = info.get_name()
-    function.__module__ = info.get_namespace()
 
     return function
 
 
 class NativeVFunc(object):
-
+    """Wraps GINativeVFuncInfo"""
     def __init__(self, info):
-        self._info = info
+        self.__info__ = info
 
     def __get__(self, instance, klass):
+        @wraps_callable_info(self.__info__)
         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 self.__info__.invoke(klass.__gtype__, *args, **kwargs)
         return native_vfunc
 
 
 def Constructor(info):
-
+    """Warps GIFunctionInfo with get_constructor() == True"""
+    @wraps_callable_info(info)
     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, **kwargs)
-
-    constructor.__info__ = info
-    constructor.__name__ = info.get_name()
-    constructor.__module__ = info.get_namespace()
-
     return constructor
 
 
@@ -169,6 +225,11 @@ class MetaClassHelper(object):
         if class_info is None or not isinstance(class_info, ObjectInfo):
             return
 
+        # Special case skipping of vfuncs for GObject.Object because they will break
+        # the static bindings which will try to use them.
+        if cls.__module__ == 'gi.repository.GObject' and cls.__name__ == 'Object':
+            return
+
         for vfunc_info in class_info.get_vfuncs():
             name = 'do_%s' % vfunc_info.get_name()
             value = NativeVFunc(vfunc_info)
@@ -181,8 +242,10 @@ def find_vfunc_info_in_interface(bases, vfunc_name):
         # 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\
+        # Skip bases without __info__ (static _gobject._gobject.GObject)
+        if base is GInterface or\
+                not issubclass(base, GInterface) or\
+                not hasattr(base, '__info__') or\
                 not isinstance(base.__info__, InterfaceInfo):
             continue
 
@@ -260,7 +323,7 @@ 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__:
+            if not_head and GInterface not in candidate.__bases__:
                 candidate = None  # conflict, reject candidate
             else:
                 break
@@ -287,7 +350,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 != TYPE_INVALID and g_type.pytype is not None:
             return
 
         cls._setup_fields()
index c2852d8..b9205ee 100644 (file)
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -70,7 +70,7 @@
 #         compiler:            $LTCC
 #         compiler flags:              $LTCFLAGS
 #         linker:              $LD (gnu? $with_gnu_ld)
-#         $progname:   (GNU libtool) 2.4.2 Debian-2.4.2-1ubuntu1
+#         $progname:   (GNU libtool) 2.4.2 Debian-2.4.2-1.2ubuntu1
 #         automake:    $automake_version
 #         autoconf:    $autoconf_version
 #
@@ -80,7 +80,7 @@
 
 PROGRAM=libtool
 PACKAGE=libtool
-VERSION="2.4.2 Debian-2.4.2-1ubuntu1"
+VERSION="2.4.2 Debian-2.4.2-1.2ubuntu1"
 TIMESTAMP=""
 package_revision=1.3337
 
index 828104c..02b4bbe 100644 (file)
@@ -1324,7 +1324,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
            LD="${LD-ld} -m elf_i386_fbsd"
            ;;
          x86_64-*linux*)
-           LD="${LD-ld} -m elf_i386"
+           case `/usr/bin/file conftest.o` in
+             *x86-64*)
+               LD="${LD-ld} -m elf32_x86_64"
+               ;;
+             *)
+               LD="${LD-ld} -m elf_i386"
+               ;;
+           esac
            ;;
          ppc64-*linux*|powerpc64-*linux*)
            LD="${LD-ld} -m elf32ppclinux"
@@ -1688,7 +1695,8 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
     ;;
   *)
     lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
-    if test -n "$lt_cv_sys_max_cmd_len"; then
+    if test -n "$lt_cv_sys_max_cmd_len" && \
+       test undefined != "$lt_cv_sys_max_cmd_len"; then
       lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
       lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
     else
@@ -2512,17 +2520,6 @@ freebsd* | dragonfly*)
   esac
   ;;
 
-gnu*)
-  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 # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
@@ -2639,7 +2636,7 @@ linux*oldld* | linux*aout* | linux*coff*)
   ;;
 
 # This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
   version_type=linux # correct to gnu/linux during the next big refactor
   need_lib_prefix=no
   need_version=no
@@ -3255,10 +3252,6 @@ freebsd* | dragonfly*)
   fi
   ;;
 
-gnu*)
-  lt_cv_deplibs_check_method=pass_all
-  ;;
-
 haiku*)
   lt_cv_deplibs_check_method=pass_all
   ;;
@@ -3297,7 +3290,7 @@ irix5* | irix6* | nonstopux*)
   ;;
 
 # This must be glibc/ELF.
-linux* | k*bsd*-gnu | kopensolaris*-gnu)
+linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
   lt_cv_deplibs_check_method=pass_all
   ;;
 
@@ -4049,7 +4042,7 @@ m4_if([$1], [CXX], [
            ;;
        esac
        ;;
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
        case $cc_basename in
          KCC*)
            # KAI C++ Compiler
@@ -4348,7 +4341,7 @@ m4_if([$1], [CXX], [
       _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
       ;;
 
-    linux* | k*bsd*-gnu | kopensolaris*-gnu)
+    linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
       case $cc_basename in
       # old Intel for x86_64 which still supported -KPIC.
       ecc*)
@@ -6241,9 +6234,6 @@ if test "$_lt_caught_CXX_error" != yes; then
         _LT_TAGVAR(ld_shlibs, $1)=yes
         ;;
 
-      gnu*)
-        ;;
-
       haiku*)
         _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
         _LT_TAGVAR(link_all_deplibs, $1)=yes
@@ -6405,7 +6395,7 @@ if test "$_lt_caught_CXX_error" != yes; then
         _LT_TAGVAR(inherit_rpath, $1)=yes
         ;;
 
-      linux* | k*bsd*-gnu | kopensolaris*-gnu)
+      linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*)
         case $cc_basename in
           KCC*)
            # Kuck and Associates, Inc. (KAI) C++ Compiler
index c9cdf5d..5bf200c 100644 (file)
@@ -146,7 +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 python2.7 python2.6 python3 python3.2 python3.1])
+                    [python3 python3.3 python3.2 python3.1 python2 python2.7 python2.6 python])
 
   m4_if([$1],[],[
     dnl No version check is needed.
diff --git a/pygi-convert.sh b/pygi-convert.sh
new file mode 100755 (executable)
index 0000000..c5887f8
--- /dev/null
@@ -0,0 +1,350 @@
+#!/bin/sh
+
+if [ -n "$1" ]; then
+    FILES_TO_CONVERT="$@"
+else
+    FILES_TO_CONVERT="$(find . -name '*.py')"
+fi
+
+for f in $FILES_TO_CONVERT; do
+    perl -i -0 \
+    -pe "s/import gconf\n/from gi.repository import GConf\n/g;" \
+    -pe "s/gconf\./GConf\./g;" \
+    -pe "s/GConf\.client_get_default/GConf.Client.get_default/g;" \
+    -pe "s/GConf\.CLIENT_/GConf.ClientPreloadType./g;" \
+    -pe "s/GConf\.VALUE_/GConf.ValueType./g;" \
+    -pe "s/gconf_client.notify_add\('\/desktop\/sugar\/collaboration\/publish_gadget',/return;gconf_client.notify_add\('\/desktop\/sugar\/collaboration\/publish_gadget',/g;" \
+\
+    -pe "s/import pygtk/import gi/g;" \
+    -pe "s/pygtk.require\('2.0'\)/gi.require_version\('Gtk', '3.0'\)/g;" \
+    -pe "s/import gtk\n/from gi.repository import Gtk\n/g;" \
+    -pe "s/(?<!\.)gtk\./Gtk\./g;" \
+    -pe "s/Gtk.ACCEL_/Gtk.AccelFlags./g;" \
+    -pe "s/Gtk.ARROW_/Gtk.ArrowType./g;" \
+    -pe "s/Gtk.ASSISTANT_PAGE_/Gtk.AssistantPageType./g;" \
+    -pe "s/Gtk.BUTTONBOX_/Gtk.ButtonBoxStyle./g;" \
+    -pe "s/Gtk.BUTTONS_/Gtk.ButtonsType./g;" \
+    -pe "s/Gtk.CELL_RENDERER_MODE_/Gtk.CellRendererMode./g;" \
+    -pe "s/Gtk.CELL_RENDERER_FOCUSED/Gtk.CellRendererState.FOCUSED/g;" \
+    -pe "s/Gtk.CELL_RENDERER_INSENSITIVE/Gtk.CellRendererState.INSENSITIVE/g;" \
+    -pe "s/Gtk.CELL_RENDERER_PRELIT/Gtk.CellRendererState.PRELIT/g;" \
+    -pe "s/Gtk.CELL_RENDERER_SORTED/Gtk.CellRendererState.SORTED/g;" \
+    -pe "s/Gtk.CELL_RENDERER_SELECTED/Gtk.CellRendererState.SELECTED/g;" \
+    -pe "s/Gtk.CORNER_/Gtk.CornerType./g;" \
+    -pe "s/Gtk.DIALOG_/Gtk.DialogFlags./g;" \
+    -pe "s/Gtk.ENTRY_ICON_/Gtk.EntryIconPosition./g;" \
+    -pe "s/Gtk.EXPAND/Gtk.AttachOptions.EXPAND/g;" \
+    -pe "s/Gtk.FALSE/False/g;" \
+    -pe "s/Gtk.FILE_CHOOSER_ACTION_/Gtk.FileChooserAction./g;" \
+    -pe "s/Gtk.FILL/Gtk.AttachOptions.FILL/g;" \
+    -pe "s/Gtk.ICON_LOOKUP_/Gtk.IconLookupFlags./g;" \
+    -pe "s/Gtk.ICON_SIZE_/Gtk.IconSize./g;" \
+    -pe "s/Gtk.IMAGE_/Gtk.ImageType./g;" \
+    -pe "s/Gtk.JUSTIFY_/Gtk.Justification./g;" \
+    -pe "s/Gtk.MESSAGE_/Gtk.MessageType./g;" \
+    -pe "s/Gtk.MOVEMENT_/Gtk.MovementStep./g;" \
+    -pe "s/Gtk.ORIENTATION_/Gtk.Orientation./g;" \
+    -pe "s/Gtk.POLICY_/Gtk.PolicyType./g;" \
+    -pe "s/Gtk.POS_/Gtk.PositionType./g;" \
+    -pe "s/Gtk.RELIEF_/Gtk.ReliefStyle./g;" \
+    -pe "s/Gtk.RESPONSE_/Gtk.ResponseType./g;" \
+    -pe "s/Gtk.SELECTION_/Gtk.SelectionMode./g;" \
+    -pe "s/Gtk.SHADOW_/Gtk.ShadowType./g;" \
+    -pe "s/Gtk.SHADOW_NONE/Gtk.ShadowType.NONE/g;" \
+    -pe "s/Gtk.SHRINK/Gtk.AttachOptions.SHRINK/g;" \
+    -pe "s/Gtk.SIZE_GROUP_/Gtk.SizeGroupMode./g;" \
+    -pe "s/Gtk.SORT_/Gtk.SortType./g;" \
+    -pe "s/Gtk.STATE_/Gtk.StateType./g;" \
+    -pe "s/Gtk.TARGET_/Gtk.TargetFlags./g;" \
+    -pe "s/Gtk.TEXT_DIR_/Gtk.TextDirection./g;" \
+    -pe "s/Gtk.TEXT_SEARCH_/Gtk.TextSearchFlags./g;" \
+    -pe "s/Gtk.TEXT_WINDOW_/Gtk.TextWindowType./g;" \
+    -pe "s/Gtk.TREE_VIEW_COLUMN_/Gtk.TreeViewColumnSizing./g;" \
+    -pe "s/Gtk.TREE_VIEW_DROP_/Gtk.TreeViewDropPosition./g;" \
+    -pe "s/Gtk.TRUE/True/g;" \
+    -pe "s/Gtk.WINDOW_/Gtk.WindowType./g;" \
+    -pe "s/Gtk.DEST_DEFAULT_/Gtk.DestDefaults./g;" \
+    -pe "s/Gtk.WIN_POS_/Gtk.WindowPosition./g;" \
+    -pe "s/Gtk.WRAP_/Gtk.WrapMode./g;" \
+    -pe "s/Gtk.UI_MANAGER_/Gtk.UIManagerItemType./g;" \
+    -pe "s/Gtk.accel_map_/Gtk.AccelMap./g;" \
+    -pe "s/Gtk.settings_get_/Gtk.Settings.get_/g;" \
+    -pe "s/Gtk.icon_theme_get_default/Gtk.IconTheme.get_default/g;" \
+    -pe "s/Gtk.image_new_from_stock/Gtk.Image.new_from_stock/g;" \
+    -pe "s/Gtk.image_new_from_icon_name/Gtk.Image.new_from_icon_name/g;" \
+    -pe "s/Gtk.window_set_default_icon_name/Gtk.Window.set_default_icon_name/g; " \
+    -pe "s/Gtk.combo_box_new_text/Gtk.ComboBoxText/g;" \
+    -pe "s/Gtk.keysyms./Gdk.KEY_/g;" \
+    -pe "s/set_flags\(Gtk.CAN_DEFAULT\)/set_can_default\(True\)/g;" \
+    -pe "s/.flags\(\) & Gtk.MAPPED/.get_mapped\(\)/g;" \
+    -pe "s/.flags\(\) & Gtk.REALIZED/.get_realized\(\)/g;" \
+    -pe "s/\.window\.set_type_hint/.set_type_hint/g;" \
+    -pe "s/\.window\.set_skip_taskbar_hint/.set_skip_taskbar_hint/g;" \
+    -pe "s/\.window\.set_transient_for/.set_transient_for/g;" \
+    -pe "s/Gtk.Alignment\(/Gtk.Alignment.new\(/g;" \
+    -pe "#s/Gtk.Window.__init__\(self\)/Gtk.Window.__init__\(Gtk.WindowType.TOPLEVEL\)/g;" \
+    -pe "s/\.child([^_A-Za-z])/.get_child\(\)\1/g;" \
+\
+    -pe "s/column.pack_start\(([^,\)]*)\)/column.pack_start\(\1, True\)/g;" \
+    -pe "s/pack_start\(([^,\)]*)\)/pack_start\(\1, True, True, 0\)/g;" \
+    -pe "s/pack_start\(([^,]*), fill=([^,\)]*)\)/pack_start\(\1, True, \2, 0\)/g;" \
+    -pe "s/pack_start\(([^,]*), expand=([^,\)]*)\)/pack_start\(\1, \2, True, 0\)/g;" \
+    -pe "s/pack_start\(([^,]*),(\s*)padding=([A-Za-z0-9._]*)\)/pack_start\(\1,\2True, True,\2\3\)/g;" \
+    -pe "s/column.pack_end\(([^,\)]*)\)/column.pack_end\(\1, True\)/g;" \
+    -pe "s/pack_end\(([^,\)]*)\)/pack_end\(\1, True, True, 0\)/g;" \
+    -pe "s/pack_end\(([^,]*), fill=([^,\)]*)\)/pack_end\(\1, True, \2, 0\)/g;" \
+    -pe "s/pack_end\(([^,]*), expand=([^,\)]*)\)/pack_end\(\1, \2, True, 0\)/g;" \
+    -pe "s/pack_end\(([^,]*),(\s*)padding=([A-Za-z0-9._]*)\)/pack_end\(\1,\2True, True,\2\3\)/g;" \
+    -pe "#s/Gtk.HBox\(\)/Gtk.HBox\(False, 0\)/g;" \
+    -pe "#s/Gtk.VBox\(\)/Gtk.VBox\(False, 0\)/g;" \
+    -pe "s/Gtk.Label\s*\(([^,\)]+)\)/Gtk.Label\(label=\1\)/g;" \
+    -pe "s/Gtk.AccelLabel\s*\(([^,\)]+)\)/Gtk.AccelLabel\(label=\1\)/g;" \
+    -pe "s/Gtk.((?:Accel)?Label)\(label=label=/Gtk.\1\(label=/g;" \
+    -pe "s/len\(self._content.get_children\(\)\) > 0/self._content.get_children\(\)/g;" \
+    -pe "s/len\(self.menu.get_children\(\)\) > 0/self.menu.get_children\(\)/g;" \
+    -pe "s/import gobject\n/from gi.repository import GObject\n/g;" \
+    -pe "s/Gtk\..*\.__init__/gobject.GObject.__init__/g;" \
+\
+    -pe "s/rsvg.Handle\s*\(data=([^,\)]+)\)/Rsvg.Handle.new_from_data(\1)/g;" \
+\
+    -pe "s/from gtk import gdk\n/from gi.repository import Gdk\n/g;" \
+    -pe "s/import gtk.gdk as gdk\n/from gi.repository import Gdk\n/g;" \
+    -pe "s/Gtk.gdk.x11_/GdkX11.x11_/g;" \
+    -pe "s/Gtk.gdk\./Gdk\./g;" \
+    -pe "s/(?<!\.)gdk\./Gdk\./g;" \
+    -pe "s/Gdk.screen_width/Gdk.Screen.width/g;" \
+    -pe "s/Gdk.screen_height/Gdk.Screen.height/g;" \
+    -pe "s/Gdk.screen_get_default/Gdk.Screen.get_default/g;" \
+    -pe "s/Gdk.display_get_default/Gdk.Display.get_default/g;" \
+    -pe "s/screen_, x_, y_, modmask = display.get_pointer\(\)/x_, y_, modmask = display.get_pointer\(None\)/g;" \
+    -pe "s/Gdk.WINDOW_TYPE_HINT_/Gdk.WindowTypeHint./g;" \
+    -pe "s/Gdk.SHIFT_MASK/Gdk.ModifierType.SHIFT_MASK/g;" \
+    -pe "s/Gdk.LOCK_MASK/Gdk.ModifierType.LOCK_MASK/g;" \
+    -pe "s/Gdk.CONTROL_MASK/Gdk.ModifierType.CONTROL_MASK/g;" \
+    -pe "s/Gdk.MOD1_MASK/Gdk.ModifierType.MOD1_MASK/g;" \
+    -pe "s/Gdk.MOD2_MASK/Gdk.ModifierType.MOD2_MASK/g;" \
+    -pe "s/Gdk.MOD3_MASK/Gdk.ModifierType.MOD3_MASK/g;" \
+    -pe "s/Gdk.MOD4_MASK/Gdk.ModifierType.MOD4_MASK/g;" \
+    -pe "s/Gdk.MOD5_MASK/Gdk.ModifierType.MOD5_MASK/g;" \
+    -pe "s/Gdk.BUTTON1_MASK/Gdk.ModifierType.BUTTON1_MASK/g;" \
+    -pe "s/Gdk.BUTTON2_MASK/Gdk.ModifierType.BUTTON2_MASK/g;" \
+    -pe "s/Gdk.BUTTON3_MASK/Gdk.ModifierType.BUTTON3_MASK/g;" \
+    -pe "s/Gdk.BUTTON4_MASK/Gdk.ModifierType.BUTTON4_MASK/g;" \
+    -pe "s/Gdk.BUTTON5_MASK/Gdk.ModifierType.BUTTON5_MASK/g;" \
+    -pe "s/Gdk.RELEASE_MASK/Gdk.ModifierType.RELEASE_MASK/g;" \
+    -pe "s/Gdk.MODIFIER_MASK/Gdk.ModifierType.MODIFIER_MASK/g;" \
+    -pe "s/Gdk.([A-Z_0-9]*)_MASK/Gdk.EventMask.\1_MASK/g;" \
+    -pe "s/Gdk.VISIBILITY_FULLY_OBSCURED/Gdk.VisibilityState.FULLY_OBSCURED/g;" \
+    -pe "s/Gdk.NOTIFY_ANCESTOR/Gdk.NotifyType.ANCESTOR/g;" \
+    -pe "s/Gdk.NOTIFY_INFERIOR/Gdk.NotifyType.INFERIOR/g;" \
+    -pe "s/Gdk.NOTIFY_NONLINEAR_VIRTUAL/Gdk.NotifyType.NONLINEAR_VIRTUAL/g;" \
+    -pe "s/Gdk.NOTIFY_NONLINEAR/Gdk.NotifyType.NONLINEAR/g;" \
+    -pe "s/Gdk.NOTIFY_UNKNOWN/Gdk.NotifyType.UNKNOWN/g;" \
+    -pe "s/Gdk.NOTIFY_VIRTUAL/Gdk.NotifyType.VIRTUAL/g;" \
+    -pe "s/Gdk.PROP_MODE_APPEND/Gdk.PropMode.APPEND/g;" \
+    -pe "s/Gdk.PROP_MODE_PREPEND/Gdk.PropMode.PREPEND/g;" \
+    -pe "s/Gdk.PROP_MODE_REPLACE/Gdk.PropMode.REPLACE/g;" \
+    -pe "s/Gdk.BUTTON_PRESS/Gdk.EventType.BUTTON_PRESS/g;" \
+    -pe "s/Gdk.ACTION_/Gdk.DragAction./g;" \
+    -pe "s/Gdk.GRAB_/Gdk.GrabStatus./g;" \
+    -pe "s/Gdk.SCROLL_(DOWN|LEFT|RIGHT|UP)/Gdk.ScrollDirection.\1/g;" \
+    -pe "s/Gdk.([A-Z]+_(PTR|CURSOR))/Gdk.CursorType.\1/g;" \
+    -pe "s/Gdk.(CROSSHAIR)/Gdk.CursorType.\1/g;" \
+    -pe "s/Gdk.(WATCH)/Gdk.CursorType.\1/g;" \
+    -pe "s/Gdk.(ARROW)/Gdk.CursorType.\1/g;" \
+    -pe "s/Gdk.(CLOCK)/Gdk.CursorType.\1/g;" \
+    -pe "s/Gdk.WINDOW_STATE_(ABOVE|BELOW|FOCUSED|FULLSCREEN|ICONIFIED|MAXIMIZED|STICKY|WITHDRAWN)/Gdk.WindowState.\1/g;" \
+    -pe "s/Gdk.Cursor\s*\(/Gdk.Cursor.new\(/g;" \
+    -pe "s/#Gdk.Rectangle\(([^,\)]*), ([^,\)]*), ([^,\)]*), ([^,\)]*)\)/\1, \2, \3, \4/g;" \
+    -pe "s/Gdk.Rectangle//g;" \
+    -pe "s/intersection = child_rect.intersect/intersects_, intersection = child_rect.intersect/g;" \
+    -pe "s/event.state/event.get_state\(\)/g;" \
+\
+    -pe "s/Gdk.pixbuf_/GdkPixbuf.Pixbuf./g;" \
+    -pe "s/Gdk.Pixbuf/GdkPixbuf.Pixbuf/g;" \
+    -pe "s/Gdk.INTERP_/GdkPixbuf.InterpType./g;" \
+    -pe "s/Gdk.COLORSPACE_RGB/GdkPixbuf.Colorspace.RGB/g;" \
+\
+    -pe "s/import pango\n/from gi.repository import Pango\n/g;" \
+    -pe "s/pango\./Pango\./g;" \
+    -pe "s/Pango.ALIGN_/Pango.Alignment./g;" \
+    -pe "s/Pango.ELLIPSIZE_/Pango.EllipsizeMode./g;" \
+    -pe "s/Pango.STYLE_/Pango.Style./g;" \
+    -pe "s/Pango.UNDERLINE_/Pango.Underline./g;" \
+    -pe "s/Pango.WEIGHT_/Pango.Weight./g;" \
+    -pe "s/Pango.WRAP_/Pango.WrapMode./g;" \
+    -pe "s/Pango.TAB_/Pango.TabAlign./g;" \
+\
+    -pe "s/import atk\n/from gi.repository import Atk\n/g;" \
+    -pe "s/atk\./Atk\./g;" \
+    -pe "s/Atk.HYPERLINK_/Atk.HyperlinkStateFlags./g;" \
+    -pe "s/Atk.KEY_EVENT_/Atk.KeyEventType./g;" \
+    -pe "s/Atk.LAYER_/Atk.Layer./g;" \
+    -pe "s/Atk.RELATION_/Atk.RelationType./g;" \
+    -pe "s/Atk.ROLE_/Atk.Role./g;" \
+    -pe "s/Atk.STATE_/Atk.StateType./g;" \
+    -pe "s/Atk.TEXT_ATTR_/Atk.TextAttribute./g;" \
+    -pe "s/Atk.TEXT_BOUNDARY_/Atk.TextBoundary./g;" \
+    -pe "s/Atk.TEXT_CLIP_/Atk.TextClipType./g;" \
+\
+    -pe "s/import gio\n/from gi.repository import Gio\n/g;" \
+    -pe "s/gio\./Gio\./g;" \
+    -pe "s/Gio.FILE_COPY_/Gio.FileCopyFlags./g;" \
+    -pe "s/Gio.FILE_CREATE_/Gio.FileCreateFlags./g;" \
+    -pe "s/Gio.FILE_MONITOR_EVENT_/Gio.FileMonitorEvent./g;" \
+    -pe "s/Gio.FILE_MONITOR_/Gio.FileMonitorFlags./g;" \
+    -pe "s/Gio.FILE_TYPE_/Gio.FileType./g;" \
+    -pe "s/Gio.FILE_QUERY_INFO_/Gio.FileQueryInfoFlags./g;" \
+    -pe "s/Gio.MOUNT_MOUNT_/Gio.MountMountFlags./g;" \
+    -pe "s/Gio.MOUNT_OPERATION_/Gio.MountOperationResult./g;" \
+    -pe "s/Gio.MOUNT_UNMOUNT_/Gio.MountUnmountFlags./g;" \
+    -pe "s/Gio.OUTPUT_STREAM_SPLICE_/Gio.OutputStreamSpliceFlags./g;" \
+    -pe "s/Gio.vfs_/Gio.Vfs./g;" \
+\
+    -pe "#s/import glib\n/from gi.repository import GLib\n/g;" \
+    -pe "#s/(?<!\.)glib\./GLib\./g;" \
+    -pe "#s/GLib.IO_(ERR|HUP|IN|NVAL|OUT|PRI)/GLib.IOCondition./g;" \
+    -pe "#s/GLib.IO_FLAG_/GLib.IOFlags./g;" \
+    -pe "#s/GLib.IO_STATUS_/GLib.IOStatus./g;" \
+    -pe "#s/GLib.OPTION_ERROR_/GLib.OptionError./g;" \
+    -pe "#s/GLib.OPTION_FLAG_/GLib.OptionFlags./g;" \
+    -pe "#s/GLib.SPAWN_/GLib.SpawnFlags./g;" \
+    -pe "#s/GLib.USER_DIRECTORY_/GLib.UserDirectory.DIRECTORY_/g;" \
+\
+    -pe "s/(?<!\.)gobject\./GObject\./g;" \
+    -pe "s/GObject.SIGNAL_/GObject.SignalFlags./g;" \
+    -pe "s/GObject.TYPE_NONE/None/g;" \
+\
+    -pe "s/import hippo\n/from gi.repository import Hippo\n/g;" \
+    -pe "s/hippo\./Hippo\./g;" \
+    -pe "s/Hippo\..*\.__init__/gobject.GObject.__init__/g;" \
+    -pe "s/Hippo.PACK_/Hippo.PackFlags./g;" \
+    -pe "s/Hippo.ORIENTATION_/Hippo.Orientation./g;" \
+    -pe "#s/insert_sorted\(([^,\)]*), ([^,\)]*), ([^,\)]*)\)/insert_sorted\(\1, \2, \3, None\)/g;" \
+    -pe "s/self\._box\.insert_sorted/#self\._box\.insert_sorted/g;" \
+    -pe "s/self._box.append\(([^,\)]*)\)/self._box.append\(\1, 0\)/g;" \
+    -pe "s/self.append\(self._buddy_icon\)/self.append\(self._buddy_icon, 0\)/g;" \
+    -pe "s/self._box.sort\(([^,\)]*)\)/self._box.sort\(\1, None\)/g;" \
+\
+    -pe "s/import wnck\n/from gi.repository import Wnck\n/g;" \
+    -pe "s/wnck\./Wnck\./g;" \
+    -pe "s/Wnck.screen_get_default/Wnck.Screen.get_default/g;" \
+    -pe "s/Wnck.WINDOW_/Wnck.WindowType./g;" \
+\
+    -pe "s/from sugar import _sugarext\n/from gi.repository import SugarExt\n/g;" \
+    -pe "s/_sugarext\.ICON_ENTRY_/SugarExt.SexyIconEntryPosition./g;" \
+    -pe "s/_sugarext\.IconEntry/SugarExt.SexyIconEntry/g;" \
+    -pe "s/_sugarext\.SMClientXSMP/SugarExt.GsmClientXSMP/g;" \
+    -pe "s/_sugarext\.VolumeAlsa/SugarExt.AcmeVolumeAlsa/g;" \
+    -pe "s/_sugarext\./SugarExt\./g;" \
+\
+    -pe "s/import gtksourceview2\n/from gi.repository import GtkSource\n/g;" \
+    -pe "s/import gtksourceview2 as gsv\n/from gi.repository import GtkSource\n/g;" \
+    -pe "s/gtksourceview2\./GtkSource\./g;" \
+    -pe "s/gsv\./GtkSource\./g;" \
+    -pe "s/GtkSource.DRAW_SPACES_/GtkSource.DrawSpacesFlags./g;" \
+    -pe "s/GtkSource.SMART_HOME_END_/GtkSource.SmartHomeEndType./g;" \
+    -pe "s/GtkSource.style_scheme_manager_get_default/GtkSource.StyleSchemeManager.get_default/g;" \
+    -pe "s/GtkSource.language_manager_get_default/GtkSource.LanguageManager.get_default/g;" \
+\
+    -pe "#s/import cairo\n/from gi.repository import cairo\n/g;" \
+\
+    -pe "s/SugarExt.xsmp_init\(\)/'mec'/g;" \
+    -pe "s/SugarExt.xsmp_run\(\)/#SugarExt.xsmp_run\(\)/g;" \
+    -pe "s/SugarExt.session_create_global\(\)/None #SugarExt.session_create_global\(\)/g;" \
+    -pe "s/self.session.start\(\)/return #self.session.start\(\)/g;" \
+\
+    -pe "s/self._box.sort\(self._layout.compare_activities, None\)/pass #self._box.sort(self._layout.compare_activities, None)/g;" \
+    -pe "s/attach_points = info.get_attach_points/has_attach_points_, attach_points = info.get_attach_points/g;" \
+    -pe "s/attach_points\[0\]\[0\]/attach_points\[0\].x/g;" \
+    -pe "s/attach_points\[0\]\[1\]/attach_points\[0\].y/g;" \
+    -pe "s/has_attach_points_/return 0,0;has_attach_points_/g;" \
+    -pe "s/gobject.GObject.__init__\(self, self._model_filter\)/gobject.GObject.__init__\(self, model=self._model_filter\)/g;" \
+    -pe "s/self._model_filter.set_visible_func/return;self._model_filter.set_visible_func/g;" \
+    -pe "s/buddies_column.set_cell_data_func/return;buddies_column.set_cell_data_func/g;" \
+    -pe "s/Hippo\.cairo_surface_from_gdk_pixbuf/SugarExt\.cairo_surface_from_pixbuf/g;" \
+\
+    -pe "s/import pynotify\n/from gi.repository import Notify\n/g;" \
+    -pe "s/pynotify\./Notify\./g;" \
+\
+    -pe "s/import webkit\n/from gi.repository import WebKit\n/g;" \
+    -pe "s/import clutter\n/from gi.repository import Clutter\n/g;" \
+    -pe "s/from clutter import cogl\n/from gi.repository import Cogl\n/g;" \
+    -pe "s/(?<!\.)clutter\./Clutter\./g;" \
+    -pe "s/(?<!\.)cogl\./Cogl\./g;" \
+    -pe "s/Clutter.ACTOR_/Clutter.ActorFlags./g;" \
+    -pe "s/Clutter.ALLOCATION_/Clutter.AllocationFlags./g;" \
+    -pe "s/Clutter.BIND_/Clutter.BindCoordinate./g;" \
+    -pe "s/Clutter.BIN_ALIGNMENT_/Clutter.BinAlignment./g;" \
+    -pe "s/Clutter.BOX_ALIGNMENT_/Clutter.BoxAlignment./g;" \
+    -pe "s/Clutter.DRAG_/Clutter.DragAxis./g;" \
+    -pe "s/Clutter.EASE_/Clutter.AnimationMode./g;" \
+    -pe "s/Clutter.FEATURE_/Clutter.FeatureFlags./g;" \
+    -pe "s/Clutter.FLOW_/Clutter.FLOW_ORIENTATION./g;" \
+    -pe "s/Clutter.FONT_/Clutter.FontFlags./g;" \
+    -pe "s/Clutter.GRAVITY_/Clutter.Gravity./g;" \
+    -pe "s/Clutter.INTERPOLATION/Clutter.Interpolation./g;" \
+    -pe "s/Clutter.LINEAR/Clutter.AnimationMode.LINEAR/g;" \
+    -pe "s/Clutter.PATH_/Clutter.PathNodeType./g;" \
+    -pe "s/Clutter.PICK_/Clutter.PickMode./g;" \
+    -pe "s/Clutter.REQUEST_/Clutter.RequestMode./g;" \
+    -pe "s/Clutter.ROTATE_/Clutter.RotateDirection./g;" \
+    -pe "s/Clutter.SCRIPT_/Clutter.ScriptError./g;" \
+    -pe "s/Clutter.STAGE_STATE_/Clutter.StageState./g;" \
+    -pe "s/Clutter.TABLE_ALIGNMENT_/Clutter.TableAlignment./g;" \
+    -pe "s/Clutter.TEXTURE_ERROR_/Clutter.TextureError./g;" \
+    -pe "s/Clutter.TEXTURE_/Clutter.TextureFlags./g;" \
+    -pe "s/Clutter.TEXT_/Clutter.TextDirection./g;" \
+    -pe "s/Clutter.TIMELINE_/Clutter.TimelineDirection./g;" \
+    -pe "s/Clutter.UNIT_/Clutter.UnitType./g;" \
+    -pe "s/Clutter.X_AXIS/Clutter.RotateAxis.X_AXIS/g;" \
+    -pe "s/Clutter.Y_AXIS/Clutter.RotateAxis.Y_AXIS/g;" \
+    -pe "s/Clutter.Z_AXIS/Clutter.RotateAxis.Z_AXIS/g;" \
+    -pe "s/Clutter.ENTER/Clutter.EventType.ENTER/g;" \
+    -pe "s/Clutter.LEAVE/Clutter.EventType.LEAVE/g;" \
+    -pe "s/Clutter.BUTTON_PRESS/Clutter.EventType.BUTTON_PRESS/g;" \
+    -pe "s/Clutter.BUTTON_RELEASE/Clutter.EventType.BUTTON_RELEASE/g;" \
+    -pe "s/Clutter.KEY_PRESS/Clutter.EventType.KEY_PRESS/g;" \
+    -pe "s/Clutter.KEY_RELEASE/Clutter.EventType.KEY_RELEASE/g;" \
+    -pe "s/Clutter.SCROLL/Clutter.EventType.SCROLL/g;" \
+    -pe "s/Clutter.DELETE/Clutter.EventType.DELETE/g;" \
+    -pe "s/Clutter.CLIENT_MESSAGE/Clutter.EventType.CLIENT_MESSAGE/g;" \
+    -pe "s/Clutter.DESTROY_NOTIFY/Clutter.EventType.DESTROY_NOTIFY/g;" \
+    -pe "s/Clutter.STAGE_STATE/Clutter.EventType.STAGE_STATE/g;" \
+    -pe "s/Clutter.MOTION/Clutter.EventType.MOTION/g;" \
+    -pe "s/Clutter.BUTTON1_MASK/Clutter.ModifierType.BUTTON1_MASK/g;" \
+    -pe "s/Clutter.BUTTON2_MASK/Clutter.ModifierType.BUTTON2_MASK/g;" \
+    -pe "s/Clutter.BUTTON3_MASK/Clutter.ModifierType.BUTTON3_MASK/g;" \
+    -pe "s/Clutter.BUTTON4_MASK/Clutter.ModifierType.BUTTON4_MASK/g;" \
+    -pe "s/Clutter.BUTTON5_MASK/Clutter.ModifierType.BUTTON5_MASK/g;" \
+    -pe "s/Clutter.CONTROL_MASK/Clutter.ModifierType.CONTROL_MASK/g;" \
+    -pe "s/Clutter.HYPER_MASK/Clutter.ModifierType.HYPER_MASK/g;" \
+    -pe "s/Clutter.LOCK_MASK/Clutter.ModifierType.LOCK_MASK/g;" \
+    -pe "s/Clutter.META_MASK/Clutter.ModifierType.META_MASK/g;" \
+    -pe "s/Clutter.MOD1_MASK/Clutter.ModifierType.MOD1_MASK/g;" \
+    -pe "s/Clutter.MOD2_MASK/Clutter.ModifierType.MOD2_MASK/g;" \
+    -pe "s/Clutter.MOD3_MASK/Clutter.ModifierType.MOD3_MASK/g;" \
+    -pe "s/Clutter.MOD4_MASK/Clutter.ModifierType.MOD4_MASK/g;" \
+    -pe "s/Clutter.MOD5_MASK/Clutter.ModifierType.MOD5_MASK/g;" \
+    -pe "s/Clutter.MODIFIER_MASK/Clutter.ModifierType.MODIFIER_MASK/g;" \
+    -pe "s/Clutter.MODIFIER_RESERVED_13_MASK/Clutter.ModifierType.MODIFIER_RESERVED_13_MASK/g;" \
+    -pe "s/Clutter.MODIFIER_RESERVED_14_MASK/Clutter.ModifierType.MODIFIER_RESERVED_14_MASK/g;" \
+    -pe "s/Clutter.MODIFIER_RESERVED_15_MASK/Clutter.ModifierType.MODIFIER_RESERVED_15_MASK/g;" \
+    -pe "s/Clutter.MODIFIER_RESERVED_16_MASK/Clutter.ModifierType.MODIFIER_RESERVED_16_MASK/g;" \
+    -pe "s/Clutter.MODIFIER_RESERVED_17_MASK/Clutter.ModifierType.MODIFIER_RESERVED_17_MASK/g;" \
+    -pe "s/Clutter.MODIFIER_RESERVED_18_MASK/Clutter.ModifierType.MODIFIER_RESERVED_18_MASK/g;" \
+    -pe "s/Clutter.MODIFIER_RESERVED_19_MASK/Clutter.ModifierType.MODIFIER_RESERVED_19_MASK/g;" \
+    -pe "s/Clutter.MODIFIER_RESERVED_20_MASK/Clutter.ModifierType.MODIFIER_RESERVED_20_MASK/g;" \
+    -pe "s/Clutter.MODIFIER_RESERVED_21_MASK/Clutter.ModifierType.MODIFIER_RESERVED_21_MASK/g;" \
+    -pe "s/Clutter.MODIFIER_RESERVED_22_MASK/Clutter.ModifierType.MODIFIER_RESERVED_22_MASK/g;" \
+    -pe "s/Clutter.MODIFIER_RESERVED_23_MASK/Clutter.ModifierType.MODIFIER_RESERVED_23_MASK/g;" \
+    -pe "s/Clutter.MODIFIER_RESERVED_24_MASK/Clutter.ModifierType.MODIFIER_RESERVED_24_MASK/g;" \
+    -pe "s/Clutter.MODIFIER_RESERVED_25_MASK/Clutter.ModifierType.MODIFIER_RESERVED_25_MASK/g;" \
+    -pe "s/Clutter.MODIFIER_RESERVED_29_MASK/Clutter.ModifierType.MODIFIER_RESERVED_29_MASK/g;" \
+    -pe "s/Clutter.RELEASE_MASK/Clutter.ModifierType.RELEASE_MASK/g;" \
+    -pe "s/Clutter.SHIFT_MASK/Clutter.ModifierType.SHIFT_MASK/g;" \
+    -pe "s/Clutter.SUPER_MASK/Clutter.ModifierType.SUPER_MASK/g;" \
+    $f
+done
+
+
diff --git a/pygtkcompat/Makefile.am b/pygtkcompat/Makefile.am
new file mode 100644 (file)
index 0000000..6a73cb4
--- /dev/null
@@ -0,0 +1,15 @@
+pygtkcompatdir = $(pyexecdir)/pygtkcompat
+
+pygtkcompat_PYTHON = \
+       __init__.py \
+       pygtkcompat.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 $(pygtkcompat_PYTHON); do \
+           [ -e $(builddir)/$$f ] || $(LN_S) $(srcdir)/$$f $(builddir)/$$f; \
+       done
+
+all-local: build_pylinks
diff --git a/pygtkcompat/Makefile.in b/pygtkcompat/Makefile.in
new file mode 100644 (file)
index 0000000..cc97cc7
--- /dev/null
@@ -0,0 +1,529 @@
+# 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, 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.
+
+# 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@
+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
+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 = pygtkcompat
+DIST_COMMON = $(pygtkcompat_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_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_@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/||"`;; \
+    *) 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__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)$(pygtkcompatdir)"
+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@
+CAIRO_CFLAGS = @CAIRO_CFLAGS@
+CAIRO_LIBS = @CAIRO_LIBS@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
+CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
+CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
+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@
+GENHTML = @GENHTML@
+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@
+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@
+LCOV = @LCOV@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBFFI_PC = @LIBFFI_PC@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+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_LIBS = @PYTHON_LIBS@
+PYTHON_LIB_LOC = @PYTHON_LIB_LOC@
+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@
+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@
+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@
+pygtkcompatdir = $(pyexecdir)/pygtkcompat
+pygtkcompat_PYTHON = \
+       __init__.py \
+       pygtkcompat.py
+
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in:  $(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 pygtkcompat/Makefile'; \
+       $(am__cd) $(top_srcdir) && \
+         $(AUTOMAKE) --foreign pygtkcompat/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:  $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4):  $(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-pygtkcompatPYTHON: $(pygtkcompat_PYTHON)
+       @$(NORMAL_INSTALL)
+       @list='$(pygtkcompat_PYTHON)'; dlist=; list2=; test -n "$(pygtkcompatdir)" || list=; \
+       if test -n "$$list"; then \
+         echo " $(MKDIR_P) '$(DESTDIR)$(pygtkcompatdir)'"; \
+         $(MKDIR_P) "$(DESTDIR)$(pygtkcompatdir)" || exit 1; \
+       fi; \
+       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)$(pygtkcompatdir)'"; \
+         $(INSTALL_DATA) $$files "$(DESTDIR)$(pygtkcompatdir)" || exit $$?; \
+       done || exit $$?; \
+       if test -n "$$dlist"; then \
+         if test -z "$(DESTDIR)"; then \
+           $(am__py_compile) --basedir "$(pygtkcompatdir)" $$dlist; \
+         else \
+           $(am__py_compile) --destdir "$(DESTDIR)" \
+                             --basedir "$(pygtkcompatdir)" $$dlist; \
+         fi; \
+       else :; fi
+
+uninstall-pygtkcompatPYTHON:
+       @$(NORMAL_UNINSTALL)
+       @list='$(pygtkcompat_PYTHON)'; test -n "$(pygtkcompatdir)" || list=; \
+       files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+       test -n "$$files" || exit 0; \
+       dir='$(DESTDIR)$(pygtkcompatdir)'; \
+       filesc=`echo "$$files" | sed 's|$$|c|'`; \
+       fileso=`echo "$$files" | sed 's|$$|o|'`; \
+       st=0; \
+       for files in "$$files" "$$filesc" "$$fileso"; do \
+         $(am__uninstall_files_from_dir) || st=$$?; \
+       done; \
+       exit $$st
+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 all-local
+installdirs:
+       for dir in "$(DESTDIR)$(pygtkcompatdir)"; 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:
+       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:
+
+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-pygtkcompatPYTHON
+
+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-pygtkcompatPYTHON
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am all-local 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 \
+       install-pygtkcompatPYTHON 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-pygtkcompatPYTHON
+
+
+# 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 $(pygtkcompat_PYTHON); do \
+           [ -e $(builddir)/$$f ] || $(LN_S) $(srcdir)/$$f $(builddir)/$$f; \
+       done
+
+all-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.
+.NOEXPORT:
diff --git a/pygtkcompat/__init__.py b/pygtkcompat/__init__.py
new file mode 100644 (file)
index 0000000..8ae0337
--- /dev/null
@@ -0,0 +1,20 @@
+
+# pyflakes.ignore
+from .pygtkcompat import (enable,
+                          enable_gtk,
+                          enable_vte,
+                          enable_poppler,
+                          enable_webkit,
+                          enable_gudev,
+                          enable_gst,
+                          enable_goocanvas)
+
+
+__all__ = ['enable',
+           'enable_gtk',
+           'enable_vte',
+           'enable_poppler',
+           'enable_webkit',
+           'enable_gudev',
+           'enable_gst',
+           'enable_goocanvas']
diff --git a/pygtkcompat/pygtkcompat.py b/pygtkcompat/pygtkcompat.py
new file mode 100644 (file)
index 0000000..18ebd7b
--- /dev/null
@@ -0,0 +1,506 @@
+# -*- 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():
+                    try:
+                        name = flag.value_names[-1].replace(modname + '_', '')
+                    except IndexError:
+                        # FIXME: this happens for some large flags which do not
+                        # fit into a long on 32 bit systems
+                        continue
+                    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',
+                      gi.PyGIDeprecationWarning, 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',
+                      gi.PyGIDeprecationWarning, 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 081028a..77efd2e 100644 (file)
@@ -1,19 +1,36 @@
 CLEANFILES =
-noinst_LTLIBRARIES = libregress.la libgimarshallingtests.la
+noinst_LTLIBRARIES = libgimarshallingtests.la
+test_typelibs = GIMarshallingTests-1.0.typelib
 
-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)
 
 # This is a hack to make sure a shared library is built
-libregress.la: $(libregress_la_OBJECTS) $(libregress_la_DEPENDENCIES)
-       $(LINK) -rpath $(pkgpyexecdir) $(libregress_la_LDFLAGS) $(libregress_la_OBJECTS) $(libregress_la_LIBADD) $(LIBS)
-
 libgimarshallingtests.la: $(libgimarshallingtests_la_OBJECTS) $(libgimarshallingtests_la_DEPENDENCIES)
-       $(LINK) -rpath $(pkgpyexecdir) $(libgimarshallingtests_la_LDFLAGS) $(libgimarshallingtests_la_OBJECTS) $(libgimarhallingtests_la_LIBADD) $(LIBS)
+       $(AM_V_GEN) $(LINK) -rpath $(pkgpyexecdir) $(libgimarshallingtests_la_LDFLAGS) $(libgimarshallingtests_la_OBJECTS) $(libgimarhallingtests_la_LIBADD) $(LIBS)
+
+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 $@
+
+# regress.c needs cairo
+if ENABLE_CAIRO
+noinst_LTLIBRARIES += libregress.la
+test_typelibs += Regress-1.0.typelib
+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)
+
+libregress.la: $(libregress_la_OBJECTS) $(libregress_la_DEPENDENCIES)
+       $(AM_V_GEN) $(LINK) -rpath $(pkgpyexecdir) $(libregress_la_LDFLAGS) $(libregress_la_OBJECTS) $(libregress_la_LIBADD) $(LIBS)
 
 # g-i doesn't ship these as shared libraries anymore; we build them here
 Regress-1.0.gir: libregress.la Makefile
@@ -27,16 +44,8 @@ Regress-1.0.gir: libregress.la Makefile
 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 $@
+endif # ENABLE_CAIRO
+
 
 gschemas.compiled: org.gnome.test.gschema.xml
        glib-compile-schemas --targetdir=. --schema-file=$<
@@ -56,7 +65,7 @@ testhelper_la_SOURCES = \
 
 # This is a hack to make sure a shared library is built
 testhelper.la: $(testhelper_la_OBJECTS) $(testhelper_la_DEPENDENCIES)
-       $(LINK) -rpath $(pkgpyexecdir) $(testhelper_la_LDFLAGS) $(testhelper_la_OBJECTS) $(testhelper_la_LIBADD) $(LIBS)
+       $(AM_V_GEN) $(LINK) -rpath $(pkgpyexecdir) $(testhelper_la_LDFLAGS) $(testhelper_la_OBJECTS) $(testhelper_la_LIBADD) $(LIBS)
 
 
 .la.so:
@@ -77,7 +86,10 @@ EXTRA_DIST = \
        org.gnome.test.gschema.xml \
        test_glib.py \
        test_gobject.py \
+       test_gtype.py \
        test_interface.py \
+       test_internal_api.py \
+       test_iochannel.py \
        test_mainloop.py \
        test_option.py \
        test_properties.py \
@@ -85,7 +97,6 @@ EXTRA_DIST = \
        test_source.py \
        test_subprocess.py \
        test_thread.py \
-       test_uris.py \
        test_everything.py \
        test_gi.py \
        test_gdbus.py \
@@ -96,7 +107,7 @@ EXTRA_DIST = \
        test_overrides_gdk.py \
        test_overrides_gtk.py \
        test_atoms.py \
-       test_pygtkcompat.py \
+       compat_test_pygtk.py \
        gi/__init__.py \
        gi/overrides/__init__.py \
        gi/overrides/Regress.py \
@@ -112,14 +123,23 @@ RUN_TESTS_ENV_VARS= \
        GI_TYPELIB_PATH=$(builddir):$$GI_TYPELIB_PATH \
        XDG_DATA_DIRS=$$XDG_DATA_DIRS:/usr/share \
        MALLOC_PERTURB_=85 \
+       MALLOC_CHECK_=3 \
        TESTS_BUILDDIR=$(builddir)
 
-check-local: $(LTLIBRARIES:.la=.so) Regress-1.0.typelib GIMarshallingTests-1.0.typelib gschemas.compiled
+# pygtkcompat tests need to be run in a separate process as they
+# clobber global name space
+check-local: $(LTLIBRARIES:.la=.so) $(test_typelibs) gschemas.compiled
        @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
+       @if test -z "$$SKIP_PEP8"; then \
+               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; \
+       fi
+       export `$(DBUS_LAUNCH)` && \
+       $(RUN_TESTS_ENV_VARS) $(EXEC_NAME) $(PYTHON) -Wd -Werror::PendingDeprecationWarning -Werror::DeprecationWarning -Werror::RuntimeWarning $(srcdir)/runtests.py; rc=$$?; \
+       [ "$$rc" -ne 0 ] || [ -n "$$TEST_NAMES" ] || { TEST_NAMES=compat_test_pygtk $(RUN_TESTS_ENV_VARS) $(EXEC_NAME) $(PYTHON) -Wd -Werror::PendingDeprecationWarning -Werror::DeprecationWarning -Werror::RuntimeWarning $(srcdir)/runtests.py; rc=$$?; }; \
+       kill $$DBUS_SESSION_BUS_PID; \
+       exit $$rc
 
 check.gdb:
        EXEC_NAME="gdb --args" $(MAKE) check
index a548741..5aa69dc 100644 (file)
@@ -51,6 +51,10 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
+
+# regress.c needs cairo
+@ENABLE_CAIRO_TRUE@am__append_1 = libregress.la
+@ENABLE_CAIRO_TRUE@am__append_2 = Regress-1.0.typelib
 subdir = tests
 DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -79,11 +83,13 @@ libgimarshallingtests_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
        $(libgimarshallingtests_la_CFLAGS) $(CFLAGS) \
        $(libgimarshallingtests_la_LDFLAGS) $(LDFLAGS) -o $@
 libregress_la_LIBADD =
-nodist_libregress_la_OBJECTS = libregress_la-regress.lo
+@ENABLE_CAIRO_TRUE@nodist_libregress_la_OBJECTS =  \
+@ENABLE_CAIRO_TRUE@    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_CAIRO_TRUE@am_libregress_la_rpath =
 am__DEPENDENCIES_1 =
 testhelper_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
 am_testhelper_la_OBJECTS = testhelper_la-testhelpermodule.lo \
@@ -145,6 +151,9 @@ CAIRO_LIBS = @CAIRO_LIBS@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@
+CODE_COVERAGE_CFLAGS = @CODE_COVERAGE_CFLAGS@
+CODE_COVERAGE_ENABLED = @CODE_COVERAGE_ENABLED@
+CODE_COVERAGE_LDFLAGS = @CODE_COVERAGE_LDFLAGS@
 CPP = @CPP@
 CPPFLAGS = @CPPFLAGS@
 CYGPATH_W = @CYGPATH_W@
@@ -162,6 +171,7 @@ EXEEXT = @EXEEXT@
 FFI_CFLAGS = @FFI_CFLAGS@
 FFI_LIBS = @FFI_LIBS@
 FGREP = @FGREP@
+GENHTML = @GENHTML@
 GIO_CFLAGS = @GIO_CFLAGS@
 GIO_LIBS = @GIO_LIBS@
 GI_CFLAGS = @GI_CFLAGS@
@@ -181,6 +191,7 @@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
 INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
 INTROSPECTION_COMPILER = @INTROSPECTION_COMPILER@
 INTROSPECTION_SCANNER = @INTROSPECTION_SCANNER@
+LCOV = @LCOV@
 LD = @LD@
 LDFLAGS = @LDFLAGS@
 LIBFFI_PC = @LIBFFI_PC@
@@ -190,7 +201,6 @@ LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
 MAKEINFO = @MAKEINFO@
 MANIFEST_TOOL = @MANIFEST_TOOL@
 MKDIR_P = @MKDIR_P@
@@ -292,14 +302,15 @@ top_srcdir = @top_srcdir@
 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 \
+noinst_LTLIBRARIES = libgimarshallingtests.la $(am__append_1) \
        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)
+test_typelibs = GIMarshallingTests-1.0.typelib $(am__append_2)
 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)
+@ENABLE_CAIRO_TRUE@nodist_libregress_la_SOURCES = $(GI_DATADIR)/tests/regress.c $(GI_DATADIR)/tests/regress.h
+@ENABLE_CAIRO_TRUE@libregress_la_CFLAGS = $(GIO_CFLAGS) $(CAIRO_CFLAGS)
+@ENABLE_CAIRO_TRUE@libregress_la_LDFLAGS = -module -avoid-version $(GIO_LIBS) $(CAIRO_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)
@@ -321,7 +332,10 @@ EXTRA_DIST = \
        org.gnome.test.gschema.xml \
        test_glib.py \
        test_gobject.py \
+       test_gtype.py \
        test_interface.py \
+       test_internal_api.py \
+       test_iochannel.py \
        test_mainloop.py \
        test_option.py \
        test_properties.py \
@@ -329,7 +343,6 @@ EXTRA_DIST = \
        test_source.py \
        test_subprocess.py \
        test_thread.py \
-       test_uris.py \
        test_everything.py \
        test_gi.py \
        test_gdbus.py \
@@ -340,7 +353,7 @@ EXTRA_DIST = \
        test_overrides_gdk.py \
        test_overrides_gtk.py \
        test_atoms.py \
-       test_pygtkcompat.py \
+       compat_test_pygtk.py \
        gi/__init__.py \
        gi/overrides/__init__.py \
        gi/overrides/Regress.py \
@@ -353,13 +366,14 @@ RUN_TESTS_ENV_VARS = \
        GI_TYPELIB_PATH=$(builddir):$$GI_TYPELIB_PATH \
        XDG_DATA_DIRS=$$XDG_DATA_DIRS:/usr/share \
        MALLOC_PERTURB_=85 \
+       MALLOC_CHECK_=3 \
        TESTS_BUILDDIR=$(builddir)
 
 all: all-am
 
 .SUFFIXES:
 .SUFFIXES: .c .la .lo .o .obj .so
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+$(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
@@ -384,9 +398,9 @@ Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
 $(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)
+$(top_srcdir)/configure:  $(am__configure_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+$(ACLOCAL_M4):  $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
 
@@ -398,6 +412,8 @@ clean-noinstLTLIBRARIES:
          echo "rm -f \"$${dir}/so_locations\""; \
          rm -f "$${dir}/so_locations"; \
        done
+@ENABLE_CAIRO_FALSE@libregress.la: $(libregress_la_OBJECTS) $(libregress_la_DEPENDENCIES) $(EXTRA_libregress_la_DEPENDENCIES) 
+@ENABLE_CAIRO_FALSE@   $(AM_V_CCLD)$(libregress_la_LINK) $(am_libregress_la_rpath) $(libregress_la_OBJECTS) $(libregress_la_LIBADD) $(LIBS)
 
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
@@ -688,23 +704,8 @@ uninstall-am:
 
 
 # This is a hack to make sure a shared library is built
-libregress.la: $(libregress_la_OBJECTS) $(libregress_la_DEPENDENCIES)
-       $(LINK) -rpath $(pkgpyexecdir) $(libregress_la_LDFLAGS) $(libregress_la_OBJECTS) $(libregress_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
-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 $@
+       $(AM_V_GEN) $(LINK) -rpath $(pkgpyexecdir) $(libgimarshallingtests_la_LDFLAGS) $(libgimarshallingtests_la_OBJECTS) $(libgimarhallingtests_la_LIBADD) $(LIBS)
 
 GIMarshallingTests-1.0.gir: libgimarshallingtests.la Makefile
        $(AM_V_GEN) g-ir-scanner --include=Gio-2.0 \
@@ -717,12 +718,27 @@ GIMarshallingTests-1.0.gir: libgimarshallingtests.la Makefile
 GIMarshallingTests-1.0.typelib: GIMarshallingTests-1.0.gir Makefile
        $(AM_V_GEN) g-ir-compiler $< -o $@
 
+@ENABLE_CAIRO_TRUE@libregress.la: $(libregress_la_OBJECTS) $(libregress_la_DEPENDENCIES)
+@ENABLE_CAIRO_TRUE@    $(AM_V_GEN) $(LINK) -rpath $(pkgpyexecdir) $(libregress_la_LDFLAGS) $(libregress_la_OBJECTS) $(libregress_la_LIBADD) $(LIBS)
+
+# g-i doesn't ship these as shared libraries anymore; we build them here
+@ENABLE_CAIRO_TRUE@Regress-1.0.gir: libregress.la Makefile
+@ENABLE_CAIRO_TRUE@    $(AM_V_GEN) g-ir-scanner --include=cairo-1.0 --include=Gio-2.0 \
+@ENABLE_CAIRO_TRUE@    --namespace=Regress --nsversion=1.0 \
+@ENABLE_CAIRO_TRUE@    --warn-all --warn-error \
+@ENABLE_CAIRO_TRUE@    --library=libregress.la \
+@ENABLE_CAIRO_TRUE@    --libtool="$(top_builddir)/libtool" \
+@ENABLE_CAIRO_TRUE@    --output $@ \
+@ENABLE_CAIRO_TRUE@    $(nodist_libregress_la_SOURCES)
+@ENABLE_CAIRO_TRUE@Regress-1.0.typelib: Regress-1.0.gir Makefile
+@ENABLE_CAIRO_TRUE@    $(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)
-       $(LINK) -rpath $(pkgpyexecdir) $(testhelper_la_LDFLAGS) $(testhelper_la_OBJECTS) $(testhelper_la_LIBADD) $(LIBS)
+       $(AM_V_GEN) $(LINK) -rpath $(pkgpyexecdir) $(testhelper_la_LDFLAGS) $(testhelper_la_OBJECTS) $(testhelper_la_LIBADD) $(LIBS)
 
 .la.so:
        test -L $@ || $(LN_S) .libs/$@ $@
@@ -732,12 +748,20 @@ all: $(LTLIBRARIES:.la=.so)
 clean-local:
        rm -f $(LTLIBRARIES:.la=.so) file.txt~
 
-check-local: $(LTLIBRARIES:.la=.so) Regress-1.0.typelib GIMarshallingTests-1.0.typelib gschemas.compiled
+# pygtkcompat tests need to be run in a separate process as they
+# clobber global name space
+check-local: $(LTLIBRARIES:.la=.so) $(test_typelibs) gschemas.compiled
        @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
+       @if test -z "$$SKIP_PEP8"; then \
+               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; \
+       fi
+       export `$(DBUS_LAUNCH)` && \
+       $(RUN_TESTS_ENV_VARS) $(EXEC_NAME) $(PYTHON) -Wd -Werror::PendingDeprecationWarning -Werror::DeprecationWarning -Werror::RuntimeWarning $(srcdir)/runtests.py; rc=$$?; \
+       [ "$$rc" -ne 0 ] || [ -n "$$TEST_NAMES" ] || { TEST_NAMES=compat_test_pygtk $(RUN_TESTS_ENV_VARS) $(EXEC_NAME) $(PYTHON) -Wd -Werror::PendingDeprecationWarning -Werror::DeprecationWarning -Werror::RuntimeWarning $(srcdir)/runtests.py; rc=$$?; }; \
+       kill $$DBUS_SESSION_BUS_PID; \
+       exit $$rc
 
 check.gdb:
        EXEC_NAME="gdb --args" $(MAKE) check
similarity index 85%
rename from tests/test_pygtkcompat.py
rename to tests/compat_test_pygtk.py
index 5fabf2a..10be6a3 100644 (file)
@@ -12,10 +12,10 @@ try:
     from gi.repository import Gtk
     (Atk, Gtk, Pango)  # pyflakes
 
-    import gi.pygtkcompat
+    import pygtkcompat
 
-    gi.pygtkcompat.enable()
-    gi.pygtkcompat.enable_gtk(version='3.0')
+    pygtkcompat.enable()
+    pygtkcompat.enable_gtk(version='3.0')
 
     import atk
     import pango
@@ -28,54 +28,54 @@ except ImportError:
 
 @unittest.skipUnless(Gtk, 'Gtk not available')
 class TestATKCompat(unittest.TestCase):
-    def testObject(self):
+    def test_object(self):
         self.assertTrue(hasattr(atk, 'Object'))
 
 
 @unittest.skipUnless(Gtk, 'Gtk not available')
 class TestPangoCompat(unittest.TestCase):
-    def testLayout(self):
+    def test_layout(self):
         self.assertTrue(hasattr(pango, 'Layout'))
 
 
 @unittest.skipUnless(Gtk, 'Gtk not available')
 class TestPangoCairoCompat(unittest.TestCase):
-    def testErrorUnderlinePath(self):
+    def test_error_underline_path(self):
         self.assertTrue(hasattr(pangocairo, 'error_underline_path'))
 
 
 @unittest.skipUnless(Gtk, 'Gtk not available')
 class TestGTKCompat(unittest.TestCase):
-    def testButtons(self):
+    def test_buttons(self):
         self.assertEqual(Gdk._2BUTTON_PRESS, 5)
         self.assertEqual(Gdk.BUTTON_PRESS, 4)
 
-    def testEnums(self):
+    def test_enums(self):
         self.assertEqual(gtk.WINDOW_TOPLEVEL, Gtk.WindowType.TOPLEVEL)
         self.assertEqual(gtk.PACK_START, Gtk.PackType.START)
 
-    def testFlags(self):
+    def test_flags(self):
         self.assertEqual(gtk.EXPAND, Gtk.AttachOptions.EXPAND)
         self.assertEqual(gtk.gdk.SHIFT_MASK, Gdk.ModifierType.SHIFT_MASK)
 
-    def testKeysyms(self):
+    def test_keysyms(self):
         import gtk.keysyms
         self.assertEqual(gtk.keysyms.Escape, Gdk.KEY_Escape)
         self.assertTrue(gtk.keysyms._0, Gdk.KEY_0)
 
-    def testStyle(self):
+    def test_style(self):
         widget = gtk.Button()
         self.assertTrue(isinstance(widget.style.base[gtk.STATE_NORMAL],
                                    gtk.gdk.Color))
 
-    def testAlignment(self):
+    def test_alignment(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):
+    def test_box(self):
         box = gtk.Box()
         child = gtk.Button()
 
@@ -94,7 +94,7 @@ class TestGTKCompat(unittest.TestCase):
         self.assertEqual(padding, 0)
         self.assertEqual(pack_type, gtk.PACK_END)
 
-    def testComboBoxEntry(self):
+    def test_combobox_entry(self):
         liststore = gtk.ListStore(int, str)
         liststore.append((1, 'One'))
         liststore.append((2, 'Two'))
@@ -102,8 +102,10 @@ class TestGTKCompat(unittest.TestCase):
         # 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)
+        try:
+            combo = gtk.ComboBoxEntry(model=liststore)
+        finally:
+            GLib.log_set_always_fatal(old_mask)
         combo.set_text_column(1)
         combo.set_active(0)
         self.assertEqual(combo.get_text_column(), 1)
@@ -120,18 +122,18 @@ class TestGTKCompat(unittest.TestCase):
         self.assertEqual(combo.get_text_column(), 1)
         self.assertEqual(combo.get_child().get_text(), 'One')
 
-    def testSizeRequest(self):
+    def test_size_request(self):
         box = gtk.Box()
         self.assertEqual(box.size_request(), [0, 0])
 
-    def testPixbuf(self):
+    def test_pixbuf(self):
         gtk.gdk.Pixbuf()
 
-    def testPixbufLoader(self):
+    def test_pixbuf_loader(self):
         loader = gtk.gdk.PixbufLoader('png')
         loader.close()
 
-    def testPixbufFormats(self):
+    def test_pixbuf_formats(self):
         formats = gtk.gdk.pixbuf_get_formats()
         self.assertEqual(type(formats[0]), dict)
         self.assertTrue('name' in formats[0])
@@ -139,7 +141,7 @@ class TestGTKCompat(unittest.TestCase):
         self.assertTrue('mime_types' in formats[0])
         self.assertEqual(type(formats[0]['extensions']), list)
 
-    def testGdkWindow(self):
+    def test_gdk_window(self):
         w = gtk.Window()
         w.realize()
         self.assertEqual(w.get_window().get_origin(), (0, 0))
index 221b87a..eb9aab8 100644 (file)
@@ -1,4 +1,10 @@
 <schemalist>
+    <enum id="org.gnome.test.FruitType">
+        <value nick="banana" value="0"/>
+        <value nick="apple" value="1"/>
+        <value nick="pear" value="2"/>
+    </enum>
+
     <schema id="org.gnome.test" path="/tests/">
        <key name="test-boolean" type="b">
            <default>true</default>
@@ -12,6 +18,9 @@
        <key name="test-array" type="ai">
            <default>[1,2]</default>
        </key>
+       <key name="test-enum" enum="org.gnome.test.FruitType">
+           <default>'banana'</default>
+       </key>
     </schema>
 
     <schema id="org.gnome.nopathtest">
index c518fcc..9f3a7ec 100755 (executable)
@@ -34,6 +34,9 @@ if sys.version_info[:2] == (2, 6):
     unittest.TestCase.assertGreater = assertGreater
     unittest.TestCase.assertIsInstance = assertIsInstance
 
+if sys.version_info[:2] == (2, 7):
+    unittest.TestCase.assertRaisesRegex = unittest.TestCase.assertRaisesRegexp
+
 if '--help' in sys.argv:
     print("Usage: ./runtests.py <testfiles>")
     sys.exit(0)
index a59d15a..1561dbd 100644 (file)
@@ -13,6 +13,18 @@ class TestGdkAtom(unittest.TestCase):
         atom = Gdk.Atom.intern('my_string', False)
         self.assertEqual(atom.name(), 'my_string')
 
+    def test_str(self):
+        atom = Gdk.Atom.intern('my_string', False)
+        self.assertEqual(str(atom), 'my_string')
+
+        self.assertEqual(str(Gdk.SELECTION_CLIPBOARD), 'CLIPBOARD')
+
+    def test_repr(self):
+        atom = Gdk.Atom.intern('my_string', False)
+        self.assertEqual(repr(atom), 'Gdk.Atom<my_string>')
+
+        self.assertEqual(repr(Gdk.SELECTION_CLIPBOARD), 'Gdk.Atom<CLIPBOARD>')
+
     def test_in_single(self):
         a_selection = Gdk.Atom.intern('test_clipboard', False)
         clipboard = Gtk.Clipboard.get(a_selection)
@@ -36,6 +48,25 @@ class TestGdkAtom(unittest.TestCase):
         self.assertTrue(Gtk.targets_include_image([a_jpeg], False))
         self.assertTrue(Gtk.targets_include_image([a_jpeg, a_plain], False))
 
+    def test_out_array(self):
+        a_selection = Gdk.Atom.intern('my_clipboard', False)
+        clipboard = Gtk.Clipboard.get(a_selection)
+
+        # empty
+        (res, targets) = clipboard.wait_for_targets()
+        self.assertEqual(res, False)
+        self.assertEqual(targets, [])
+
+        # text
+        clipboard.set_text('hello', 5)
+        (res, targets) = clipboard.wait_for_targets()
+        self.assertEqual(res, True)
+        self.assertNotEqual(targets, [])
+        self.assertEqual(type(targets[0]), Gdk.Atom)
+        names = [t.name() for t in targets]
+        self.assertFalse(None in names, names)
+        self.assertTrue('TEXT' in names, names)
+
     def test_out_glist(self):
         display = Gdk.Display.get_default()
         dm = display.get_device_manager()
index 243e770..f1f14b7 100644 (file)
@@ -4,14 +4,14 @@
 
 import unittest
 import traceback
-
+import ctypes
+import warnings
 import sys
-from sys import getrefcount
 
-import copy
 try:
     import cairo
     has_cairo = True
+    from gi.repository import Regress as Everything
 except ImportError:
     has_cairo = False
 
@@ -19,7 +19,6 @@ except ImportError:
 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
@@ -34,9 +33,20 @@ else:
     UNICHAR = "♥"
 
 
+class RawGList(ctypes.Structure):
+    _fields_ = [('data', ctypes.c_void_p),
+                ('next', ctypes.c_void_p),
+                ('prev', ctypes.c_void_p)]
+
+    @classmethod
+    def from_wrapped(cls, obj):
+        offset = sys.getsizeof(object())  # size of PyObject_HEAD
+        return ctypes.POINTER(cls).from_address(id(obj) + offset)
+
+
+@unittest.skipUnless(has_cairo, 'built without cairo support')
 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))
@@ -45,7 +55,6 @@ 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))
@@ -71,6 +80,123 @@ class TestEverything(unittest.TestCase):
         self.assertEqual(surface.get_width(), 10)
         self.assertEqual(surface.get_height(), 10)
 
+    def test_bool(self):
+        self.assertEqual(Everything.test_boolean(False), False)
+        self.assertEqual(Everything.test_boolean(True), True)
+        self.assertEqual(Everything.test_boolean('hello'), True)
+        self.assertEqual(Everything.test_boolean(''), False)
+
+        self.assertEqual(Everything.test_boolean_true(True), True)
+        self.assertEqual(Everything.test_boolean_false(False), False)
+
+    def test_int8(self):
+        self.assertEqual(Everything.test_int8(GObject.G_MAXINT8),
+                         GObject.G_MAXINT8)
+        self.assertEqual(Everything.test_int8(GObject.G_MININT8),
+                         GObject.G_MININT8)
+        self.assertRaises(ValueError, Everything.test_int8, GObject.G_MAXINT8 + 1)
+
+        self.assertEqual(Everything.test_uint8(GObject.G_MAXUINT8),
+                         GObject.G_MAXUINT8)
+        self.assertEqual(Everything.test_uint8(0), 0)
+        self.assertRaises(ValueError, Everything.test_uint8, -1)
+        self.assertRaises(ValueError, Everything.test_uint8, GObject.G_MAXUINT8 + 1)
+
+    def test_int16(self):
+        self.assertEqual(Everything.test_int16(GObject.G_MAXINT16),
+                         GObject.G_MAXINT16)
+        self.assertEqual(Everything.test_int16(GObject.G_MININT16),
+                         GObject.G_MININT16)
+        self.assertRaises(ValueError, Everything.test_int16, GObject.G_MAXINT16 + 1)
+
+        self.assertEqual(Everything.test_uint16(GObject.G_MAXUINT16),
+                         GObject.G_MAXUINT16)
+        self.assertEqual(Everything.test_uint16(0), 0)
+        self.assertRaises(ValueError, Everything.test_uint16, -1)
+        self.assertRaises(ValueError, Everything.test_uint16, GObject.G_MAXUINT16 + 1)
+
+    def test_int32(self):
+        self.assertEqual(Everything.test_int32(GObject.G_MAXINT32),
+                         GObject.G_MAXINT32)
+        self.assertEqual(Everything.test_int32(GObject.G_MININT32),
+                         GObject.G_MININT32)
+        self.assertRaises(ValueError, Everything.test_int32, GObject.G_MAXINT32 + 1)
+
+        self.assertEqual(Everything.test_uint32(GObject.G_MAXUINT32),
+                         GObject.G_MAXUINT32)
+        self.assertEqual(Everything.test_uint32(0), 0)
+        self.assertRaises(ValueError, Everything.test_uint32, -1)
+        self.assertRaises(ValueError, Everything.test_uint32, GObject.G_MAXUINT32 + 1)
+
+    def test_int64(self):
+        self.assertEqual(Everything.test_int64(GObject.G_MAXINT64),
+                         GObject.G_MAXINT64)
+        self.assertEqual(Everything.test_int64(GObject.G_MININT64),
+                         GObject.G_MININT64)
+        self.assertRaises(ValueError, Everything.test_int64, GObject.G_MAXINT64 + 1)
+
+        self.assertEqual(Everything.test_uint64(GObject.G_MAXUINT64),
+                         GObject.G_MAXUINT64)
+        self.assertEqual(Everything.test_uint64(0), 0)
+        self.assertRaises(ValueError, Everything.test_uint64, -1)
+        self.assertRaises(ValueError, Everything.test_uint64, GObject.G_MAXUINT64 + 1)
+
+    def test_int(self):
+        self.assertEqual(Everything.test_int(GObject.G_MAXINT),
+                         GObject.G_MAXINT)
+        self.assertEqual(Everything.test_int(GObject.G_MININT),
+                         GObject.G_MININT)
+        self.assertRaises(ValueError, Everything.test_int, GObject.G_MAXINT + 1)
+
+        self.assertEqual(Everything.test_uint(GObject.G_MAXUINT),
+                         GObject.G_MAXUINT)
+        self.assertEqual(Everything.test_uint(0), 0)
+        self.assertRaises(ValueError, Everything.test_uint, -1)
+        self.assertRaises(ValueError, Everything.test_uint, GObject.G_MAXUINT + 1)
+
+    def test_short(self):
+        self.assertEqual(Everything.test_short(GObject.G_MAXSHORT),
+                         GObject.G_MAXSHORT)
+        self.assertEqual(Everything.test_short(GObject.G_MINSHORT),
+                         GObject.G_MINSHORT)
+        self.assertRaises(ValueError, Everything.test_short, GObject.G_MAXSHORT + 1)
+
+        self.assertEqual(Everything.test_ushort(GObject.G_MAXUSHORT),
+                         GObject.G_MAXUSHORT)
+        self.assertEqual(Everything.test_ushort(0), 0)
+        self.assertRaises(ValueError, Everything.test_ushort, -1)
+        self.assertRaises(ValueError, Everything.test_ushort, GObject.G_MAXUSHORT + 1)
+
+    def test_long(self):
+        self.assertEqual(Everything.test_long(GObject.G_MAXLONG),
+                         GObject.G_MAXLONG)
+        self.assertEqual(Everything.test_long(GObject.G_MINLONG),
+                         GObject.G_MINLONG)
+        self.assertRaises(ValueError, Everything.test_long, GObject.G_MAXLONG + 1)
+
+        self.assertEqual(Everything.test_ulong(GObject.G_MAXULONG),
+                         GObject.G_MAXULONG)
+        self.assertEqual(Everything.test_ulong(0), 0)
+        self.assertRaises(ValueError, Everything.test_ulong, -1)
+        self.assertRaises(ValueError, Everything.test_ulong, GObject.G_MAXULONG + 1)
+
+    def test_size(self):
+        self.assertEqual(Everything.test_ssize(GObject.G_MAXSSIZE),
+                         GObject.G_MAXSSIZE)
+        self.assertEqual(Everything.test_ssize(GObject.G_MINSSIZE),
+                         GObject.G_MINSSIZE)
+        self.assertRaises(ValueError, Everything.test_ssize, GObject.G_MAXSSIZE + 1)
+
+        self.assertEqual(Everything.test_size(GObject.G_MAXSIZE),
+                         GObject.G_MAXSIZE)
+        self.assertEqual(Everything.test_size(0), 0)
+        self.assertRaises(ValueError, Everything.test_size, -1)
+        self.assertRaises(ValueError, Everything.test_size, GObject.G_MAXSIZE + 1)
+
+    def test_timet(self):
+        self.assertEqual(Everything.test_timet(42), 42)
+        self.assertRaises(ValueError, Everything.test_timet, GObject.G_MAXUINT64 + 1)
+
     def test_unichar(self):
         self.assertEqual("c", Everything.test_unichar("c"))
 
@@ -80,6 +206,96 @@ class TestEverything(unittest.TestCase):
         self.assertRaises(TypeError, Everything.test_unichar, "")
         self.assertRaises(TypeError, Everything.test_unichar, "morethanonechar")
 
+    def test_float(self):
+        self.assertEqual(Everything.test_float(GObject.G_MAXFLOAT),
+                         GObject.G_MAXFLOAT)
+        self.assertEqual(Everything.test_float(GObject.G_MINFLOAT),
+                         GObject.G_MINFLOAT)
+        self.assertRaises(ValueError, Everything.test_float, GObject.G_MAXFLOAT * 2)
+
+    def test_double(self):
+        self.assertEqual(Everything.test_double(GObject.G_MAXDOUBLE),
+                         GObject.G_MAXDOUBLE)
+        self.assertEqual(Everything.test_double(GObject.G_MINDOUBLE),
+                         GObject.G_MINDOUBLE)
+        self.assertRaises(ValueError, Everything.test_double, GObject.G_MAXDOUBLE * 2)
+
+        (two, three) = Everything.test_multi_double_args(2.5)
+        self.assertAlmostEqual(two, 5.0)
+        self.assertAlmostEqual(three, 7.5)
+
+    def test_value(self):
+        self.assertEqual(Everything.test_int_value_arg(GObject.G_MAXINT), GObject.G_MAXINT)
+        self.assertEqual(Everything.test_value_return(GObject.G_MAXINT), GObject.G_MAXINT)
+
+    def test_variant(self):
+        v = Everything.test_gvariant_i()
+        self.assertEqual(v.get_type_string(), 'i')
+        self.assertEqual(v.get_int32(), 1)
+
+        v = Everything.test_gvariant_s()
+        self.assertEqual(v.get_type_string(), 's')
+        self.assertEqual(v.get_string(), 'one')
+
+        v = Everything.test_gvariant_v()
+        self.assertEqual(v.get_type_string(), 'v')
+        vi = v.get_variant()
+        self.assertEqual(vi.get_type_string(), 's')
+        self.assertEqual(vi.get_string(), 'contents')
+
+        v = Everything.test_gvariant_as()
+        self.assertEqual(v.get_type_string(), 'as')
+        self.assertEqual(v.get_strv(), ['one', 'two', 'three'])
+
+        v = Everything.test_gvariant_asv()
+        self.assertEqual(v.get_type_string(), 'a{sv}')
+        self.assertEqual(v.lookup_value('nosuchkey', None), None)
+        name = v.lookup_value('name', None)
+        self.assertEqual(name.get_string(), 'foo')
+        timeout = v.lookup_value('timeout', None)
+        self.assertEqual(timeout.get_int32(), 10)
+
+    def test_string(self):
+        const_str = b'const \xe2\x99\xa5 utf8'
+        if sys.version_info >= (3, 0):
+            const_str = const_str.decode('UTF-8')
+        noconst_str = 'non' + const_str
+
+        self.assertEqual(Everything.test_utf8_const_return(), const_str)
+        self.assertEqual(Everything.test_utf8_nonconst_return(), noconst_str)
+        self.assertEqual(Everything.test_utf8_out(), noconst_str)
+
+        Everything.test_utf8_const_in(const_str)
+        self.assertEqual(Everything.test_utf8_inout(const_str), noconst_str)
+
+        self.assertEqual(Everything.test_filename_return(), ['åäö', '/etc/fstab'])
+
+        # returns g_utf8_strlen() in out argument
+        self.assertEqual(Everything.test_int_out_utf8(''), 0)
+        self.assertEqual(Everything.test_int_out_utf8('hello world'), 11)
+        self.assertEqual(Everything.test_int_out_utf8('åäö'), 3)
+
+        self.assertEqual(Everything.test_utf8_out_out(), ('first', 'second'))
+        self.assertEqual(Everything.test_utf8_out_nonconst_return(), ('first', 'second'))
+
+    def test_enum(self):
+        self.assertEqual(Everything.test_enum_param(Everything.TestEnum.VALUE1), 'value1')
+        self.assertEqual(Everything.test_enum_param(Everything.TestEnum.VALUE3), 'value3')
+        self.assertRaises(TypeError, Everything.test_enum_param, 'hello')
+
+    # FIXME: ValueError: invalid enum value: 2147483648
+    @unittest.expectedFailure
+    def test_enum_unsigned(self):
+        self.assertEqual(Everything.test_unsigned_enum_param(Everything.TestEnumUnsigned.VALUE1), 'value1')
+        self.assertEqual(Everything.test_unsigned_enum_param(Everything.TestEnumUnsigned.VALUE3), 'value3')
+        self.assertRaises(TypeError, Everything.test_unsigned_enum_param, 'hello')
+
+    def test_flags(self):
+        result = Everything.global_get_flags_out()
+        # assert that it's not an int
+        self.assertEqual(type(result), Everything.TestFlags)
+        self.assertEqual(result, Everything.TestFlags.FLAG1 | Everything.TestFlags.FLAG3)
+
     def test_floating(self):
         e = Everything.TestFloating()
         self.assertEqual(e.__grefcount__, 1)
@@ -119,6 +335,9 @@ class TestEverything(unittest.TestCase):
         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)
 
+        struct_a = Everything.test_struct_a_parse('ignored')
+        self.assertEqual(struct_a.some_int, 23)
+
     def test_wrong_type_of_arguments(self):
         try:
             Everything.test_int8()
@@ -171,6 +390,34 @@ class TestEverything(unittest.TestCase):
         # test that there are no duplicates returned
         self.assertEqual(len(attr_list), len(set(attr_list)))
 
+    def test_array(self):
+        self.assertEqual(Everything.test_array_int_in([]), 0)
+        self.assertEqual(Everything.test_array_int_in([1, 5, -2]), 4)
+        self.assertEqual(Everything.test_array_int_out(), [0, 1, 2, 3, 4])
+        self.assertEqual(Everything.test_array_int_full_out(), [0, 1, 2, 3, 4])
+        self.assertEqual(Everything.test_array_int_none_out(), [1, 2, 3, 4, 5])
+        self.assertEqual(Everything.test_array_int_inout([1, 5, 42, -8]), [6, 43, -7])
+
+        if sys.version_info >= (3, 0):
+            self.assertEqual(Everything.test_array_gint8_in(b'\x01\x03\x05'), 9)
+        self.assertEqual(Everything.test_array_gint8_in([1, 3, 5, -50]), -41)
+        self.assertEqual(Everything.test_array_gint16_in([256, 257, -1000, 10000]), 9513)
+        self.assertEqual(Everything.test_array_gint32_in([30000, 1, -2]), 29999)
+        self.assertEqual(Everything.test_array_gint64_in([2 ** 33, 2 ** 34]), 2 ** 33 + 2 ** 34)
+
+        self.assertEqual(Everything.test_array_gtype_in(
+            [GObject.TYPE_STRING, GObject.TYPE_UINT64, GObject.TYPE_VARIANT]),
+            '[gchararray,guint64,GVariant,]')
+
+    def test_array_fixed_size(self):
+        # fixed length of 5
+        self.assertEqual(Everything.test_array_fixed_size_int_in([1, 2, -10, 5, 3]), 1)
+        self.assertRaises(ValueError, Everything.test_array_fixed_size_int_in, [1, 2, 3, 4])
+        self.assertRaises(ValueError, Everything.test_array_fixed_size_int_in, [1, 2, 3, 4, 5, 6])
+
+        self.assertEqual(Everything.test_array_fixed_size_int_out(), [0, 1, 2, 3, 4])
+        self.assertEqual(Everything.test_array_fixed_size_int_return(), [0, 1, 2, 3, 4])
+
     def test_ptrarray(self):
         # transfer container
         result = Everything.test_garray_container_return()
@@ -182,7 +429,43 @@ class TestEverything(unittest.TestCase):
         self.assertEqual(result, ['regress'])
         result = None
 
+    def test_strv(self):
+        self.assertEqual(Everything.test_strv_out(), ['thanks', 'for', 'all', 'the', 'fish'])
+        self.assertEqual(Everything.test_strv_out_c(), ['thanks', 'for', 'all', 'the', 'fish'])
+        self.assertEqual(Everything.test_strv_out_container(), ['1', '2', '3'])
+        self.assertEqual(Everything.test_strv_outarg(), ['1', '2', '3'])
+
+        self.assertEqual(Everything.test_strv_in_gvalue(), ['one', 'two', 'three'])
+
+        Everything.test_strv_in(['1', '2', '3'])
+
+    def test_glist(self):
+        self.assertEqual(Everything.test_glist_nothing_return(), ['1', '2', '3'])
+        self.assertEqual(Everything.test_glist_nothing_return2(), ['1', '2', '3'])
+        self.assertEqual(Everything.test_glist_container_return(), ['1', '2', '3'])
+        self.assertEqual(Everything.test_glist_everything_return(), ['1', '2', '3'])
+
+        Everything.test_glist_nothing_in(['1', '2', '3'])
+        Everything.test_glist_nothing_in2(['1', '2', '3'])
+
+    def test_gslist(self):
+        self.assertEqual(Everything.test_gslist_nothing_return(), ['1', '2', '3'])
+        self.assertEqual(Everything.test_gslist_nothing_return2(), ['1', '2', '3'])
+        self.assertEqual(Everything.test_gslist_container_return(), ['1', '2', '3'])
+        self.assertEqual(Everything.test_gslist_everything_return(), ['1', '2', '3'])
+
+        Everything.test_gslist_nothing_in(['1', '2', '3'])
+        Everything.test_gslist_nothing_in2(['1', '2', '3'])
+
     def test_hash_return(self):
+        expected = {'foo': 'bar', 'baz': 'bat', 'qux': 'quux'}
+
+        self.assertEqual(Everything.test_ghash_null_return(), None)
+        self.assertEqual(Everything.test_ghash_nothing_return(), expected)
+        self.assertEqual(Everything.test_ghash_nothing_return(), expected)
+        self.assertEqual(Everything.test_ghash_container_return(), expected)
+        self.assertEqual(Everything.test_ghash_everything_return(), expected)
+
         result = Everything.test_ghash_gvalue_return()
         self.assertEqual(result['integer'], 12)
         self.assertEqual(result['boolean'], True)
@@ -192,6 +475,11 @@ class TestEverything(unittest.TestCase):
         self.assertEqual(result['enum'], Everything.TestEnum.VALUE2)
         result = None
 
+    # FIXME: CRITICAL **: Unsupported type ghash
+    def disabled_test_hash_return_nested(self):
+        self.assertEqual(Everything.test_ghash_nested_everything_return(), {})
+        self.assertEqual(Everything.test_ghash_nested_everything_return2(), {})
+
     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
@@ -199,6 +487,11 @@ class TestEverything(unittest.TestCase):
         class GStrv(list):
             __gtype__ = GObject.TYPE_STRV
 
+        expected = {'foo': 'bar', 'baz': 'bat', 'qux': 'quux'}
+
+        Everything.test_ghash_nothing_in(expected)
+        Everything.test_ghash_nothing_in2(expected)
+
         data = {'integer': 12,
                 'boolean': True,
                 'string': 'some text',
@@ -210,24 +503,24 @@ class TestEverything(unittest.TestCase):
         data = None
 
     def test_struct_gpointer(self):
-        l1 = GLib.List()
-        self.assertEqual(l1.data, None)
-        init_refcount = getrefcount(l1)
+        glist = GLib.List()
+        raw = RawGList.from_wrapped(glist)
+
+        self.assertEqual(glist.data, None)
+        self.assertEqual(raw.contents.data, None)
 
-        l1.data = 'foo'
-        self.assertEqual(l1.data, 'foo')
+        glist.data = 123
+        self.assertEqual(glist.data, 123)
+        self.assertEqual(raw.contents.data, 123)
 
-        l2 = l1
-        self.assertEqual(l1.data, l2.data)
-        self.assertEqual(getrefcount(l1), init_refcount + 1)
+        glist.data = None
+        self.assertEqual(glist.data, None)
+        self.assertEqual(raw.contents.data, None)
 
-        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)
+        # Setting to anything other than an int should raise
+        self.assertRaises(TypeError, setattr, glist.data, 'nan')
+        self.assertRaises(TypeError, setattr, glist.data, object())
+        self.assertRaises(TypeError, setattr, glist.data, 123.321)
 
     def test_struct_opaque(self):
         # we should get a sensible error message
@@ -244,6 +537,7 @@ class TestEverything(unittest.TestCase):
             self.assertTrue('tests/test_everything.py", line' in tb, tb)
 
 
+@unittest.skipUnless(has_cairo, 'built without cairo support')
 class TestNullableArgs(unittest.TestCase):
     def test_in_nullable_hash(self):
         Everything.test_ghash_null_in(None)
@@ -281,9 +575,10 @@ class TestNullableArgs(unittest.TestCase):
         self.assertEqual(None, Everything.TestObj.null_out())
 
 
+@unittest.skipUnless(has_cairo, 'built without cairo support')
 class TestCallbacks(unittest.TestCase):
     called = False
-    main_loop = GObject.MainLoop()
+    main_loop = GLib.MainLoop()
 
     def test_callback(self):
         TestCallbacks.called = False
@@ -337,27 +632,70 @@ class TestCallbacks(unittest.TestCase):
         self.assertEqual(Everything.test_callback(callback), 44)
         self.assertTrue(TestCallbacks.called)
 
-    def test_callback_async(self):
+    def test_callback_scope_async(self):
         TestCallbacks.called = False
+        ud = 'Test Value 44'
 
-        def callback(foo):
+        def callback(user_data):
+            self.assertEqual(user_data, ud)
             TestCallbacks.called = True
-            return foo
+            return 44
+
+        ud_refcount = sys.getrefcount(ud)
+        callback_refcount = sys.getrefcount(callback)
 
-        Everything.test_callback_async(callback, 44)
-        i = Everything.test_callback_thaw_async()
-        self.assertEqual(44, i)
+        self.assertEqual(Everything.test_callback_async(callback, ud), None)
+        # Callback should not have run and the ref count is increased by 1
+        self.assertEqual(TestCallbacks.called, False)
+        self.assertEqual(sys.getrefcount(callback), callback_refcount + 1)
+        self.assertEqual(sys.getrefcount(ud), ud_refcount + 1)
+
+        # test_callback_thaw_async will run the callback previously supplied.
+        # references should be auto decremented after this call.
+        self.assertEqual(Everything.test_callback_thaw_async(), 44)
         self.assertTrue(TestCallbacks.called)
 
-    def test_callback_scope_call(self):
+        # Make sure refcounts are returned to normal
+        self.assertEqual(sys.getrefcount(callback), callback_refcount)
+        self.assertEqual(sys.getrefcount(ud), ud_refcount)
+
+    def test_callback_scope_call_multi(self):
+        # This tests a callback that gets called multiple times from a
+        # single scope call in python.
         TestCallbacks.called = 0
 
         def callback():
             TestCallbacks.called += 1
-            return 0
+            return TestCallbacks.called
 
-        Everything.test_multi_callback(callback)
+        refcount = sys.getrefcount(callback)
+        result = Everything.test_multi_callback(callback)
+        # first callback should give 1, second 2, and the function sums them up
+        self.assertEqual(result, 3)
         self.assertEqual(TestCallbacks.called, 2)
+        self.assertEqual(sys.getrefcount(callback), refcount)
+
+    # FIXME: TypeError: callback() takes 2 positional arguments but 4 were given
+    # does not remove the array length arguments
+    @unittest.expectedFailure
+    def test_callback_scope_call_array(self):
+        # This tests a callback that gets called multiple times from a
+        # single scope call in python with array arguments
+        TestCallbacks.callargs = []
+
+        # works with:
+        #def callback(one, one_length, two, two_length):
+        def callback(one, two):
+            TestCallbacks.callargs.append((one, two))
+            return len(TestCallbacks.callargs)
+
+        refcount = sys.getrefcount(callback)
+        result = Everything.test_array_callback(callback)
+        # first callback should give 1, second 2, and the function sums them up
+        self.assertEqual(result, 3)
+        self.assertEqual(TestCallbacks.callargs,
+                         [([-1, 0, 1, 2], ['one', 'two', 'three'])] * 2)
+        self.assertEqual(sys.getrefcount(callback), refcount)
 
     def test_callback_userdata(self):
         TestCallbacks.called = 0
@@ -373,27 +711,9 @@ class TestCallbacks(unittest.TestCase):
 
         self.assertEqual(TestCallbacks.called, 100)
 
-    def test_callback_userdata_refcount(self):
-        TestCallbacks.called = False
-
-        def callback(userdata):
-            TestCallbacks.called = True
-            return 1
-
-        ud = "Test User Data"
-
-        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.assertEqual(start_ref_count, end_ref_count)
-
     def test_async_ready_callback(self):
         TestCallbacks.called = False
-        TestCallbacks.main_loop = GObject.MainLoop()
+        TestCallbacks.main_loop = GLib.MainLoop()
 
         def callback(obj, result, user_data):
             TestCallbacks.main_loop.quit()
@@ -405,15 +725,73 @@ class TestCallbacks(unittest.TestCase):
 
         self.assertTrue(TestCallbacks.called)
 
-    def test_callback_destroy_notify(self):
+    def test_callback_scope_notified_with_destroy(self):
+        TestCallbacks.called = 0
+        ud = 'Test scope notified data 33'
+
         def callback(user_data):
-            TestCallbacks.called = True
-            return 42
+            self.assertEqual(user_data, ud)
+            TestCallbacks.called += 1
+            return 33
 
-        TestCallbacks.called = False
-        self.assertEqual(Everything.test_callback_destroy_notify(callback, 42), 42)
-        self.assertTrue(TestCallbacks.called)
-        self.assertEqual(Everything.test_callback_thaw_notifications(), 42)
+        value_refcount = sys.getrefcount(ud)
+        callback_refcount = sys.getrefcount(callback)
+
+        # Callback is immediately called.
+        for i in range(100):
+            res = Everything.test_callback_destroy_notify(callback, ud)
+            self.assertEqual(res, 33)
+
+        self.assertEqual(TestCallbacks.called, 100)
+        self.assertEqual(sys.getrefcount(callback), callback_refcount + 100)
+        self.assertEqual(sys.getrefcount(ud), value_refcount + 100)
+
+        # thaw will call the callback again, this time resources should be freed
+        self.assertEqual(Everything.test_callback_thaw_notifications(), 33 * 100)
+        self.assertEqual(TestCallbacks.called, 200)
+        self.assertEqual(sys.getrefcount(callback), callback_refcount)
+        self.assertEqual(sys.getrefcount(ud), value_refcount)
+
+    def test_callback_scope_notified_with_destroy_no_user_data(self):
+        TestCallbacks.called = 0
+
+        def callback(user_data):
+            self.assertEqual(user_data, None)
+            TestCallbacks.called += 1
+            return 34
+
+        callback_refcount = sys.getrefcount(callback)
+
+        # Run with warning as exception
+        with warnings.catch_warnings(record=True) as w:
+            warnings.simplefilter("error")
+            self.assertRaises(RuntimeWarning,
+                              Everything.test_callback_destroy_notify_no_user_data,
+                              callback)
+
+        self.assertEqual(TestCallbacks.called, 0)
+        self.assertEqual(sys.getrefcount(callback), callback_refcount)
+
+        # Run with warning as warning
+        with warnings.catch_warnings(record=True) as w:
+            # Cause all warnings to always be triggered.
+            warnings.simplefilter("default")
+            # Trigger a warning.
+            res = Everything.test_callback_destroy_notify_no_user_data(callback)
+            # Verify some things
+            self.assertEqual(len(w), 1)
+            self.assertTrue(issubclass(w[-1].category, RuntimeWarning))
+            self.assertTrue('Callables passed to' in str(w[-1].message))
+
+        self.assertEqual(res, 34)
+        self.assertEqual(TestCallbacks.called, 1)
+        self.assertEqual(sys.getrefcount(callback), callback_refcount + 1)
+
+        # thaw will call the callback again,
+        # refcount will not go down without user_data parameter
+        self.assertEqual(Everything.test_callback_thaw_notifications(), 34)
+        self.assertEqual(TestCallbacks.called, 2)
+        self.assertEqual(sys.getrefcount(callback), callback_refcount + 1)
 
     def test_callback_in_methods(self):
         object_ = Everything.TestObj()
@@ -431,12 +809,17 @@ class TestCallbacks(unittest.TestCase):
         self.assertTrue(TestCallbacks.called)
 
         def callbackWithUserData(user_data):
-            TestCallbacks.called = True
+            TestCallbacks.called += 1
             return 42
 
-        TestCallbacks.called = False
+        TestCallbacks.called = 0
         Everything.TestObj.new_callback(callbackWithUserData, None)
-        self.assertTrue(TestCallbacks.called)
+        self.assertEqual(TestCallbacks.called, 1)
+        # Note: using "new_callback" adds the notification to the same global
+        # list as Everything.test_callback_destroy_notify, so thaw the list
+        # so we don't get confusion between tests.
+        self.assertEqual(Everything.test_callback_thaw_notifications(), 42)
+        self.assertEqual(TestCallbacks.called, 2)
 
     def test_callback_none(self):
         # make sure this doesn't assert or crash
@@ -486,7 +869,18 @@ class TestCallbacks(unittest.TestCase):
         self.assertEqual(mydict, {'foo': 1, 'bar': 2, 'new': 42})
 
 
+@unittest.skipUnless(has_cairo, 'built without cairo support')
 class TestClosures(unittest.TestCase):
+    def test_no_arg(self):
+        def callback():
+            self.called = True
+            return 42
+
+        self.called = False
+        result = Everything.test_closure(callback)
+        self.assertTrue(self.called)
+        self.assertEqual(result, 42)
+
     def test_int_arg(self):
         def callback(num):
             self.called = True
@@ -520,7 +914,24 @@ class TestClosures(unittest.TestCase):
         self.assertRaises(TypeError, Everything.test_closure_variant, callback, 'foo')
         self.assertFalse(self.called)
 
+    def test_variant_wrong_return_type(self):
+        def callback(variant):
+            return 'no_variant'
+
+        # reset last error
+        sys.last_type = None
+
+        # this does not directly raise an exception (see
+        # https://bugzilla.gnome.org/show_bug.cgi?id=616279)
+        result = Everything.test_closure_variant(callback, GLib.Variant('i', 42))
+        # ... but the result shouldn't be a string
+        self.assertEqual(result, None)
+        # and the error should be shown
+        self.assertEqual(sys.last_type, TypeError)
+        self.assertTrue('return value' in str(sys.last_value), sys.last_value)
+
 
+@unittest.skipUnless(has_cairo, 'built without cairo support')
 class TestProperties(unittest.TestCase):
 
     def test_basic(self):
@@ -577,7 +988,27 @@ class TestProperties(unittest.TestCase):
         self.assertTrue(isinstance(object_.props.boxed, Everything.TestBoxed))
         self.assertEqual(object_.props.boxed.some_int8, 42)
 
+    def test_boxed_alternative_constructor(self):
+        boxed = Everything.TestBoxed.new_alternative_constructor1(5)
+        self.assertEqual(boxed.some_int8, 5)
+
+        boxed = Everything.TestBoxed.new_alternative_constructor2(5, 3)
+        self.assertEqual(boxed.some_int8, 8)
+
+        boxed = Everything.TestBoxed.new_alternative_constructor3("-3")
+        self.assertEqual(boxed.some_int8, -3)
+
     def test_boxed_equality(self):
+        boxed42 = Everything.TestBoxed.new_alternative_constructor1(42)
+        boxed5 = Everything.TestBoxed.new_alternative_constructor1(5)
+        boxed42_2 = Everything.TestBoxed.new_alternative_constructor2(41, 1)
+
+        self.assertFalse(boxed42.equals(boxed5))
+        self.assertTrue(boxed42.equals(boxed42_2))
+        self.assertTrue(boxed42_2.equals(boxed42))
+        self.assertTrue(boxed42.equals(boxed42))
+
+    def test_boxed_c_equality(self):
         boxed = Everything.TestBoxedC()
         # TestBoxedC uses refcounting, so we know that
         # the pointer is the same when copied
@@ -596,7 +1027,20 @@ class TestProperties(unittest.TestCase):
         object_.props.gtype = str
         self.assertEqual(object_.props.gtype, GObject.TYPE_STRING)
 
+    def test_parent_class(self):
+        class A(Everything.TestObj):
+            prop1 = GObject.Property(type=int)
+
+        a = A()
+        a.props.int = 20
+        self.assertEqual(a.props.int, 20)
+
+        # test parent property which needs introspection
+        a.props.list = ("str1", "str2")
+        self.assertEqual(a.props.list, ["str1", "str2"])
+
 
+@unittest.skipUnless(has_cairo, 'built without cairo support')
 class TestTortureProfile(unittest.TestCase):
     def test_torture_profile(self):
         import time
@@ -659,6 +1103,7 @@ class TestTortureProfile(unittest.TestCase):
         print("\tTotal: %f sec" % total_time)
 
 
+@unittest.skipUnless(has_cairo, 'built without cairo support')
 class TestAdvancedInterfaces(unittest.TestCase):
     def test_array_objs(self):
         obj1, obj2 = Everything.test_array_fixed_out_objects()
@@ -683,6 +1128,7 @@ class TestAdvancedInterfaces(unittest.TestCase):
         self.assertEqual(ret, None)
 
 
+@unittest.skipUnless(has_cairo, 'built without cairo support')
 class TestSignals(unittest.TestCase):
     def test_object_param_signal(self):
         obj = Everything.TestObj()
@@ -750,8 +1196,9 @@ class TestSignals(unittest.TestCase):
         self.assertEqual(obj.callback_i, GObject.G_MAXUINT64)
 
 
+@unittest.skipUnless(has_cairo, 'built without cairo support')
+@unittest.skipUnless(Gtk, 'Gtk not available')
 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()
index b129419..805633a 100644 (file)
@@ -3,7 +3,6 @@
 
 import unittest
 
-from gi.repository import GObject
 from gi.repository import GLib
 from gi.repository import Gio
 
@@ -68,7 +67,7 @@ class TestGDBusClient(unittest.TestCase):
             finally:
                 user_data['main_loop'].quit()
 
-        main_loop = GObject.MainLoop()
+        main_loop = GLib.MainLoop()
         data = {'main_loop': main_loop}
         self.dbus_proxy.call('ListNames', None,
                              Gio.DBusCallFlags.NO_AUTO_START, 500, None,
@@ -90,7 +89,7 @@ class TestGDBusClient(unittest.TestCase):
             finally:
                 user_data['main_loop'].quit()
 
-        main_loop = GObject.MainLoop()
+        main_loop = GLib.MainLoop()
         data = {'main_loop': main_loop}
         self.dbus_proxy.call('UnknownMethod', None,
                              Gio.DBusCallFlags.NO_AUTO_START, 500, None,
@@ -134,7 +133,9 @@ class TestGDBusClient(unittest.TestCase):
             self.dbus_proxy.GetConnectionUnixProcessID('(s)', '1', timeout=0)
             self.fail('call with timeout=0 should raise an exception')
         except Exception as e:
-            self.assertTrue('Timeout' in str(e), str(e))
+            # FIXME: this is not very precise, but in some environments we
+            # do not always get an actual timeout
+            self.assertTrue(isinstance(e, GLib.GError), str(e))
 
     def test_python_calls_sync_noargs(self):
         # methods without arguments don't need an explicit signature
@@ -162,7 +163,7 @@ class TestGDBusClient(unittest.TestCase):
             user_data['result'] = result
             user_data['main_loop'].quit()
 
-        main_loop = GObject.MainLoop()
+        main_loop = GLib.MainLoop()
         data = {'main_loop': main_loop}
         self.dbus_proxy.ListNames('()', result_handler=call_done, user_data=data)
         main_loop.run()
@@ -178,7 +179,7 @@ class TestGDBusClient(unittest.TestCase):
             user_data['result'] = result
             user_data['main_loop'].quit()
 
-        main_loop = GObject.MainLoop()
+        main_loop = GLib.MainLoop()
         data = {'main_loop': main_loop}
         self.dbus_proxy.ListNames('(s)', 'invalid_argument',
                                   result_handler=call_done, user_data=data)
@@ -197,7 +198,7 @@ class TestGDBusClient(unittest.TestCase):
             user_data['error'] = error
             user_data['main_loop'].quit()
 
-        main_loop = GObject.MainLoop()
+        main_loop = GLib.MainLoop()
         data = {'main_loop': main_loop}
         self.dbus_proxy.ListNames('(s)', 'invalid_argument',
                                   result_handler=call_done,
index ea58547..a2664f1 100644 (file)
@@ -10,6 +10,8 @@ import shutil
 import os
 import locale
 import subprocess
+import gc
+import weakref
 from io import StringIO, BytesIO
 
 import gi
@@ -17,7 +19,7 @@ from gi.repository import GObject, GLib, Gio
 
 from gi.repository import GIMarshallingTests
 
-from compathelper import _bytes
+from compathelper import _bytes, _unicode
 
 if sys.version_info < (3, 0):
     CONSTANT_UTF8 = "const \xe2\x99\xa5 utf8"
@@ -63,6 +65,15 @@ class TestConstant(unittest.TestCase):
     def test_constant_number(self):
         self.assertEqual(CONSTANT_NUMBER, GIMarshallingTests.CONSTANT_NUMBER)
 
+    def test_min_max_int(self):
+        self.assertEqual(GLib.MAXINT32, 2 ** 31 - 1)
+        self.assertEqual(GLib.MININT32, -2 ** 31)
+        self.assertEqual(GLib.MAXUINT32, 2 ** 32 - 1)
+
+        self.assertEqual(GLib.MAXINT64, 2 ** 63 - 1)
+        self.assertEqual(GLib.MININT64, -2 ** 63)
+        self.assertEqual(GLib.MAXUINT64, 2 ** 64 - 1)
+
 
 class TestBoolean(unittest.TestCase):
 
@@ -324,8 +335,8 @@ class TestUInt64(unittest.TestCase):
 
 class TestShort(unittest.TestCase):
 
-    MAX = GObject.constants.G_MAXSHORT
-    MIN = GObject.constants.G_MINSHORT
+    MAX = GObject.G_MAXSHORT
+    MIN = GObject.G_MINSHORT
 
     def test_short_return(self):
         self.assertEqual(self.MAX, GIMarshallingTests.short_return_max())
@@ -357,7 +368,7 @@ class TestShort(unittest.TestCase):
 
 class TestUShort(unittest.TestCase):
 
-    MAX = GObject.constants.G_MAXUSHORT
+    MAX = GObject.G_MAXUSHORT
 
     def test_ushort_return(self):
         self.assertEqual(self.MAX, GIMarshallingTests.ushort_return())
@@ -383,8 +394,8 @@ class TestUShort(unittest.TestCase):
 
 class TestInt(unittest.TestCase):
 
-    MAX = GObject.constants.G_MAXINT
-    MIN = GObject.constants.G_MININT
+    MAX = GObject.G_MAXINT
+    MIN = GObject.G_MININT
 
     def test_int_return(self):
         self.assertEqual(self.MAX, GIMarshallingTests.int_return_max())
@@ -417,7 +428,7 @@ class TestInt(unittest.TestCase):
 
 class TestUInt(unittest.TestCase):
 
-    MAX = GObject.constants.G_MAXUINT
+    MAX = GObject.G_MAXUINT
 
     def test_uint_return(self):
         self.assertEqual(self.MAX, GIMarshallingTests.uint_return())
@@ -443,8 +454,8 @@ class TestUInt(unittest.TestCase):
 
 class TestLong(unittest.TestCase):
 
-    MAX = GObject.constants.G_MAXLONG
-    MIN = GObject.constants.G_MINLONG
+    MAX = GObject.G_MAXLONG
+    MIN = GObject.G_MINLONG
 
     def test_long_return(self):
         self.assertEqual(self.MAX, GIMarshallingTests.long_return_max())
@@ -476,7 +487,7 @@ class TestLong(unittest.TestCase):
 
 class TestULong(unittest.TestCase):
 
-    MAX = GObject.constants.G_MAXULONG
+    MAX = GObject.G_MAXULONG
 
     def test_ulong_return(self):
         self.assertEqual(self.MAX, GIMarshallingTests.ulong_return())
@@ -502,8 +513,8 @@ class TestULong(unittest.TestCase):
 
 class TestSSize(unittest.TestCase):
 
-    MAX = GObject.constants.G_MAXLONG
-    MIN = GObject.constants.G_MINLONG
+    MAX = GObject.G_MAXLONG
+    MIN = GObject.G_MINLONG
 
     def test_ssize_return(self):
         self.assertEqual(self.MAX, GIMarshallingTests.ssize_return_max())
@@ -535,7 +546,7 @@ class TestSSize(unittest.TestCase):
 
 class TestSize(unittest.TestCase):
 
-    MAX = GObject.constants.G_MAXULONG
+    MAX = GObject.G_MAXULONG
 
     def test_size_return(self):
         self.assertEqual(self.MAX, GIMarshallingTests.size_return())
@@ -559,10 +570,26 @@ class TestSize(unittest.TestCase):
         self.assertEqual(0, GIMarshallingTests.size_inout(Number(self.MAX)))
 
 
+class TestTimet(unittest.TestCase):
+
+    def test_time_t_return(self):
+        self.assertEqual(1234567890, GIMarshallingTests.time_t_return())
+
+    def test_time_t_in(self):
+        GIMarshallingTests.time_t_in(1234567890)
+        self.assertRaises(TypeError, GIMarshallingTests.time_t_in, "hello")
+
+    def test_time_t_out(self):
+        self.assertEqual(1234567890, GIMarshallingTests.time_t_out())
+
+    def test_time_t_inout(self):
+        self.assertEqual(0, GIMarshallingTests.time_t_inout(1234567890))
+
+
 class TestFloat(unittest.TestCase):
 
-    MAX = GObject.constants.G_MAXFLOAT
-    MIN = GObject.constants.G_MINFLOAT
+    MAX = GObject.G_MAXFLOAT
+    MIN = GObject.G_MINFLOAT
 
     def test_float_return(self):
         self.assertAlmostEqual(self.MAX, GIMarshallingTests.float_return())
@@ -581,8 +608,8 @@ class TestFloat(unittest.TestCase):
 
 class TestDouble(unittest.TestCase):
 
-    MAX = GObject.constants.G_MAXDOUBLE
-    MIN = GObject.constants.G_MINDOUBLE
+    MAX = GObject.G_MAXDOUBLE
+    MIN = GObject.G_MINDOUBLE
 
     def test_double_return(self):
         self.assertAlmostEqual(self.MAX, GIMarshallingTests.double_return())
@@ -661,6 +688,37 @@ class TestUtf8(unittest.TestCase):
         self.assertEqual("", GIMarshallingTests.utf8_full_inout(CONSTANT_UTF8))
 
 
+class TestFilename(unittest.TestCase):
+    def setUp(self):
+        self.workdir = tempfile.mkdtemp()
+
+    def tearDown(self):
+        shutil.rmtree(self.workdir)
+
+    def test_filename_in(self):
+        fname = os.path.join(self.workdir, _unicode('testäø.txt'))
+        self.assertRaises(GLib.GError, GLib.file_get_contents, fname)
+
+        with open(fname.encode('UTF-8'), 'wb') as f:
+            f.write(b'hello world!\n\x01\x02')
+
+        (result, contents) = GLib.file_get_contents(fname)
+        self.assertEqual(result, True)
+        self.assertEqual(contents, b'hello world!\n\x01\x02')
+
+    def test_filename_out(self):
+        self.assertRaises(GLib.GError, GLib.Dir.make_tmp, 'test')
+
+        dirname = GLib.Dir.make_tmp('testäø.XXXXXX')
+        self.assertTrue('/testäø.' in dirname, dirname)
+        dirname = _bytes(dirname)
+        self.assertTrue(os.path.isdir(dirname))
+        os.rmdir(dirname)
+
+    def test_filename_type_error(self):
+        self.assertRaises(TypeError, GLib.file_get_contents, 23)
+
+
 class TestArray(unittest.TestCase):
 
     def test_array_fixed_int_return(self):
@@ -689,8 +747,16 @@ class TestArray(unittest.TestCase):
     def test_array_return(self):
         self.assertEqual([-1, 0, 1, 2], GIMarshallingTests.array_return())
 
+    def test_array_return_etc(self):
+        self.assertEqual(([5, 0, 1, 9], 14), GIMarshallingTests.array_return_etc(5, 9))
+
     def test_array_in(self):
         GIMarshallingTests.array_in(Sequence([-1, 0, 1, 2]))
+        GIMarshallingTests.array_in_guint64_len(Sequence([-1, 0, 1, 2]))
+        GIMarshallingTests.array_in_guint8_len(Sequence([-1, 0, 1, 2]))
+
+    def test_array_in_len_before(self):
+        GIMarshallingTests.array_in_len_before(Sequence([-1, 0, 1, 2]))
 
     def test_array_in_len_zero_terminated(self):
         GIMarshallingTests.array_in_len_zero_terminated(Sequence([-1, 0, 1, 2]))
@@ -699,12 +765,22 @@ class TestArray(unittest.TestCase):
         GIMarshallingTests.array_uint8_in(Sequence([97, 98, 99, 100]))
         GIMarshallingTests.array_uint8_in(_bytes("abcd"))
 
+    def test_array_string_in(self):
+        GIMarshallingTests.array_string_in(['foo', 'bar'])
+
     def test_array_out(self):
         self.assertEqual([-1, 0, 1, 2], GIMarshallingTests.array_out())
 
+    def test_array_out_etc(self):
+        self.assertEqual(([-5, 0, 1, 9], 4), GIMarshallingTests.array_out_etc(-5, 9))
+
     def test_array_inout(self):
         self.assertEqual([-2, -1, 0, 1, 2], GIMarshallingTests.array_inout(Sequence([-1, 0, 1, 2])))
 
+    def test_array_inout_etc(self):
+        self.assertEqual(([-5, -1, 0, 1, 9], 4),
+                         GIMarshallingTests.array_inout_etc(-5, Sequence([-1, 0, 1, 2]), 9))
+
     def test_method_array_in(self):
         object_ = GIMarshallingTests.Object()
         object_.method_array_in(Sequence([-1, 0, 1, 2]))
@@ -736,6 +812,29 @@ class TestArray(unittest.TestCase):
 
         GIMarshallingTests.array_struct_in([struct1, struct2, struct3])
 
+    def test_array_boxed_struct_take_in(self):
+        struct1 = GIMarshallingTests.BoxedStruct()
+        struct1.long_ = 1
+        struct2 = GIMarshallingTests.BoxedStruct()
+        struct2.long_ = 2
+        struct3 = GIMarshallingTests.BoxedStruct()
+        struct3.long_ = 3
+
+        GIMarshallingTests.array_struct_take_in([struct1, struct2, struct3])
+
+        self.assertEqual(1, struct1.long_)
+
+    @unittest.expectedFailure
+    def test_array_boxed_struct_return(self):
+        (struct1, struct2, struct3) = GIMarshallingTests.array_zero_terminated_return_struct()
+        self.assertEqual(GIMarshallingTests.BoxedStruct, type(struct1))
+        self.assertEqual(GIMarshallingTests.BoxedStruct, type(struct2))
+        self.assertEqual(GIMarshallingTests.BoxedStruct, type(struct3))
+        # FIXME: gets bogus values
+        self.assertEqual(42, struct1.long_)
+        self.assertEqual(43, struct2.long_)
+        self.assertEqual(44, struct3.long_)
+
     def test_array_simple_struct_in(self):
         struct1 = GIMarshallingTests.SimpleStruct()
         struct1.long_ = 1
@@ -776,6 +875,12 @@ class TestArray(unittest.TestCase):
     def test_array_zero_terminated_inout(self):
         self.assertEqual(['-1', '0', '1', '2'], GIMarshallingTests.array_zero_terminated_inout(['0', '1', '2']))
 
+    def test_init_function(self):
+        self.assertEqual((True, []), GIMarshallingTests.init_function([]))
+        self.assertEqual((True, []), GIMarshallingTests.init_function(['hello']))
+        self.assertEqual((True, ['hello']),
+                         GIMarshallingTests.init_function(['hello', 'world']))
+
 
 class TestGStrv(unittest.TestCase):
 
@@ -819,6 +924,9 @@ class TestGArray(unittest.TestCase):
     def test_garray_int_none_return(self):
         self.assertEqual([-1, 0, 1, 2], GIMarshallingTests.garray_int_none_return())
 
+    def test_garray_uint64_none_return(self):
+        self.assertEqual([0, GObject.G_MAXUINT64], GIMarshallingTests.garray_uint64_none_return())
+
     def test_garray_utf8_none_return(self):
         self.assertEqual(['0', '1', '2'], GIMarshallingTests.garray_utf8_none_return())
 
@@ -836,6 +944,9 @@ class TestGArray(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.garray_int_none_in, 42)
         self.assertRaises(TypeError, GIMarshallingTests.garray_int_none_in, None)
 
+    def test_garray_uint64_none_in(self):
+        GIMarshallingTests.garray_uint64_none_in(Sequence([0, GObject.G_MAXUINT64]))
+
     def test_garray_utf8_none_in(self):
         GIMarshallingTests.garray_utf8_none_in(Sequence(['0', '1', '2']))
 
@@ -848,6 +959,11 @@ class TestGArray(unittest.TestCase):
     def test_garray_utf8_full_out(self):
         self.assertEqual(['0', '1', '2'], GIMarshallingTests.garray_utf8_full_out())
 
+    @unittest.skipUnless(hasattr(GIMarshallingTests, 'garray_utf8_full_out_caller_allocated'),
+                         'too old gobject-introspection')
+    def test_garray_utf8_full_out_caller_allocated(self):
+        self.assertEqual(['0', '1', '2'], GIMarshallingTests.garray_utf8_full_out_caller_allocated())
+
     def test_garray_utf8_none_inout(self):
         self.assertEqual(['-2', '-1', '0', '1'], GIMarshallingTests.garray_utf8_none_inout(Sequence(('0', '1', '2'))))
 
@@ -891,11 +1007,68 @@ class TestGPtrArray(unittest.TestCase):
         self.assertEqual(['-2', '-1', '0', '1'], GIMarshallingTests.gptrarray_utf8_full_inout(['0', '1', '2']))
 
 
+class TestGBytes(unittest.TestCase):
+    def test_gbytes_create(self):
+        b = GLib.Bytes.new(b'\x00\x01\xFF')
+        self.assertEqual(3, b.get_size())
+        self.assertEqual(b'\x00\x01\xFF', b.get_data())
+
+    def test_gbytes_create_take(self):
+        b = GLib.Bytes.new_take(b'\x00\x01\xFF')
+        self.assertEqual(3, b.get_size())
+        self.assertEqual(b'\x00\x01\xFF', b.get_data())
+
+    @unittest.skipUnless(hasattr(GIMarshallingTests, 'gbytes_full_return'),
+                         'too old gobject-introspection')
+    def test_gbytes_full_return(self):
+        b = GIMarshallingTests.gbytes_full_return()
+        self.assertEqual(4, b.get_size())
+        self.assertEqual(b'\x00\x31\xFF\x33', b.get_data())
+
+    @unittest.skipUnless(hasattr(GIMarshallingTests, 'gbytes_full_return'),
+                         'too old gobject-introspection')
+    def test_gbytes_none_in(self):
+        b = GIMarshallingTests.gbytes_full_return()
+        GIMarshallingTests.gbytes_none_in(b)
+
+    def test_compare(self):
+        a1 = GLib.Bytes.new(b'\x00\x01\xFF')
+        a2 = GLib.Bytes.new(b'\x00\x01\xFF')
+        b = GLib.Bytes.new(b'\x00\x01\xFE')
+
+        self.assertTrue(a1.equal(a2))
+        self.assertTrue(a2.equal(a1))
+        self.assertFalse(a1.equal(b))
+        self.assertFalse(b.equal(a2))
+
+        self.assertEqual(0, a1.compare(a2))
+        self.assertEqual(1, a1.compare(b))
+        self.assertEqual(-1, b.compare(a1))
+
+
+class TestGByteArray(unittest.TestCase):
+    def test_new(self):
+        ba = GLib.ByteArray.new()
+        self.assertEqual(b'', ba)
+
+        ba = GLib.ByteArray.new_take(b'\x01\x02\xFF')
+        self.assertEqual(b'\x01\x02\xFF', ba)
+
+    def test_bytearray_full_return(self):
+        self.assertEqual(b'\x001\xFF3', GIMarshallingTests.bytearray_full_return())
+
+    def test_bytearray_none_in(self):
+        GIMarshallingTests.bytearray_none_in(b'\x00\x31\xFF\x33')
+
+
 class TestGList(unittest.TestCase):
 
     def test_glist_int_none_return(self):
         self.assertEqual([-1, 0, 1, 2], GIMarshallingTests.glist_int_none_return())
 
+    def test_glist_uint32_none_return(self):
+        self.assertEqual([0, GObject.G_MAXUINT32], GIMarshallingTests.glist_uint32_none_return())
+
     def test_glist_utf8_none_return(self):
         self.assertEqual(['0', '1', '2'], GIMarshallingTests.glist_utf8_none_return())
 
@@ -913,6 +1086,9 @@ class TestGList(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.glist_int_none_in, 42)
         self.assertRaises(TypeError, GIMarshallingTests.glist_int_none_in, None)
 
+    def test_glist_uint32_none_in(self):
+        GIMarshallingTests.glist_uint32_none_in(Sequence((0, GObject.G_MAXUINT32)))
+
     def test_glist_utf8_none_in(self):
         GIMarshallingTests.glist_utf8_none_in(Sequence(('0', '1', '2')))
 
@@ -1048,6 +1224,23 @@ class TestGValue(unittest.TestCase):
         value.set_int64(GObject.G_MAXINT64)
         GIMarshallingTests.gvalue_int64_in(value)
 
+    def test_gvalue_in_with_type(self):
+        value = GObject.Value()
+        value.init(GObject.TYPE_STRING)
+        value.set_string('foo')
+        GIMarshallingTests.gvalue_in_with_type(value, GObject.TYPE_STRING)
+
+        value = GObject.Value()
+        value.init(GIMarshallingTests.Flags.__gtype__)
+        value.set_flags(GIMarshallingTests.Flags.VALUE1)
+        GIMarshallingTests.gvalue_in_with_type(value, GObject.TYPE_FLAGS)
+
+    def test_gvalue_in_enum(self):
+        value = GObject.Value()
+        value.init(GIMarshallingTests.Enum.__gtype__)
+        value.set_enum(GIMarshallingTests.Enum.VALUE3)
+        GIMarshallingTests.gvalue_in_enum(value)
+
     def test_gvalue_out(self):
         self.assertEqual(42, GIMarshallingTests.gvalue_out())
 
@@ -1072,6 +1265,88 @@ class TestGValue(unittest.TestCase):
         values = GIMarshallingTests.return_gvalue_flat_array()
         self.assertEqual(values, [42, '42', True])
 
+    def test_gvalue_gobject_ref_counts(self):
+        # Tests a GObject held by a GValue
+        obj = GObject.Object()
+        ref = weakref.ref(obj)
+        grefcount = obj.__grefcount__
+
+        value = GObject.Value()
+        value.init(GObject.TYPE_OBJECT)
+
+        # TYPE_OBJECT will inc ref count as it should
+        value.set_object(obj)
+        self.assertEqual(obj.__grefcount__, grefcount + 1)
+
+        # multiple set_object should not inc ref count
+        value.set_object(obj)
+        self.assertEqual(obj.__grefcount__, grefcount + 1)
+
+        # get_object will re-use the same wrapper as obj
+        res = value.get_object()
+        self.assertEqual(obj, res)
+        self.assertEqual(obj.__grefcount__, grefcount + 1)
+
+        # multiple get_object should not inc ref count
+        res = value.get_object()
+        self.assertEqual(obj.__grefcount__, grefcount + 1)
+
+        # deletion of the result and value holder should bring the
+        # refcount back to where we started
+        del res
+        del value
+        gc.collect()
+        self.assertEqual(obj.__grefcount__, grefcount)
+
+        del obj
+        gc.collect()
+        self.assertEqual(ref(), None)
+
+    def test_gvalue_boxed_ref_counts(self):
+        # Tests a boxed type wrapping a python object pointer (TYPE_PYOBJECT)
+        # held by a GValue
+        class Obj(object):
+            pass
+
+        obj = Obj()
+        ref = weakref.ref(obj)
+        refcount = sys.getrefcount(obj)
+
+        value = GObject.Value()
+        value.init(GObject.TYPE_PYOBJECT)
+
+        # boxed TYPE_PYOBJECT will inc ref count as it should
+        value.set_boxed(obj)
+        self.assertEqual(sys.getrefcount(obj), refcount + 1)
+
+        # multiple set_boxed should not inc ref count
+        value.set_boxed(obj)
+        self.assertEqual(sys.getrefcount(obj), refcount + 1)
+
+        res = value.get_boxed()
+        self.assertEqual(obj, res)
+        self.assertEqual(sys.getrefcount(obj), refcount + 2)
+
+        # multiple get_boxed should not inc ref count
+        res = value.get_boxed()
+        self.assertEqual(sys.getrefcount(obj), refcount + 2)
+
+        # deletion of the result and value holder should bring the
+        # refcount back to where we started
+        del res
+        del value
+        gc.collect()
+        self.assertEqual(sys.getrefcount(obj), refcount)
+
+        del obj
+        gc.collect()
+        self.assertEqual(ref(), None)
+
+    # FIXME: crashes
+    def disabled_test_gvalue_flat_array_round_trip(self):
+        self.assertEqual([42, '42', True],
+                         GIMarshallingTests.gvalue_flat_array_round_trip(42, '42', True))
+
 
 class TestGClosure(unittest.TestCase):
 
@@ -1086,6 +1361,42 @@ class TestGClosure(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.gclosure_in, None)
 
 
+class TestCallbacks(unittest.TestCase):
+    def test_return_value_only(self):
+        def cb():
+            return 5
+        self.assertEqual(GIMarshallingTests.callback_return_value_only(cb), 5)
+
+    @unittest.expectedFailure
+    def test_one_out_arg(self):
+        def cb():
+            return 5.5
+        self.assertAlmostEqual(GIMarshallingTests.callback_one_out_parameter(cb), 5.5)
+
+    @unittest.expectedFailure
+    def test_multiple_out_args(self):
+        def cb():
+            return (5.5, 42.0)
+        res = GIMarshallingTests.callback_multiple_out_parameters(cb)
+        self.assertAlmostEqual(res[0], 5.5)
+        self.assertAlmostEqual(res[1], 42.0)
+
+    @unittest.expectedFailure
+    def test_return_and_one_out_arg(self):
+        def cb():
+            return (5, 42.0)
+        res = GIMarshallingTests.callback_return_value_and_one_out_parameter(cb)
+        self.assertEqual(res[0], 5)
+        self.assertAlmostEqual(res[1], 42.0)
+
+    @unittest.expectedFailure
+    def test_return_and_multiple_out_arg(self):
+        def cb():
+            return (5, 42, -1000)
+        self.assertEqual(GIMarshallingTests.callback_return_value_and_multiple_out_parameters(cb),
+                         (5, 42, -1000))
+
+
 class TestPointer(unittest.TestCase):
     def test_pointer_in_return(self):
         self.assertEqual(GIMarshallingTests.pointer_in_return(42), 42)
@@ -1141,6 +1452,11 @@ class TestEnum(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.enum_in, 43)
         self.assertRaises(TypeError, GIMarshallingTests.enum_in, 'GIMarshallingTests.Enum.VALUE3')
 
+    def test_enum_return(self):
+        enum = GIMarshallingTests.enum_returnv()
+        self.assertTrue(isinstance(enum, GIMarshallingTests.Enum))
+        self.assertEqual(enum, GIMarshallingTests.Enum.VALUE3)
+
     def test_enum_out(self):
         enum = GIMarshallingTests.enum_out()
         self.assertTrue(isinstance(enum, GIMarshallingTests.Enum))
@@ -1187,6 +1503,11 @@ class TestGEnum(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.genum_in, 43)
         self.assertRaises(TypeError, GIMarshallingTests.genum_in, 'GIMarshallingTests.GEnum.VALUE3')
 
+    def test_genum_return(self):
+        genum = GIMarshallingTests.genum_returnv()
+        self.assertTrue(isinstance(genum, GIMarshallingTests.GEnum))
+        self.assertEqual(genum, GIMarshallingTests.GEnum.VALUE3)
+
     def test_genum_out(self):
         genum = GIMarshallingTests.genum_out()
         self.assertTrue(isinstance(genum, GIMarshallingTests.GEnum))
@@ -1228,6 +1549,11 @@ class TestGFlags(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.flags_in, 1 << 1)
         self.assertRaises(TypeError, GIMarshallingTests.flags_in, 'GIMarshallingTests.Flags.VALUE2')
 
+    def test_flags_return(self):
+        flags = GIMarshallingTests.flags_returnv()
+        self.assertTrue(isinstance(flags, GIMarshallingTests.Flags))
+        self.assertEqual(flags, GIMarshallingTests.Flags.VALUE2)
+
     def test_flags_out(self):
         flags = GIMarshallingTests.flags_out()
         self.assertTrue(isinstance(flags, GIMarshallingTests.Flags))
@@ -1268,6 +1594,11 @@ class TestNoTypeFlags(unittest.TestCase):
         self.assertRaises(TypeError, GIMarshallingTests.no_type_flags_in, 1 << 1)
         self.assertRaises(TypeError, GIMarshallingTests.no_type_flags_in, 'GIMarshallingTests.NoTypeFlags.VALUE2')
 
+    def test_flags_return(self):
+        flags = GIMarshallingTests.no_type_flags_returnv()
+        self.assertTrue(isinstance(flags, GIMarshallingTests.NoTypeFlags))
+        self.assertEqual(flags, GIMarshallingTests.NoTypeFlags.VALUE2)
+
     def test_flags_out(self):
         flags = GIMarshallingTests.no_type_flags_out()
         self.assertTrue(isinstance(flags, GIMarshallingTests.NoTypeFlags))
@@ -1611,6 +1942,8 @@ class TestGObject(unittest.TestCase):
 class TestPythonGObject(unittest.TestCase):
 
     class Object(GIMarshallingTests.Object):
+        return_for_caller_allocated_out_parameter = 'test caller alloc return'
+
         def __init__(self, int):
             GIMarshallingTests.Object.__init__(self)
             self.val = None
@@ -1625,6 +1958,15 @@ class TestPythonGObject(unittest.TestCase):
         def do_method_int8_out(self):
             return 42
 
+        def do_method_int8_arg_and_out_caller(self, arg):
+            return arg + 1
+
+        def do_method_int8_arg_and_out_callee(self, arg):
+            return arg + 1
+
+        def do_method_str_arg_out_ret(self, arg):
+            return (arg.upper(), len(arg))
+
         def do_method_with_default_implementation(self, int8):
             GIMarshallingTests.Object.do_method_with_default_implementation(self, int8)
             self.props.int += int8
@@ -1645,7 +1987,7 @@ class TestPythonGObject(unittest.TestCase):
             return (5, 42, 99)
 
         def do_vfunc_caller_allocated_out_parameter(self):
-            return 'hello'
+            return self.return_for_caller_allocated_out_parameter
 
     class SubObject(GIMarshallingTests.SubObject):
         def __init__(self, int):
@@ -1680,6 +2022,12 @@ class TestPythonGObject(unittest.TestCase):
         self.assertEqual(object_.val, 84)
         self.assertEqual(object_.method_int8_out(), 42)
 
+        # can be dropped when bumping g-i dependencies to >= 1.35.2
+        if hasattr(object_, 'method_int8_arg_and_out_caller'):
+            self.assertEqual(object_.method_int8_arg_and_out_caller(42), 43)
+            self.assertEqual(object_.method_int8_arg_and_out_callee(42), 43)
+            self.assertEqual(object_.method_str_arg_out_ret('hello'), ('HELLO', 5))
+
         object_.method_with_default_implementation(42)
         self.assertEqual(object_.props.int, 84)
 
@@ -1693,7 +2041,8 @@ class TestPythonGObject(unittest.TestCase):
         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')
+        self.assertEqual(object_.vfunc_caller_allocated_out_parameter(),
+                         object_.return_for_caller_allocated_out_parameter)
 
         class ObjectWithoutVFunc(GIMarshallingTests.Object):
             def __init__(self, int):
@@ -1703,19 +2052,27 @@ class TestPythonGObject(unittest.TestCase):
         object_.method_with_default_implementation(84)
         self.assertEqual(object_.props.int, 84)
 
+    def test_vfunc_return_ref_count(self):
+        obj = self.Object(int=42)
+        ref_count = sys.getrefcount(obj.return_for_caller_allocated_out_parameter)
+        ret = obj.vfunc_caller_allocated_out_parameter()
+        gc.collect()
+
+        # Make sure the return and what the vfunc returned
+        # are equal but not the same object.
+        self.assertEqual(ret, obj.return_for_caller_allocated_out_parameter)
+        self.assertFalse(ret is obj.return_for_caller_allocated_out_parameter)
+        self.assertEqual(sys.getrefcount(obj.return_for_caller_allocated_out_parameter),
+                         ref_count)
+
     def test_subobject_parent_vfunc(self):
         object_ = self.SubObject(int=81)
         object_.method_with_default_implementation(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.assertEqual(GObject.SIGNAL_ACTION, GObject.SignalFlags.ACTION)
-        # compare a static gobject attr with a dynamic GObject attr
-        import gi._gobject
-        self.assertEqual(GObject.GObject, gi._gobject.GObject)
+        from gi.module import DynamicModule
+        self.assertTrue(isinstance(GObject, DynamicModule))
 
     def test_subobject_non_vfunc_do_method(self):
         class PythonObjectWithNonVFuncDoMethod:
@@ -2002,8 +2359,16 @@ class TestOverrides(unittest.TestCase):
         self.assertTrue(isinstance(object_, GIMarshallingTests.OverridesObject))
 
     def test_module_name(self):
+        # overridden types
         self.assertEqual(GIMarshallingTests.OverridesStruct.__module__, 'gi.overrides.GIMarshallingTests')
-        self.assertEqual(GObject.InitiallyUnowned.__module__, 'gi.repository.GObject')
+        self.assertEqual(GIMarshallingTests.OverridesObject.__module__, 'gi.overrides.GIMarshallingTests')
+        self.assertEqual(GObject.Object.__module__, 'gi.overrides.GObject')
+
+        # not overridden
+        self.assertEqual(GIMarshallingTests.SubObject.__module__, 'gi.repository.GIMarshallingTests')
+        # FIXME: does not work with TEST_NAMES='test_thread test_gi.TestOverrides',
+        # it is importlib._bootstrap then
+        #self.assertEqual(GObject.InitiallyUnowned.__module__, 'gi.repository.GObject')
 
 
 class TestDir(unittest.TestCase):
@@ -2169,11 +2534,12 @@ class TestPropertiesObject(unittest.TestCase):
         # 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)
+        try:
+            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)
+        finally:
+            GLib.log_set_always_fatal(old_mask)
 
         obj = GIMarshallingTests.PropertiesObject(some_char=-42)
         self.assertEqual(obj.props.some_char, -42)
@@ -2320,6 +2686,28 @@ class TestPropertiesObject(unittest.TestCase):
         obj = GIMarshallingTests.PropertiesObject(some_boxed_struct=struct1)
         self.assertEqual(obj.props.some_boxed_struct.long_, 1)
 
+    @unittest.skipUnless(hasattr(GIMarshallingTests.PropertiesObject, 'some_variant'),
+                         'too old gobject-introspection')
+    def test_variant(self):
+        self.assertEqual(self.obj.props.some_variant, None)
+
+        self.obj.props.some_variant = GLib.Variant('o', '/myobj')
+        self.assertEqual(self.obj.props.some_variant.get_type_string(), 'o')
+        self.assertEqual(self.obj.props.some_variant.print_(False), "'/myobj'")
+
+        self.obj.props.some_variant = None
+        self.assertEqual(self.obj.props.some_variant, None)
+
+        obj = GIMarshallingTests.PropertiesObject(some_variant=GLib.Variant('b', True))
+        self.assertEqual(obj.props.some_variant.get_type_string(), 'b')
+        self.assertEqual(obj.props.some_variant.get_boolean(), True)
+
+        self.assertRaises(TypeError, setattr, self.obj.props, 'some_variant', 'foo')
+        self.assertRaises(TypeError, setattr, self.obj.props, 'some_variant', 23)
+
+        self.assertEqual(obj.props.some_variant.get_type_string(), 'b')
+        self.assertEqual(obj.props.some_variant.get_boolean(), True)
+
 
 class TestKeywords(unittest.TestCase):
     def test_method(self):
@@ -2406,3 +2794,33 @@ class TestObjectInfo(unittest.TestCase):
         repo = gi.gi.Repository.get_default()
         info = repo.find_by_name('GObject', 'Object')
         self.assertFalse(info.get_abstract())
+
+
+class TestSignatureArgs(unittest.TestCase):
+    def test_split_args_multi_out(self):
+        in_args, out_args = gi.types.split_function_info_args(GIMarshallingTests.int_out_out.__info__)
+        self.assertEqual(len(in_args), 0)
+        self.assertEqual(len(out_args), 2)
+        self.assertEqual(out_args[0].get_pytype_hint(), 'int')
+        self.assertEqual(out_args[1].get_pytype_hint(), 'int')
+
+    def test_split_args_inout(self):
+        in_args, out_args = gi.types.split_function_info_args(GIMarshallingTests.long_inout_max_min.__info__)
+        self.assertEqual(len(in_args), 1)
+        self.assertEqual(len(out_args), 1)
+        self.assertEqual(in_args[0].get_name(), out_args[0].get_name())
+        self.assertEqual(in_args[0].get_pytype_hint(), out_args[0].get_pytype_hint())
+
+    def test_split_args_none(self):
+        obj = GIMarshallingTests.Object(int=33)
+        in_args, out_args = gi.types.split_function_info_args(obj.none_inout.__info__)
+        self.assertEqual(len(in_args), 1)
+        self.assertEqual(len(out_args), 1)
+
+    def test_final_signature_with_full_inout(self):
+        self.assertEqual(GIMarshallingTests.Object.full_inout.__doc__,
+                         'full_inout(object:GIMarshallingTests.Object) -> object:GIMarshallingTests.Object')
+
+    def test_overridden_doc_is_not_clobbered(self):
+        self.assertEqual(GIMarshallingTests.OverridesObject.method.__doc__,
+                         'Overridden doc string.')
index a36eca6..9ef60e4 100644 (file)
@@ -1,9 +1,15 @@
 # -*- Mode: Python -*-
+# encoding: UTF-8
 
 import unittest
 import os.path
+import warnings
+import subprocess
 
 from gi.repository import GLib
+from gi import PyGIDeprecationWarning
+
+from compathelper import _unicode, _bytes
 
 
 class TestGLib(unittest.TestCase):
@@ -13,3 +19,188 @@ class TestGLib(unittest.TestCase):
         self.assertTrue(os.path.exists(bash_path))
 
         self.assertEqual(GLib.find_program_in_path('non existing'), None)
+
+    def test_markup_escape_text(self):
+        self.assertEqual(GLib.markup_escape_text(_unicode('a&bä')), 'a&amp;bä')
+        self.assertEqual(GLib.markup_escape_text(_bytes('a&b\x05')), 'a&amp;b&#x5;')
+
+        # with explicit length argument
+        self.assertEqual(GLib.markup_escape_text(_bytes('a\x05\x01\x02'), 2), 'a&#x5;')
+
+    def test_progname(self):
+        GLib.set_prgname('moo')
+        self.assertEqual(GLib.get_prgname(), 'moo')
+
+    def test_appname(self):
+        GLib.set_application_name('moo')
+        self.assertEqual(GLib.get_application_name(), 'moo')
+
+    def test_xdg_dirs(self):
+        d = GLib.get_user_data_dir()
+        self.assertTrue('/' in d, d)
+        d = GLib.get_user_special_dir(GLib.USER_DIRECTORY_DESKTOP)
+        self.assertTrue('/' in d, d)
+        # also works with backwards compatible enum names
+        self.assertEqual(GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_MUSIC),
+                         GLib.get_user_special_dir(GLib.USER_DIRECTORY_MUSIC))
+
+        for d in GLib.get_system_config_dirs():
+            self.assertTrue('/' in d, d)
+        for d in GLib.get_system_data_dirs():
+            self.assertTrue(isinstance(d, str), d)
+
+    def test_main_depth(self):
+        self.assertEqual(GLib.main_depth(), 0)
+
+    def test_filenames(self):
+        self.assertEqual(GLib.filename_display_name('foo'), 'foo')
+        self.assertEqual(GLib.filename_display_basename('bar/foo'), 'foo')
+
+        # this is locale dependent, so we cannot completely verify the result
+        res = GLib.filename_from_utf8(_unicode('aäb'))
+        self.assertTrue(isinstance(res, bytes))
+        self.assertGreaterEqual(len(res), 3)
+
+        # with explicit length argument
+        self.assertEqual(GLib.filename_from_utf8(_unicode('aäb'), 1), b'a')
+
+    def test_uri_extract(self):
+        res = GLib.uri_list_extract_uris('''# some comment
+http://example.com
+https://my.org/q?x=1&y=2
+            http://gnome.org/new''')
+        self.assertEqual(res, ['http://example.com',
+                               'https://my.org/q?x=1&y=2',
+                               'http://gnome.org/new'])
+
+    def test_current_time(self):
+        with warnings.catch_warnings(record=True) as warn:
+            warnings.simplefilter('always')
+            tm = GLib.get_current_time()
+            self.assertTrue(issubclass(warn[0].category, PyGIDeprecationWarning))
+
+        self.assertTrue(isinstance(tm, float))
+        self.assertGreater(tm, 1350000000.0)
+
+    def test_main_loop(self):
+        # note we do not test run() here, as we use this in countless other
+        # tests
+        ml = GLib.MainLoop()
+        self.assertFalse(ml.is_running())
+
+        context = ml.get_context()
+        self.assertEqual(context, GLib.MainContext.default())
+        self.assertTrue(context.is_owner() in [True, False])
+        self.assertTrue(context.pending() in [True, False])
+        self.assertFalse(context.iteration(False))
+
+    def test_main_loop_with_context(self):
+        context = GLib.MainContext()
+        ml = GLib.MainLoop(context)
+        self.assertFalse(ml.is_running())
+        self.assertEqual(ml.get_context(), context)
+
+    def test_main_context(self):
+        # constructor
+        context = GLib.MainContext()
+        self.assertTrue(context.is_owner() in [True, False])
+        self.assertFalse(context.pending())
+        self.assertFalse(context.iteration(False))
+
+        # GLib API
+        context = GLib.MainContext.default()
+        self.assertTrue(context.is_owner() in [True, False])
+        self.assertTrue(context.pending() in [True, False])
+        self.assertTrue(context.iteration(False) in [True, False])
+
+        # backwards compatible API
+        context = GLib.main_context_default()
+        self.assertTrue(context.is_owner() in [True, False])
+        self.assertTrue(context.pending() in [True, False])
+        self.assertTrue(context.iteration(False) in [True, False])
+
+    def test_io_add_watch_no_data(self):
+        (r, w) = os.pipe()
+        call_data = []
+
+        def cb(fd, condition):
+            call_data.append((fd, condition, os.read(fd, 1)))
+            return True
+
+        # io_add_watch() takes an IOChannel, calling with an fd is deprecated
+        with warnings.catch_warnings(record=True) as warn:
+            warnings.simplefilter('always')
+            GLib.io_add_watch(r, GLib.IOCondition.IN, cb)
+            self.assertTrue(issubclass(warn[0].category, PyGIDeprecationWarning))
+
+        ml = GLib.MainLoop()
+        GLib.timeout_add(10, lambda: os.write(w, b'a') and False)
+        GLib.timeout_add(100, lambda: os.write(w, b'b') and False)
+        GLib.timeout_add(200, ml.quit)
+        ml.run()
+
+        self.assertEqual(call_data, [(r, GLib.IOCondition.IN, b'a'),
+                                     (r, GLib.IOCondition.IN, b'b')])
+
+    def test_io_add_watch_with_data(self):
+        (r, w) = os.pipe()
+        call_data = []
+
+        def cb(fd, condition, data):
+            call_data.append((fd, condition, os.read(fd, 1), data))
+            return True
+
+        # io_add_watch() takes an IOChannel, calling with an fd is deprecated
+        with warnings.catch_warnings(record=True) as warn:
+            warnings.simplefilter('always')
+            GLib.io_add_watch(r, GLib.IOCondition.IN, cb, 'moo')
+            self.assertTrue(issubclass(warn[0].category, PyGIDeprecationWarning))
+
+        ml = GLib.MainLoop()
+        GLib.timeout_add(10, lambda: os.write(w, b'a') and False)
+        GLib.timeout_add(100, lambda: os.write(w, b'b') and False)
+        GLib.timeout_add(200, ml.quit)
+        ml.run()
+
+        self.assertEqual(call_data, [(r, GLib.IOCondition.IN, b'a', 'moo'),
+                                     (r, GLib.IOCondition.IN, b'b', 'moo')])
+
+    def test_io_add_watch_pyfile(self):
+        call_data = []
+
+        cmd = subprocess.Popen('sleep 0.1; echo hello; sleep 0.2; echo world',
+                               shell=True, stdout=subprocess.PIPE)
+
+        def cb(file, condition):
+            call_data.append((file, condition, file.readline()))
+            if len(call_data) == 2:
+                # avoid having to wait for the full timeout
+                ml.quit()
+            return True
+
+        # io_add_watch() takes an IOChannel, calling with a Python file is deprecated
+        with warnings.catch_warnings(record=True) as warn:
+            warnings.simplefilter('always')
+            GLib.io_add_watch(cmd.stdout, GLib.IOCondition.IN, cb)
+            self.assertTrue(issubclass(warn[0].category, PyGIDeprecationWarning))
+
+        ml = GLib.MainLoop()
+        GLib.timeout_add(2000, ml.quit)
+        ml.run()
+
+        cmd.wait()
+
+        self.assertEqual(call_data, [(cmd.stdout, GLib.IOCondition.IN, b'hello\n'),
+                                     (cmd.stdout, GLib.IOCondition.IN, b'world\n')])
+
+    def test_glib_version(self):
+        (major, minor, micro) = GLib.glib_version
+        self.assertGreaterEqual(major, 2)
+        self.assertGreaterEqual(minor, 0)
+        self.assertGreaterEqual(micro, 0)
+
+    def test_pyglib_version(self):
+        (major, minor, micro) = GLib.pyglib_version
+        self.assertGreaterEqual(major, 3)
+        self.assertGreaterEqual(minor, 7)
+        self.assertGreaterEqual(micro, 2)
index a28a145..99f471b 100644 (file)
@@ -1,37 +1,93 @@
 # -*- Mode: Python -*-
 
+import sys
 import gc
 import unittest
+import warnings
 
 from gi.repository import GObject
-import sys
+from gi import PyGIDeprecationWarning
+from gi.module import get_introspection_module
+from gi._gobject import _gobject
+
 import testhelper
 
 
 class TestGObjectAPI(unittest.TestCase):
-    def testGObjectModule(self):
-        obj = GObject.GObject()
+    def test_gobject_inheritance(self):
+        # GObject.Object is a class hierarchy as follows:
+        # overrides.Object -> introspection.Object -> static.GObject
+        GIObjectModule = get_introspection_module('GObject')
+        self.assertTrue(issubclass(GObject.Object, GIObjectModule.Object))
+        self.assertTrue(issubclass(GIObjectModule.Object, _gobject.GObject))
+
+        self.assertEqual(_gobject.GObject.__gtype__, GObject.TYPE_OBJECT)
+        self.assertEqual(GIObjectModule.Object.__gtype__, GObject.TYPE_OBJECT)
+        self.assertEqual(GObject.Object.__gtype__, GObject.TYPE_OBJECT)
+
+        # The pytype wrapper should hold the outer most Object class from overrides.
+        self.assertEqual(GObject.TYPE_OBJECT.pytype, GObject.Object)
+
+    @unittest.skipIf(sys.version_info[:2] < (2, 7), 'Python 2.7 is required')
+    def test_gobject_unsupported_overrides(self):
+        obj = GObject.Object()
+
+        with self.assertRaisesRegex(RuntimeError, 'Data access methods are unsupported.*'):
+            obj.get_data()
+
+        with self.assertRaisesRegex(RuntimeError, 'This method is currently unsupported.*'):
+            obj.force_floating()
+
+    def test_compat_api(self):
+        with warnings.catch_warnings(record=True) as w:
+            warnings.simplefilter('always')
+            # GObject formerly exposed a lot of GLib's functions
+            self.assertEqual(GObject.markup_escape_text('foo'), 'foo')
+
+            ml = GObject.MainLoop()
+            self.assertFalse(ml.is_running())
 
-        self.assertEqual(obj.__module__,
-                         'gi._gobject._gobject')
+            context = GObject.main_context_default()
+            self.assertTrue(context.pending() in [False, True])
+
+            context = GObject.MainContext()
+            self.assertFalse(context.pending())
+
+            self.assertTrue(issubclass(w[0].category, PyGIDeprecationWarning))
+            self.assertTrue('GLib.markup_escape_text' in str(w[0]), str(w[0]))
+
+            self.assertLess(GObject.PRIORITY_HIGH, GObject.PRIORITY_DEFAULT)
+
+    def test_min_max_int(self):
+        self.assertEqual(GObject.G_MAXINT16, 2 ** 15 - 1)
+        self.assertEqual(GObject.G_MININT16, -2 ** 15)
+        self.assertEqual(GObject.G_MAXUINT16, 2 ** 16 - 1)
+
+        self.assertEqual(GObject.G_MAXINT32, 2 ** 31 - 1)
+        self.assertEqual(GObject.G_MININT32, -2 ** 31)
+        self.assertEqual(GObject.G_MAXUINT32, 2 ** 32 - 1)
+
+        self.assertEqual(GObject.G_MAXINT64, 2 ** 63 - 1)
+        self.assertEqual(GObject.G_MININT64, -2 ** 63)
+        self.assertEqual(GObject.G_MAXUINT64, 2 ** 64 - 1)
 
 
 class TestReferenceCounting(unittest.TestCase):
-    def testRegularObject(self):
+    def test_regular_object(self):
         obj = GObject.GObject()
         self.assertEqual(obj.__grefcount__, 1)
 
         obj = GObject.new(GObject.GObject)
         self.assertEqual(obj.__grefcount__, 1)
 
-    def testFloating(self):
+    def test_floating(self):
         obj = testhelper.Floating()
         self.assertEqual(obj.__grefcount__, 1)
 
         obj = GObject.new(testhelper.Floating)
         self.assertEqual(obj.__grefcount__, 1)
 
-    def testOwnedByLibrary(self):
+    def test_owned_by_library(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.
@@ -44,7 +100,7 @@ class TestReferenceCounting(unittest.TestCase):
         obj.release()
         self.assertEqual(obj.__grefcount__, 1)
 
-    def testOwnedByLibraryOutOfScope(self):
+    def test_owned_by_library_out_of_scope(self):
         obj = testhelper.OwnedByLibrary()
         self.assertEqual(obj.__grefcount__, 2)
 
@@ -62,7 +118,7 @@ class TestReferenceCounting(unittest.TestCase):
         obj.release()
         self.assertEqual(obj.__grefcount__, 1)
 
-    def testOwnedByLibraryUsingGObjectNew(self):
+    def test_owned_by_library_using_gobject_new(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.
@@ -75,7 +131,7 @@ class TestReferenceCounting(unittest.TestCase):
         obj.release()
         self.assertEqual(obj.__grefcount__, 1)
 
-    def testOwnedByLibraryOutOfScopeUsingGobjectNew(self):
+    def test_owned_by_library_out_of_scope_using_gobject_new(self):
         obj = GObject.new(testhelper.OwnedByLibrary)
         self.assertEqual(obj.__grefcount__, 2)
 
@@ -93,7 +149,7 @@ class TestReferenceCounting(unittest.TestCase):
         obj.release()
         self.assertEqual(obj.__grefcount__, 1)
 
-    def testFloatingAndSunk(self):
+    def test_floating_and_sunk(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.
@@ -106,7 +162,7 @@ class TestReferenceCounting(unittest.TestCase):
         obj.release()
         self.assertEqual(obj.__grefcount__, 1)
 
-    def testFloatingAndSunkOutOfScope(self):
+    def test_floating_and_sunk_out_of_scope(self):
         obj = testhelper.FloatingAndSunk()
         self.assertEqual(obj.__grefcount__, 2)
 
@@ -124,7 +180,7 @@ class TestReferenceCounting(unittest.TestCase):
         obj.release()
         self.assertEqual(obj.__grefcount__, 1)
 
-    def testFloatingAndSunkUsingGObjectNew(self):
+    def test_floating_and_sunk_using_gobject_new(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.
@@ -137,7 +193,7 @@ class TestReferenceCounting(unittest.TestCase):
         obj.release()
         self.assertEqual(obj.__grefcount__, 1)
 
-    def testFloatingAndSunkOutOfScopeUsingGObjectNew(self):
+    def test_floating_and_sunk_out_of_scope_using_gobject_new(self):
         obj = GObject.new(testhelper.FloatingAndSunk)
         self.assertEqual(obj.__grefcount__, 2)
 
@@ -155,7 +211,7 @@ class TestReferenceCounting(unittest.TestCase):
         obj.release()
         self.assertEqual(obj.__grefcount__, 1)
 
-    def testUninitializedObject(self):
+    def test_uninitialized_object(self):
         class Obj(GObject.GObject):
             def __init__(self):
                 x = self.__grefcount__
@@ -176,19 +232,19 @@ 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):
+    def test_new_instance_has_two_refs(self):
         obj = GObject.GObject()
         self.assertEqual(sys.getrefcount(obj), 2)
 
-    def testNewInstanceHasTwoRefsUsingGObjectNew(self):
+    def test_new_instance_has_two_refs_using_gobject_new(self):
         obj = GObject.new(GObject.GObject)
         self.assertEqual(sys.getrefcount(obj), 2)
 
-    def testNewSubclassInstanceHasTwoRefs(self):
+    def test_new_subclass_instance_has_two_refs(self):
         obj = A()
         self.assertEqual(sys.getrefcount(obj), 2)
 
-    def testNewSubclassInstanceHasTwoRefsUsingGObjectNew(self):
+    def test_new_subclass_instance_has_two_refs_using_gobject_new(self):
         obj = GObject.new(A)
         self.assertEqual(sys.getrefcount(obj), 2)
 
@@ -206,7 +262,7 @@ class TestContextManagers(unittest.TestCase):
         self.obj = self.ContextTestObject()
         self.handler = self.obj.connect('notify::prop', self.on_prop_set)
 
-    def testFreezeNotifyContext(self):
+    def test_freeze_notify_context(self):
         # Verify prop tracking list
         self.assertEqual(self.tracking, [])
         self.obj.props.prop = 1
@@ -215,22 +271,28 @@ class TestContextManagers(unittest.TestCase):
         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.
+        pyref_count = sys.getrefcount(self.obj)
+
+        # Using the context manager the tracking list should not be affected.
+        # The GObject reference count should stay the same and the python
+        # object ref-count should go up.
         with self.obj.freeze_notify():
-            self.assertEqual(self.obj.__grefcount__, 2)
+            self.assertEqual(self.obj.__grefcount__, 1)
+            self.assertEqual(sys.getrefcount(self.obj), pyref_count + 1)
             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
+        # the tracking list will be modified, and the python object ref
         # count goes back down.
+        gc.collect()
         self.assertEqual(self.obj.props.prop, 3)
         self.assertEqual(self.tracking, [1, 2, 3])
         self.assertEqual(self.obj.__grefcount__, 1)
+        self.assertEqual(sys.getrefcount(self.obj), pyref_count)
 
-    def testHandlerBlockContext(self):
+    def test_handler_block_context(self):
         # Verify prop tracking list
         self.assertEqual(self.tracking, [])
         self.obj.props.prop = 1
@@ -239,10 +301,14 @@ class TestContextManagers(unittest.TestCase):
         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.
+        pyref_count = sys.getrefcount(self.obj)
+
+        # Using the context manager the tracking list should not be affected.
+        # The GObject reference count should stay the same and the python
+        # object ref-count should go up.
         with self.obj.handler_block(self.handler):
-            self.assertEqual(self.obj.__grefcount__, 2)
+            self.assertEqual(self.obj.__grefcount__, 1)
+            self.assertEqual(sys.getrefcount(self.obj), pyref_count + 1)
             self.obj.props.prop = 3
             self.assertEqual(self.obj.props.prop, 3)
             self.assertEqual(self.tracking, [1, 2])
@@ -250,11 +316,13 @@ class TestContextManagers(unittest.TestCase):
         # 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.
+        gc.collect()
         self.assertEqual(self.obj.props.prop, 3)
         self.assertEqual(self.tracking, [1, 2])
         self.assertEqual(self.obj.__grefcount__, 1)
+        self.assertEqual(sys.getrefcount(self.obj), pyref_count)
 
-    def testFreezeNotifyContextNested(self):
+    def test_freeze_notify_context_nested(self):
         self.assertEqual(self.tracking, [])
         with self.obj.freeze_notify():
             self.obj.props.prop = 1
@@ -274,7 +342,7 @@ class TestContextManagers(unittest.TestCase):
         # and the last one sent.
         self.assertEqual(self.tracking, [3])
 
-    def testHandlerBlockContextNested(self):
+    def test_handler_block_context_nested(self):
         self.assertEqual(self.tracking, [])
         with self.obj.handler_block(self.handler):
             self.obj.props.prop = 1
@@ -295,7 +363,7 @@ class TestContextManagers(unittest.TestCase):
         self.assertEqual(self.obj.props.prop, 3)
         self.assertEqual(self.tracking, [])
 
-    def testFreezeNotifyNormalUsageRefCounts(self):
+    def test_freeze_notify_normal_usage_ref_counts(self):
         # Ensure ref counts without using methods as context managers
         # maintain the same count.
         self.assertEqual(self.obj.__grefcount__, 1)
@@ -304,14 +372,14 @@ class TestContextManagers(unittest.TestCase):
         self.obj.thaw_notify()
         self.assertEqual(self.obj.__grefcount__, 1)
 
-    def testHandlerBlockNormalUsageRefCounts(self):
+    def test_handler_block_normal_usage_ref_counts(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):
+    def test_freeze_notify_context_error(self):
         # Test an exception occurring within a freeze context exits the context
         try:
             with self.obj.freeze_notify():
@@ -329,7 +397,7 @@ class TestContextManagers(unittest.TestCase):
         self.obj.props.prop = 2
         self.assertEqual(self.tracking, [1, 2])
 
-    def testHandlerBlockContextError(self):
+    def test_handler_block_context_error(self):
         # Test an exception occurring within a handler block exits the context
         try:
             with self.obj.handler_block(self.handler):
@@ -356,7 +424,7 @@ class TestPropertyBindings(unittest.TestCase):
         self.source = self.TestObject()
         self.target = self.TestObject()
 
-    def testDefaultBinding(self):
+    def test_default_binding(self):
         binding = self.source.bind_property('int_prop', self.target, 'int_prop',
                                             GObject.BindingFlags.DEFAULT)
         binding = binding  # PyFlakes
@@ -371,7 +439,7 @@ class TestPropertyBindings(unittest.TestCase):
         self.assertEqual(self.source.int_prop, 1)
         self.assertEqual(self.target.int_prop, 2)
 
-    def testBiDirectionalBinding(self):
+    def test_bidirectional_binding(self):
         binding = self.source.bind_property('int_prop', self.target, 'int_prop',
                                             GObject.BindingFlags.BIDIRECTIONAL)
         binding = binding  # PyFlakes
@@ -386,7 +454,7 @@ class TestPropertyBindings(unittest.TestCase):
         self.assertEqual(self.source.int_prop, 2)
         self.assertEqual(self.target.int_prop, 2)
 
-    def testTransformToOnly(self):
+    def test_transform_to_only(self):
         def transform_to(binding, value, user_data=None):
             self.assertEqual(user_data, 'test-data')
             return value * 2
@@ -404,7 +472,7 @@ class TestPropertyBindings(unittest.TestCase):
         self.assertEqual(self.source.int_prop, 1)
         self.assertEqual(self.target.int_prop, 1)
 
-    def testTransformFromOnly(self):
+    def test_transform_from_only(self):
         def transform_from(binding, value, user_data=None):
             self.assertEqual(user_data, None)
             return value * 2
@@ -422,7 +490,7 @@ class TestPropertyBindings(unittest.TestCase):
         self.assertEqual(self.source.int_prop, 2)
         self.assertEqual(self.target.int_prop, 1)
 
-    def testTransformBidrectional(self):
+    def test_transform_bidirectional(self):
         def transform_to(binding, value, user_data=None):
             self.assertEqual(user_data, 'test-data')
             return value * 2
@@ -445,7 +513,7 @@ class TestPropertyBindings(unittest.TestCase):
         self.assertEqual(self.source.int_prop, 2)
         self.assertEqual(self.target.int_prop, 4)
 
-    def testExplicitUnbindClearsConnection(self):
+    def test_explicit_unbind_clears_connection(self):
         self.assertEqual(self.source.int_prop, 0)
         self.assertEqual(self.target.int_prop, 0)
 
@@ -465,7 +533,7 @@ class TestPropertyBindings(unittest.TestCase):
         # An already unbound BindingWeakRef will raise if unbind is attempted a second time.
         self.assertRaises(ValueError, binding.unbind)
 
-    def testReferenceCounts(self):
+    def test_reference_counts(self):
         self.assertEqual(self.source.__grefcount__, 1)
         self.assertEqual(self.target.__grefcount__, 1)
 
diff --git a/tests/test_gtype.py b/tests/test_gtype.py
new file mode 100644 (file)
index 0000000..dec716e
--- /dev/null
@@ -0,0 +1,53 @@
+import unittest
+
+from gi.repository import GObject
+from gi.repository import GIMarshallingTests
+
+
+class CustomBase(GObject.GObject):
+    pass
+
+
+class CustomChild(CustomBase, GIMarshallingTests.Interface):
+    pass
+
+
+class TestTypeModuleLevelFunctions(unittest.TestCase):
+    def test_type_name(self):
+        self.assertEqual(GObject.type_name(GObject.TYPE_NONE), 'void')
+        self.assertEqual(GObject.type_name(GObject.TYPE_OBJECT), 'GObject')
+        self.assertEqual(GObject.type_name(GObject.TYPE_PYOBJECT), 'PyObject')
+
+    def test_type_from_name(self):
+        # A complete test is not needed here since the TYPE_* defines are created
+        # using this method.
+        self.assertRaises(RuntimeError, GObject.type_from_name, '!NOT_A_REAL_TYPE!')
+        self.assertEqual(GObject.type_from_name('GObject'), GObject.TYPE_OBJECT)
+        self.assertEqual(GObject.type_from_name('GObject'), GObject.GObject.__gtype__)
+
+    def test_type_is_a(self):
+        self.assertTrue(GObject.type_is_a(CustomBase, GObject.TYPE_OBJECT))
+        self.assertTrue(GObject.type_is_a(CustomChild, CustomBase))
+        self.assertTrue(GObject.type_is_a(CustomBase, GObject.GObject))
+        self.assertTrue(GObject.type_is_a(CustomBase.__gtype__, GObject.TYPE_OBJECT))
+        self.assertFalse(GObject.type_is_a(GObject.TYPE_OBJECT, CustomBase))
+        self.assertFalse(GObject.type_is_a(CustomBase, int))  # invalid type
+        self.assertRaises(TypeError, GObject.type_is_a, CustomBase, 1)
+        self.assertRaises(TypeError, GObject.type_is_a, 2, GObject.TYPE_OBJECT)
+        self.assertRaises(TypeError, GObject.type_is_a, 1, 2)
+
+    def test_type_children(self):
+        self.assertSequenceEqual(GObject.type_children(CustomBase),
+                                 [CustomChild.__gtype__])
+        self.assertEqual(len(GObject.type_children(CustomChild)), 0)
+
+    def test_type_interfaces(self):
+        self.assertEqual(len(GObject.type_interfaces(CustomBase)), 0)
+        self.assertEqual(len(GObject.type_interfaces(CustomChild)), 1)
+        self.assertSequenceEqual(GObject.type_interfaces(CustomChild),
+                                 [GIMarshallingTests.Interface.__gtype__])
+
+    def test_type_parent(self):
+        self.assertEqual(GObject.type_parent(CustomChild), CustomBase.__gtype__)
+        self.assertEqual(GObject.type_parent(CustomBase), GObject.TYPE_OBJECT)
+        self.assertRaises(RuntimeError, GObject.type_parent, GObject.GObject)
index 2df61b1..dd01af8 100644 (file)
@@ -37,12 +37,12 @@ GObject.type_register(MyObject)
 
 class TestIfaceImpl(unittest.TestCase):
 
-    def testReImplementInterface(self):
+    def test_reimplement_interface(self):
         m = MyUnknown()
         m.iface_method()
         self.assertEqual(m.called, True)
 
-    def testImplementInterface(self):
+    def test_implement_interface(self):
         m = MyObject()
         m.iface_method()
         self.assertEqual(m.called, True)
diff --git a/tests/test_internal_api.py b/tests/test_internal_api.py
new file mode 100644 (file)
index 0000000..ca50f6b
--- /dev/null
@@ -0,0 +1,73 @@
+# -*- Mode: Python -*-
+
+import unittest
+
+from gi.repository import GLib, GObject
+
+import testhelper
+import testmodule
+
+
+class TestObject(unittest.TestCase):
+    def test_create_ctor(self):
+        o = testmodule.PyGObject()
+        self.assertTrue(isinstance(o, GObject.Object))
+        self.assertTrue(isinstance(o, testmodule.PyGObject))
+
+        # has expected property
+        self.assertEqual(o.props.label, 'hello')
+        o.props.label = 'goodbye'
+        self.assertEqual(o.props.label, 'goodbye')
+        self.assertRaises(AttributeError, getattr, o.props, 'nosuchprop')
+
+    def test_pyobject_new_test_type(self):
+        o = testhelper.create_test_type()
+        self.assertTrue(isinstance(o, testmodule.PyGObject))
+
+        # has expected property
+        self.assertEqual(o.props.label, 'hello')
+        o.props.label = 'goodbye'
+        self.assertEqual(o.props.label, 'goodbye')
+        self.assertRaises(AttributeError, getattr, o.props, 'nosuchprop')
+
+    def test_new_refcount(self):
+        # TODO: justify why this should be 2
+        self.assertEqual(testhelper.test_g_object_new(), 2)
+
+
+class TestGValueConversion(unittest.TestCase):
+    def test_int(self):
+        self.assertEqual(testhelper.test_value(0), 0)
+        self.assertEqual(testhelper.test_value(5), 5)
+        self.assertEqual(testhelper.test_value(-5), -5)
+        self.assertEqual(testhelper.test_value(GObject.G_MAXINT32), GObject.G_MAXINT32)
+        self.assertEqual(testhelper.test_value(GObject.G_MININT32), GObject.G_MININT32)
+
+    def test_str(self):
+        self.assertEqual(testhelper.test_value('hello'), 'hello')
+
+    def test_int_array(self):
+        self.assertEqual(testhelper.test_value_array([]), [])
+        self.assertEqual(testhelper.test_value_array([0]), [0])
+        ar = list(range(100))
+        self.assertEqual(testhelper.test_value_array(ar), ar)
+
+    def test_str_array(self):
+        self.assertEqual(testhelper.test_value_array([]), [])
+        self.assertEqual(testhelper.test_value_array(['a']), ['a'])
+        ar = ('aa ' * 1000).split()
+        self.assertEqual(testhelper.test_value_array(ar), ar)
+
+
+class TestErrors(unittest.TestCase):
+    def test_gerror(self):
+        callable_ = lambda: GLib.file_get_contents('/nonexisting ')
+        self.assertRaises(GLib.GError, testhelper.test_gerror_exception, callable_)
+
+    def test_no_gerror(self):
+        callable_ = lambda: GLib.file_get_contents(__file__)
+        self.assertEqual(testhelper.test_gerror_exception(callable_), None)
+
+
+if __name__ == '__main__':
+    unittest.main()
diff --git a/tests/test_iochannel.py b/tests/test_iochannel.py
new file mode 100644 (file)
index 0000000..0cc1b4b
--- /dev/null
@@ -0,0 +1,424 @@
+# -*- Mode: Python -*-
+# encoding: UTF-8
+from __future__ import unicode_literals
+
+import unittest
+import tempfile
+import os.path
+import fcntl
+import shutil
+import warnings
+
+from gi.repository import GLib
+from gi import PyGIDeprecationWarning
+
+from compathelper import _unicode
+
+
+class IOChannel(unittest.TestCase):
+    def setUp(self):
+        self.workdir = tempfile.mkdtemp()
+
+        self.testutf8 = os.path.join(self.workdir, 'testutf8.txt')
+        with open(self.testutf8, 'wb') as f:
+            f.write('''hello ♥ world
+second line
+
+À demain!'''.encode('UTF-8'))
+
+        self.testlatin1 = os.path.join(self.workdir, 'testlatin1.txt')
+        with open(self.testlatin1, 'wb') as f:
+            f.write(b'''hell\xf8 world
+second line
+
+\xc0 demain!''')
+
+        self.testout = os.path.join(self.workdir, 'testout.txt')
+
+    def tearDown(self):
+        shutil.rmtree(self.workdir)
+
+    def test_file_readline_utf8(self):
+        ch = GLib.IOChannel(filename=self.testutf8)
+        self.assertEqual(ch.get_encoding(), 'UTF-8')
+        self.assertTrue(ch.get_close_on_unref())
+        self.assertEqual(_unicode(ch.readline()), 'hello ♥ world\n')
+        self.assertEqual(ch.get_buffer_condition(), GLib.IOCondition.IN)
+        self.assertEqual(ch.readline(), 'second line\n')
+        self.assertEqual(ch.readline(), '\n')
+        self.assertEqual(_unicode(ch.readline()), 'À demain!')
+        self.assertEqual(ch.get_buffer_condition(), 0)
+        self.assertEqual(ch.readline(), '')
+        ch.close()
+
+    def test_file_readline_latin1(self):
+        ch = GLib.IOChannel(filename=self.testlatin1, mode='r')
+        ch.set_encoding('latin1')
+        self.assertEqual(ch.get_encoding(), 'latin1')
+        self.assertEqual(_unicode(ch.readline()), 'hellø world\n')
+        self.assertEqual(ch.readline(), 'second line\n')
+        self.assertEqual(ch.readline(), '\n')
+        self.assertEqual(_unicode(ch.readline()), 'À demain!')
+        ch.close()
+
+    def test_file_iter(self):
+        items = []
+        ch = GLib.IOChannel(filename=self.testutf8)
+        for item in ch:
+            items.append(item)
+        self.assertEqual(len(items), 4)
+        self.assertEqual(_unicode(items[0]), 'hello ♥ world\n')
+        ch.close()
+
+    def test_file_readlines(self):
+        ch = GLib.IOChannel(filename=self.testutf8)
+        lines = ch.readlines()
+        # Note, this really ought to be 4, but the static bindings add an extra
+        # empty one
+        self.assertGreaterEqual(len(lines), 4)
+        self.assertLessEqual(len(lines), 5)
+        self.assertEqual(_unicode(lines[0]), 'hello ♥ world\n')
+        self.assertEqual(_unicode(lines[3]), 'À demain!')
+        if len(lines) == 4:
+            self.assertEqual(lines[4], '')
+
+    def test_file_read(self):
+        ch = GLib.IOChannel(filename=self.testutf8)
+        with open(self.testutf8, 'rb') as f:
+            self.assertEqual(ch.read(), f.read())
+
+        ch = GLib.IOChannel(filename=self.testutf8)
+        with open(self.testutf8, 'rb') as f:
+            self.assertEqual(ch.read(10), f.read(10))
+
+        ch = GLib.IOChannel(filename=self.testutf8)
+        with open(self.testutf8, 'rb') as f:
+            self.assertEqual(ch.read(max_count=15), f.read(15))
+
+    def test_seek(self):
+        ch = GLib.IOChannel(filename=self.testutf8)
+        ch.seek(2)
+        self.assertEqual(ch.read(3), b'llo')
+
+        ch.seek(2, 0)  # SEEK_SET
+        self.assertEqual(ch.read(3), b'llo')
+
+        ch.seek(1, 1)  # SEEK_CUR, skip the space
+        self.assertEqual(ch.read(3), b'\xe2\x99\xa5')
+
+        ch.seek(2, 2)  # SEEK_END
+        # FIXME: does not work currently
+        #self.assertEqual(ch.read(2), b'n!')
+
+        # invalid whence value
+        self.assertRaises(ValueError, ch.seek, 0, 3)
+
+    def test_file_write(self):
+        ch = GLib.IOChannel(filename=self.testout, mode='w')
+        ch.set_encoding('latin1')
+        ch.write('hellø world\n')
+        ch.close()
+        ch = GLib.IOChannel(filename=self.testout, mode='a')
+        ch.set_encoding('latin1')
+        ch.write('À demain!')
+        ch.close()
+
+        with open(self.testout, 'rb') as f:
+            self.assertEqual(f.read().decode('latin1'), 'hellø world\nÀ demain!')
+
+    def test_file_writelines(self):
+        ch = GLib.IOChannel(filename=self.testout, mode='w')
+        ch.writelines(['foo', 'bar\n', 'baz\n', 'end'])
+        ch.close()
+
+        with open(self.testout, 'r') as f:
+            self.assertEqual(f.read(), 'foobar\nbaz\nend')
+
+    def test_buffering(self):
+        writer = GLib.IOChannel(filename=self.testout, mode='w')
+        writer.set_encoding(None)
+        self.assertTrue(writer.get_buffered())
+        self.assertGreater(writer.get_buffer_size(), 10)
+
+        reader = GLib.IOChannel(filename=self.testout, mode='r')
+
+        # does not get written immediately on buffering
+        writer.write('abc')
+        self.assertEqual(reader.read(), b'')
+        writer.flush()
+        self.assertEqual(reader.read(), b'abc')
+
+        # does get written immediately without buffering
+        writer.set_buffered(False)
+        writer.write('def')
+        self.assertEqual(reader.read(), b'def')
+
+        # writes after buffer overflow
+        writer.set_buffer_size(10)
+        writer.write('0123456789012')
+        self.assertTrue(reader.read().startswith(b'012'))
+        writer.flush()
+        reader.read()  # ignore bits written after flushing
+
+        # closing flushes
+        writer.set_buffered(True)
+        writer.write('ghi')
+        writer.close()
+        self.assertEqual(reader.read(), b'ghi')
+        reader.close()
+
+    def test_fd_read(self):
+        (r, w) = os.pipe()
+
+        ch = GLib.IOChannel(filedes=r)
+        ch.set_encoding(None)
+        ch.set_flags(ch.get_flags() | GLib.IOFlags.NONBLOCK)
+        self.assertNotEqual(ch.get_flags() | GLib.IOFlags.NONBLOCK, 0)
+        self.assertEqual(ch.read(), b'')
+        os.write(w, b'\x01\x02')
+        self.assertEqual(ch.read(), b'\x01\x02')
+
+        # now test blocking case, after closing the write end
+        ch.set_flags(GLib.IOFlags(ch.get_flags() & ~GLib.IOFlags.NONBLOCK))
+        os.write(w, b'\x03\x04')
+        os.close(w)
+        self.assertEqual(ch.read(), b'\x03\x04')
+
+        ch.close()
+
+    def test_fd_write(self):
+        (r, w) = os.pipe()
+        fcntl.fcntl(r, fcntl.F_SETFL, fcntl.fcntl(r, fcntl.F_GETFL) | os.O_NONBLOCK)
+
+        ch = GLib.IOChannel(filedes=w, mode='w')
+        ch.set_encoding(None)
+        ch.set_buffered(False)
+        ch.write(b'\x01\x02')
+        self.assertEqual(os.read(r, 10), b'\x01\x02')
+
+        # now test blocking case, after closing the write end
+        fcntl.fcntl(r, fcntl.F_SETFL, fcntl.fcntl(r, fcntl.F_GETFL) & ~os.O_NONBLOCK)
+        ch.write(b'\x03\x04')
+        ch.close()
+        self.assertEqual(os.read(r, 10), b'\x03\x04')
+        os.close(r)
+
+    def test_deprecated_method_add_watch_no_data(self):
+        (r, w) = os.pipe()
+
+        ch = GLib.IOChannel(filedes=r)
+        ch.set_encoding(None)
+        ch.set_flags(ch.get_flags() | GLib.IOFlags.NONBLOCK)
+
+        cb_reads = []
+
+        def cb(channel, condition):
+            self.assertEqual(channel, ch)
+            self.assertEqual(condition, GLib.IOCondition.IN)
+            cb_reads.append(channel.read())
+            return True
+
+        # io_add_watch() method is deprecated, use GLib.io_add_watch
+        with warnings.catch_warnings(record=True) as warn:
+            warnings.simplefilter('always')
+            ch.add_watch(GLib.IOCondition.IN, cb)
+            self.assertTrue(issubclass(warn[0].category, PyGIDeprecationWarning))
+
+        ml = GLib.MainLoop()
+
+        GLib.timeout_add(10, lambda: os.write(w, b'a') and False)
+        GLib.timeout_add(100, lambda: os.write(w, b'b') and False)
+        GLib.timeout_add(200, ml.quit)
+        ml.run()
+
+        self.assertEqual(cb_reads, [b'a', b'b'])
+
+    def test_deprecated_method_add_watch_data_priority(self):
+        (r, w) = os.pipe()
+
+        ch = GLib.IOChannel(filedes=r)
+        ch.set_encoding(None)
+        ch.set_flags(ch.get_flags() | GLib.IOFlags.NONBLOCK)
+
+        cb_reads = []
+
+        def cb(channel, condition, data):
+            self.assertEqual(channel, ch)
+            self.assertEqual(condition, GLib.IOCondition.IN)
+            self.assertEqual(data, 'hello')
+            cb_reads.append(channel.read())
+            return True
+
+        ml = GLib.MainLoop()
+        # io_add_watch() method is deprecated, use GLib.io_add_watch
+        with warnings.catch_warnings(record=True) as warn:
+            warnings.simplefilter('always')
+            id = ch.add_watch(GLib.IOCondition.IN, cb, 'hello', priority=GLib.PRIORITY_HIGH)
+            self.assertTrue(issubclass(warn[0].category, PyGIDeprecationWarning))
+
+        self.assertEqual(ml.get_context().find_source_by_id(id).priority,
+                         GLib.PRIORITY_HIGH)
+
+        GLib.timeout_add(10, lambda: os.write(w, b'a') and False)
+        GLib.timeout_add(100, lambda: os.write(w, b'b') and False)
+        GLib.timeout_add(200, ml.quit)
+        ml.run()
+
+        self.assertEqual(cb_reads, [b'a', b'b'])
+
+    def test_add_watch_no_data(self):
+        (r, w) = os.pipe()
+
+        ch = GLib.IOChannel(filedes=r)
+        ch.set_encoding(None)
+        ch.set_flags(ch.get_flags() | GLib.IOFlags.NONBLOCK)
+
+        cb_reads = []
+
+        def cb(channel, condition):
+            self.assertEqual(channel, ch)
+            self.assertEqual(condition, GLib.IOCondition.IN)
+            cb_reads.append(channel.read())
+            return True
+
+        id = GLib.io_add_watch(ch, GLib.PRIORITY_HIGH, GLib.IOCondition.IN, cb)
+
+        ml = GLib.MainLoop()
+        self.assertEqual(ml.get_context().find_source_by_id(id).priority,
+                         GLib.PRIORITY_HIGH)
+        GLib.timeout_add(10, lambda: os.write(w, b'a') and False)
+        GLib.timeout_add(100, lambda: os.write(w, b'b') and False)
+        GLib.timeout_add(200, ml.quit)
+        ml.run()
+
+        self.assertEqual(cb_reads, [b'a', b'b'])
+
+    def test_add_watch_with_data(self):
+        (r, w) = os.pipe()
+
+        ch = GLib.IOChannel(filedes=r)
+        ch.set_encoding(None)
+        ch.set_flags(ch.get_flags() | GLib.IOFlags.NONBLOCK)
+
+        cb_reads = []
+
+        def cb(channel, condition, data):
+            self.assertEqual(channel, ch)
+            self.assertEqual(condition, GLib.IOCondition.IN)
+            self.assertEqual(data, 'hello')
+            cb_reads.append(channel.read())
+            return True
+
+        id = GLib.io_add_watch(ch, GLib.PRIORITY_HIGH, GLib.IOCondition.IN, cb, 'hello')
+
+        ml = GLib.MainLoop()
+        self.assertEqual(ml.get_context().find_source_by_id(id).priority,
+                         GLib.PRIORITY_HIGH)
+        GLib.timeout_add(10, lambda: os.write(w, b'a') and False)
+        GLib.timeout_add(100, lambda: os.write(w, b'b') and False)
+        GLib.timeout_add(200, ml.quit)
+        ml.run()
+
+        self.assertEqual(cb_reads, [b'a', b'b'])
+
+    def test_add_watch_with_multi_data(self):
+        (r, w) = os.pipe()
+
+        ch = GLib.IOChannel(filedes=r)
+        ch.set_encoding(None)
+        ch.set_flags(ch.get_flags() | GLib.IOFlags.NONBLOCK)
+
+        cb_reads = []
+
+        def cb(channel, condition, data1, data2, data3):
+            self.assertEqual(channel, ch)
+            self.assertEqual(condition, GLib.IOCondition.IN)
+            self.assertEqual(data1, 'a')
+            self.assertEqual(data2, 'b')
+            self.assertEqual(data3, 'c')
+            cb_reads.append(channel.read())
+            return True
+
+        id = GLib.io_add_watch(ch, GLib.PRIORITY_HIGH, GLib.IOCondition.IN, cb,
+                               'a', 'b', 'c')
+
+        ml = GLib.MainLoop()
+        self.assertEqual(ml.get_context().find_source_by_id(id).priority,
+                         GLib.PRIORITY_HIGH)
+        GLib.timeout_add(10, lambda: os.write(w, b'a') and False)
+        GLib.timeout_add(100, lambda: os.write(w, b'b') and False)
+        GLib.timeout_add(200, ml.quit)
+        ml.run()
+
+        self.assertEqual(cb_reads, [b'a', b'b'])
+
+    def test_deprecated_add_watch_no_data(self):
+        (r, w) = os.pipe()
+
+        ch = GLib.IOChannel(filedes=r)
+        ch.set_encoding(None)
+        ch.set_flags(ch.get_flags() | GLib.IOFlags.NONBLOCK)
+
+        cb_reads = []
+
+        def cb(channel, condition):
+            self.assertEqual(channel, ch)
+            self.assertEqual(condition, GLib.IOCondition.IN)
+            cb_reads.append(channel.read())
+            return True
+
+        with warnings.catch_warnings(record=True) as warn:
+            warnings.simplefilter('always')
+            id = GLib.io_add_watch(ch, GLib.IOCondition.IN, cb, priority=GLib.PRIORITY_HIGH)
+            self.assertTrue(issubclass(warn[0].category, PyGIDeprecationWarning))
+
+        ml = GLib.MainLoop()
+        self.assertEqual(ml.get_context().find_source_by_id(id).priority,
+                         GLib.PRIORITY_HIGH)
+        GLib.timeout_add(10, lambda: os.write(w, b'a') and False)
+        GLib.timeout_add(100, lambda: os.write(w, b'b') and False)
+        GLib.timeout_add(200, ml.quit)
+        ml.run()
+
+        self.assertEqual(cb_reads, [b'a', b'b'])
+
+    def test_deprecated_add_watch_with_data(self):
+        (r, w) = os.pipe()
+
+        ch = GLib.IOChannel(filedes=r)
+        ch.set_encoding(None)
+        ch.set_flags(ch.get_flags() | GLib.IOFlags.NONBLOCK)
+
+        cb_reads = []
+
+        def cb(channel, condition, data):
+            self.assertEqual(channel, ch)
+            self.assertEqual(condition, GLib.IOCondition.IN)
+            self.assertEqual(data, 'hello')
+            cb_reads.append(channel.read())
+            return True
+
+        with warnings.catch_warnings(record=True) as warn:
+            warnings.simplefilter('always')
+            id = GLib.io_add_watch(ch, GLib.IOCondition.IN, cb, 'hello',
+                                   priority=GLib.PRIORITY_HIGH)
+            self.assertTrue(issubclass(warn[0].category, PyGIDeprecationWarning))
+
+        ml = GLib.MainLoop()
+        self.assertEqual(ml.get_context().find_source_by_id(id).priority,
+                         GLib.PRIORITY_HIGH)
+        GLib.timeout_add(10, lambda: os.write(w, b'a') and False)
+        GLib.timeout_add(100, lambda: os.write(w, b'b') and False)
+        GLib.timeout_add(200, ml.quit)
+        ml.run()
+
+        self.assertEqual(cb_reads, [b'a', b'b'])
+
+    def test_backwards_compat_flags(self):
+        self.assertEqual(GLib.IOCondition.IN, GLib.IO_IN)
+        self.assertEqual(GLib.IOFlags.NONBLOCK, GLib.IO_FLAG_NONBLOCK)
+        self.assertEqual(GLib.IOFlags.IS_SEEKABLE, GLib.IO_FLAG_IS_SEEKABLE)
+        self.assertEqual(GLib.IOStatus.NORMAL, GLib.IO_STATUS_NORMAL)
+
+if __name__ == '__main__':
+    unittest.main()
index 4c7794a..44197b3 100644 (file)
@@ -34,30 +34,31 @@ class TestMainLoop(unittest.TestCase):
             raise Exception("deadbabe")
 
         loop = GLib.MainLoop()
-        GLib.child_watch_add(pid, child_died, loop)
+        GLib.child_watch_add(GLib.PRIORITY_DEFAULT, pid, child_died, loop)
 
         os.close(pipe_r)
         os.write(pipe_w, _bytes("Y"))
         os.close(pipe_w)
 
         def excepthook(type, value, traceback):
-            assert type is Exception
-            assert value.args[0] == "deadbabe"
+            self.assertTrue(type is Exception)
+            self.assertEqual(value.args[0], "deadbabe")
         sys.excepthook = excepthook
-
-        got_exception = False
         try:
-            loop.run()
-        except:
-            got_exception = True
+            got_exception = False
+            try:
+                loop.run()
+            except:
+                got_exception = True
+        finally:
+            sys.excepthook = sys.__excepthook__
 
         #
         # The exception should be handled (by printing it)
         # immediately on return from child_died() rather
         # than here. See bug #303573
         #
-        sys.excepthook = sys.__excepthook__
-        assert not got_exception
+        self.assertFalse(got_exception)
 
     def test_concurrency(self):
         def on_usr1(signum, frame):
@@ -78,3 +79,19 @@ class TestMainLoop(unittest.TestCase):
             loop2.quit()
         finally:
             signal.signal(signal.SIGUSR1, orig_handler)
+
+    def test_sigint(self):
+        pid = os.fork()
+        if pid == 0:
+            time.sleep(0.5)
+            os.kill(os.getppid(), signal.SIGINT)
+            os._exit(0)
+
+        loop = GLib.MainLoop()
+        try:
+            loop.run()
+            self.fail('expected KeyboardInterrupt exception')
+        except KeyboardInterrupt:
+            pass
+        self.assertFalse(loop.is_running())
+        os.waitpid(pid, 0)
index 345d0ad..2900edd 100644 (file)
@@ -10,17 +10,15 @@ try:
 except ImportError:
     from io import StringIO
 
-# 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 gi.repository import GLib
 
 
 class TestOption(unittest.TestCase):
     EXCEPTION_MESSAGE = "This callback fails"
 
     def setUp(self):
-        self.parser = OptionParser("NAMES...",
-                                   description="Option unit test")
+        self.parser = GLib.option.OptionParser("NAMES...",
+                                               description="Option unit test")
         self.parser.add_option("-t", "--test", help="Unit test option",
                                action="store_false", dest="test", default=True)
         self.parser.add_option("--g-fatal-warnings",
@@ -32,22 +30,22 @@ class TestOption(unittest.TestCase):
         def option_callback(option, opt, value, parser):
             raise Exception(self.EXCEPTION_MESSAGE)
 
-        group = OptionGroup(
+        group = GLib.option.OptionGroup(
             "unittest", "Unit test options", "Show all unittest options",
             option_list=[
-                make_option("-f", "-u", "--file", "--unit-file",
-                            type="filename",
-                            dest="unit_file",
-                            help="Unit test option"),
-                make_option("--test-integer",
-                            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"),
+                GLib.option.make_option("-f", "-u", "--file", "--unit-file",
+                                        type="filename",
+                                        dest="unit_file",
+                                        help="Unit test option"),
+                GLib.option.make_option("--test-integer",
+                                        type="int",
+                                        dest="test_integer",
+                                        help="Unit integer option"),
+                GLib.option.make_option("--callback-failure-test",
+                                        action="callback",
+                                        callback=option_callback,
+                                        dest="test_integer",
+                                        help="Unit integer option"),
             ])
         group.add_option("-t", "--test",
                          action="store_false",
@@ -57,7 +55,7 @@ class TestOption(unittest.TestCase):
         self.parser.add_option_group(group)
         return group
 
-    def testParseArgs(self):
+    def test_parse_args(self):
         options, args = self.parser.parse_args(
             ["test_option.py"])
         self.assertFalse(args)
@@ -70,12 +68,12 @@ class TestOption(unittest.TestCase):
             ["test_option.py", "foo", "bar"])
         self.assertEqual(args, [])
 
-    def testParseArgsDoubleDash(self):
+    def test_parse_args_double_dash(self):
         options, args = self.parser.parse_args(
             ["test_option.py", "--", "-xxx"])
         #self.assertEqual(args, ["-xxx"])
 
-    def testParseArgsGroup(self):
+    def test_parse_args_group(self):
         group = self._create_group()
 
         options, args = self.parser.parse_args(
@@ -89,20 +87,20 @@ class TestOption(unittest.TestCase):
         self.assertEqual(group.values.unit_file, "test")
         self.assertFalse(args)
 
-    def testOptionValueError(self):
+    def test_option_value_error(self):
         self._create_group()
-        self.assertRaises(OptionValueError, self.parser.parse_args,
+        self.assertRaises(GLib.option.OptionValueError, self.parser.parse_args,
                           ["test_option.py", "--test-integer=text"])
 
-    def testBadOptionError(self):
-        self.assertRaises(BadOptionError,
+    def test_bad_option_error(self):
+        self.assertRaises(GLib.option.BadOptionError,
                           self.parser.parse_args,
                           ["test_option.py", "--unknwon-option"])
 
-    def testOptionGroupConstructor(self):
-        self.assertRaises(TypeError, OptionGroup)
+    def test_option_group_constructor(self):
+        self.assertRaises(TypeError, GLib.option.OptionGroup)
 
-    def testStandardError(self):
+    def test_standard_error(self):
         self._create_group()
         sio = StringIO()
         old_stderr = sys.stderr
index b0a5305..e1af1f1 100644 (file)
@@ -4,7 +4,13 @@
 import unittest
 
 import gi.overrides
-from gi.repository import Regress
+import gi.module
+
+try:
+    from gi.repository import Regress
+    Regress  # pyflakes
+except ImportError:
+    Regress = None
 
 
 class TestRegistry(unittest.TestCase):
@@ -18,7 +24,35 @@ class TestRegistry(unittest.TestCase):
         except TypeError as e:
             self.assertTrue('Can not override a type MyClass' in str(e))
 
+    @unittest.skipUnless(Regress, 'built without cairo support')
     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)
+
+
+class TestModule(unittest.TestCase):
+    # Tests for gi.module
+
+    def test_get_introspection_module_caching(self):
+        # This test attempts to minimize side effects by
+        # using a DynamicModule directly instead of going though:
+        # from gi.repository import Foo
+
+        # Clear out introspection module cache before running this test.
+        old_modules = gi.module._introspection_modules
+        gi.module._introspection_modules = {}
+
+        mod_name = 'GIMarshallingTests'
+        mod1 = gi.module.get_introspection_module(mod_name)
+        mod2 = gi.module.get_introspection_module(mod_name)
+        self.assertTrue(mod1 is mod2)
+
+        # Using a DynamicModule will use get_introspection_module internally
+        # in its _load method.
+        mod_overridden = gi.module.DynamicModule(mod_name)
+        mod_overridden._load()
+        self.assertTrue(mod1 is mod_overridden._introspection_module)
+
+        # Restore the previous cache
+        gi.module._introspection_modules = old_modules
index 4866c78..10d634e 100644 (file)
@@ -45,6 +45,8 @@ class TestGSettings(unittest.TestCase):
         # value
         self.settings.reset('test-string')
         self.settings.reset('test-array')
+        self.settings.reset('test-boolean')
+        self.settings.reset('test-enum')
 
     def test_native(self):
         self.assertTrue('test-array' in self.settings.list_keys())
@@ -80,31 +82,36 @@ class TestGSettings(unittest.TestCase):
         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)
+    def test_dictionary_api(self):
+        self.assertEqual(len(self.settings), 5)
         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
+    def test_get(self):
         self.assertEqual(self.settings['test-boolean'], True)
         self.assertEqual(self.settings['test-string'], 'Hello')
+        self.assertEqual(self.settings['test-enum'], 'banana')
         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
+    def test_set(self):
+        self.settings['test-boolean'] = False
+        self.assertEqual(self.settings['test-boolean'], False)
         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.settings['test-enum'] = 'pear'
+        self.assertEqual(self.settings['test-enum'], 'pear')
 
         self.assertRaises(TypeError, self.settings.__setitem__, 'test-string', 1)
+        self.assertRaises(ValueError, self.settings.__setitem__, 'test-enum', 'plum')
         self.assertRaises(KeyError, self.settings.__setitem__, 'unknown', 'moo')
 
     def test_empty(self):
index 2fee7e1..3799454 100644 (file)
@@ -9,9 +9,7 @@ from compathelper import _long
 
 
 class TestGVariant(unittest.TestCase):
-    def test_create(self):
-        # simple values
-
+    def test_create_simple(self):
         variant = GLib.Variant('i', 42)
         self.assertTrue(isinstance(variant, GLib.Variant))
         self.assertEqual(variant.get_int32(), 42)
@@ -24,7 +22,7 @@ class TestGVariant(unittest.TestCase):
         self.assertTrue(isinstance(variant, GLib.Variant))
         self.assertEqual(variant.get_string(), 'hello')
 
-        # boxed variant
+    def test_create_variant(self):
         variant = GLib.Variant('v', GLib.Variant('i', 42))
         self.assertTrue(isinstance(variant, GLib.Variant))
         self.assertTrue(isinstance(variant.get_variant(), GLib.Variant))
@@ -38,8 +36,7 @@ class TestGVariant(unittest.TestCase):
         self.assertEqual(variant.get_variant().get_variant().get_type_string(), 'i')
         self.assertEqual(variant.get_variant().get_variant().get_int32(), 42)
 
-        # tuples
-
+    def test_create_tuple(self):
         variant = GLib.Variant('()', ())
         self.assertEqual(variant.get_type_string(), '()')
         self.assertEqual(variant.n_children(), 0)
@@ -64,8 +61,7 @@ class TestGVariant(unittest.TestCase):
         self.assertEqual(variant.get_type_string(), '((si)(ub))')
         self.assertEqual(variant.unpack(), (('hello', -1), (_long(42), True)))
 
-        # dictionaries
-
+    def test_create_dictionary(self):
         variant = GLib.Variant('a{si}', {})
         self.assertTrue(isinstance(variant, GLib.Variant))
         self.assertEqual(variant.get_type_string(), 'a{si}')
@@ -92,8 +88,7 @@ class TestGVariant(unittest.TestCase):
         self.assertTrue(isinstance(variant, GLib.Variant))
         self.assertEqual(variant.unpack(), d)
 
-        # arrays
-
+    def test_create_array(self):
         variant = GLib.Variant('ai', [])
         self.assertEqual(variant.get_type_string(), 'ai')
         self.assertEqual(variant.n_children(), 0)
@@ -138,10 +133,7 @@ class TestGVariant(unittest.TestCase):
         self.assertEqual(variant.get_type_string(), 'aai')
         self.assertEqual(variant.unpack(), [[1, 2], [3, 4, 5]])
 
-        #
-        # complex types
-        #
-
+    def test_create_complex(self):
         variant = GLib.Variant('(as)', ([],))
         self.assertEqual(variant.get_type_string(), '(as)')
         self.assertEqual(variant.n_children(), 1)
@@ -159,6 +151,30 @@ class TestGVariant(unittest.TestCase):
         self.assertEqual(variant.get_child_value(0).n_children(), 1)
         self.assertEqual(variant.get_child_value(0).get_child_value(0).get_string(), 'hello')
 
+        variant = GLib.Variant('a(ii)', [])
+        self.assertEqual(variant.get_type_string(), 'a(ii)')
+        self.assertEqual(variant.n_children(), 0)
+
+        variant = GLib.Variant('a(ii)', [(5, 6)])
+        self.assertEqual(variant.get_type_string(), 'a(ii)')
+        self.assertEqual(variant.n_children(), 1)
+        self.assertEqual(variant.get_child_value(0).n_children(), 2)
+        self.assertEqual(variant.get_child_value(0).get_child_value(0).get_int32(), 5)
+        self.assertEqual(variant.get_child_value(0).get_child_value(1).get_int32(), 6)
+
+        variant = GLib.Variant('(a(ii))', ([],))
+        self.assertEqual(variant.get_type_string(), '(a(ii))')
+        self.assertEqual(variant.n_children(), 1)
+        self.assertEqual(variant.get_child_value(0).n_children(), 0)
+
+        variant = GLib.Variant('(a(ii))', ([(5, 6)],))
+        self.assertEqual(variant.get_type_string(), '(a(ii))')
+        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).n_children(), 2)
+        self.assertEqual(variant.get_child_value(0).get_child_value(0).get_child_value(0).get_int32(), 5)
+        self.assertEqual(variant.get_child_value(0).get_child_value(0).get_child_value(1).get_int32(), 6)
+
         obj = {'a1': (1, True), 'a2': (2, False)}
         variant = GLib.Variant('a{s(ib)}', obj)
         self.assertEqual(variant.get_type_string(), 'a{s(ib)}')
@@ -212,6 +228,13 @@ class TestGVariant(unittest.TestCase):
         # unimplemented data type
         self.assertRaises(NotImplementedError, GLib.Variant, 'Q', 1)
 
+        # invalid types
+        self.assertRaises(TypeError, GLib.Variant, '(ii', (42, 3))
+        self.assertRaises(TypeError, GLib.Variant, '(ii))', (42, 3))
+        self.assertRaises(TypeError, GLib.Variant, 'a{si', {})
+        self.assertRaises(TypeError, GLib.Variant, 'a{si}}', {})
+        self.assertRaises(TypeError, GLib.Variant, 'a{iii}', {})
+
     def test_unpack(self):
         # simple values
         res = GLib.Variant.new_int32(-42).unpack()
index ee41457..7ed8344 100644 (file)
@@ -2,8 +2,6 @@
 # vim: tabstop=4 shiftwidth=4 expandtab
 
 import unittest
-import ctypes
-import sys
 
 from compathelper import _unicode, _bytes
 
@@ -18,19 +16,6 @@ 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):
@@ -292,9 +277,15 @@ class TestGtk(unittest.TestCase):
         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)
+        # might cause a GVFS warning, do not break on this
+        old_mask = GLib.log_set_always_fatal(
+            GLib.LogLevelFlags.LEVEL_CRITICAL | GLib.LogLevelFlags.LEVEL_ERROR)
+        try:
+            dialog = Gtk.FileChooserDialog(title='file chooser dialog test',
+                                           buttons=('test-button1', 1),
+                                           action=Gtk.FileChooserAction.SAVE)
+        finally:
+            GLib.log_set_always_fatal(old_mask)
         self.assertTrue(isinstance(dialog, Gtk.Dialog))
         self.assertTrue(isinstance(dialog, Gtk.Window))
 
@@ -1324,13 +1315,14 @@ class TestTreeView(unittest.TestCase):
         # 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))
+        try:
+            view.set_cursor(store[1].path)
+            view.set_cursor(str(store[1].path))
 
-        GLib.log_set_always_fatal(old_mask)
+            view.get_cell_area(store[1].path)
+            view.get_cell_area(str(store[1].path))
+        finally:
+            GLib.log_set_always_fatal(old_mask)
 
     def test_tree_view_column(self):
         cell = Gtk.CellRendererText()
@@ -1361,10 +1353,12 @@ class TestTreeView(unittest.TestCase):
         # 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)
+        try:
+            # causes the widget to get realized and cellN.props.text receive a
+            # value, otherwise it will be None.
+            tree.get_preferred_size()
+        finally:
+            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')
@@ -1396,10 +1390,12 @@ class TestTreeView(unittest.TestCase):
         # 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)
+        try:
+            # This will make cell.props.text receive a value, otherwise it
+            # will be None.
+            treeview.get_preferred_size()
+        finally:
+            GLib.log_set_always_fatal(old_mask)
 
         self.assertTrue(cell.props.text in directors)
 
@@ -1432,32 +1428,6 @@ class TestTreeView(unittest.TestCase):
         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):
index 405375d..fe286e2 100644 (file)
@@ -13,14 +13,17 @@ from gi.repository.GObject import \
     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
+    TYPE_STRING, TYPE_PYOBJECT, TYPE_VARIANT
 
 from gi.repository.GObject import \
-    G_MININT, G_MAXINT, G_MAXUINT, G_MINLONG, G_MAXLONG, G_MAXULONG
+    G_MININT, G_MAXINT, G_MAXUINT, G_MINLONG, G_MAXLONG, G_MAXULONG, \
+    G_MAXUINT64, G_MAXINT64, G_MININT64
 
 from gi.repository import Gio
 from gi.repository import GLib
+from gi.repository import Regress
 from gi.repository import GIMarshallingTests
+from gi._gobject import propertyhelper
 
 if sys.version_info < (3, 0):
     TEST_UTF8 = "\xe2\x99\xa5"
@@ -59,6 +62,42 @@ class PropertyObject(GObject.GObject):
     strings = GObject.Property(
         type=TYPE_STRV, flags=PARAM_READWRITE | PARAM_CONSTRUCT)
 
+    variant = GObject.Property(
+        type=TYPE_VARIANT, flags=PARAM_READWRITE | PARAM_CONSTRUCT)
+
+    variant_def = GObject.Property(
+        type=TYPE_VARIANT, flags=PARAM_READWRITE | PARAM_CONSTRUCT,
+        default=GLib.Variant('i', 42))
+
+
+class PropertyInheritanceObject(Regress.TestObj):
+    # override property from the base class, with a different type
+    string = GObject.Property(type=int)
+
+    # a property entirely defined at the Python level
+    python_prop = GObject.Property(type=str)
+
+
+class PropertySubClassObject(PropertyInheritanceObject):
+    # override property from the base class, with a different type
+    python_prop = GObject.Property(type=int)
+
+
+class TestPropertyInheritanceObject(unittest.TestCase):
+    def test_override_gi_property(self):
+        self.assertNotEqual(Regress.TestObj.props.string.value_type,
+                            PropertyInheritanceObject.props.string.value_type)
+        obj = PropertyInheritanceObject()
+        self.assertEqual(type(obj.props.string), int)
+        obj.props.string = 4
+        self.assertEqual(obj.props.string, 4)
+
+    def test_override_python_property(self):
+        obj = PropertySubClassObject()
+        self.assertEqual(type(obj.props.python_prop), int)
+        obj.props.python_prop = 5
+        self.assertEqual(obj.props.python_prop, 5)
+
 
 class TestPropertyObject(unittest.TestCase):
     def test_get_set(self):
@@ -81,19 +120,24 @@ class TestPropertyObject(unittest.TestCase):
 
     def test_iteration(self):
         for obj in (PropertyObject.props, PropertyObject().props):
+            names = []
             for pspec in obj:
                 gtype = GType(pspec)
                 self.assertEqual(gtype.parent.name, 'GParam')
-                self.assertTrue(pspec.name in ['normal',
-                                               'construct',
-                                               'construct-only',
-                                               'uint64',
-                                               'enum',
-                                               'flags',
-                                               'gtype',
-                                               'strings',
-                                               'boxed'])
-            self.assertEqual(len(obj), 9)
+                names.append(pspec.name)
+
+            names.sort()
+            self.assertEqual(names, ['boxed',
+                                     'construct',
+                                     'construct-only',
+                                     'enum',
+                                     'flags',
+                                     'gtype',
+                                     'normal',
+                                     'strings',
+                                     'uint64',
+                                     'variant',
+                                     'variant-def'])
 
     def test_normal(self):
         obj = new(PropertyObject, normal="123")
@@ -299,6 +343,52 @@ class TestPropertyObject(unittest.TestCase):
         self.assertRaises(TypeError, GObject.Property, type=TYPE_STRV,
                           default=['hello', 1])
 
+    def test_variant(self):
+        obj = new(PropertyObject)
+
+        self.assertEqual(obj.props.variant, None)
+        self.assertEqual(obj.variant, None)
+
+        obj.variant = GLib.Variant('s', 'hello')
+        self.assertEqual(obj.variant.print_(True), "'hello'")
+
+        obj.variant = GLib.Variant('b', True)
+        self.assertEqual(obj.variant.print_(True), "true")
+
+        obj.props.variant = GLib.Variant('y', 2)
+        self.assertEqual(obj.variant.print_(True), "byte 0x02")
+
+        obj.variant = None
+        self.assertEqual(obj.variant, None)
+
+        # set in constructor
+        obj = new(PropertyObject, variant=GLib.Variant('u', 5))
+        self.assertEqual(obj.props.variant.print_(True), 'uint32 5')
+
+        GObject.Property(type=TYPE_VARIANT, default=GLib.Variant('i', 1))
+
+        # incompatible types
+        self.assertRaises(TypeError, setattr, obj, 'variant', 'foo')
+        self.assertRaises(TypeError, setattr, obj, 'variant', 42)
+
+        self.assertRaises(TypeError, GObject.Property, type=TYPE_VARIANT,
+                          default='foo')
+        self.assertRaises(TypeError, GObject.Property, type=TYPE_VARIANT,
+                          default=object())
+
+    def test_variant_default(self):
+        obj = new(PropertyObject)
+
+        self.assertEqual(obj.props.variant_def.print_(True), '42')
+        self.assertEqual(obj.variant_def.print_(True), '42')
+
+        obj.props.variant_def = GLib.Variant('y', 2)
+        self.assertEqual(obj.variant_def.print_(True), "byte 0x02")
+
+        # set in constructor
+        obj = new(PropertyObject, variant_def=GLib.Variant('u', 5))
+        self.assertEqual(obj.props.variant_def.print_(True), 'uint32 5')
+
     def test_range(self):
         # kiwi code
         def max(c):
@@ -495,17 +585,13 @@ class TestProperty(unittest.TestCase):
         self.assertEqual(o.prop_name, 10)
 
     def test_range(self):
-        maxint64 = 2 ** 62 - 1
-        minint64 = -2 ** 62 - 1
-        maxuint64 = 2 ** 63 - 1
-
         types_ = [
             (TYPE_INT, G_MININT, G_MAXINT),
             (TYPE_UINT, 0, G_MAXUINT),
             (TYPE_LONG, G_MINLONG, G_MAXLONG),
             (TYPE_ULONG, 0, G_MAXULONG),
-            (TYPE_INT64, minint64, maxint64),
-            (TYPE_UINT64, 0, maxuint64),
+            (TYPE_INT64, G_MININT64, G_MAXINT64),
+            (TYPE_UINT64, 0, G_MAXUINT64),
             ]
 
         for gtype, min, max in types_:
@@ -688,14 +774,20 @@ class TestProperty(unittest.TestCase):
         del t
         self.assertEqual(sys.getrefcount(o), rc)
 
-    def test_doc_string_as_blurb(self):
+    def test_doc_strings(self):
         class C(GObject.GObject):
+            foo_blurbed = GObject.Property(type=int, blurb='foo_blurbed doc string')
+
             @GObject.Property
-            def blurbed(self):
-                """blurbed doc string"""
+            def foo_getter(self):
+                """foo_getter doc string"""
                 return 0
 
-        self.assertEqual(C.blurbed.blurb, 'blurbed doc string')
+        self.assertEqual(C.foo_blurbed.blurb, 'foo_blurbed doc string')
+        self.assertEqual(C.foo_blurbed.__doc__, 'foo_blurbed doc string')
+
+        self.assertEqual(C.foo_getter.blurb, 'foo_getter doc string')
+        self.assertEqual(C.foo_getter.__doc__, 'foo_getter doc string')
 
     def test_python_to_glib_type_mapping(self):
         tester = GObject.Property()
@@ -722,5 +814,69 @@ class TestProperty(unittest.TestCase):
 
         self.assertRaises(TypeError, tester._type_from_python, types.CodeType)
 
+
+class TestInstallProperties(unittest.TestCase):
+    # These tests only test how signalhelper.install_signals works
+    # with the __gsignals__ dict and therefore does not need to use
+    # GObject as a base class because that would automatically call
+    # install_signals within the meta-class.
+    class Base(object):
+        __gproperties__ = {'test': (0, '', '', 0, 0, 0, 0)}
+
+    class Sub1(Base):
+        pass
+
+    class Sub2(Base):
+        @GObject.Property(type=int)
+        def sub2test(self):
+            return 123
+
+    class ClassWithPropertyAndGetterVFunc(object):
+        @GObject.Property(type=int)
+        def sub2test(self):
+            return 123
+
+        def do_get_property(self, name):
+            return 321
+
+    class ClassWithPropertyRedefined(object):
+        __gproperties__ = {'test': (0, '', '', 0, 0, 0, 0)}
+        test = GObject.Property(type=int)
+
+    def setUp(self):
+        self.assertEqual(len(self.Base.__gproperties__), 1)
+        propertyhelper.install_properties(self.Base)
+        self.assertEqual(len(self.Base.__gproperties__), 1)
+
+    def test_subclass_without_properties_is_not_modified(self):
+        self.assertFalse('__gproperties__' in self.Sub1.__dict__)
+        propertyhelper.install_properties(self.Sub1)
+        self.assertFalse('__gproperties__' in self.Sub1.__dict__)
+
+    def test_subclass_with_decorator_gets_gproperties_dict(self):
+        # Sub2 has Property instances but will not have a __gproperties__
+        # until install_properties is called
+        self.assertFalse('__gproperties__' in self.Sub2.__dict__)
+        self.assertFalse('do_get_property' in self.Sub2.__dict__)
+        self.assertFalse('do_set_property' in self.Sub2.__dict__)
+
+        propertyhelper.install_properties(self.Sub2)
+        self.assertTrue('__gproperties__' in self.Sub2.__dict__)
+        self.assertEqual(len(self.Base.__gproperties__), 1)
+        self.assertEqual(len(self.Sub2.__gproperties__), 1)
+        self.assertTrue('sub2test' in self.Sub2.__gproperties__)
+
+        # get/set vfuncs should have been added
+        self.assertTrue('do_get_property' in self.Sub2.__dict__)
+        self.assertTrue('do_set_property' in self.Sub2.__dict__)
+
+    def test_object_with_property_and_do_get_property_vfunc_raises(self):
+        self.assertRaises(TypeError, propertyhelper.install_properties,
+                          self.ClassWithPropertyAndGetterVFunc)
+
+    def test_same_name_property_definitions_raises(self):
+        self.assertRaises(ValueError, propertyhelper.install_properties,
+                          self.ClassWithPropertyRedefined)
+
 if __name__ == '__main__':
     unittest.main()
index 3b70318..fc8c835 100644 (file)
@@ -4,7 +4,7 @@ import gc
 import unittest
 import sys
 
-from gi.repository import GObject
+from gi.repository import GObject, GLib
 from gi._gobject import signalhelper
 import testhelper
 from compathelper import _long
@@ -49,11 +49,11 @@ class TestChaining(unittest.TestCase):
 
         assert args[2:] == (1, 2, 3)
 
-    def testChaining(self):
+    def test_chaining(self):
         self.inst.emit("my_signal", 42)
         assert self.inst.arg == 42
 
-    def testChaining2(self):
+    def test_chaining2(self):
         inst2 = D()
         inst2.emit("my_signal", 44)
         assert inst2.arg == 44
@@ -63,18 +63,24 @@ class TestChaining(unittest.TestCase):
 
 
 class TestGSignalsError(unittest.TestCase):
-    def testInvalidType(self, *args):
+    def test_invalid_type(self, *args):
         def foo():
             class Foo(GObject.GObject):
                 __gsignals__ = None
         self.assertRaises(TypeError, foo)
         gc.collect()
 
-    def testInvalidName(self, *args):
+    def test_invalid_name(self, *args):
         def foo():
             class Foo(GObject.GObject):
                 __gsignals__ = {'not-exists': 'override'}
-        self.assertRaises(TypeError, foo)
+        # do not stumble over the warning thrown by GLib
+        old_mask = GLib.log_set_always_fatal(GLib.LogLevelFlags.LEVEL_CRITICAL |
+                                             GLib.LogLevelFlags.LEVEL_ERROR)
+        try:
+            self.assertRaises(TypeError, foo)
+        finally:
+            GLib.log_set_always_fatal(old_mask)
         gc.collect()
 
 
@@ -294,7 +300,7 @@ class TestClosures(unittest.TestCase):
         self.assertEqual(inst.a, 1)
         gc.collect()
 
-    def testGString(self):
+    def test_gstring(self):
         class C(GObject.GObject):
             __gsignals__ = {'my_signal': (GObject.SignalFlags.RUN_LAST, GObject.TYPE_GSTRING,
                                           (GObject.TYPE_GSTRING,))}
@@ -592,7 +598,8 @@ class TestSignalDecorator(unittest.TestCase):
 
 class TestSignalConnectors(unittest.TestCase):
     class CustomButton(GObject.GObject):
-        value = 0
+        on_notify_called = False
+        value = GObject.Property(type=int)
 
         @GObject.Signal(arg_types=(int,))
         def clicked(self, value):
@@ -606,6 +613,16 @@ class TestSignalConnectors(unittest.TestCase):
         self.obj = obj
         self.value = value
 
+    def test_signal_notify(self):
+        def on_notify(obj, param):
+            obj.on_notify_called = True
+
+        obj = self.CustomButton()
+        obj.connect('notify', on_notify)
+        self.assertFalse(obj.on_notify_called)
+        obj.notify('value')
+        self.assertTrue(obj.on_notify_called)
+
     def test_signal_emit(self):
         # standard callback connection with different forms of emit.
         obj = self.CustomButton()
@@ -653,6 +670,49 @@ class TestSignalConnectors(unittest.TestCase):
         self.assertEqual(self.value, 3)
 
 
+class TestInstallSignals(unittest.TestCase):
+    # These tests only test how signalhelper.install_signals works
+    # with the __gsignals__ dict and therefore does not need to use
+    # GObject as a base class because that would automatically call
+    # install_signals within the meta-class.
+    class Base(object):
+        __gsignals__ = {'test': (0, None, tuple())}
+
+    class Sub1(Base):
+        pass
+
+    class Sub2(Base):
+        @GObject.Signal
+        def sub2test(self):
+            pass
+
+    def setUp(self):
+        self.assertEqual(len(self.Base.__gsignals__), 1)
+        signalhelper.install_signals(self.Base)
+        self.assertEqual(len(self.Base.__gsignals__), 1)
+
+    def test_subclass_gets_empty_gsignals_dict(self):
+        # Installing signals will add the __gsignals__ dict to a class
+        # if it doesn't already exists.
+        self.assertFalse('__gsignals__' in self.Sub1.__dict__)
+        signalhelper.install_signals(self.Sub1)
+        self.assertTrue('__gsignals__' in self.Sub1.__dict__)
+        # Sub1 should only contain an empty signals dict, this tests:
+        # https://bugzilla.gnome.org/show_bug.cgi?id=686496
+        self.assertEqual(self.Sub1.__dict__['__gsignals__'], {})
+
+    def test_subclass_with_decorator_gets_gsignals_dict(self):
+        self.assertFalse('__gsignals__' in self.Sub2.__dict__)
+        signalhelper.install_signals(self.Sub2)
+        self.assertTrue('__gsignals__' in self.Sub2.__dict__)
+        self.assertEqual(len(self.Base.__gsignals__), 1)
+        self.assertEqual(len(self.Sub2.__gsignals__), 1)
+        self.assertTrue('sub2test' in self.Sub2.__gsignals__)
+
+        # Make sure the vfunc was added
+        self.assertTrue(hasattr(self.Sub2, 'do_sub2test'))
+
+
 # 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 = """
@@ -691,5 +751,59 @@ class TestPython3Signals(unittest.TestCase):
                              str)
 
 
+class TestSignalModuleLevelFunctions(unittest.TestCase):
+    @unittest.skipIf(sys.version_info < (2, 7), 'Requires Python >= 2.7')
+    def test_signal_list_ids_with_invalid_type(self):
+        with self.assertRaisesRegex(TypeError, 'type must be instantiable or an interface.*'):
+            GObject.signal_list_ids(GObject.TYPE_INVALID)
+
+    @unittest.skipIf(sys.version_info < (2, 7), 'Requires Python >= 2.7')
+    def test_signal_list_ids(self):
+        with self.assertRaisesRegex(TypeError, 'type must be instantiable or an interface.*'):
+            GObject.signal_list_ids(GObject.TYPE_INT)
+
+        ids = GObject.signal_list_ids(C)
+        self.assertEqual(len(ids), 1)
+        # Note canonicalized names
+        self.assertEqual(GObject.signal_name(ids[0]), 'my-signal')
+        # There is no signal 0 in gobject
+        self.assertEqual(GObject.signal_name(0), None)
+
+    @unittest.skipIf(sys.version_info < (2, 7), 'Requires Python >= 2.7')
+    def test_signal_lookup_with_invalid_type(self):
+        with self.assertRaisesRegex(TypeError, 'type must be instantiable or an interface.*'):
+            GObject.signal_lookup('NOT_A_SIGNAL_NAME', GObject.TYPE_INVALID)
+
+    @unittest.skipIf(sys.version_info < (2, 7), 'Requires Python >= 2.7')
+    def test_signal_lookup(self):
+        ids = GObject.signal_list_ids(C)
+        self.assertEqual(ids[0], GObject.signal_lookup('my_signal', C))
+        self.assertEqual(ids[0], GObject.signal_lookup('my-signal', C))
+
+        with self.assertRaisesRegex(TypeError, 'type must be instantiable or an interface.*'):
+            GObject.signal_lookup('NOT_A_SIGNAL_NAME', GObject.TYPE_INT)
+
+        # Invalid signal names return 0 instead of raising
+        self.assertEqual(GObject.signal_lookup('NOT_A_SIGNAL_NAME', C),
+                         0)
+
+    def test_signal_query(self):
+        my_signal_id, = GObject.signal_list_ids(C)
+
+        # Form is: (id, name, gtype, arg_count, return_type, (arg_type1, ...))
+        my_signal_expected_query_result = [my_signal_id, 'my-signal', C.__gtype__,
+                                           1, GObject.TYPE_NONE, (GObject.TYPE_INT,)]
+        # signal_query(name, type)
+        self.assertSequenceEqual(GObject.signal_query('my-signal', C),
+                                 my_signal_expected_query_result)
+        # signal_query(signal_id)
+        self.assertSequenceEqual(GObject.signal_query(my_signal_id),
+                                 my_signal_expected_query_result)
+        # invalid query returns None instead of raising
+        self.assertEqual(GObject.signal_query(0), None)
+        self.assertEqual(GObject.signal_query('NOT_A_SIGNAL', C),
+                         None)
+
+
 if __name__ == '__main__':
     unittest.main()
index fe674cd..dda492a 100644 (file)
@@ -1,8 +1,10 @@
 # -*- Mode: Python -*-
 
 import unittest
+import warnings
 
-from gi.repository import GLib
+from gi.repository import GLib, GObject
+from gi import PyGIDeprecationWarning
 
 
 class Idle(GLib.Idle):
@@ -43,25 +45,35 @@ class TestSource(unittest.TestCase):
         timeout.set_callback(self.timeout_callback, loop)
         timeout.attach()
 
-    def testSources(self):
+    def test_sources(self):
         loop = GLib.MainLoop()
 
         self.setup_timeout(loop)
 
         idle = Idle(loop)
+        self.assertEqual(idle.get_context(), None)
         idle.attach()
+        self.assertEqual(idle.get_context(), GLib.main_context_default())
 
         self.pos = 0
 
         m = MySource()
+        self.assertEqual(m.get_context(), None)
         m.set_callback(self.my_callback, loop)
         m.attach()
+        self.assertEqual(m.get_context(), GLib.main_context_default())
 
         loop.run()
 
-        assert self.pos >= 0 and idle.count >= 0
+        m.destroy()
+        idle.destroy()
 
-    def testSourcePrepare(self):
+        self.assertGreater(self.pos, 0)
+        self.assertGreaterEqual(idle.count, 0)
+        self.assertTrue(m.is_destroyed())
+        self.assertTrue(idle.is_destroyed())
+
+    def test_source_prepare(self):
         # this test may not terminate if prepare() is wrapped incorrectly
         dispatched = [False]
         loop = GLib.MainLoop()
@@ -89,7 +101,7 @@ class TestSource(unittest.TestCase):
 
         assert dispatched[0]
 
-    def testIsDestroyedSimple(self):
+    def test_is_destroyed_simple(self):
         s = GLib.Source()
 
         self.assertFalse(s.is_destroyed())
@@ -103,7 +115,7 @@ class TestSource(unittest.TestCase):
         s.destroy()
         self.assertTrue(s.is_destroyed())
 
-    def testIsDestroyedContext(self):
+    def test_is_destroyed_context(self):
         def f():
             c = GLib.MainContext()
             s = GLib.Source()
@@ -113,12 +125,207 @@ class TestSource(unittest.TestCase):
         s = f()
         self.assertTrue(s.is_destroyed())
 
+    def test_remove(self):
+        s = GLib.idle_add(dir)
+        self.assertEqual(GLib.source_remove(s), True)
+        # s is now removed, should fail now
+        self.assertEqual(GLib.source_remove(s), False)
+
+        # accepts large source IDs (they are unsigned)
+        self.assertEqual(GLib.source_remove(GObject.G_MAXINT32), False)
+        self.assertEqual(GLib.source_remove(GObject.G_MAXINT32 + 1), False)
+        self.assertEqual(GLib.source_remove(GObject.G_MAXUINT32), False)
+
+    def test_recurse_property(self):
+        s = GLib.Idle()
+        self.assertTrue(s.can_recurse in [False, True])
+        s.can_recurse = False
+        self.assertFalse(s.can_recurse)
+
+    def test_priority(self):
+        s = GLib.Idle()
+        self.assertEqual(s.priority, GLib.PRIORITY_DEFAULT_IDLE)
+        s.priority = GLib.PRIORITY_HIGH
+        self.assertEqual(s.priority, GLib.PRIORITY_HIGH)
+
+        s = GLib.Idle(GLib.PRIORITY_LOW)
+        self.assertEqual(s.priority, GLib.PRIORITY_LOW)
 
-class TestTimeout(unittest.TestCase):
-    def test504337(self):
+        s = GLib.Timeout(1, GLib.PRIORITY_LOW)
+        self.assertEqual(s.priority, GLib.PRIORITY_LOW)
+
+        s = GLib.Source()
+        self.assertEqual(s.priority, GLib.PRIORITY_DEFAULT)
+
+    def test_get_current_time(self):
+        # Note, deprecated API
+        s = GLib.Idle()
+        with warnings.catch_warnings(record=True) as w:
+            warnings.simplefilter('always')
+            time = s.get_current_time()
+            self.assertTrue(issubclass(w[0].category, PyGIDeprecationWarning))
+
+        self.assertTrue(isinstance(time, float))
+        # plausibility check, and check magnitude of result
+        self.assertGreater(time, 1300000000.0)
+        self.assertLess(time, 2000000000.0)
+
+    def test_add_remove_poll(self):
+        # FIXME: very shallow test, only verifies the API signature
+        pollfd = GLib.PollFD(99, GLib.IOCondition.IN | GLib.IOCondition.HUP)
+        self.assertEqual(pollfd.fd, 99)
+        source = GLib.Source()
+        source.add_poll(pollfd)
+        source.remove_poll(pollfd)
+
+    def test_out_of_scope_before_dispatch(self):
+        # https://bugzilla.gnome.org/show_bug.cgi?id=504337
         GLib.Timeout(20)
         GLib.Idle()
 
 
+class TestUserData(unittest.TestCase):
+    def test_idle_no_data(self):
+        ml = GLib.MainLoop()
+
+        def cb():
+            ml.quit()
+        id = GLib.idle_add(cb)
+        self.assertEqual(ml.get_context().find_source_by_id(id).priority,
+                         GLib.PRIORITY_DEFAULT_IDLE)
+        ml.run()
+
+    def test_timeout_no_data(self):
+        ml = GLib.MainLoop()
+
+        def cb():
+            ml.quit()
+        id = GLib.timeout_add(50, cb)
+        self.assertEqual(ml.get_context().find_source_by_id(id).priority,
+                         GLib.PRIORITY_DEFAULT)
+        ml.run()
+
+    def test_idle_data(self):
+        ml = GLib.MainLoop()
+
+        def cb(data):
+            data['called'] = True
+            ml.quit()
+        data = {}
+        id = GLib.idle_add(cb, data)
+        self.assertEqual(ml.get_context().find_source_by_id(id).priority,
+                         GLib.PRIORITY_DEFAULT_IDLE)
+        ml.run()
+        self.assertTrue(data['called'])
+
+    def test_idle_multidata(self):
+        ml = GLib.MainLoop()
+
+        def cb(data, data2):
+            data['called'] = True
+            data['data2'] = data2
+            ml.quit()
+        data = {}
+        id = GLib.idle_add(cb, data, 'hello')
+        self.assertEqual(ml.get_context().find_source_by_id(id).priority,
+                         GLib.PRIORITY_DEFAULT_IDLE)
+        ml.run()
+        self.assertTrue(data['called'])
+        self.assertEqual(data['data2'], 'hello')
+
+    def test_timeout_data(self):
+        ml = GLib.MainLoop()
+
+        def cb(data):
+            data['called'] = True
+            ml.quit()
+        data = {}
+        id = GLib.timeout_add(50, cb, data)
+        self.assertEqual(ml.get_context().find_source_by_id(id).priority,
+                         GLib.PRIORITY_DEFAULT)
+        ml.run()
+        self.assertTrue(data['called'])
+
+    def test_timeout_multidata(self):
+        ml = GLib.MainLoop()
+
+        def cb(data, data2):
+            data['called'] = True
+            data['data2'] = data2
+            ml.quit()
+        data = {}
+        id = GLib.timeout_add(50, cb, data, 'hello')
+        self.assertEqual(ml.get_context().find_source_by_id(id).priority,
+                         GLib.PRIORITY_DEFAULT)
+        ml.run()
+        self.assertTrue(data['called'])
+        self.assertEqual(data['data2'], 'hello')
+
+    def test_idle_no_data_priority(self):
+        ml = GLib.MainLoop()
+
+        def cb():
+            ml.quit()
+        id = GLib.idle_add(cb, priority=GLib.PRIORITY_HIGH)
+        self.assertEqual(ml.get_context().find_source_by_id(id).priority,
+                         GLib.PRIORITY_HIGH)
+        ml.run()
+
+    def test_timeout_no_data_priority(self):
+        ml = GLib.MainLoop()
+
+        def cb():
+            ml.quit()
+        id = GLib.timeout_add(50, cb, priority=GLib.PRIORITY_HIGH)
+        self.assertEqual(ml.get_context().find_source_by_id(id).priority,
+                         GLib.PRIORITY_HIGH)
+        ml.run()
+
+    def test_idle_data_priority(self):
+        ml = GLib.MainLoop()
+
+        def cb(data):
+            data['called'] = True
+            ml.quit()
+        data = {}
+        id = GLib.idle_add(cb, data, priority=GLib.PRIORITY_HIGH)
+        self.assertEqual(ml.get_context().find_source_by_id(id).priority,
+                         GLib.PRIORITY_HIGH)
+        ml.run()
+        self.assertTrue(data['called'])
+
+    def test_timeout_data_priority(self):
+        ml = GLib.MainLoop()
+
+        def cb(data):
+            data['called'] = True
+            ml.quit()
+        data = {}
+        id = GLib.timeout_add(50, cb, data, priority=GLib.PRIORITY_HIGH)
+        self.assertEqual(ml.get_context().find_source_by_id(id).priority,
+                         GLib.PRIORITY_HIGH)
+        ml.run()
+        self.assertTrue(data['called'])
+
+    def cb_no_data(self):
+        self.loop.quit()
+
+    def test_idle_method_callback_no_data(self):
+        self.loop = GLib.MainLoop()
+        GLib.idle_add(self.cb_no_data)
+        self.loop.run()
+
+    def cb_with_data(self, data):
+        data['called'] = True
+        self.loop.quit()
+
+    def test_idle_method_callback_with_data(self):
+        self.loop = GLib.MainLoop()
+        data = {}
+        GLib.idle_add(self.cb_with_data, data)
+        self.loop.run()
+        self.assertTrue(data['called'])
+
+
 if __name__ == '__main__':
     unittest.main()
index 69f5f4c..26308e8 100644 (file)
 # -*- Mode: Python -*-
 
 import sys
+import os
 import unittest
+import warnings
 
 from gi.repository import GLib
+from gi import PyGIDeprecationWarning
 
 
 class TestProcess(unittest.TestCase):
 
-    def _child_watch_cb(self, pid, condition, data):
-        self.data = data
-        self.loop.quit()
+    def test_deprecated_child_watch_no_data(self):
+        def cb(pid, status):
+            self.status = status
+            self.loop.quit()
 
-    def testChildWatch(self):
+        self.status = None
+        self.loop = GLib.MainLoop()
+        argv = [sys.executable, '-c', 'import sys']
+        pid, stdin, stdout, stderr = GLib.spawn_async(
+            argv, flags=GLib.SpawnFlags.DO_NOT_REAP_CHILD)
+        pid.close()
+        with warnings.catch_warnings(record=True) as w:
+            warnings.simplefilter('always')
+            GLib.child_watch_add(pid, cb)
+            self.assertTrue(issubclass(w[0].category, PyGIDeprecationWarning))
+        self.loop.run()
+        self.assertEqual(self.status, 0)
+
+    def test_deprecated_child_watch_data_priority(self):
+        def cb(pid, status, data):
+            self.data = data
+            self.status = status
+            self.loop.quit()
+
+        self.status = None
+        self.data = None
+        self.loop = GLib.MainLoop()
+        argv = [sys.executable, '-c', 'import sys']
+        pid, stdin, stdout, stderr = GLib.spawn_async(
+            argv, flags=GLib.SpawnFlags.DO_NOT_REAP_CHILD)
+        pid.close()
+        with warnings.catch_warnings(record=True) as w:
+            warnings.simplefilter('always')
+            id = GLib.child_watch_add(pid, cb, 12345, GLib.PRIORITY_HIGH)
+            self.assertTrue(issubclass(w[0].category, PyGIDeprecationWarning))
+        self.assertEqual(self.loop.get_context().find_source_by_id(id).priority,
+                         GLib.PRIORITY_HIGH)
+        self.loop.run()
+        self.assertEqual(self.data, 12345)
+        self.assertEqual(self.status, 0)
+
+    def test_deprecated_child_watch_data_priority_kwargs(self):
+        def cb(pid, status, data):
+            self.data = data
+            self.status = status
+            self.loop.quit()
+
+        self.status = None
         self.data = None
         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)
+            argv, flags=GLib.SpawnFlags.DO_NOT_REAP_CHILD)
         pid.close()
-        GLib.child_watch_add(pid, self._child_watch_cb, 12345)
+        with warnings.catch_warnings(record=True) as w:
+            warnings.simplefilter('always')
+            id = GLib.child_watch_add(pid, cb, priority=GLib.PRIORITY_HIGH, data=12345)
+            self.assertTrue(issubclass(w[0].category, PyGIDeprecationWarning))
+        self.assertEqual(self.loop.get_context().find_source_by_id(id).priority,
+                         GLib.PRIORITY_HIGH)
         self.loop.run()
         self.assertEqual(self.data, 12345)
+        self.assertEqual(self.status, 0)
+
+    def test_child_watch_no_data(self):
+        def cb(pid, status):
+            self.status = status
+            self.loop.quit()
+
+        self.status = None
+        self.loop = GLib.MainLoop()
+        argv = [sys.executable, '-c', 'import sys']
+        pid, stdin, stdout, stderr = GLib.spawn_async(
+            argv, flags=GLib.SpawnFlags.DO_NOT_REAP_CHILD)
+        pid.close()
+        id = GLib.child_watch_add(GLib.PRIORITY_HIGH, pid, cb)
+        self.assertEqual(self.loop.get_context().find_source_by_id(id).priority,
+                         GLib.PRIORITY_HIGH)
+        self.loop.run()
+        self.assertEqual(self.status, 0)
+
+    def test_child_watch_with_data(self):
+        def cb(pid, status, data):
+            self.status = status
+            self.data = data
+            self.loop.quit()
+
+        self.data = None
+        self.status = None
+        self.loop = GLib.MainLoop()
+        argv = [sys.executable, '-c', 'import sys']
+        pid, stdin, stdout, stderr = GLib.spawn_async(
+            argv, flags=GLib.SpawnFlags.DO_NOT_REAP_CHILD)
+        self.assertEqual(stdin, None)
+        self.assertEqual(stdout, None)
+        self.assertEqual(stderr, None)
+        pid.close()
+        id = GLib.child_watch_add(GLib.PRIORITY_HIGH, pid, cb, 12345)
+        self.assertEqual(self.loop.get_context().find_source_by_id(id).priority,
+                         GLib.PRIORITY_HIGH)
+        self.loop.run()
+        self.assertEqual(self.data, 12345)
+        self.assertEqual(self.status, 0)
+
+    def test_spawn_async_fds(self):
+        pid, stdin, stdout, stderr = GLib.spawn_async(
+            ['cat'], flags=GLib.SpawnFlags.SEARCH_PATH, standard_input=True,
+            standard_output=True, standard_error=True)
+        os.write(stdin, b'hello world!\n')
+        os.close(stdin)
+        out = os.read(stdout, 50)
+        os.close(stdout)
+        err = os.read(stderr, 50)
+        os.close(stderr)
+        pid.close()
+        self.assertEqual(out, b'hello world!\n')
+        self.assertEqual(err, b'')
+
+    def test_spawn_async_envp(self):
+        pid, stdin, stdout, stderr = GLib.spawn_async(
+            ['sh', '-c', 'echo $TEST_VAR'], ['TEST_VAR=moo!'],
+            flags=GLib.SpawnFlags.SEARCH_PATH, standard_output=True)
+        self.assertEqual(stdin, None)
+        self.assertEqual(stderr, None)
+        out = os.read(stdout, 50)
+        os.close(stdout)
+        pid.close()
+        self.assertEqual(out, b'moo!\n')
+
+    def test_backwards_compat_flags(self):
+        self.assertEqual(GLib.SpawnFlags.DO_NOT_REAP_CHILD,
+                         GLib.SPAWN_DO_NOT_REAP_CHILD)
index b707bc4..3d0557e 100644 (file)
@@ -20,7 +20,7 @@ class TestThread(unittest.TestCase):
         self.obj.connect('from-thread', self.from_thread_cb)
         self.obj.emit('emit-signal')
 
-    def testExtensionModule(self):
+    def test_extension_module(self):
         GLib.idle_add(self.idle_cb)
         GLib.timeout_add(50, self.timeout_cb)
         self.main.run()
diff --git a/tests/test_uris.py b/tests/test_uris.py
deleted file mode 100644 (file)
index 143cc7b..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-import unittest
-
-from gi.repository import GLib
-
-
-class TestUris(unittest.TestCase):
-    def testExtractUris(self):
-        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 608b8b1..16bb39e 100644 (file)
@@ -322,7 +322,7 @@ test_double_callback (GObject *object, double d)
   return d;
 }
 
-static gint64 *
+static gint64
 test_int64_callback (GObject *object, gint64 i)
 {
   g_return_val_if_fail (G_IS_OBJECT (object), -1);
@@ -602,12 +602,11 @@ PYGLIB_MODULE_START(testhelper, "testhelper")
 {
   PyObject *m, *d;
   
-  g_thread_init(NULL);
   pygobject_init(-1, -1, -1);
 
   d = PyModule_GetDict(module);
 
-  if ((m = PyImport_ImportModule("gi._gobject")) != NULL) {
+  if ((m = PyImport_ImportModule("gi._gobject._gobject")) != NULL) {
     PyObject *moddict = PyModule_GetDict(m);
     
     _PyGObject_Type = (PyTypeObject *)PyDict_GetItemString(moddict, "GObject");