commit 2d8f5490cdc078b3e56a92deb9eca71b3fc5ef17
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Mon Jul 29 02:23:02 2013 -0700

    release 3.9.5

 NEWS         | 41 +++++++++++++++++++++++++++++++++++++++++
 configure.ac |  2 +-
 2 files changed, 42 insertions(+), 1 deletion(-)

commit ec3de7608ec970f6f272c9d7937344f02c6e9c3d
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Mon Jul 29 01:21:19 2013 -0700

    Ensure exceptions set in closure out argument marshaling are printed

    Call PyErr_Print when an exception occurs after marshaling closure
    out arguments. These exceptions were being ignored and cleared out
    only to show up in debug builds of Python.

    https://bugzilla.gnome.org/show_bug.cgi?id=705064

 gi/pygi-closure.c              |  8 ++++++++
 tests/test_generictreemodel.py | 17 +++++++++++------
 2 files changed, 19 insertions(+), 6 deletions(-)

commit b5dcb1800839f747a052e487643c234668384677
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Sun Jul 28 23:00:26 2013 -0700

    Use Python error messages for marshaling integers from Python

    Use Pythons default error messages where possible.
    Change all explicitly raised ValueError to use OverflowError
    for out of range data.

    https://bugzilla.gnome.org/show_bug.cgi?id=705057

 gi/pygi-marshal-from-py.c | 76
 +++++++++++++++++------------------------------
 tests/test_everything.py  | 52 ++++++++++++++++----------------
 tests/test_gi.py          | 64 +++++++++++++++++++--------------------
 tests/test_gobject.py     |  2 +-
 4 files changed, 86 insertions(+), 108 deletions(-)

commit 3c83bfb14b850670eb7c0208e55c120ca203f8af
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Sat Jul 27 21:10:07 2013 -0700

    Use Py_CLEAR for closure cleanup instead of test with Py_DECREF

 gi/pygi-closure.c | 11 ++---------
 1 file changed, 2 insertions(+), 9 deletions(-)

commit f5e3876dee512ca82af6ea798b10d5ecad785dd1
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Sat Jul 27 15:25:20 2013 -0700

    Cleanup invoke args and kwargs combiner code

    Change _py_args_combine_and_check_length use cleaner reference
    counting.
    It no longer DECREFs input arguments and always returns a new value
    reference.
    Use PyGICallableCache directly as an argument instead of passing
    various
    members.

 gi/pygi-invoke.c | 44 +++++++++++++++++---------------------------
 1 file changed, 17 insertions(+), 27 deletions(-)

commit 91c49822363d8a1efc82163b46daa667d6cfc1b7
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Wed Jul 17 16:10:25 2013 -0700

    Replace Python VFunc descriptor directly with PyGIVFuncInfo

    Add tp_getdesc (__get__) to PyGIVFuncInfo to allow the object
    to be used directly as a callable descriptor. This piggy backs
    off the added support for functions and constructors in previous
    patches.

    https://bugzilla.gnome.org/show_bug.cgi?id=704037

 gi/pygi-info.c | 25 +++++++++++++++++++++++--
 gi/types.py    | 33 ++++-----------------------------
 2 files changed, 27 insertions(+), 31 deletions(-)

commit 35f79b22ec5abf02fd0bb66352eb1f251b65a078
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Tue Jul 16 16:00:14 2013 -0700

    Add callable and descriptor protocols to PyGICallableInfo

    Add tp_call (__call__) function to callable info objects.
    This allows for replacement of wrapped invoke methods directly
    with the already created callable info object. This has the
    additional side effect of making doc strings lazily bound
    (only generated when __doc__ is accessed).

    Add tp_desc_get (__get__) to PyGIFunctionInfo which returns
    a bound version of itself for methods and constructors.

    Update various internal type checks to reflect the changes.
    Update tests to reflect the new callable type being the same
    across Python 2 & 3.

    This patch gives roughly a %17 speedup for Gtk imports and
    an %11 speedup for GI method calls.

    https://bugzilla.gnome.org/show_bug.cgi?id=704037

 gi/module.py                |   5 +-
 gi/overrides/__init__.py    |  10 ++-
 gi/pygi-info.c              | 179
 ++++++++++++++++++++++++++++++++++++++++++--
 gi/pygi.h                   |  13 ++++
 gi/types.py                 |  35 +--------
 tests/test_docstring.py     |   6 +-
 tests/test_gi.py            |  32 +++-----
 tests/test_overrides_gtk.py |   4 +-
 8 files changed, 212 insertions(+), 72 deletions(-)

commit 2339e030e4dc4d93ea770bca380a89f831d56be6
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Fri Jul 26 19:33:32 2013 -0700

    Move "from Python" GObject out arg marshaler into specialized function

    Move hacks specific to out argument marshaling for vfuncs into a
    a specialized function. This allows standard function call marshaling
    to continue working correctly when there are no extra references
    holding the arguments "foo(SomeObject())". This is currently being
    masked because all GI functions are wrapped by additional layers
    of Python functions. When these layers are removed, it exposes
    bugs introduced by reference counting hacks intended for vfunc
    return arguments.

    https://bugzilla.gnome.org/show_bug.cgi?id=704037

 gi/pygi-argument.c        |  2 +-
 gi/pygi-marshal-from-py.c | 37 ++++++++++++++++++++++++++++++-------
 gi/pygi-marshal-from-py.h |  3 +++
 3 files changed, 34 insertions(+), 8 deletions(-)

commit 627c5faaa54ed9a2b59ac1547833c171cd1a1e87
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Fri Jul 26 17:34:01 2013 -0700

    Add underscore prefix and _cache_adapter suffix to marshaling
    functions

    Add underscores to all _pygi_marshal_* functions. We don't currently
    export symbols, but we might need to for C unittesting. This will
    ensure we don't have a "public API".
    Add _cache_adapter suffix to marshaling functions which are light
    weight wrappers intended only for cached marshalers.

 gi/pygi-argument.c        | 40 +++++++++++-----------
 gi/pygi-cache.c           | 10 +++---
 gi/pygi-marshal-from-py.c | 86
 +++++++++++++++++++++++------------------------
 gi/pygi-marshal-from-py.h | 44 ++++++++++++------------
 gi/pygi-marshal-to-py.c   | 48 +++++++++++++-------------
 gi/pygi-marshal-to-py.h   | 34 +++++++++----------
 6 files changed, 131 insertions(+), 131 deletions(-)

commit bec0b543be8d993996d8a17c343c3f2f33a9398f
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Tue Jul 16 11:13:17 2013 -0700

    Add common attribute accessors to PyGIBaseInfo

    Add __name__, __module__, and __doc__ accessors to
    PyGIBaseInfo object. This is a precursory patch for setting
    up PyGICallableInfo as a directly callable object with lazy
    doc string evaluation.

    https://bugzilla.gnome.org/show_bug.cgi?id=704037

 gi/_glib/pyglib-python-compat.h |  5 +++
 gi/pygi-info.c                  | 83
 +++++++++++++++++++++++++++++++++++++++--
 gi/types.py                     |  7 ++--
 3 files changed, 88 insertions(+), 7 deletions(-)

commit ea194404843a16555f9a475cc973872a4428bfe1
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Sat Jul 13 23:10:31 2013 -0700

    Merge method and constructor setup

    Merge _setup_constructors into _setup_methods as they contain same
    basic logic. This removes an unnecessary call with additional
    filtering of GIObjectInfo.get_methods() which can be large for
    objects with many methods.

    https://bugzilla.gnome.org/show_bug.cgi?id=704037

 gi/types.py | 15 ++++-----------
 1 file changed, 4 insertions(+), 11 deletions(-)

commit 6b36fbe904d19f515578f447daa7657d3a9a859c
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Sat Jul 13 18:11:18 2013 -0700

    Remove redundant info.get_name calls

    Remove a number of redundant calls to GIBaseInfo.get_name. Info
    names are already cached on function objects so re-use them when
    possible. This gives a small load time improvement by removing over
    2000 calls when importing Gtk.

    https://bugzilla.gnome.org/show_bug.cgi?id=704037

 gi/module.py | 1 -
 gi/types.py  | 8 +++-----
 2 files changed, 3 insertions(+), 6 deletions(-)

commit 6fdde256e840600c84a648ab21da2fe5c212e5bc
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Fri Jul 12 12:21:54 2013 -0700

    Move doc string generator into separate module

    Move the doc string generator for creating function signatures
    into "gi.docstring". This includes a new API for getting and
    setting the doc string creation functions:

    gi.docstring.get_doc_string_generator
    gi.docstring.set_doc_string_generator
    gi.docstring.generate_doc_string

    Beyond adding the ability for custom doc string generators,
    this API is a necessary step for adding lazy __doc__
    attribute access for optimization.

    https://bugzilla.gnome.org/show_bug.cgi?id=704037

 gi/Makefile.am          |   3 +-
 gi/docstring.py         | 106
 ++++++++++++++++++++++++++++++++++++++++++++++++
 gi/types.py             |  55 ++-----------------------
 tests/Makefile.am       |   1 +
 tests/test_docstring.py |  49 ++++++++++++++++++++++
 tests/test_gi.py        |  30 --------------
 6 files changed, 161 insertions(+), 83 deletions(-)

commit f86701b15ee04c717d9c6bf688101606165e4f83
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Wed Jul 24 19:36:28 2013 -0700

    tests: Change GHashTable<string,GValue> marshaling test to use GValue

    Add test to explicitly use a boxed GStrv GValue in addition to a
    Python list sub-class.

    https://bugzilla.gnome.org/show_bug.cgi?id=666636

 tests/test_everything.py | 21 +++++++++++++++------
 1 file changed, 15 insertions(+), 6 deletions(-)

commit 6ea41b60691e1ba7e21374582d7aea072af71103
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Thu Jul 25 18:00:47 2013 -0700

    gtk-demo: Change demo to use Gtk.Application

    Replace deriving from Gtk.Window with deriving from Gtk.Application
    connected to a Gtk.ApplicationWindow instance.

    https://bugzilla.gnome.org/show_bug.cgi?id=698547

 demos/gtk-demo/demos/printing.py |  2 +-
 demos/gtk-demo/gtk-demo.py       | 40
 ++++++++++++++++++++--------------------
 2 files changed, 21 insertions(+), 21 deletions(-)

commit fae58044ea0b2e7f47fbdacc5b58ac36f673ecbd
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Tue Jul 23 14:25:01 2013 -0700

    Move _pygi_argument_to_object_basic_type into pygi-marshal-to-py.c

    Move _pygi_argument_to_object_basic_type into pygi-marshal-to-py.c
    and rename to _pygi_marshal_to_py_basic_type.
    Cleanup and simplify dependant sub-marshalers for unichar, utf8,
    and filename types.

    https://bugzilla.gnome.org/show_bug.cgi?id=693405

 gi/pygi-argument.c      |  73 +-----------------------------
 gi/pygi-argument.h      |   4 --
 gi/pygi-cache.c         |   4 +-
 gi/pygi-marshal-to-py.c | 115
 +++++++++++++++++++++++++++++++++++++-----------
 gi/pygi-marshal-to-py.h |  27 +++---------
 5 files changed, 99 insertions(+), 124 deletions(-)

commit cba401ac1543c2fdb68fff0dba8f6da7eed23bfa
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Tue Jul 23 13:06:33 2013 -0700

    Unify and clean up from Python marshalers for basic types

    Unify and cleanup boolean, float, double, gtype, unichar, utf8,
    and filename marshalers.

    https://bugzilla.gnome.org/show_bug.cgi?id=693405

 gi/pygi-cache.c           | 101
 ++--------------------------------------------
 gi/pygi-marshal-from-py.c |  86 ++++++++++++---------------------------
 gi/pygi-marshal-from-py.h |  30 --------------
 3 files changed, 28 insertions(+), 189 deletions(-)

commit 9e6e01d065bf0acc5b99ae0e8c034d689231bfe1
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Tue Jul 23 12:35:06 2013 -0700

    Unify from Python int64 and uint64 marshalers

    Replaced int64 and uint64 cached marshalers with usage of the
    unified basic type marshaler. Replace a large amount of int64
    exception formatting code with usage of %S for Python 3 and
    give a more vague message for Python 2.

    https://bugzilla.gnome.org/show_bug.cgi?id=693405

 gi/pygi-cache.c           |  36 +--------
 gi/pygi-marshal-from-py.c | 193
 ++++++++++------------------------------------
 gi/pygi-marshal-from-py.h |  10 ---
 3 files changed, 43 insertions(+), 196 deletions(-)

commit 46653922003c7d1d5d16f5cdb39b3faadf9aff27
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Tue Jul 23 11:03:14 2013 -0700

    Unify from Python int16 and int32 marshalers

    Add PyNumber_Check to unified basic type marshaler.
    Add bounds checking to unified int16 and int32 marshalers.
    Replaced int16 and int32 cached marshalers with usage of
    unified basic type marshaler.

    https://bugzilla.gnome.org/show_bug.cgi?id=693405

 gi/pygi-cache.c           |  69 +--------------
 gi/pygi-marshal-from-py.c | 218
 ++++++++++------------------------------------
 gi/pygi-marshal-from-py.h |  20 -----
 3 files changed, 48 insertions(+), 259 deletions(-)

commit 4b9c725a615fcf4a5e8d089d275d4586032d0d1f
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Tue Jul 23 00:27:14 2013 -0700

    Unify from Python boolean, int8, and uint8 marshalers

    Replaced boolean, int8, and uint8 cached marshalers with usage of
    unified basic type marshaler. Add bounds checking to unified int8
    marshalers.

    https://bugzilla.gnome.org/show_bug.cgi?id=693405

 gi/pygi-cache.c           |  48 +++------------
 gi/pygi-marshal-from-py.c | 146
 +++++++++++-----------------------------------
 gi/pygi-marshal-from-py.h |  20 ++-----
 3 files changed, 45 insertions(+), 169 deletions(-)

commit f517bfbc134b78a23b754332e59b9bb67bb68e98
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Mon Jul 22 23:24:13 2013 -0700

    Add support for PyBytes with int8 and uint8 from Python marshaler

    This additional type marshaling is necessary for unifying marhalers
    due to the same feature being available with cached argument
    marshaling.

    https://bugzilla.gnome.org/show_bug.cgi?id=693405

 gi/pygi-marshal-from-py.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

commit fe9df90531f3dd04c0d13d73ebd4ae7dd396c9b1
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Mon Jul 22 23:23:29 2013 -0700

    Move from Python integer marshaling into separate function

    Add _pygi_marshal_from_py_long for marshaling Python objects
    that can convert to a PyLong type. This allows for better
    sharing of code amongst marshalers along with unifying
    them across Python 2.7 and 3.0.

    https://bugzilla.gnome.org/show_bug.cgi?id=693405

 gi/pygi-argument.c        |   3 +-
 gi/pygi-marshal-from-py.c | 159
 ++++++++++++++++++++++++----------------------
 2 files changed, 84 insertions(+), 78 deletions(-)

commit f7748affae3d6ef0cc2e409f65761fb29c01b038
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Mon Jul 22 22:19:26 2013 -0700

    Move _pygi_argument_from_object_basic_type into pygi-marshal-from-py.c

    Move _pygi_argument_from_object_basic_type into pygi-marshal-from-py.c
    and rename to: _pygi_marshal_from_py_basic_type

    https://bugzilla.gnome.org/show_bug.cgi?id=693405

 gi/pygi-argument.c        | 149
 +---------------------------------------------
 gi/pygi-marshal-from-py.c | 147
 +++++++++++++++++++++++++++++++++++++++++++++
 gi/pygi-marshal-from-py.h |   4 ++
 3 files changed, 152 insertions(+), 148 deletions(-)

commit 9c9510eec782f242280af24e86adf3561e4fac72
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Fri Jul 19 23:37:35 2013 -0700

    Move basic type marshaling out of _pygi_argument_from_object

    Move the marshaling of Python objects to GI arguments for basic types
    into a new function: _pygi_argument_from_object_basic_type
    This is staging work needed before unifying basic type marshaling
    of arguments from Python to GI.

    https://bugzilla.gnome.org/show_bug.cgi?id=693405

 gi/pygi-argument.c | 73
 ++++++++++++++++++++++++++++++++++--------------------
 1 file changed, 46 insertions(+), 27 deletions(-)

commit 0e2441518ef31bd2b4102ba5780c3ded00bec59a
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Fri Jul 19 20:16:10 2013 -0700

    Replace to Python cached marshalers with unified basic type marshaler

    Add cached arg marshaler "_pygi_marshal_to_py_basic_type" which
    unifies functions, vfuncs, signals, and property marshaling for
    "basic types". Remove all the individual cached arg marshalers
    for these types.

    https://bugzilla.gnome.org/show_bug.cgi?id=693405

 gi/pygi-argument.c      | 104 +++++++++++------------------------
 gi/pygi-argument.h      |   4 ++
 gi/pygi-cache.c         | 114 +++++++-------------------------------
 gi/pygi-marshal-to-py.c | 142
 ++++--------------------------------------------
 gi/pygi-marshal-to-py.h |  48 ++--------------
 5 files changed, 73 insertions(+), 339 deletions(-)

commit 663fe5893bbc9f34bf8aa4da3cb6f9186a8233b1
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Fri Jul 19 18:00:40 2013 -0700

    Move to Python basic type marshaling out of _pygi_argument_to_object

    Move the marshaling of GI arguments to Python objects for basic types
    into a new function. The required information for this marshaler
    is a GITypeTag and GITransfer. Argument marshaling matching these
    requirments are now found in: _pygi_argument_to_object_basic_type.
    The new marshaler can be used with a generic argument cache marshaler
    to unify all of the "basic type" marshaling.

    https://bugzilla.gnome.org/show_bug.cgi?id=693405

 gi/pygi-argument.c | 86
 +++++++++++++++++++++++++++++++++++++++---------------
 1 file changed, 63 insertions(+), 23 deletions(-)

commit dd43a1e19440dbe025451d2e4e07a6074086498d
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Sat Jul 6 14:16:36 2013 -0700

    Override GValue.set/get_boxed with static C marshaler

    Override boxed type get/set methods on GValue to use the static C
    GValue marshaler. This works around the inability of the introspection
    version of these methods to know what the held GValue type is.
    With this, all boxed types will now marshal properly with GValues as
    their storage.

    https://bugzilla.gnome.org/show_bug.cgi?id=688081

 gi/_gobject/gobjectmodule.c | 38 ++++++++++++++++++++++++++++++++++++++
 gi/overrides/GObject.py     |  9 +++++++++
 2 files changed, 47 insertions(+)

commit 2cff4827e6d15bcad630316a8a4e67968a70bbbf
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Sat Jul 6 14:10:20 2013 -0700

    Refactor pyg_value_from_pyobject into two functions

    Break pyg_value_from_pyobject into two functions. One which keeps
    Python exceptions queued (pyg_value_from_pyobject_with_error) and
    one which clears them (pyg_value_from_pyobject). This allows for
    re-use for code which want to keep the errors around

    https://bugzilla.gnome.org/show_bug.cgi?id=688081

 gi/_gobject/gobjectmodule.c     |  4 ++-
 gi/_gobject/pygobject-private.h |  1 +
 gi/_gobject/pygobject.h         |  2 ++
 gi/_gobject/pygtype.c           | 67
 ++++++++++++++++++++++++++++++++---------
 4 files changed, 59 insertions(+), 15 deletions(-)

commit 84e91a9da3522d042faca65fd2ada1ccaee60153
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Sat Jul 6 20:41:19 2013 -0700

    Fix indentation for pyg_value_from_pyobject

    https://bugzilla.gnome.org/show_bug.cgi?id=688081

 gi/_gobject/pygtype.c | 744
 +++++++++++++++++++++++++-------------------------
 1 file changed, 372 insertions(+), 372 deletions(-)

commit 6a29d9be14ec33d06816ade67a5ccf5c7a1cf398
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Sat Jul 6 13:32:39 2013 -0700

    Add deprecation warning for marshaling arbitrary objects as pointers

    Add deprecation warning for marshaling arbitrary objects to/from void
    pointers with the exception of integers, PyCapsules, and None.

    https://bugzilla.gnome.org/show_bug.cgi?id=688081

 gi/pygi-marshal-from-py.c | 17 ++++++++++++++++-
 gi/pygi-marshal-to-py.c   | 10 ++++++++--
 2 files changed, 24 insertions(+), 3 deletions(-)

commit 077aefed8566adcb99d7570f52fe09c74c2098e5
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Sat Jul 6 13:34:53 2013 -0700

    Move PyGIDeprecationWarning to C for shared Python/C usage

    https://bugzilla.gnome.org/show_bug.cgi?id=688081

 gi/__init__.py | 19 ++++---------------
 gi/gimodule.c  | 18 ++++++++++++++++++
 gi/pygi.h      |  2 ++
 3 files changed, 24 insertions(+), 15 deletions(-)

commit 90427107af36ea3c624b36967ee181ed13b9828f
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Thu Jul 18 14:59:55 2013 -0700

    Replace usage of __import__ with importlib.import_module

    https://bugzilla.gnome.org/show_bug.cgi?id=682320

 gi/module.py | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

commit 6391a8e4f03d4010c0d7de79fc83138fd69e0e33
Author: Mike Gorse <mgorse@suse.com>
Date:   Wed Jul 10 16:44:23 2013 -0500

    Always unref the GiTypeInfo when generating an argument cache

    We were leaking a GiTypeInfo when handling child arguments.

    https://bugzilla.gnome.org/show_bug.cgi?id=703973

 gi/pygi-cache.c | 1 +
 1 file changed, 1 insertion(+)

commit ce0ad7066ebdb7018fdce58dc32bbaa715206a0c
Author: Mike Gorse <mgorse@suse.com>
Date:   Wed Jul 10 12:10:16 2013 -0500

    Unref interface info when fetching enums or flags

    When calling g_type_info_get_interface, the resulting interface should
    be dereferenced by calling g_base_info_unref.

    https://bugzilla.gnome.org/show_bug.cgi?id=703960

 gi/pygi-marshal-from-py.c | 8 +++++++-
 gi/pygi-marshal-to-py.c   | 3 +++
 2 files changed, 10 insertions(+), 1 deletion(-)

commit a93755ddba9a1761b627583d7b9be63783c2c063
Author: Daniel Drake <dsd@laptop.org>
Date:   Tue Jul 9 13:03:36 2013 -0600

    Speed up MRO calculation

    Optimize gi.type.mro() with the following observations and tricks:

    1. Python prepares all the base classes before trying to calculate the
       MRO of the current one (it first needs to populate __bases__, for
       example). So we can assume that the base class MRO is already
       available
       in __mro__ and this will have been previously calculated (by us,
       in the
       case of gi classes). This avoids repeating a lot of MRO-calculating
       work,
       and also avoids (re)calculating MROs for inheritance chains
       that don't
       have any gi classes in them anyway.

    2. With that simplification in place, we can avoid recursion, which
    is not
       all that great in Python...

    3. ...except in the uncommon case of a Python2 old-style classes,
    where
       __mro__ is not available. There doesn't seem to be any existing
       function to calculate or read MRO of old-style python classes,
       so just
       keep doing as before: calculate the C3 MRO of the old-style
       class via
       recursion. That behaviour is not really correct, and the
       recursion is
       not desirable, so we print a warning here.

    This makes the "hello world" Sugar app start up approximately
    0.5 seconds
    faster on XO-1.5.

    https://bugzilla.gnome.org/show_bug.cgi?id=703829

 gi/types.py      | 30 +++++++++++++++++++++++++++---
 tests/test_gi.py | 16 ++++++++++++----
 2 files changed, 39 insertions(+), 7 deletions(-)

commit 7aca95781fc76f3e820e63325ccc07d128a60075
Author: Daniel Drake <dsd@laptop.org>
Date:   Wed Jul 10 10:45:47 2013 -0600

    tests: Add tests for MRO override

    Add tests for the MRO override to prevent against unintended
    behaviour changes.

    https://bugzilla.gnome.org/show_bug.cgi?id=703829

 tests/test_gi.py | 66
 ++++++++++++++++++++++++++++++++++++++++++--------------
 1 file changed, 50 insertions(+), 16 deletions(-)

commit a15333a36e31b76ea6b80251553840269ec5deb1
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Sat Jul 6 13:34:13 2013 -0700

    Add GIL safety to pyobject_copy for copying boxed PyObjects

    https://bugzilla.gnome.org/show_bug.cgi?id=688081

 gi/_gobject/pygobject.c | 3 +++
 1 file changed, 3 insertions(+)

commit 097c116d43a21bebf8e4bccde9cacc551db1e1e5
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Sat Jul 6 09:48:35 2013 -0700

    testhelper: Fix import requirement for GObject

    Replace the importing of gi._gobject._gobject with
    gi.repository.GObject
    in tests/testhelpermodule.c

    The testhelper module was only importing the static bindings
    (gi._gobject._gobject) and not the overrides (gi.repository.GObject).
    This was causing some tests to fail when test_thread was the first
    test to run in the suite due to it registering new types based on
    PyGObject_Type.

    https://bugzilla.gnome.org/show_bug.cgi?id=703647

 tests/testhelpermodule.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 0f6c571755e65b5e77d3d84e4516ef90d8ce0162
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Wed Jul 3 05:26:12 2013 -0700

    Add marshalling of GI_TYPE_TAG_VOID held in a GValue to int

    Replace assertion for this case with a simple marshalling of the
    pointer value to a Python int. While not particularly useful
    this allows some callbacks in WebKit to function without causing
    a segfault.

    https://bugzilla.gnome.org/show_bug.cgi?id=694233

 gi/pygi-argument.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

commit e0084e7e73845fa2a2da29017d3622f361f11dfb
Author: Cole Robinson <crobinso@redhat.com>
Date:   Sat Feb 16 17:26:43 2013 -0500

    GTK overrides: Make connect_signals handle tuple

    This is used for passing extra arguments to callbacks during
    signal emission in the form of:
    builder.connect_signals({'on_clicked': (on_clicked, arg1, arg2)})

    Co-Authored-By: Simon Feltman <sfeltman@src.gnome.org>

    https://bugzilla.gnome.org/show_bug.cgi?id=693994

 gi/overrides/Gtk.py         |  51 ++++++++----
 tests/test_overrides_gtk.py | 196
 +++++++++++++++++++++++++++++---------------
 2 files changed, 165 insertions(+), 82 deletions(-)

commit 466567373289e6f141709f08efa80ba588d3d64a
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Tue Jul 2 18:06:01 2013 -0700

    Re-add support for passing GValue's by reference

    Fix special casing when marshaling from a Python held GValue
    to a GValue argument intended for a function call.
    The re-factoring of GValue marshaling in commit #9e47afe459df942d9f
    broke this by always making a copy of the GValue. This removed the
    ability to retrieve values with functions like
    gtk_style_context_get_style_property.

    https://bugzilla.gnome.org/show_bug.cgi?id=701058

 gi/pygi-argument.c        |  2 +-
 gi/pygi-marshal-from-py.c | 32 +++++++++++++++-----------------
 2 files changed, 16 insertions(+), 18 deletions(-)

commit 40a3cd18fd7111ae177f6ab716f78d131f59a1c0
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Tue Jul 2 19:20:04 2013 -0700

    tests: Add test for pass-by-reference GValue

    https://bugzilla.gnome.org/show_bug.cgi?id=701058

 tests/test_gi.py | 7 +++++++
 1 file changed, 7 insertions(+)

commit 3b3251593ea107f06b160234b0ca5393cb39ac1b
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Tue Jul 2 23:02:17 2013 -0700

    Clear return value of closures to zero when an exception occures

    For return types other than void, set the ffi closure return argument
    to 0 when a Python exception occures. This a good default in general
    but also has the side affect of fixing failing idle callbacks
    by causing them to be removed from main loops (after their stack
    is printed).

    https://bugzilla.gnome.org/show_bug.cgi?id=702552

 gi/pygi-closure.c | 14 ++++++++++++++
 tests/test_gi.py  |  8 ++++++++
 2 files changed, 22 insertions(+)

commit ae3439f1d22482d6a920a869d3d17e7054af6f80
Author: Martin Pitt <martinpitt@gnome.org>
Date:   Wed Jul 3 10:40:28 2013 +0200

    Don't use doctest syntax in docstrings for examples

    These are not actual doctests, so don't use the >>> syntax there. Just
    indent
    them.

    This fixes pyflakes 0.7 failures.

    https://bugzilla.gnome.org/show_bug.cgi?id=701009

 gi/_gobject/propertyhelper.py | 11 +++++------
 gi/overrides/GObject.py       |  8 ++++----
 gi/overrides/Gtk.py           |  2 +-
 3 files changed, 10 insertions(+), 11 deletions(-)

commit b96a6dc968566d339a2dfd7dd631ae52d812302a
Author: Garrett Regier <garrettregier@gmail.com>
Date:   Tue Jul 2 06:07:15 2013 -0700

    Add support for properties of type GInterface

    Add support for G_TYPE_INTERFACE/GInterface to switch
    statement which handles G_TYPE_OBJECT based properties.

    Signed-off-by: Simon Feltman <sfeltman@src.gnome.org>

    https://bugzilla.gnome.org/show_bug.cgi?id=703456

 gi/_gobject/gobjectmodule.c   |  1 +
 gi/_gobject/propertyhelper.py |  3 ++-
 tests/test_properties.py      | 16 ++++++++++++++++
 3 files changed, 19 insertions(+), 1 deletion(-)

commit 61b268e44af63d6d78feae42578bf75aa5cfd511
Author: Martin Pitt <martinpitt@gnome.org>
Date:   Fri Jun 21 07:27:48 2013 +0200

    pygtkcompat: Fix for missing methods on Windows

    Deal with non-existing Gtk.Clipboard.get() and
    GdkPixbuf.Pixbuf.new_from_file_at_scale() methods.

    https://bugzilla.gnome.org/show_bug.cgi?id=702787

 pygtkcompat/pygtkcompat.py | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

commit 5e3ab0bb974cc785659666b871d795730b4f06b3
Author: Chun-wei Fan <fanchunwei@src.gnome.org>
Date:   Fri Jun 21 12:32:33 2013 +0800

    gi/pygi-info.c: Avoid C99-style variable declaration

    https://bugzilla.gnome.org/show_bug.cgi?id=702786

 gi/pygi-info.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

commit 94167e12c118c85cd3172f9f5824fe53e55bcc2d
Author: Martin Pitt <martinpitt@gnome.org>
Date:   Wed May 29 11:20:35 2013 +0200

    GLib overrides: fix typo in deprecation message

    Spotted by Dmitrijs Ledkovs, thanks!

 gi/overrides/GLib.py | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 86569b69ade0fe157fa87365e9369dde84cd5c90
Author: Martin Pitt <martinpitt@gnome.org>
Date:   Tue May 28 17:57:20 2013 +0200

    configure.ac: post-release version bump to 3.9.3

 configure.ac | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

commit 10f703189ed6a7104252907d1b1a114f26d79559
Author: Martin Pitt <martinpitt@gnome.org>
Date:   Tue May 28 17:56:07 2013 +0200

    release 3.9.2

 NEWS | 15 +++++++++++++++
 1 file changed, 15 insertions(+)