summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDongHun Kwak <dh0128.kwak@samsung.com>2017-07-12 08:40:27 +0900
committerDongHun Kwak <dh0128.kwak@samsung.com>2017-07-12 08:40:31 +0900
commit8e71f268f3e991f68355f535b399cc8cb51fc95d (patch)
tree25009f8fe0fd468c5e5f8e32aa6e8ad03d914a3c
parent9e05f0b92b0d6cde13d729955af7b911f79ba833 (diff)
downloadpygobject2-8e71f268f3e991f68355f535b399cc8cb51fc95d.tar.gz
pygobject2-8e71f268f3e991f68355f535b399cc8cb51fc95d.tar.bz2
pygobject2-8e71f268f3e991f68355f535b399cc8cb51fc95d.zip
Imported Upstream version 3.11.5
Change-Id: I5b5a3e71a92ea82cb98feb0c11f00c68804188dc Signed-off-by: DongHun Kwak <dh0128.kwak@samsung.com>
-rw-r--r--ChangeLog30224
-rw-r--r--Makefile.am35
-rw-r--r--Makefile.in37
-rw-r--r--NEWS16
-rw-r--r--PKG-INFO4
-rw-r--r--aclocal.m45
-rwxr-xr-xconfigure58
-rw-r--r--configure.ac10
-rw-r--r--gi/Makefile.am77
-rw-r--r--gi/Makefile.in358
-rw-r--r--gi/__init__.py19
-rw-r--r--gi/_constants.py (renamed from gi/_gobject/constants.py)4
-rw-r--r--gi/_glib/Makefile.am91
-rw-r--r--gi/_glib/Makefile.in845
-rw-r--r--gi/_glib/__init__.py25
-rw-r--r--gi/_gobject/Makefile.am74
-rw-r--r--gi/_gobject/Makefile.in402
-rw-r--r--gi/_gobject/__init__.py43
-rw-r--r--gi/_option.py (renamed from gi/_glib/option.py)4
-rw-r--r--gi/_propertyhelper.py (renamed from gi/_gobject/propertyhelper.py)20
-rw-r--r--gi/_signalhelper.py (renamed from gi/_gobject/signalhelper.py)4
-rw-r--r--gi/gimodule.c27
-rw-r--r--gi/glibmodule.c (renamed from gi/_glib/glibmodule.c)34
-rw-r--r--gi/gobjectmodule.c (renamed from gi/_gobject/gobjectmodule.c)7
-rw-r--r--gi/module.py8
-rw-r--r--gi/overrides/GLib.py4
-rw-r--r--gi/overrides/GObject.py9
-rw-r--r--gi/overrides/__init__.py2
-rw-r--r--gi/pygboxed.c (renamed from gi/_gobject/pygboxed.c)0
-rw-r--r--gi/pygboxed.h (renamed from gi/_gobject/pygboxed.h)0
-rw-r--r--gi/pygenum.c (renamed from gi/_gobject/pygenum.c)0
-rw-r--r--gi/pygenum.h (renamed from gi/_gobject/pygenum.h)0
-rw-r--r--gi/pygflags.c (renamed from gi/_gobject/pygflags.c)0
-rw-r--r--gi/pygflags.h (renamed from gi/_gobject/pygflags.h)0
-rw-r--r--gi/pygi-argument.c140
-rw-r--r--gi/pygi-argument.h3
-rw-r--r--gi/pygi-array.c909
-rw-r--r--gi/pygi-array.h42
-rw-r--r--gi/pygi-basictype.c824
-rw-r--r--gi/pygi-basictype.h42
-rw-r--r--gi/pygi-boxed.c2
-rw-r--r--gi/pygi-cache.c1096
-rw-r--r--gi/pygi-cache.h82
-rw-r--r--gi/pygi-ccallback.c4
-rw-r--r--gi/pygi-closure.c314
-rw-r--r--gi/pygi-closure.h13
-rw-r--r--gi/pygi-enum-marshal.c408
-rw-r--r--gi/pygi-enum-marshal.h42
-rw-r--r--gi/pygi-error.c109
-rw-r--r--gi/pygi-error.h35
-rw-r--r--gi/pygi-foreign.c2
-rw-r--r--gi/pygi-hashtable.c413
-rw-r--r--gi/pygi-hashtable.h35
-rw-r--r--gi/pygi-info.c4
-rw-r--r--gi/pygi-invoke.c6
-rw-r--r--gi/pygi-list.c466
-rw-r--r--gi/pygi-list.h38
-rw-r--r--gi/pygi-marshal-cleanup.c406
-rw-r--r--gi/pygi-marshal-cleanup.h71
-rw-r--r--gi/pygi-marshal-from-py.c1918
-rw-r--r--gi/pygi-marshal-from-py.h156
-rw-r--r--gi/pygi-marshal-to-py.c884
-rw-r--r--gi/pygi-marshal-to-py.h104
-rw-r--r--gi/pygi-object.c273
-rw-r--r--gi/pygi-object.h46
-rw-r--r--gi/pygi-private.h2
-rw-r--r--gi/pygi-signal-closure.c1
-rw-r--r--gi/pygi-source.c3
-rw-r--r--gi/pygi-struct-marshal.c517
-rw-r--r--gi/pygi-struct-marshal.h73
-rw-r--r--gi/pygi-struct.c2
-rw-r--r--gi/pygi-value.c862
-rw-r--r--gi/pygi-value.h44
-rw-r--r--gi/pygi.h3
-rw-r--r--gi/pyginterface.c (renamed from gi/_gobject/pyginterface.c)0
-rw-r--r--gi/pyginterface.h (renamed from gi/_gobject/pyginterface.h)0
-rw-r--r--gi/pyglib-private.h (renamed from gi/_glib/pyglib-private.h)14
-rw-r--r--gi/pyglib-python-compat.h (renamed from gi/_glib/pyglib-python-compat.h)65
-rw-r--r--gi/pyglib.c (renamed from gi/_glib/pyglib.c)81
-rw-r--r--gi/pyglib.h (renamed from gi/_glib/pyglib.h)10
-rw-r--r--gi/pygobject-private.h (renamed from gi/_gobject/pygobject-private.h)21
-rw-r--r--gi/pygobject.c (renamed from gi/_gobject/pygobject.c)2
-rw-r--r--gi/pygobject.h (renamed from gi/_gobject/pygobject.h)0
-rw-r--r--gi/pygoptioncontext.c (renamed from gi/_glib/pygoptioncontext.c)0
-rw-r--r--gi/pygoptioncontext.h (renamed from gi/_glib/pygoptioncontext.h)0
-rw-r--r--gi/pygoptiongroup.c (renamed from gi/_glib/pygoptiongroup.c)0
-rw-r--r--gi/pygoptiongroup.h (renamed from gi/_glib/pygoptiongroup.h)0
-rw-r--r--gi/pygparamspec.c (renamed from gi/_gobject/pygparamspec.c)0
-rw-r--r--gi/pygparamspec.h (renamed from gi/_gobject/pygparamspec.h)2
-rw-r--r--gi/pygpointer.c (renamed from gi/_gobject/pygpointer.c)0
-rw-r--r--gi/pygpointer.h (renamed from gi/_gobject/pygpointer.h)0
-rw-r--r--gi/pygspawn.c (renamed from gi/_glib/pygspawn.c)0
-rw-r--r--gi/pygspawn.h (renamed from gi/_glib/pygspawn.h)0
-rw-r--r--gi/pygtype.c (renamed from gi/_gobject/pygtype.c)728
-rw-r--r--gi/pygtype.h (renamed from gi/_gobject/pygtype.h)17
-rw-r--r--gi/types.py36
-rw-r--r--pygtkcompat/pygtkcompat.py4
-rw-r--r--tests/Makefile.am14
-rw-r--r--tests/Makefile.in14
-rw-r--r--tests/test_everything.py50
-rw-r--r--tests/test_gi.py16
-rw-r--r--tests/test_gobject.py4
-rw-r--r--tests/test_properties.py2
-rw-r--r--tests/test_signal.py2
-rw-r--r--tests/test_source.py45
105 files changed, 36930 insertions, 7037 deletions
diff --git a/ChangeLog b/ChangeLog
index e69de29..fe30f0d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -0,0 +1,30224 @@
+commit 058d944e3b9ef9157e912e6374b54a2eb5f7f5d1
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Feb 3 06:45:09 2014 -0800
+
+ Restore pygobject_version API needed for pygobject.h
+
+ Add gi._gobject.pygobject_version which was removed with commit:
+ https://git.gnome.org/browse/pygobject/commit/?id=2624bd2b
+ This is needed for pygobject.h to function properly.
+
+ gi/_gobject/__init__.py | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit f3be4cedcb1d395a3fabee95d7460bce86268153
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Feb 3 06:29:07 2014 -0800
+
+ cache refactoring: Add comments to arg cache setup functions
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=709700
+
+ gi/pygi-cache.c | 36 ++++++++++++++++++++++++++++++++++++
+ 1 file changed, 36 insertions(+)
+
+commit 56ac6bd9ed99d6bb2cb8641581a594105036be68
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Feb 3 06:24:18 2014 -0800
+
+ cache refactoring: Use consistent prefix for arg cache functions
+
+ Use "pygi_arg_cache" as the prefix for arg cache memory related
+ functions.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=709700
+
+ gi/pygi-array.c | 6 ++--
+ gi/pygi-basictype.c | 4 +--
+ gi/pygi-cache.c | 74
+ ++++++++++++++++++++++++------------------------
+ gi/pygi-cache.h | 58 ++++++++++++++++++++-----------------
+ gi/pygi-ccallback.c | 2 +-
+ gi/pygi-closure.c | 6 ++--
+ gi/pygi-enum-marshal.c | 4 +--
+ gi/pygi-error.c | 4 +--
+ gi/pygi-hashtable.c | 30 ++++++++++----------
+ gi/pygi-info.c | 2 +-
+ gi/pygi-invoke.c | 2 +-
+ gi/pygi-list.c | 2 +-
+ gi/pygi-object.c | 2 +-
+ gi/pygi-struct-marshal.c | 2 +-
+ 14 files changed, 102 insertions(+), 96 deletions(-)
+
+commit 204f5a187782c5325ed6bed96c9a940f3aa67d04
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun Jan 12 12:26:30 2014 -0800
+
+ marshal refactoring: Move GValue marshaling from pytype into
+ pygi-value
+
+ Move marshaling of GValues to and from PyObjects into
+ pygi-value.c. Make
+ PyGTypeMarshal struct and related functions accessible via pygtype.h.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=709700
+
+ gi/gobjectmodule.c | 2 +
+ gi/pygi-struct-marshal.c | 1 +
+ gi/pygi-value.c | 720
+ +++++++++++++++++++++++++++++++++++++++++++++-
+ gi/pygi-value.h | 12 +
+ gi/pygobject-private.h | 16 --
+ gi/pygobject.c | 2 +-
+ gi/pygtype.c | 728
+ +----------------------------------------------
+ gi/pygtype.h | 17 ++
+ 8 files changed, 757 insertions(+), 741 deletions(-)
+
+commit b8120d848dc5d36832123b1a913015f6e1fd8cdc
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun Jan 12 11:41:20 2014 -0800
+
+ marshal refactoring: Move GIArgument from GValue code to new file
+
+ Add gi/pygi-value.h and .c files with initial contents of
+ _pygi_argument_from_g_value. Eventually this file will contain
+ all code
+ related to GValue marshaling from various code locations in the
+ project.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=709700
+
+ gi/Makefile.am | 2 +
+ gi/pygi-argument.c | 126 +----------------------------------------
+ gi/pygi-argument.h | 3 -
+ gi/pygi-signal-closure.c | 1 +
+ gi/pygi-value.c | 144
+ +++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-value.h | 32 +++++++++++
+ 6 files changed, 180 insertions(+), 128 deletions(-)
+
+commit c2d5857e9b964427190e1230be32ae7919e86bc0
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sat Oct 12 21:26:55 2013 -0700
+
+ cache refactoring: Move enum and flags arg setup and marshaling to
+ new file
+
+ Move enum and flags argument cache setup and marshaling fragments into
+ isolated file: pygi-enum-marshal.c. Remove pygi-marshal-from/to files.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=709700
+
+ gi/Makefile.am | 6 +-
+ gi/pygi-argument.c | 2 -
+ gi/pygi-cache.c | 74 ++-------
+ gi/pygi-enum-marshal.c | 408
+ ++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-enum-marshal.h | 42 +++++
+ gi/pygi-marshal-from-py.c | 206 -----------------------
+ gi/pygi-marshal-from-py.h | 57 -------
+ gi/pygi-marshal-to-py.c | 152 -----------------
+ gi/pygi-marshal-to-py.h | 34 ----
+ 9 files changed, 464 insertions(+), 517 deletions(-)
+
+commit 1d0f120d77582509b4e75d83f500a1ace7ed6421
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sat Oct 12 20:00:12 2013 -0700
+
+ cache refactoring: Move various struct arg setup and marshaling to
+ new file
+
+ Move struct (boxed, union, gvalue, gclosure, variant, and pointer)
+ argument
+ cache setup and marshaling fragments into isolated file:
+ pygi-struct-marshal.c.
+ Remove redundant and dead code related to boxed and union marshaling.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=709700
+
+ gi/Makefile.am | 2 +
+ gi/pygi-argument.c | 1 +
+ gi/pygi-array.c | 3 +
+ gi/pygi-cache.c | 72 +------
+ gi/pygi-cache.h | 1 +
+ gi/pygi-marshal-cleanup.c | 48 -----
+ gi/pygi-marshal-cleanup.h | 16 --
+ gi/pygi-marshal-from-py.c | 288 --------------------------
+ gi/pygi-marshal-from-py.h | 33 ---
+ gi/pygi-marshal-to-py.c | 120 -----------
+ gi/pygi-marshal-to-py.h | 27 ---
+ gi/pygi-object.c | 2 +-
+ gi/pygi-struct-marshal.c | 516
+ ++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-struct-marshal.h | 73 +++++++
+ 14 files changed, 607 insertions(+), 595 deletions(-)
+
+commit 4dcaa2b988239e01224994098c3e7cbe8b455fe0
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sat Oct 12 16:40:58 2013 -0700
+
+ cache refactoring: Move GObject arg setup and marshaling into new file
+
+ Move GObject argument cache setup and marshaling fragments into
+ isolated file: pygi-object.c.
+ Break GIInterfaceCache creation and setup into API for interface based
+ argument cache usage.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=709700
+
+ gi/Makefile.am | 2 +
+ gi/pygi-argument.c | 7 +-
+ gi/pygi-cache.c | 183 ++++++++++++++-----------------
+ gi/pygi-cache.h | 7 ++
+ gi/pygi-marshal-cleanup.c | 27 -----
+ gi/pygi-marshal-cleanup.h | 10 --
+ gi/pygi-marshal-from-py.c | 123 ---------------------
+ gi/pygi-marshal-from-py.h | 12 --
+ gi/pygi-marshal-to-py.c | 31 ------
+ gi/pygi-marshal-to-py.h | 8 --
+ gi/pygi-object.c | 273
+ ++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-object.h | 46 ++++++++
+ 12 files changed, 416 insertions(+), 313 deletions(-)
+
+commit 2cddba811592fbb990322fbf2dce516ffd7e94cd
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sat Oct 12 12:39:20 2013 -0700
+
+ cache refactoring: Move closure setup and marshaling into pygi-closure
+
+ Move closure argument caching and marshaling fragments into
+ pygi-closure.c.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=709700
+
+ gi/pygi-cache.c | 111 ++--------------
+ gi/pygi-cache.h | 9 --
+ gi/pygi-closure.c | 314
+ +++++++++++++++++++++++++++++++++++++++++++++-
+ gi/pygi-closure.h | 13 +-
+ gi/pygi-marshal-cleanup.c | 14 ---
+ gi/pygi-marshal-cleanup.h | 5 -
+ gi/pygi-marshal-from-py.c | 160 -----------------------
+ gi/pygi-marshal-from-py.h | 6 -
+ gi/pygi-marshal-to-py.c | 13 --
+ gi/pygi-marshal-to-py.h | 4 -
+ 10 files changed, 333 insertions(+), 316 deletions(-)
+
+commit 18d8274724484a27e05d2e60baac1f20c72b6d2b
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sat Oct 12 11:30:36 2013 -0700
+
+ cache refactoring: Move GError arg setup and marshaling to new file
+
+ Move GError argument caching and marshaling fragments into
+ isolated file: pygi-error.c.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=709700
+
+ gi/Makefile.am | 2 +
+ gi/pygi-cache.c | 93 ++++++++++++---------------------------
+ gi/pygi-error.c | 109
+ ++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-error.h | 35 +++++++++++++++
+ gi/pygi-marshal-from-py.c | 13 ------
+ gi/pygi-marshal-from-py.h | 6 ---
+ gi/pygi-marshal-to-py.c | 22 ----------
+ gi/pygi-marshal-to-py.h | 4 --
+ 8 files changed, 174 insertions(+), 110 deletions(-)
+
+commit c45cafd07fc62ad545f3e58f2b7350ee4b2bb9b7
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sat Oct 12 03:07:53 2013 -0700
+
+ cache refactoring: Move GArray arg setup and marshaling into new file
+
+ Move GArray argument caching and marshaling fragments into an
+ isolated file: pygi-array.c.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=709700
+
+ gi/Makefile.am | 2 +
+ gi/pygi-array.c | 906
+ ++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-array.h | 42 +++
+ gi/pygi-cache.c | 236 +-----------
+ gi/pygi-marshal-cleanup.c | 150 --------
+ gi/pygi-marshal-cleanup.h | 10 -
+ gi/pygi-marshal-from-py.c | 354 ------------------
+ gi/pygi-marshal-from-py.h | 6 -
+ gi/pygi-marshal-to-py.c | 210 -----------
+ gi/pygi-marshal-to-py.h | 4 -
+ 10 files changed, 963 insertions(+), 957 deletions(-)
+
+commit 4697a3793b46a803c6dbef749ba75c0fee80020d
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Fri Oct 11 23:26:08 2013 -0700
+
+ cache refactoring: Move GList/GSList arg setup and marshaling into
+ new file
+
+ Move GList and GSList argument caching and marshaling fragments
+ into an
+ isolated file: pygi-list.c.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=709700
+
+ gi/Makefile.am | 2 +
+ gi/pygi-cache.c | 71 ++-----
+ gi/pygi-list.c | 466
+ ++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-list.h | 38 ++++
+ gi/pygi-marshal-cleanup.c | 80 --------
+ gi/pygi-marshal-cleanup.h | 10 -
+ gi/pygi-marshal-from-py.c | 156 ----------------
+ gi/pygi-marshal-from-py.h | 12 --
+ gi/pygi-marshal-to-py.c | 98 ----------
+ gi/pygi-marshal-to-py.h | 8 -
+ 10 files changed, 517 insertions(+), 424 deletions(-)
+
+commit c48ddacf4479d2cf80beb9c614cdce2a61599b3b
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Fri Oct 11 21:30:45 2013 -0700
+
+ cache refactoring: Break sequence cache up for array vs list
+
+ Add new arg cache type specialized for arrays. This cleans up
+ the basic
+ sequence cache type which does not need length and size related
+ info. Remove
+ fixed length checks from GList and GSList from_py marshaling
+ because these
+ will always be -1.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=709700
+
+ gi/pygi-cache.c | 160
+ +++++++++++++++++++++++++++++++++++-----------
+ gi/pygi-cache.h | 16 ++++-
+ gi/pygi-invoke.c | 4 +-
+ gi/pygi-marshal-cleanup.c | 28 ++++----
+ gi/pygi-marshal-from-py.c | 37 ++++-------
+ gi/pygi-marshal-to-py.c | 23 +++----
+ 6 files changed, 177 insertions(+), 91 deletions(-)
+
+commit c1a2a86a7b51f4dc5a5da9f8808552c38acadf9d
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Fri Oct 11 20:12:01 2013 -0700
+
+ cache refactoring: Move basic type arg setup and marshaling into
+ new file
+
+ Move all basic type arg caching and marshaling fragments into
+ an isolated
+ file where most functions are made static. pygi-basictype.h exposes:
+ pygi_arg_basic_type_new_from_info, _pygi_marshal_from_py_basic_type,
+ and
+ _pygi_marshal_to_py_basic_type which allows continued use for all
+ marshaling
+ code paths.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=709700
+
+ gi/Makefile.am | 2 +
+ gi/pygi-argument.c | 1 +
+ gi/pygi-basictype.c | 824
+ ++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-basictype.h | 42 +++
+ gi/pygi-cache.c | 82 +----
+ gi/pygi-cache.h | 1 +
+ gi/pygi-marshal-cleanup.c | 26 --
+ gi/pygi-marshal-cleanup.h | 10 -
+ gi/pygi-marshal-from-py.c | 478 ---------------------------
+ gi/pygi-marshal-from-py.h | 18 -
+ gi/pygi-marshal-to-py.c | 155 ---------
+ gi/pygi-marshal-to-py.h | 11 -
+ 12 files changed, 880 insertions(+), 770 deletions(-)
+
+commit 4a6bf3be49cc5aec7287c41ec02c78d60df1d44c
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Fri Oct 11 17:39:31 2013 -0700
+
+ cache refactoring: Move PyGIHashCache and related marshaling into
+ new file
+
+ Re-organize hash table arg cache and its marshaling by moving all
+ related code fragments into an isolated file where most of it is made
+ static. pygi-hashtable.h exposes a single function:
+ pygi_arg_hash_table_new_from_info. This is all the caching system
+ needs to
+ produce the proper bits for handling hash table marshaling.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=709700
+
+ gi/Makefile.am | 4 +-
+ gi/pygi-cache.c | 103 +-----------
+ gi/pygi-cache.h | 21 ++-
+ gi/pygi-hashtable.c | 413
+ ++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-hashtable.h | 35 ++++
+ gi/pygi-marshal-cleanup.c | 63 -------
+ gi/pygi-marshal-cleanup.h | 10 --
+ gi/pygi-marshal-from-py.c | 125 --------------
+ gi/pygi-marshal-from-py.h | 6 -
+ gi/pygi-marshal-to-py.c | 85 ----------
+ gi/pygi-marshal-to-py.h | 4 -
+ 11 files changed, 471 insertions(+), 398 deletions(-)
+
+commit 983d0c2252f91e63d5fa0222ef2b67722cb97434
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Fri Oct 11 15:49:32 2013 -0700
+
+ cache refactoring: Separate ArgCache creation and setup
+
+ Move PyGIArgCache and PyGIInterfaceCache generic setup into standalone
+ functions: pygi_arg_base_setup and pygi_arg_interface_setup
+ respectively.
+ Shift argument order and move arguments which will eventually
+ be removed
+ from the signature into the tail with comment. Isolate special
+ casing for
+ GI_INFO_TYPE_CALLBACK ArgCache creation to a single location in
+ _arg_cache_new_for_interface.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=709700
+
+ gi/pygi-cache.c | 263
+ ++++++++++++++++++++++++++++++++------------------------
+ gi/pygi-cache.h | 15 ++++
+ 2 files changed, 167 insertions(+), 111 deletions(-)
+
+commit 0af98aca40fe266d1fd93caaa7256bb92ba1d3e4
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun Feb 2 15:52:24 2014 -0800
+
+ tests: Add skip and expectedFailure to test_gi.test_callback_owned_box
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=722899
+
+ tests/test_gi.py | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit e79d2acc54c1e3b052835de5de20feb0b7069476
+Author: Mike Gorse <mgorse@suse.com>
+Date: Fri Jan 24 05:17:06 2014 -0600
+
+ tests: Add test for an owned boxed struct passed in a callback
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=722899
+
+ tests/test_gi.py | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+commit b12ceed8cc5fa398cea2061813aac6a5ba100b6f
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Thu Jan 23 17:19:12 2014 -0800
+
+ Rename gi.types.GIObjectMeta to gi.types.GObjectMeta
+
+ Rename GIObjectMeta to GObjectMeta reverting it to its original
+ name prior
+ to commit https://git.gnome.org/browse/pygobject/commit/?id=2624bd2b
+ That change could have been considered an API break for anyone
+ deriving from
+ gi.types.GObjectMeta since it is essentially public API. Rename
+ base meta
+ class to _GObjectMetaBase which was previously gi._gobject before
+ commit 2624bd2b (private API).
+
+ gi/module.py | 8 ++++----
+ gi/types.py | 10 +++++-----
+ 2 files changed, 9 insertions(+), 9 deletions(-)
+
+commit 15fdd827ce4bff847fb35c817c6ea2d3650eec00
+Author: Patrick Welche <prlw1@cam.ac.uk>
+Date: Thu Jan 23 23:49:51 2014 +0000
+
+ build: Add --without-common configure option for package maintainers
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=721646
+
+ Makefile.am | 2 ++
+ configure.ac | 7 +++++++
+ gi/Makefile.am | 2 ++
+ 3 files changed, 11 insertions(+)
+
+commit df21dbbc84fa319af2a0f0664de436ca30df616e
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Thu Jan 16 16:33:41 2014 -0800
+
+ tests: Add skipped test for GLib.Source inheritance problems
+
+ Add test showing memory problems with sub-classes of GLib.Source.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=722387
+
+ tests/test_source.py | 45 +++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 45 insertions(+)
+
+commit 7222a37a4b4955fe6c1dcc86e0eb798d653711e8
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Wed Jan 15 12:51:57 2014 -0800
+
+ Fix reference sharing of gi sub-modules in Python 2
+
+ Ensure we add a new reference to sub-modules added to gi._gi. This may
+ have caused GC errors upon exiting the Python process since a
+ reference was
+ shared by sys.modules and gi._gi.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=722274
+
+ gi/gimodule.c | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+commit 8c838b683220bcbf2091bba97b91ddb56b275aed
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Tue Jan 14 23:46:44 2014 -0800
+
+ demo: Add TreeModel interface implementation demonstration
+
+ Add demo which shows how to implement the Gtk.TreeModel interfaces
+ virtual
+ methods.
+
+ demos/gtk-demo/demos/TreeView/treemodel_large.py | 143
+ +++++++++++++++++++++++
+ 1 file changed, 143 insertions(+)
+
+commit 911898bac5d0ad5a42ed9990588bd98871f4a8a4
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Tue Jan 14 23:33:16 2014 -0800
+
+ demo: Remove "Icon View" and "Tree View" directories
+
+ demos/gtk-demo/demos/Icon View/__init__.py | 0
+ demos/gtk-demo/demos/Icon View/iconviewbasics.py | 220 ----------------
+ demos/gtk-demo/demos/Icon View/iconviewedit.py | 98 --------
+ demos/gtk-demo/demos/Tree View/__init__.py | 0
+ demos/gtk-demo/demos/Tree View/liststore.py | 210 ----------------
+ .../gtk-demo/demos/Tree View/treemodel_filelist.py | 234
+ -----------------
+ .../gtk-demo/demos/Tree View/treemodel_filetree.py | 279
+ ---------------------
+ 7 files changed, 1041 deletions(-)
+
+commit f89fa08ba756a1c529ff48beb39025f834a249bf
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Tue Jan 14 23:08:33 2014 -0800
+
+ demo: Remove spaces from demo sub-directories
+
+ Move "Icon View" to IconView and "Tree View" to TreeView. This
+ will help
+ ability to package the demos in tarball releases in future versions.
+
+ demos/gtk-demo/demos/IconView/__init__.py | 0
+ demos/gtk-demo/demos/IconView/iconviewbasics.py | 220 ++++++++++++++++
+ demos/gtk-demo/demos/IconView/iconviewedit.py | 98 ++++++++
+ demos/gtk-demo/demos/TreeView/__init__.py | 0
+ demos/gtk-demo/demos/TreeView/liststore.py | 210 ++++++++++++++++
+ .../gtk-demo/demos/TreeView/treemodel_filelist.py | 234
+ +++++++++++++++++
+ .../gtk-demo/demos/TreeView/treemodel_filetree.py | 279
+ +++++++++++++++++++++
+ 7 files changed, 1041 insertions(+)
+
+commit 0b7d85f3379adfb3cf1122588e333707ee089e46
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Tue Jan 14 14:28:52 2014 -0800
+
+ build: Remove _glib directory include from testhelper CFLAGS
+
+ tests/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 35b5a85aad91f48935dd49fee60d69e6184eff2c
+Author: Colin Walters <walters@verbum.org>
+Date: Tue Jan 14 16:33:38 2014 -0500
+
+ build: Set PLATFORM_VERSION again to 3.0
+
+ We are installing headers to:
+ /usr/include/pygobject-$(PLATFORM_VERSION)/pygobject.h
+
+ If the variable isn't set, then things attempting to use pygobject
+ obviously fail.
+
+ This was a regression from a build system refactoring.
+
+ gi/Makefile.am | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit f2a79904ff4d60bff657bfbfd6a2ce8ab9307848
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Tue Jan 14 12:54:42 2014 -0800
+
+ Fix Python 2 build warning for module definitions
+
+ Define PYGLIB_MODULE_ERROR_RETURN as NULL for both Python 2 and
+ 3. This is
+ needed now that the function signature created with
+ PYGLIB_MODULE_START is
+ consistent between the two versions.
+
+ gi/pyglib-python-compat.h | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+commit 61b4af05646a8f014cfb00a5507fec2deb9aafa6
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Tue Jan 14 12:26:16 2014 -0800
+
+ tests: Run PyFlakes and PEP8 only on SUBDIRS
+
+ Move PyFlakes and PEP8 checks into check-local of the root
+ Makefile.am. Only
+ run these tools on selective subdirs of top_srcdir. This fixes
+ a problem
+ where vpath build directories within the srcdir would contain links
+ to the
+ source files, causing these tools to run multiple times slowing
+ down the
+ check process.
+
+ Makefile.am | 21 ++++++++++++++++++++-
+ tests/Makefile.am | 6 ------
+ 2 files changed, 20 insertions(+), 7 deletions(-)
+
+commit 9a7f6f08c1dc0eb0dd91437da8ac429fbafc8a4a
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Tue Jan 14 12:25:09 2014 -0800
+
+ Remove _glib include path from gi module target
+
+ gi/Makefile.am | 7 ++-----
+ 1 file changed, 2 insertions(+), 5 deletions(-)
+
+commit 8afd7e880a72a44e6ea46c763bab82146fd75c96
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Wed Jan 8 19:22:08 2014 -0800
+
+ Move Python glib options module into gi package
+
+ Move gi/_glib/option.py into gi/_option.py. Remove gi/_glib since
+ it is no
+ longer needed.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=712197
+
+ Makefile.am | 3 +-
+ configure.ac | 1 -
+ gi/Makefile.am | 1 -
+ gi/_glib/Makefile.am | 21 ---
+ gi/_glib/__init__.py | 20 ---
+ gi/_glib/option.py | 363
+ ------------------------------------------------
+ gi/_option.py | 363
+ ++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/overrides/GLib.py | 2 +-
+ gi/overrides/GObject.py | 2 +-
+ 9 files changed, 367 insertions(+), 409 deletions(-)
+
+commit ad565e5bbc9d12607c39be9479bc671a8f2de6e3
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Wed Jan 8 18:57:58 2014 -0800
+
+ Merge static PyGLib module into PyGI
+
+ Remove gi._glib._glib as a separately compiled module. Move all C
+ files into
+ pygobject/gi. Remove compilation and use of libpyglib-gi-2.0-python.so
+ as a
+ shared dependency since we do not distribute header files for it.
+ Remove unused threading macros.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=712197
+
+ gi/Makefile.am | 16 +-
+ gi/_glib/Makefile.am | 74 +------
+ gi/_glib/__init__.py | 5 -
+ gi/_glib/glibmodule.c | 103 ---------
+ gi/_glib/option.py | 2 +-
+ gi/_glib/pyglib-private.h | 49 -----
+ gi/_glib/pyglib-python-compat.h | 195 -----------------
+ gi/_glib/pyglib.c | 475
+ ----------------------------------------
+ gi/_glib/pyglib.h | 77 -------
+ gi/_glib/pygoptioncontext.c | 337 ----------------------------
+ gi/_glib/pygoptioncontext.h | 39 ----
+ gi/_glib/pygoptiongroup.c | 298 -------------------------
+ gi/_glib/pygoptiongroup.h | 42 ----
+ gi/_glib/pygspawn.c | 259 ----------------------
+ gi/_glib/pygspawn.h | 32 ---
+ gi/gimodule.c | 9 +
+ gi/glibmodule.c | 77 +++++++
+ gi/gobjectmodule.c | 5 +-
+ gi/overrides/GLib.py | 2 +-
+ gi/pyglib-private.h | 43 ++++
+ gi/pyglib-python-compat.h | 195 +++++++++++++++++
+ gi/pyglib.c | 402 ++++++++++++++++++++++++++++++++++
+ gi/pyglib.h | 67 ++++++
+ gi/pygoptioncontext.c | 337 ++++++++++++++++++++++++++++
+ gi/pygoptioncontext.h | 39 ++++
+ gi/pygoptiongroup.c | 298 +++++++++++++++++++++++++
+ gi/pygoptiongroup.h | 42 ++++
+ gi/pygspawn.c | 259 ++++++++++++++++++++++
+ gi/pygspawn.h | 32 +++
+ 29 files changed, 1819 insertions(+), 1991 deletions(-)
+
+commit 2624bd2b4a465a2d234951dd5b855fe8a0d46e1c
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Thu Oct 31 03:13:53 2013 -0700
+
+ Move gobject sub-module Python files into the main gi package
+
+ This moves the signalhelper, propertyhelper, and constants Python
+ modules
+ from gi/_gobject into gi. Keep gi/_gobject/__init__.py around because
+ it is
+ still needed to maintain the "_PyGObject_API" exposed by
+ pygobject.h. This
+ allows external modules compiled with prior versions of PyGObject to
+ continue working with newer versions.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=712197
+
+ Makefile.am | 5 +-
+ gi/__init__.py | 19 +-
+ gi/_constants.py | 49 +++++
+ gi/_gobject/Makefile.am | 5 +-
+ gi/_gobject/__init__.py | 42 +----
+ gi/_gobject/constants.py | 50 -----
+ gi/_gobject/propertyhelper.py | 417
+ ------------------------------------------
+ gi/_gobject/signalhelper.py | 259 --------------------------
+ gi/_propertyhelper.py | 417
+ ++++++++++++++++++++++++++++++++++++++++++
+ gi/_signalhelper.py | 258 ++++++++++++++++++++++++++
+ gi/module.py | 16 +-
+ gi/overrides/GObject.py | 7 +-
+ gi/overrides/__init__.py | 2 +-
+ gi/types.py | 41 ++++-
+ pygtkcompat/pygtkcompat.py | 4 +-
+ tests/test_gi.py | 2 +-
+ tests/test_gobject.py | 4 +-
+ tests/test_properties.py | 2 +-
+ tests/test_signal.py | 2 +-
+ 19 files changed, 796 insertions(+), 805 deletions(-)
+
+commit d3e8946dbb23197a2e9d7de351a7b9cd04d360b9
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Thu Oct 31 02:22:03 2013 -0700
+
+ Merge gobject static code into the gi module
+
+ Remove gi._gobject._gobject as a separately compiled static module and
+ move all the files into gi._gi.
+ Remove dead module initialization macros from "pyglib-python-compat.h"
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=712197
+
+ gi/Makefile.am | 31 +-
+ gi/_glib/pyglib-python-compat.h | 62 +-
+ gi/_gobject/Makefile.am | 69 +-
+ gi/_gobject/__init__.py | 4 +-
+ gi/_gobject/constants.py | 3 +-
+ gi/_gobject/gobjectmodule.c | 2213
+ -----------------------------------
+ gi/_gobject/propertyhelper.py | 16 +-
+ gi/_gobject/pygboxed.c | 235 ----
+ gi/_gobject/pygboxed.h | 27 -
+ gi/_gobject/pygenum.c | 371 ------
+ gi/_gobject/pygenum.h | 27 -
+ gi/_gobject/pygflags.c | 497 --------
+ gi/_gobject/pygflags.h | 27 -
+ gi/_gobject/pyginterface.c | 124 --
+ gi/_gobject/pyginterface.h | 40 -
+ gi/_gobject/pygobject-private.h | 204 ----
+ gi/_gobject/pygobject.c | 2473
+ ---------------------------------------
+ gi/_gobject/pygobject.h | 636 ----------
+ gi/_gobject/pygparamspec.c | 418 -------
+ gi/_gobject/pygparamspec.h | 31 -
+ gi/_gobject/pygpointer.c | 198 ----
+ gi/_gobject/pygpointer.h | 27 -
+ gi/_gobject/pygtype.c | 1927 ------------------------------
+ gi/_gobject/pygtype.h | 28 -
+ gi/_gobject/signalhelper.py | 3 +-
+ gi/gimodule.c | 13 +-
+ gi/gobjectmodule.c | 2213
+ +++++++++++++++++++++++++++++++++++
+ gi/module.py | 4 +-
+ gi/pygboxed.c | 235 ++++
+ gi/pygboxed.h | 27 +
+ gi/pygenum.c | 371 ++++++
+ gi/pygenum.h | 27 +
+ gi/pygflags.c | 497 ++++++++
+ gi/pygflags.h | 27 +
+ gi/pygi-argument.c | 3 +-
+ gi/pygi-boxed.c | 2 +-
+ gi/pygi-ccallback.c | 2 +-
+ gi/pygi-foreign.c | 2 +-
+ gi/pygi-info.c | 2 +-
+ gi/pygi-marshal-to-py.c | 3 +-
+ gi/pygi-private.h | 2 +-
+ gi/pygi-source.c | 3 +-
+ gi/pygi-struct.c | 2 +-
+ gi/pygi.h | 3 +-
+ gi/pyginterface.c | 124 ++
+ gi/pyginterface.h | 40 +
+ gi/pygobject-private.h | 205 ++++
+ gi/pygobject.c | 2473
+ +++++++++++++++++++++++++++++++++++++++
+ gi/pygobject.h | 636 ++++++++++
+ gi/pygparamspec.c | 418 +++++++
+ gi/pygparamspec.h | 33 +
+ gi/pygpointer.c | 198 ++++
+ gi/pygpointer.h | 27 +
+ gi/pygtype.c | 1927 ++++++++++++++++++++++++++++++
+ gi/pygtype.h | 28 +
+ gi/types.py | 3 +-
+ tests/Makefile.am | 2 +-
+ 57 files changed, 9594 insertions(+), 9649 deletions(-)
+
+commit a329f559002f2be0898309c9d81cdf2c34aef158
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Tue Jan 14 10:15:53 2014 -0800
+
+ tests: Fix test_torture_profile to return a number from its callback
+
+ Return a number from rather than None from the callback passed to
+ regress_test_torture_signature_2. This fixes a TypeError being
+ raised in
+ callback return argument marshaling which was ignored by the test
+ suite.
+
+ tests/test_everything.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit a50a8386aae54dace7e46569415fdef85758fb9c
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Jan 14 08:53:25 2014 +0100
+
+ Add test for callback user data arguments with following arguments
+
+ In this case we can't use the varargs userdata handling. Provides
+ test case for
+ https://bugzilla.gnome.org/show_bug.cgi?id=722104.
+
+ tests/test_everything.py | 48
+ ++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 48 insertions(+)
+
+commit 3563a2d21a9e08a802d1cf30e04ba340e0bcfb49
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Jan 13 08:19:02 2014 -0800
+
+ valgrind: Add suppression files for python3.3 and python3.3dm
+
+ Add new suppression files for Python 3. Use PYTHON_BASENAME for the
+ suppression filename in the various make check.valgrind
+ targets. Rename
+ python.supp to python2.7.supp
+
+ tests/Makefile.am | 6 +-
+ tests/python.supp | 387 ----------------------------------------
+ tests/python2.7.supp | 387 ++++++++++++++++++++++++++++++++++++++++
+ tests/python3.3.supp | 471
+ +++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/python3.3dm.supp | 471
+ +++++++++++++++++++++++++++++++++++++++++++++++++
+ 5 files changed, 1332 insertions(+), 390 deletions(-)
+
+commit 5c6f8afed5f6aa05d65d64509a2c9b8041a66b05
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Jan 13 18:53:55 2014 -0800
+
+ Makefile.am: Fix NEWS and ChangeLog generation under vpath builds
+
+ Make sure NEWS generation uses top_srcdir to allow "make release-news"
+ to
+ work under a vpath build (directory outside the source tree).
+ Update ChangeLog target to use $(top_srcdir)/missing. This fixes
+ a problem
+ where running "make dist" under a vpath build directory would
+ include an
+ empty ChangeLog.
+
+ Makefile.am | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 056325cba3c86aefcf45ba10f2b7cf86e9fc1800
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Jan 13 18:53:02 2014 -0800
+
+ Update HACKING to include better release tagging instructions
+
+ HACKING | 15 ++++++++-------
+ 1 file changed, 8 insertions(+), 7 deletions(-)
+
+commit c0a43d259c003c5d06db23debd0675b87e805b74
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Jan 13 17:20:17 2014 -0800
+
+ configure.ac: post release version bump to 3.11.5
+
+ NEWS | 16 ++++++++++++++++
+ configure.ac | 2 +-
+ 2 files changed, 17 insertions(+), 1 deletion(-)
+
+commit 44d003798d9d14dde16fb44c69b94a411bdee26b
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Jan 13 16:51:41 2014 -0800
+
+ Fix mid-argument list callback user data expecting a tuple
+
+ Ensure user data arguments are always packed into a tuple during
+ callback
+ marshaling. This fixes cases where there is mid-argument user data
+ which is
+ not in the form of a variable length tuple.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=722104
+
+ gi/pygi-marshal-from-py.c | 16 +++++++++++++++-
+ 1 file changed, 15 insertions(+), 1 deletion(-)
+
+commit 415b240e3baab522f3bf9752995610f950ba609e
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Tue Oct 15 03:57:52 2013 -0700
+
+ Remove special case GObject base class check when creating GI classes
+
+ Replace explicit GObject.Object string name check when calculating the
+ introspection class hierarchy with a more generalized technique. This
+ allows
+ any C based wrapper of a GType to "underride" an introspection class
+ automatically. This currently only handles the case of GObject.Object,
+ but
+ will be used for fundamentals and GParamSpec.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=631901
+
+ gi/module.py | 17 +++++++++++------
+ 1 file changed, 11 insertions(+), 6 deletions(-)
+
+commit 9b02b29016958791dfa9d7ebfc6c2ec44ab5690d
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Tue Jan 7 09:16:54 2014 -0800
+
+ overrides: Fix __repr__ for various Gdk structs
+
+ Change __repr__ overrides for Gdk.Color, Gdk.RGBA, and Gdk.Atom to
+ return a
+ string reprentation that is valid Python given an expected
+ environment.
+ See: http://docs.python.org/2/reference/datamodel.html#object.__repr__
+
+ gi/overrides/Gdk.py | 10 +++++-----
+ tests/test_atoms.py | 7 +++++--
+ tests/test_overrides_gdk.py | 9 +++++++++
+ 3 files changed, 19 insertions(+), 7 deletions(-)
+
+commit f6a87935596a3b59c238a5572b288f34691b53d1
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Tue Jan 7 07:31:22 2014 -0800
+
+ docs: Fix array length argument skipping with preceding out arguments
+
+ Remove split_function_info_args and use a list of all arguments for
+ generating skipped index lists. Determine argument skipping based
+ on the
+ full argument list in each in/inout and out/inout argument list
+ buildouts.
+ This fixes a problem where out arguments preceding array length
+ arguments
+ would still show array length arguments in the docstring. This was
+ due to an
+ index mismatch when using split lists instead of list of all
+ arguments.
+
+ gi/docstring.py | 38 ++++++++++++--------------------------
+ tests/test_docstring.py | 37 +++++++++++++++----------------------
+ 2 files changed, 27 insertions(+), 48 deletions(-)
+
+commit f114edc0a0afa64077a13459034afc4255b7a3f1
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Jan 6 22:10:47 2014 -0800
+
+ overrides: Remove GLib.Source.attach
+
+ Remove GLib.Source.attach override now that tail end allow-none
+ arguments
+ default to None when not specified.
+
+ gi/overrides/GLib.py | 5 -----
+ tests/test_glib.py | 7 +++++++
+ 2 files changed, 7 insertions(+), 5 deletions(-)
+
+commit 50ab6a8b70cbe7b67fc8d804b7773bb2c9b47251
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Jan 6 21:42:09 2014 -0800
+
+ overrides: Remove Gtk overrides with tail end allow-none keywords
+
+ Remove overrides for Widget.render_icon, TextIter.begins_tag,
+ ends_tag,
+ toggles_tag, and TreeModel.filter_new. These overrides added an
+ optional keyword=None for allow-none arguments. This is now implicitly
+ accepted by the PyGObject machinery so the overrides can go away.
+
+ gi/overrides/Gtk.py | 16 ----------------
+ tests/test_overrides_gtk.py | 11 +++++++++++
+ 2 files changed, 11 insertions(+), 16 deletions(-)
+
+commit 2d388fcfca4bf1258d01b4491b4168589f3dd2b0
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Jan 6 21:22:41 2014 -0800
+
+ overrides: Remove Pango.Context.get_metrics
+
+ Remove the override for Pango.Context and the get_metrics method. This
+ can
+ be done now that tail end method arguments with "allow-none"
+ are implicitly
+ defaulted to use None/NULL.
+
+ gi/overrides/Pango.py | 9 ---------
+ tests/test_overrides_pango.py | 12 ++++++++++++
+ 2 files changed, 12 insertions(+), 9 deletions(-)
+
+commit 43b35b1df3b6c0d8679f3cc0b08ef6ddcb276331
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Jan 6 17:35:04 2014 -0800
+
+ Add enum and flags member methods
+
+ Add all methods from GIEnumInfo to both enums and flags classes.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=693099
+
+ gi/module.py | 2 ++
+ tests/test_gi.py | 9 +++++++++
+ 2 files changed, 11 insertions(+)
+
+commit 731a2cb4372084eac6cfe5bf190f6efa730e97e4
+Author: Patrick Welche <prlw1@cam.ac.uk>
+Date: Mon Jan 6 22:31:48 2014 +0000
+
+ python.m4: g/c JD_PYTHON_CHECK_VERSION
+
+ We currently require automake 1.11.1, and its AM_PYTHON_CHECK_VERSION
+ is identical (made here).
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=721662
+
+ configure.ac | 4 ++--
+ m4/python.m4 | 23 ++---------------------
+ 2 files changed, 4 insertions(+), 23 deletions(-)
+
+commit aaaead18e2167c2becb309f1d9ae199222c0256b
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sat Jan 4 16:31:56 2014 -0800
+
+ Support union creation with PyGIStruct
+
+ Add additional case for allowing the creation bare unions wrapped with
+ PyGIStruct. This is needed because PyGIStruct wraps both GIStruct and
+ GIUnion types.
+
+ gi/pygi-struct.c | 39 ++++++++++++++++++++++++++++++++++-----
+ tests/test_repository.py | 13 +++++++++++++
+ 2 files changed, 47 insertions(+), 5 deletions(-)
+
+commit 64f15961b637a7e1388bd8d2cd08f04fa20e4de4
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sat Jan 4 16:07:44 2014 -0800
+
+ Fix crash in error handling when creating struct with mismatched
+ info type
+
+ Error handling code was attempting to get the PyType of a pointer to a
+ pointer. Use the correct amount of indirection so an exception is
+ raised as
+ intended rather than a segfault.
+
+ gi/pygi-info.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 07abf8343bbeac6f36d370ced654fa6506b22175
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Wed Jan 1 20:23:17 2014 -0800
+
+ docs: Skip display of default constructor for disguised structs
+
+ Structs which have zero length should now show a default constructor.
+ Structs with a length should not show keyword arguments in the default
+ constructor.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=708060
+
+ gi/docstring.py | 9 ++++++++-
+ tests/test_docstring.py | 18 ++++++++++++++++--
+ 2 files changed, 24 insertions(+), 3 deletions(-)
+
+commit e8359847136e9ad76a670a382c0abc61cb4e81d3
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Wed Jan 1 19:57:06 2014 -0800
+
+ Cleanup disguised struct constructor error and add it to boxed
+
+ Give a cleaner error message when an attempt is made to create
+ a disguised
+ struct which also gives a hint to look at the pydoc. Add similar
+ error to
+ disguised boxed/unions.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=647249
+
+ gi/pygi-boxed.c | 17 ++++++++++++++---
+ gi/pygi-struct.c | 2 +-
+ tests/test_everything.py | 1 -
+ tests/test_glib.py | 4 ++++
+ 4 files changed, 19 insertions(+), 5 deletions(-)
+
+commit 9ce527b09ed032f2cc83c2d83de8bb6d7b19be02
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Wed Jan 1 19:54:59 2014 -0800
+
+ docs: List default constructor in doc strings
+
+ Add default constructor to class docs strings as:
+ Object(**properties)
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=708060
+
+ gi/docstring.py | 10 ++++------
+ 1 file changed, 4 insertions(+), 6 deletions(-)
+
+commit 9bfd73e7c3f2ec4975b3e530ba7c2cc55ee793d5
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Wed Jan 1 17:34:32 2014 -0800
+
+ docs: List constructors in object and struct doc strings
+
+ Add type dispatching to gi.docstring documentation generator for
+ info types
+ of StructInfo and ObjectInfo. Add lazy doc string generation to
+ Object and Struct meta classes by using a property for __doc__. This
+ lists
+ available constructors immediately in all GObject.Object and Struct
+ docs.
+ ipython example:
+
+ >>> Gtk.Button?
+ :Constructors:
+ Button(**properties)
+ new()
+ new_from_icon_name(icon_name:str, size:int)
+ new_from_stock(stock_id:str)
+ new_with_label(label:str)
+ new_with_mnemonic(label:str)
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=708060
+
+ gi/docstring.py | 36 +++++++++++++++++++++++++++++-------
+ gi/types.py | 9 +++++++++
+ tests/test_docstring.py | 8 ++++++++
+ 3 files changed, 46 insertions(+), 7 deletions(-)
+
+commit 44612636575dd93c97210a7255c4490e2c84db67
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Wed Jan 1 17:10:15 2014 -0800
+
+ docs: Cleanup PyGIBaseInfo repr
+
+ Remove angle brackets and pointer address from
+ PyGIBaseInfo.__repr__. This
+ cleans up documentation and makes it easier to read.
+
+ gi/pygi-info.c | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+commit 826c0e63eabac68fd665335950d311988a1405e3
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Tue Dec 31 21:45:21 2013 -0800
+
+ docs: Add return values and skip implicit out arguments in functions
+
+ Add gi.CallableInfo.skip_return static binding for testing if
+ the return
+ value should show up in docs. Skip implicit list index arguments
+ for out
+ values.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=697356
+
+ gi/docstring.py | 26 +++++++++++++++++++++-----
+ gi/pygi-info.c | 7 +++++++
+ tests/test_docstring.py | 6 ++++++
+ 3 files changed, 34 insertions(+), 5 deletions(-)
+
+commit aeccdaddf32dc7b48a79a1cd95a421a26895c9b2
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Tue Dec 31 21:15:27 2013 -0800
+
+ docs: Replace usage of functools.wraps with a custom version
+
+ Using functools.wraps in overrides would cause docstring evaluation
+ which
+ can hurt performance during overrides loading. Add custom wraps
+ decorator
+ which only copies __name__ and __module__ attributes. Remove function
+ wrapping used within gi.overrides.overridefunc because the wrapping
+ was not
+ doing anything, this preserves __doc__ ability without causing an
+ eval at
+ load time.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=697356
+
+ gi/overrides/GObject.py | 3 +--
+ gi/overrides/__init__.py | 21 ++++++++++++---------
+ 2 files changed, 13 insertions(+), 11 deletions(-)
+
+commit cebf5314f195bf4bd6ee19a1da3bbb50c2c9bbd6
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Tue Dec 31 19:42:02 2013 -0800
+
+ docs: Move GIArgInfo.get_pytype_hint into gi.docstring
+
+ Move the C implementation of pytype hinting into pure Python. Now that
+ doc strings are lazily evaluated we can simplify this tedious bit of C
+ code with Python. This is precursory work for getting return
+ types into
+ function doc strings.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=697356
+
+ gi/docstring.py | 50 ++++++++++++++++++++++++++++++++++++++---
+ gi/pygi-info.c | 49 ----------------------------------------
+ gi/pygi-type.c | 58
+ ------------------------------------------------
+ gi/pygi-type.h | 2 --
+ tests/test_docstring.py | 8 ++++---
+ tests/test_repository.py | 1 -
+ 6 files changed, 52 insertions(+), 116 deletions(-)
+
+commit 28a178e385e32c56910f1c430b370a8872218081
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Tue Dec 31 17:50:36 2013 -0800
+
+ docs: Skip implicit array length args when building function doc
+ strings
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=697356
+
+ gi/docstring.py | 8 ++++++--
+ tests/test_docstring.py | 4 ++++
+ 2 files changed, 10 insertions(+), 2 deletions(-)
+
+commit 2ef59b89311529e34366d4d7aa8f8ae9a8ea6371
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Tue Dec 31 13:41:20 2013 -0800
+
+ gtk-demo: Avoid crash in CSS demos
+
+ Avoid a potential crash in the CSS demos where the text editing
+ buffer is
+ out of sync with the last good CSS parsing buffer. In the case of CSS
+ warnings, we get a parsing-error callback but no exception is raised.
+ This would cause the buffers to become out of sync and accessing
+ position
+ information from the parsing-error section would crash the text
+ editor due
+ to an out of range iterator being created.
+
+ demos/gtk-demo/demos/Css/css_basics.py | 31
+ +++++++++++++++++++++--------
+ demos/gtk-demo/demos/Css/css_multiplebgs.py | 31
+ +++++++++++++++++++++--------
+ 2 files changed, 46 insertions(+), 16 deletions(-)
+
+commit b81f9c9b4e62d8cf589576aba8d9abbac4c80953
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Tue Dec 31 02:05:46 2013 -0800
+
+ gtk-demo: Add info bar and better error handling to CSS demos
+
+ Use an info bar for displaying CSS parsing errors. Store the last good
+ stylesheet text for use as a backup when a parsing error occures. This
+ gives
+ a seamless look while typing changes into the text editor.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=719722
+
+ demos/gtk-demo/demos/Css/css_basics.py | 28
+ +++++++++++++++++++++-------
+ demos/gtk-demo/demos/Css/css_multiplebgs.py | 29
+ ++++++++++++++++++++++-------
+ 2 files changed, 43 insertions(+), 14 deletions(-)
+
+commit becb56734e13df182fd31cfe46c465477dfc4d2c
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Mon Dec 30 16:36:28 2013 +0100
+
+ gtk-demo: Add CSS demos
+
+ Add a couple of demos demostrating the use of CSS, the css files are
+ stored into a GResource binary file compiled with
+ glib-compile-resources,
+ the comments in gtk-demo.py explain the usage of GResource.
+
+ Signed-off-by: Simon Feltman <sfeltman@src.gnome.org>
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=719722
+
+ .gitignore | 1 +
+ demos/gtk-demo/demos/Css/__init__.py | 0
+ demos/gtk-demo/demos/Css/css_accordion.py | 94 +++++++++++++++
+ demos/gtk-demo/demos/Css/css_basics.py | 119 +++++++++++++++++++
+ demos/gtk-demo/demos/Css/css_multiplebgs.py | 157
+ ++++++++++++++++++++++++++
+ demos/gtk-demo/demos/data/brick.png | Bin 0 -> 5043 bytes
+ demos/gtk-demo/demos/data/brick2.png | Bin 0 -> 10713 bytes
+ demos/gtk-demo/demos/data/css_accordion.css | 52 +++++++++
+ demos/gtk-demo/demos/data/css_basics.css | 22 ++++
+ demos/gtk-demo/demos/data/css_multiplebgs.css | 136
+ ++++++++++++++++++++++
+ demos/gtk-demo/demos/data/cssview.css | 41 +++++++
+ demos/gtk-demo/demos/data/demo.gresource | Bin 0 -> 31110 bytes
+ demos/gtk-demo/demos/data/demo.gresource.xml | 18 +++
+ demos/gtk-demo/demos/data/reset.css | 68 +++++++++++
+ demos/gtk-demo/gtk-demo.py | 16 ++-
+ 15 files changed, 723 insertions(+), 1 deletion(-)
+
+commit 2ff095ea0b0c05fbf6cc332eeadf26cfeb9e69f7
+Author: Colin Watson <cjwatson@ubuntu.com>
+Date: Tue Dec 24 22:19:02 2013 +0000
+
+ build: Avoid clash between gi/types.py and stdlib
+
+ Use non-recursive make for the Python modules in gi/ to work around a
+ clash between gi/types.py and the standard library's types module when
+ running py-compile.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=721025
+
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ Makefile.am | 24 ++++++++++++++++++++++++
+ gi/Makefile.am | 20 ++------------------
+ 2 files changed, 26 insertions(+), 18 deletions(-)
+
+commit b9716853fb7727fcf2b5ea59a3368d5a5b2e6be2
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Dec 16 04:17:28 2013 -0800
+
+ configure.ac: post-release bump to 3.11.4
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 2ec00c2563bebff1e55faf97c67e44fda862ad5b
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Dec 16 04:10:54 2013 -0800
+
+ release 3.11.3
+
+ NEWS | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+commit 7fb55f93e207378992cd9f3e0663604a4de2213f
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Thu Dec 12 01:35:11 2013 -0800
+
+ Replace usage of PyGIBoxed_Type with PyGIStruct_Type
+
+ Remove empty definition of PyGIBoxed_Type and use PyGIStruct_Type
+ in its
+ place for GI_INFO_TYPE_BOXED based infos in repositories. As noted in
+ the docs: "GI_INFO_TYPE_BOXED boxed, see GIStructInfo or GIUnionInfo"
+ we can use the GIStructInfo API for boxed types because we also
+ dispatch
+ base classes on GType checks as seen in:
+ https://git.gnome.org/browse/pygobject/tree/gi/module.py?id=3.11.2#n186
+ This fixes some of the issues noted in bug 581525.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=581525
+
+ gi/pygi-info.c | 13 +------------
+ 1 file changed, 1 insertion(+), 12 deletions(-)
+
+commit b3c85eec75c62c138c136531ebe49a33351941f0
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun Nov 17 20:12:50 2013 -0800
+
+ configure.ac: post release version bump to 3.11.3
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit d1314af8f237a634dbfefb0a1c319f910d3d8765
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun Nov 17 20:04:49 2013 -0800
+
+ release 3.11.2
+
+ NEWS | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+commit 6fc3d977f17397e514aed492055e93d03c410f60
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Tue Nov 12 23:04:50 2013 -0800
+
+ gtk-demo: Fix pyflakes error after recent commit
+
+ demos/gtk-demo/demos/pixbuf.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit a309b3baf5ee99139cc2d1817339233e24391bc2
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Tue Nov 12 18:41:35 2013 -0800
+
+ gkt-demo: Change main info/source notebook into a GtkStack
+
+ Use the new in 3.10 GtkStack and GtkStackSwitcher for switching
+ between Info
+ and Source tabs. Beyond giving a newer look and feel to the demo,
+ this also
+ provides an example for how to use a GtkStack.
+
+ demos/gtk-demo/gtk-demo.py | 23 +++++++++++++++++------
+ 1 file changed, 17 insertions(+), 6 deletions(-)
+
+commit 69ff43bf6292fb3ddaea027cfc595139c4f1655d
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Tue Nov 12 19:32:18 2013 -0800
+
+ gtk-demo: Cleanup deprecated calls throughout demo code
+
+ Specify constructor arguments as keyword args for various object
+ creation calls. Update combobox demo to use bind_property instead
+ of manual
+ signal connections with update callbacks.
+
+ 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 | 8 +++---
+ demos/gtk-demo/demos/Tree View/liststore.py | 8 +++---
+ .../gtk-demo/demos/Tree View/treemodel_filelist.py | 2 +-
+ .../gtk-demo/demos/Tree View/treemodel_filetree.py | 2 +-
+ demos/gtk-demo/demos/appwindow.py | 4 +--
+ demos/gtk-demo/demos/combobox.py | 30
+ +++-------------------
+ demos/gtk-demo/demos/dialogs.py | 26
+ +++++++++----------
+ demos/gtk-demo/demos/expander.py | 9 +++----
+ demos/gtk-demo/demos/images.py | 2 +-
+ demos/gtk-demo/demos/infobars.py | 23 +++++++++--------
+ demos/gtk-demo/demos/links.py | 10 ++++----
+ demos/gtk-demo/demos/menus.py | 4 +--
+ demos/gtk-demo/demos/pickers.py | 8 +++---
+ demos/gtk-demo/demos/pixbuf.py | 4 +--
+ demos/gtk-demo/demos/rotatedtext.py | 2 +-
+ 17 files changed, 64 insertions(+), 90 deletions(-)
+
+commit 890fb7b97823985d5c800284ead43a49174db244
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Tue Nov 12 18:19:34 2013 -0800
+
+ Revert TreeStore and ListStore initializer replacements
+
+ Revert changes to Tree/ListStore where the __init__ overrides were
+ replaced
+ with __new__ overrides which accept column types directly. The
+ issue with
+ the change is sub-classes of these types can override __init__
+ themself
+ passing in their own column types to the super class. These
+ sub-classes
+ expect the super class to handle column type setup via __init__
+ and hence
+ the change described is an API break. This reverts parts of commit:
+ 2f2069c9efcd8f312ce9ffa572df371fbc08822d
+
+ gi/overrides/Gtk.py | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+commit 795201873a3aae530598f5e16470b6a8d2d55c23
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Thu Aug 15 20:01:48 2013 -0700
+
+ Deprecate Gdk.Cursor constructor dispatching
+
+ Give deprecation warning for the overridden __new__ method on
+ Gdk.Cursor when more than one argument is used. Recommend using
+ Gdk.Cursor.new_for_display, new_from_pixbuf, and new_from_pixmap
+ instead.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=705810
+
+ gi/overrides/Gdk.py | 48
+ ++++++++++++++++++++++++++-------------------
+ tests/test_overrides_gdk.py | 17 ++++++++++++----
+ 2 files changed, 41 insertions(+), 24 deletions(-)
+
+commit 2f2069c9efcd8f312ce9ffa572df371fbc08822d
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Thu Aug 15 19:23:18 2013 -0700
+
+ Cleanup overzealous new and init implementations
+
+ Remove PyGObject initializer code attempting to set properties on
+ GObjects that have already been created. There were a number of
+ overridden __new__ and __init__ methods that stripped away
+ arguments before calling the base class to work around attempted
+ property sets and argument count errors (fixing the symptom not
+ the problem).
+ Use Gtk.ListStore/TreeStore.new with __new__ override instead
+ of __init__ with set_column_types.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=705810
+
+ gi/_gobject/gobjectmodule.c | 35 ++++++++++++++---------------------
+ gi/_gobject/pygobject.c | 16 ++++++++++++++--
+ gi/overrides/GObject.py | 3 ---
+ gi/overrides/Gdk.py | 15 ---------------
+ gi/overrides/Gtk.py | 11 ++++-------
+ gi/overrides/Pango.py | 5 -----
+ gi/pygi-boxed.c | 6 ------
+ 7 files changed, 32 insertions(+), 59 deletions(-)
+
+commit 86a37d67455dc5d435ade35f17b27c5de2b288f5
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Tue Aug 13 18:02:54 2013 -0700
+
+ Add deprecation warnings and cleanup class initializer overrides
+
+ Print deprecation warnings for calls to class initializers which
+ don't explicitly specify keywords. Print deprecation warning
+ for overrides that have renamed keywords (Gtk.Table.rows should
+ be n_rows). Additionally deprecate non-standard defaults with
+ initializers (Gtk.SizeGroup.mode defaults to HORIZONTAL in GTK+
+ and VERTICAL in PyGI).
+ Remove AboutDialog override because it doesn't do anything.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=705810
+
+ gi/overrides/Gio.py | 6 +-
+ gi/overrides/Gtk.py | 367
+ ++++++++++++++++++++++----------------------
+ gi/overrides/__init__.py | 88 +++++++++++
+ tests/test_gi.py | 75 +++++++++
+ tests/test_overrides_gtk.py | 95 ++++++++----
+ 5 files changed, 411 insertions(+), 220 deletions(-)
+
+commit d2e9be8e2b3d21b55e1aad3d0b22dcff3421b702
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Tue Aug 13 17:42:11 2013 -0700
+
+ tests: Use explicit keywords args when calling initializers
+
+ Replace all usage of GObject creation that relies on positional
+ arguments from overrides. Positional initializer args will be
+ deprecated, updating the tests as a first pass proves backwards
+ and forwards compatibility of the deprecation.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=705810
+
+ tests/test_overrides_gtk.py | 107
+ +++++++++++++++++++++++---------------------
+ 1 file changed, 55 insertions(+), 52 deletions(-)
+
+commit 8342302dac9bf3fcb49ec3ac334dbf014b4db025
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Tue Nov 12 03:46:08 2013 -0800
+
+ Revert "Add type checking to positional Gtk.Box and Gtk.Window
+ ctor arguments"
+
+ This reverts commit 7193f0509a0ed7da7c810daa6733e34a22db3180.
+
+ gi/overrides/Gtk.py | 7 -------
+ tests/test_overrides_gtk.py | 18 ------------------
+ tests/test_properties.py | 9 ---------
+ 3 files changed, 34 deletions(-)
+
+commit 1f37340c4623262a2146ec8cd25b487cdf4234bd
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun Nov 10 03:26:10 2013 -0800
+
+ Fix dir method for static GParamSpec in Python 3
+
+ Add a __dir__ method which lists GParamSpec attributes and remove
+ code from
+ getattr which made use of the deprecated __members__ technique for dir
+ (removed in Python 3). This makes dir(pspec) work again in Python 3.
+
+ gi/_gobject/pygparamspec.c | 218
+ ++++++++++++++++++++++++---------------------
+ tests/test_gi.py | 10 +++
+ 2 files changed, 126 insertions(+), 102 deletions(-)
+
+commit 7193f0509a0ed7da7c810daa6733e34a22db3180
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Nov 5 15:28:12 2013 +0100
+
+ Add type checking to positional Gtk.Box and Gtk.Window ctor arguments
+
+ Gtk.Box and Gtk.Window are base classes of a lot of widgets. Avoid
+ confusion
+ when trying to create a subclass of them through the GObject
+ constructor with
+ positional arguments by at least verifying that their type is
+ right. Otherwise
+ you can do things like
+
+ chooser = Gtk.FileChooserWidget(Gtk.FileChooserAction.SELECT_FOLDER)
+
+ which succeeds, but does not have the desired effect (it sets the
+ "homogenous"
+ property of the Gtk.Box superclass instead).
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=711487
+
+ gi/overrides/Gtk.py | 7 +++++++
+ tests/test_overrides_gtk.py | 18 ++++++++++++++++++
+ tests/test_properties.py | 9 +++++++++
+ 3 files changed, 34 insertions(+)
+
+commit 79aea2655db11bc9d2c0ad75c87862b2b66da594
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Nov 4 03:29:57 2013 -0800
+
+ Remove overzealous argument checking for callback userdata
+
+ Remove check which ensures userdata is None if the callback is None.
+ This check would need to become more complicated with recent
+ versions of
+ PyGObject where userdata can be variable (would also need to check
+ against
+ a tuple containing None). Instead of adding more complex checking,
+ simply
+ remove the checking as it is unnecessary to begin with.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=711173
+
+ gi/pygi-marshal-from-py.c | 7 -------
+ tests/test_overrides_gtk.py | 11 +++++++----
+ 2 files changed, 7 insertions(+), 11 deletions(-)
+
+commit f32d649b72f865e32cc2b62a54d927b8345da0c8
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Oct 28 16:00:57 2013 +0100
+
+ configure.ac: post-release bump to 3.11.2
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 5bcdb56433d0ba2976f05946c6c5b6ffe3e84901
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Oct 28 15:59:51 2013 +0100
+
+ release 3.11.1
+
+ NEWS | 27 +++++++++++++++++++++++++++
+ 1 file changed, 27 insertions(+)
+
+commit 65b8f7bd77474e361c80905ec23de6dbde27970c
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun Oct 27 22:09:27 2013 -0700
+
+ Fix toggleref safety problems by always enabling the GIL
+
+ Call PyEval_InitThreads for the base gi module import. This forces the
+ Python internals create the GIL and always support threading with the
+ various thread state enter/exit funcs. This is needed since we cannot
+ predict which GI repositories might accept Python callbacks and run
+ them in
+ non-Python threads or trigger toggle ref notifications in a thread
+ other
+ than main.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=709223
+
+ gi/__init__.py | 2 --
+ gi/gimodule.c | 18 +++++++-----------
+ gi/overrides/GLib.py | 8 ++------
+ 3 files changed, 9 insertions(+), 19 deletions(-)
+
+commit 57195c9c864bc25521bb3cb98286e6d6f0645652
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun Oct 27 16:02:13 2013 -0700
+
+ Add consistent GLib.MainLoop SIGINT cleanup
+
+ Remove auto cleanup of SIGINT source handling by returning True
+ from the
+ signal callback. This gives the __del__ method consistent cleanup
+ semantics
+ regardless of whether or not a SIGINT occurred.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=710978
+
+ gi/overrides/GLib.py | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+commit 1c03ebba9598e7b6d5293889f46b015bfac3611c
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun Oct 27 15:16:09 2013 -0700
+
+ tests: Fix source testing to handle critical with non-existing sources
+
+ Silence new critical coming from g_source_remove on non-existing
+ sources.
+ This function still returns False, but we need to silence the new
+ critical
+ so the test suite doesn't fail. See bug 710724.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=710978
+
+ tests/test_source.py | 18 ++++++++++++------
+ 1 file changed, 12 insertions(+), 6 deletions(-)
+
+commit ac776da7e56b78a2fa422487f0ef0d8771bcb78f
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun Jul 28 00:01:35 2013 -0700
+
+ docs: Add a keyword value of None for allow-none annotations
+
+ Update documentation generator for allow-none arguments and
+ user_data arguments to show a keyword value of None.
+ Add skip for GDestroyNotify closure arguments.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=640812
+
+ gi/docstring.py | 20 +++++++++++++++++---
+ tests/test_docstring.py | 10 ++++++++++
+ 2 files changed, 27 insertions(+), 3 deletions(-)
+
+commit e1bf9c069644ea0bff0c6a7efa72a285e122a414
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sat Oct 19 19:03:12 2013 -0700
+
+ Remove overrides for supporting pre-3.10 GObject signal functions
+
+ Remove GObject override code for supporting pre-3.10 signal functions
+ which
+ annotate the object argument as "gpointer". With PyGObject 3.11
+ having a
+ dependency on GObject 3.10, clear the special case overrides out.
+
+ gi/overrides/GObject.py | 76
+ ++++++-------------------------------------------
+ 1 file changed, 9 insertions(+), 67 deletions(-)
+
+commit 0c308de528c402f67808b13760ca30d55d4c99d7
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Fri Oct 18 17:15:06 2013 -0700
+
+ Add threads_init back as a requirement for non-Python threaded repos
+
+ Re-add a "threads_init" function to gi for explicit intialization
+ of Python
+ threading support. This was marked as deprecated in the previous cycle
+ because using Python threads already initializes everything.
+ However, we still need an explicit initalization when using
+ repositories
+ with non-Python threads which may interact with Python callbacks
+ (GStreamer).
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=710447
+
+ gi/__init__.py | 2 ++
+ gi/gimodule.c | 10 ++++++++++
+ gi/overrides/GLib.py | 11 +++++++----
+ 3 files changed, 19 insertions(+), 4 deletions(-)
+
+commit a2fa531b4dee73c193cac92fa3e870808688b5d7
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Oct 14 20:38:13 2013 -0700
+
+ Add dir method to GObject props accessor
+
+ Remove special case __members__ attribute from the props accessor
+ objects getattr method. This has been deprecated since Python 2.3 and
+ removed in Python 3. Replace this with a __dir__ method making use
+ of the
+ old members list building code. Additionally fix error where the
+ GObjectClass was being unref'd too many times when using
+ dir(Object.props),
+ causing a GLib critical.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=705754
+
+ gi/_gobject/pygobject.c | 29 +++++++++++++++++++++--------
+ tests/test_gi.py | 14 ++++++++++++++
+ 2 files changed, 35 insertions(+), 8 deletions(-)
+
+commit 799989ada2f6b1d729f078f204445651c808a2c7
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Fri May 3 04:37:13 2013 -0700
+
+ Remove PyGObjectWeakRef now that g_binding_unbind exists
+
+ Remove the static code for managing GBinding weak references now
+ that GLib
+ has a method (unbind) for clearing out bindings.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=699571
+
+ gi/_gobject/pygobject.c | 59
+ +------------------------------------------------
+ gi/overrides/GObject.py | 19 ++++++++++++++++
+ tests/test_gobject.py | 41 ++++++++++++++++++++--------------
+ 3 files changed, 44 insertions(+), 75 deletions(-)
+
+commit fe217e0afbd63f05285e59628533f351896377d9
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Wed Oct 9 00:34:37 2013 -0700
+
+ Fix GArray, GList, GSList, and GHashTable marshaling leaks
+
+ Remove calling of cleanup code for transfer-everything modes by
+ ensuring
+ cleanup_data is set to NULL in from_py marshalers. Use array and hash
+ table ref/unref functions for container transfer mode to ensure we
+ have a
+ valid container ref after invoke and during from_py cleanup of
+ contents.
+ Rework restrictions with to_py marshaling cleanup so we always
+ unref the
+ container for transfer-everything and transfer-container modes.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=693402
+
+ gi/pygi-marshal-cleanup.c | 54 +++++++++++----------------------
+ gi/pygi-marshal-from-py.c | 77
+ ++++++++++++++++++++++++++++++++++++++++-------
+ 2 files changed, 84 insertions(+), 47 deletions(-)
+
+commit 7407367f424595c2780a2d6a47d936ad0bd91735
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Oct 7 14:11:39 2013 -0700
+
+ Add cleanup_data argument used for Python to C marshaler cleanup
+
+ Add a new output argument to all from_py marshalers which is used for
+ keeping track of marshaling data that later needs cleanup. Previously
+ most
+ marshalers would rely on the GIArgument->v_pointer as the means
+ for data
+ cleanup. However, this pointer would get clobbered in the case of
+ bi-directional arguments (inout) and the memory lost.
+ Use the new cleanup_data for storing temporarily wrapped C arrays
+ so we
+ don't need to re-calculate the length argument during cleanup.
+
+ Additionally delay the from_py marshaling cleanup function until after
+ _invoke_marshal_out_args is called. This gives inout arguments
+ which don't
+ modify the pointer sufficient time to exist until they marshaled
+ back to
+ Python (gi_marshalling_tests_gvalue_inout).
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=693402
+
+ gi/pygi-argument.c | 4 +-
+ gi/pygi-cache.h | 3 +-
+ gi/pygi-invoke-state-struct.h | 7 +-
+ gi/pygi-invoke.c | 20 +++---
+ gi/pygi-marshal-cleanup.c | 43 +++++-------
+ gi/pygi-marshal-from-py.c | 160
+ ++++++++++++++++++++++++++++--------------
+ gi/pygi-marshal-from-py.h | 45 ++++++++----
+ 7 files changed, 177 insertions(+), 105 deletions(-)
+
+commit 9456e83233a927f1f01c6ffcb1f07c62b491a1df
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Wed Aug 7 12:08:15 2013 -0700
+
+ Add support for variable user data arguments
+
+ Support a variable number of user data arguments for all callback
+ connection function where the user data is the last explicit argument.
+ This adds convience as well as consistency with the rest of PyGObject.
+ Cleanup overrides for GLib.idle_add, timeout_add, timeout_add_seconds,
+ io_add_watch, and child_watch_add which manually implemented this
+ feature.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=640812
+
+ gi/overrides/GLib.py | 75
+ +++++++++++++++--------------------------------
+ gi/pygi-cache.c | 14 +++++++++
+ gi/pygi-cache.h | 3 ++
+ gi/pygi-closure.c | 37 +++++++++++++++--------
+ gi/pygi-invoke.c | 71
+ +++++++++++++++++++++++++++++++-------------
+ gi/pygi-marshal-from-py.c | 5 ++++
+ tests/test_everything.py | 32 ++++++++++++++++++++
+ tests/test_glib.py | 21 +++++++++++++
+ tests/test_subprocess.py | 8 ++---
+ 9 files changed, 177 insertions(+), 89 deletions(-)
+
+commit ba4a0a65bf9ec44c3b9449f63d63035bff75d8df
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Oct 14 12:57:04 2013 +0200
+
+ Bump glib and g-i dependencies to latest stable.
+
+ glib 2.38 and g-i 1.38 are from stable GNOME 3.10 which we now
+ assume as
+ minimal version.
+
+ Drop @unittest.skipUnless tags from tests which didn't work with
+ g-i 1.36.
+
+ README | 3 ++-
+ configure.ac | 6 +++---
+ tests/test_gi.py | 2 --
+ 3 files changed, 5 insertions(+), 6 deletions(-)
+
+commit 2a5ad2af6bc91b187a2f07fc8d001ec7ad618adf
+Author: Nuno Araujo <nuno.araujo@russo79.com>
+Date: Fri Oct 11 18:41:48 2013 +0200
+
+ Fix TypeError when setting drag target_list to None
+
+ When calling Widget.drag_dest_set_target_list(None) or
+ Widget.drag_source_set_target_list(None)
+ a "TypeError: 'NoneType' object is not iterable" is thrown.
+
+ According to Gtk documentation [1] [2], this shouldn't be the case
+ since client code should be
+ able to pass NULL in calls made to gtk_drag_dest_set_target_list and
+ gtk_drag_source_set_target_list.
+
+ We now check if the target_list is None and do not try to create a
+ TargetList if it is the case.
+
+ [1]
+ https://developer.gnome.org/gtk3/3.10/gtk3-Drag-and-Drop.html#gtk-drag-dest-set-target-list
+ [2]
+ https://developer.gnome.org/gtk3/3.10/gtk3-Drag-and-Drop.html#gtk-drag-source-set-target-list
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=709926
+
+ gi/overrides/Gtk.py | 4 ++--
+ tests/test_overrides_gtk.py | 2 ++
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+commit 27e9f6ede021fc58e952491b67d69c2a5cdd6acb
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Tue Oct 1 17:09:39 2013 -0700
+
+ Use qdata for wrapper retrieval in toggle reference notifications
+
+ Replace usage of user data holding PyGObject wrappers in toggle ref
+ notifications with GObject qdata retrieval. This fixes thread
+ safety issues
+ where a toggle notify may be called from another thread during
+ the PyGObject
+ wrappers dealloc. In this case the toggle notify is blocked because
+ the GIL
+ is held in dealloc, and when it continues, the user data would be
+ holding an
+ invalid PyGObject wrapper. Using qdata solves this by ensuring
+ the wrapper
+ retrieval is done within the safety of the GIL and may turn up
+ as NULL.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=709223
+
+ gi/_gobject/pygobject.c | 21 ++++++++++++++-------
+ 1 file changed, 14 insertions(+), 7 deletions(-)
+
+commit 55d925d5f0fb87464b1f391c325c1e70da10d33d
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Thu Oct 10 16:10:16 2013 -0700
+
+ Add expected failure to deal with fixes in gimarshallingtests.c
+
+ Fix test_object_full_inout based on newer gimarshallingtests.c >
+ 1.38.0.
+ Add expectedFailure to deal with previous versions of
+ gimarshallingtests.c.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=709796
+
+ tests/test_gi.py | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+commit d866d422cc39b229f443dd08a3ea50cb3f7df8e6
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Oct 7 01:17:08 2013 -0700
+
+ Fix memory leaks for inout array arguments
+
+ Add tracking for array allocations to from_py marashalers in the
+ argument states extra data (arg_data). This is then used later
+ for inout
+ marshaling cleanup to call the array cleanup function.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=693402
+
+ gi/pygi-invoke.c | 1 +
+ gi/pygi-marshal-cleanup.c | 1 +
+ gi/pygi-marshal-from-py.c | 13 +++++++++----
+ 3 files changed, 11 insertions(+), 4 deletions(-)
+
+commit 31263ac117027446c8e2fd1b56d7e348384aabef
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun Oct 6 21:54:15 2013 -0700
+
+ Fix to Python marshaling leaks for arrays holding GVariants
+
+ Add early check for array items holding pointers and simply assign the
+ pointer to GIArgument.v_pointer prior giving it to the per-item
+ marshaler.
+ This simplifies marshaling and fixes leaks regarding arrays of
+ GVariants by
+ removing the unneeded g_variant_ref_sink (variants are always
+ pointers).
+ Conditionalize the use of g_variant_ref_sink based on transfer mode
+ in the
+ per-item marshaler. This fixes a reference leak where we are given
+ ownership
+ of the variant (transfer full) but added a new ref anyway.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=693402
+
+ gi/pygi-marshal-to-py.c | 34 ++++++++++++++++++----------------
+ 1 file changed, 18 insertions(+), 16 deletions(-)
+
+commit c9580ce1156789221aa19b00c7aab404db5431b5
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun Oct 6 04:26:18 2013 -0700
+
+ Cleanup per-item array marshaling code for flat arrays
+
+ Add an early per-item check which tests if the item being marshaled
+ is a
+ pointer and simply copies the pointer into the array. This takes
+ care of the
+ GdkAtom and GVariant special cases because these items are always
+ reported
+ as pointers.
+ Fix error condition cleanup code when an item fails marshaling in
+ the middle
+ of an array.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=693402
+
+ gi/pygi-marshal-from-py.c | 87
+ +++++++++++++++++++++--------------------------
+ tests/test_gi.py | 32 +++++++++++++++++
+ 2 files changed, 71 insertions(+), 48 deletions(-)
+
+commit 4623caa71c54958ab821db27a9eff2790acb3975
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sat Oct 5 17:00:54 2013 -0700
+
+ Fix GValue array marshaling leaks and crash fallout
+
+ * Decrement references for results of PySequence_GetItem. There were
+ a few
+ places we were not decrementing the Python reference, leaking
+ the value.
+ * Add tracking of Python arguments with recursive marshaling
+ cleanup. This
+ allows arrays of GValues which have been coerced from Python types
+ to be
+ properly free'd (also fixes bug 703662).
+ * Use g_variant_ref for variant arguments marked as transfer
+ everything.
+ This fixes double free's caused by the decrementing of
+ PySequence_GetItem
+ results.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=693402
+
+ gi/pygi-cache.h | 1 +
+ gi/pygi-invoke.c | 1 +
+ gi/pygi-marshal-cleanup.c | 50
+ +++++++++++++++++++++++++++++++++++++++++------
+ gi/pygi-marshal-cleanup.h | 14 +++++++++++++
+ gi/pygi-marshal-from-py.c | 20 ++++++++++++++++---
+ gi/pygi-marshal-to-py.c | 1 +
+ 6 files changed, 78 insertions(+), 9 deletions(-)
+
+commit 549f849ef8854352483657df3d7558688a4b0007
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sat Sep 28 00:26:28 2013 -0700
+
+ Refactor GLib.io_add_watch to make it more testable
+
+ Break the argument munging code into a separate function which
+ can be tested in isolation of adding an io watch.
+ Add additional failing test which specifies all args as keywords
+ which we eventually need to support for consistency with the
+ rest of PyGObject.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=640812
+
+ gi/overrides/GLib.py | 23 ++++++++++++++++++-----
+ 1 file changed, 18 insertions(+), 5 deletions(-)
+
+commit bc780ed17bc4cc62959c63c3f0142161a924679f
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Fri Sep 27 20:59:45 2013 -0700
+
+ Refactor GLib.child_watch_add to make it more testable
+
+ Break the argument munging code into a separate function which
+ can be tested in isolation of adding a child watch. Update tests
+ to reflect this. Add additional failing test which specify
+ all args as keywords which we eventually need to support for
+ consistency with the rest of PyGObject.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=640812
+
+ gi/overrides/GLib.py | 25 +++++++++-----
+ tests/test_subprocess.py | 88
+ +++++++++++++++++++++---------------------------
+ 2 files changed, 56 insertions(+), 57 deletions(-)
+
+commit 73c6213e8b47fa7c4c2c7a517fe7b56126145888
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Thu Sep 26 19:05:20 2013 -0700
+
+ Don't pass None to callbacks when user data is not specified
+
+ For APIs which support a callback and optional user data,
+ don't pass the user data to the callback if it was not explicitly
+ specified when the callback was connected.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=640812
+
+ gi/pygi-closure.c | 17 ++++++++++++++---
+ gi/pygi-marshal-from-py.c | 5 -----
+ tests/test_everything.py | 7 ++-----
+ 3 files changed, 16 insertions(+), 13 deletions(-)
+
+commit a76b06179cdca43f1c7d1feb8e2563e3d884a8ff
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Fri Oct 4 17:27:47 2013 -0700
+
+ Add missing methods on PyGIBaseInfo and sub-classes
+
+ Expose all methods of GIBaseBase info and its sub-classes.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=709008
+
+ gi/_glib/pyglib-python-compat.h | 1 +
+ gi/pygi-info.c | 550
+ +++++++++++++++++++++++++++++++++++++++-
+ tests/test_repository.py | 134 ++++++++++
+ 3 files changed, 677 insertions(+), 8 deletions(-)
+
+commit e190eb75093e8bf36190dc1beb18d1c1b95b9582
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Fri Oct 4 13:46:36 2013 -0700
+
+ Expose all GI enum and flags types
+
+ Add new types for GIDirection, GITransfer, GIArrayType, GIScopeType,
+ GIVFuncInfoFlags, GIFieldInfoFlags, GIFuncitonInfoFlags, GITypeTag,
+ and
+ GInfoType. These types are found in the gi._gi module exposed
+ without the
+ "GI" prefix and contain all of their values as class attributes. e.g.
+ gi._gi.Transfer.EVERYTHING.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=709008
+
+ gi/docstring.py | 10 ++--
+ gi/pygi-info.c | 150
+ ++++++++++++++++++++++++++++++++++++++++++++---
+ tests/test_repository.py | 13 +++-
+ 3 files changed, 158 insertions(+), 15 deletions(-)
+
+commit 0120af6c418d0f67f39c02a4e8327813645b97f4
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Fri Oct 4 13:42:34 2013 -0700
+
+ Avoid calling g_base_info_get_name on GI_INFO_TYPE_TYPE
+
+ Calling g_base_info_get_name on infos tagged with GI_INFO_TYPE_TYPE
+ will
+ cause a crash. Avoid this by adding _safe_base_info_get_name and
+ using that
+ throughout the bindings.
+ Logged GI bug as: https://bugzilla.gnome.org/show_bug.cgi?id=709456
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=709008
+
+ gi/pygi-info.c | 35 +++++++++++++++++++++++++----------
+ 1 file changed, 25 insertions(+), 10 deletions(-)
+
+commit c86b2fe8d01070f06c45fffd910d890afba1313a
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Fri Oct 4 13:41:08 2013 -0700
+
+ Add GIBaseInfo.equal method
+
+ Break PyGIBaseInfo rich compare into two methods: equal and
+ richcompare.
+ Equal is a direct exposure of the GI method and richcompare makes
+ use of
+ this with additional support for Pyton "==" and "!=" operators.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=709008
+
+ gi/pygi-info.c | 32 ++++++++++++++++++++++++--------
+ tests/test_repository.py | 1 +
+ 2 files changed, 25 insertions(+), 8 deletions(-)
+
+commit e7b758badd0ab0b147117859f7871c39fb5399c1
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Fri Oct 4 13:36:11 2013 -0700
+
+ Move info string retrieval into generic function
+
+ Add get_info_string for sharing binding of simple string retrieval on
+ GIBaseInfo objects.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=709008
+
+ gi/pygi-info.c | 15 +++++++++++++--
+ 1 file changed, 13 insertions(+), 2 deletions(-)
+
+commit d2aef364de778da966bc1cfffe184d649f9ebb21
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Tue Sep 24 06:26:17 2013 -0700
+
+ Move child info retrieval into generic function
+
+ Add a generic function for bindings which return a single child info.
+ This trivializes binding methods like PyGIObjectInfo.get_parent and
+ fixes leaks in PyGIObjectInfo.get_class_struct and
+ PyGIVFuncInfo.get_invoker.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=709008
+
+ gi/pygi-info.c | 56
+ +++++++++++++++++++++++---------------------------------
+ 1 file changed, 23 insertions(+), 33 deletions(-)
+
+commit cdd03a2b0baef19797a5b55c2880e5b7acf1dd93
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Tue Sep 24 02:52:22 2013 -0700
+
+ Move info tuple retrieval into generic function
+
+ Create new generic function for retrieving a tuple of child infos.
+ This greatly simplifies all the bindings which return tuples from
+ a common pattern of functions on GIBaseInfo based instances.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=709008
+
+ gi/pygi-info.c | 469
+ ++++++++-------------------------------------------------
+ 1 file changed, 59 insertions(+), 410 deletions(-)
+
+commit 62f185bef20b42f18290a3cf1d3b19dddc957f8a
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun Oct 6 16:41:37 2013 -0700
+
+ tests: Update check.valgrind with always-malloc and add logging
+ options
+
+ Based on notes in https://wiki.gnome.org/Valgrind we need to use
+ always-malloc for valgrind runs.
+ Add check.valgrindlog and check.valgrindxml which output valgrind
+ logs into
+ an ignored local tmp. Output logs are named <head-sha>-$TEST_NAMES.log
+ so we
+ can track commits and use diff tools on the logs.
+
+ .gitignore | 1 +
+ Makefile.am | 6 ++++++
+ tests/Makefile.am | 10 +++++++++-
+ 3 files changed, 16 insertions(+), 1 deletion(-)
+
+commit 314c933626c4dc5fc585d0e5b6c45ddb17c2e52f
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Fri Oct 4 20:43:02 2013 -0700
+
+ Move existing repository tests into test_repository
+
+ Move flags and enum double registration tests into test_repository.py.
+ Remove duplicate ObjectInfo tests from test_gi.py.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=709008
+
+ tests/test_gi.py | 38 --------------------------------------
+ tests/test_repository.py | 28 ++++++++++++++++++++++++++++
+ 2 files changed, 28 insertions(+), 38 deletions(-)
+
+commit 31840888c8948aab78041da93c329572f3aabb64
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Fri Oct 4 17:31:21 2013 -0700
+
+ Add unittests for GIRepository
+
+ Add basic unittests for the existing classes and methods exposed for
+ the GIRepository module (gi._gi).
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=709008
+
+ tests/Makefile.am | 1 +
+ tests/test_repository.py | 170
+ +++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 171 insertions(+)
+
+commit 4408f83be70e92c5e3943f5ce85c551e7f2c87d0
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Fri Oct 4 15:50:05 2013 -0700
+
+ Derive SignalInfo info from CallableInfo
+
+ Change Python class derivation of PyGISignalInfo to use
+ PyGICallableInfo as
+ the base class. This accurately reflects the GI class layout and
+ provides
+ the callable information for signals.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=709008
+
+ gi/pygi-info.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+commit b01daba04ff001b9e63d343938e879d339d9a98c
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Fri Oct 4 15:48:05 2013 -0700
+
+ Use PYGLIB_PyLong_FromLong for GIDirection return
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=709008
+
+ gi/pygi-info.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit d644cbd0c0ad85142286754838db848c4eb1707f
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Thu Oct 3 19:25:34 2013 -0700
+
+ Fix memory leak for caller allocated GValue out arguments
+
+ Swizzle the order of type checks in _cleanup_caller_allocates so
+ G_TYPE_VALUE arguments are checked before G_TYPE_BOXED. The
+ ordering is
+ important because G_TYPE_VALUE is a sub-type of boxed and so its
+ specialized
+ cleanup code was never being called (g_value_unset).
+ Additionally update check to use g_type_is_a instead of a compare
+ to handle
+ the potential case of a G_TYPE_VALUE sub-type.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=709397
+
+ gi/pygi-marshal-cleanup.c | 11 ++++++-----
+ 1 file changed, 6 insertions(+), 5 deletions(-)
+
+commit 510789d52e9e2fd863d26613f3282364eb175601
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun Jul 28 14:44:51 2013 -0700
+
+ Add support for default arguments annotated with allow-none
+
+ Support default value of NULL for tail end arguments which are
+ marked with allow-none.
+ The implementation uses a place holder object for un-supplied
+ arguments
+ which are annotated with allow-none. This is then used later during
+ marshaling to supply NULL as the default.
+ Additionally support an implicit default for callback user_data
+ using the same technique.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=640812
+
+ gi/gimodule.c | 6 +++
+ gi/pygi-cache.c | 103
+ ++++++++++++++++++++++++++++++----------------
+ gi/pygi-cache.h | 8 ++++
+ gi/pygi-invoke.c | 42 +++++++++++++------
+ gi/pygi-marshal-from-py.c | 5 +++
+ gi/pygi.h | 1 +
+ tests/test_everything.py | 16 +++++++
+ tests/test_gi.py | 30 ++++++++++++++
+ 8 files changed, 162 insertions(+), 49 deletions(-)
+
+commit 03f531ffb1adde0c48e98f92bd92f79416654fbe
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Fri Aug 2 22:27:10 2013 -0700
+
+ cache refactoring: Move arg cache field assignments into
+ _arg_cache_new
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=640812
+
+ gi/pygi-cache.c | 23 +++++++++++------------
+ 1 file changed, 11 insertions(+), 12 deletions(-)
+
+commit cb7e7311bff57eb4c79c7772b6db4d00084656bb
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Fri Aug 2 20:27:02 2013 -0700
+
+ cache refactoring: Cleanup array length argument marshaling
+
+ Add shared function: _arg_cache_array_len_arg_setup for use
+ with both to and from array marshaling setup. This function
+ consolidates all of the edge cases regarding array length setup
+ and removes the need for flagging arguments with
+ PYGI_META_ARG_TYPE_CHILD_NEEDS_UPDATE.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=640812
+
+ gi/pygi-cache.c | 145
+ +++++++++++++++++++++++++++-----------------------------
+ gi/pygi-cache.h | 5 --
+ 2 files changed, 71 insertions(+), 79 deletions(-)
+
+commit c9d8639401ae82977e960de44d80b94a501a2184
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sat Aug 3 00:26:11 2013 -0700
+
+ cache refactoring: Move variable declarations to blocks where they
+ are used
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=640812
+
+ gi/pygi-cache.c | 25 ++++++++++++++-----------
+ 1 file changed, 14 insertions(+), 11 deletions(-)
+
+commit dbc2cf5f1fa0f9cc046170efa6afb086b90253cb
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Thu Aug 1 19:33:27 2013 -0700
+
+ cache refactoring: Remove continue statements from
+ _args_cache_generate
+
+ Remove continue and goto statements from the large loop within
+ _args_cache_generate. This simplifies the sharing of parts of
+ the loop for future refactoring.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=640812
+
+ gi/pygi-cache.c | 126
+ +++++++++++++++++++++++++++-----------------------------
+ 1 file changed, 61 insertions(+), 65 deletions(-)
+
+commit 87ae14b8b4a0ed9beb22f48314247e988a2e017f
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Wed Jul 31 18:10:05 2013 -0700
+
+ cache refactoring: Use bit field for PyGIDirection instead of enum
+
+ This supports cleaner logic when testing the direction of
+ arguments due to the majority of these tests being along the
+ lines of: (direction == FROM_PYTHON || direction == BIDIRECTIONAL)
+ Which is replaced with: (direction & FROM_PYTHON)
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=640812
+
+ gi/pygi-cache.c | 64
+ ++++++++++++++++++++++++++++-----------------------------
+ gi/pygi-cache.h | 6 +++---
+ 2 files changed, 35 insertions(+), 35 deletions(-)
+
+commit d5925b76afa3a429092cbafd82aed40bb0cf0b18
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun Jul 28 20:45:05 2013 -0700
+
+ cache refactoring: Remove special case marshaling for instance
+ arguments
+
+ Remove duplicate code for marshaling struct and objects for
+ instance arguments. Re-use individual cache marshalers for
+ structs and objects with the instance argument. This required
+ removal of passing GITypeInfo to the marshaler because it is
+ not available for instance arguments. Instead always assume
+ "is_pointer" for the instance argument by using the cache.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=640812
+
+ gi/pygi-argument.c | 4 +--
+ gi/pygi-cache.c | 16 ++++-----
+ gi/pygi-marshal-from-py.c | 87
+ +++--------------------------------------------
+ gi/pygi-marshal-from-py.h | 16 ++-------
+ 4 files changed, 16 insertions(+), 107 deletions(-)
+
+commit c19bed69c669160737e12d92cc29f3e6d1b008cc
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun Jul 28 16:44:01 2013 -0700
+
+ cache refactoring: Use GPtrArray for callable arg cache
+
+ Replace manual management of the C array holding individual
+ argument caches with usage of GPtrArray. This provides storage
+ of the array length along with item memory management.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=640812
+
+ gi/pygi-cache.c | 62
+ +++++++++++++++++++++++------------------------
+ gi/pygi-cache.h | 16 +++++++++---
+ gi/pygi-invoke.c | 16 ++++++------
+ gi/pygi-marshal-cleanup.c | 8 +++---
+ gi/pygi-marshal-from-py.c | 6 ++---
+ gi/pygi-marshal-to-py.c | 6 ++---
+ 6 files changed, 62 insertions(+), 52 deletions(-)
+
+commit 52ea3afb0a6494423eca36a54af928d4ae5d9954
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun Jul 28 15:02:51 2013 -0700
+
+ cache refactoring: Move PyGI direction code into new function
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=640812
+
+ gi/pygi-cache.c | 42 +++++++++++++++++++++---------------------
+ 1 file changed, 21 insertions(+), 21 deletions(-)
+
+commit 83208bf495b152e93a28a231d445f43ea827d2eb
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Fri Aug 2 15:59:25 2013 -0700
+
+ cache refactoring: Add comments to callable cache structure
+
+ Add comments to count fields on _PyGICallableCache.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=640812
+
+ gi/pygi-cache.h | 13 ++++++++++++-
+ 1 file changed, 12 insertions(+), 1 deletion(-)
+
+commit 0a8d5695972601eaa9f7f463bac173d02b0380a0
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Wed Jul 24 01:14:29 2013 -0700
+
+ Remove support for allowing PyObjects as void pointers
+
+ Final removal of marshaling Python object addresses as
+ void pointers. This ensures we can successfully pass
+ integer values as the pointer without the Python object
+ leaking or crashing due to invalid memory.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=688081
+
+ gi/pygi-marshal-from-py.c | 20 ++++++--------------
+ gi/pygi-marshal-to-py.c | 14 ++------------
+ tests/test_signal.py | 5 +----
+ 3 files changed, 9 insertions(+), 30 deletions(-)
+
+commit 1469403ee2faa699430055384b338f0cd8e672d7
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Wed Sep 25 18:21:22 2013 -0700
+
+ configure.ac: bump trunk to 3.11.1
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 8e774e61d62c82efa3d907c1201359121878b4b5
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Sep 23 03:57:03 2013 -0700
+
+ configure.ac: post-release bump to 3.10.1
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 95af6279a9affff5c816db2db53207ff0f19872d
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Sep 23 03:17:19 2013 -0700
+
+ release 3.10.0
+
+ NEWS | 3 +++
+ configure.ac | 4 ++--
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+
+commit c626be6317b610277c95461108573d1ae6f42b6d
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Sep 23 12:06:11 2013 +0200
+
+ Fix test_gi.TestProjectVersion.test_version_str()
+
+ In this test case we only do a string comparison, not a proper
+ "by version
+ component" numerical one. So relax the test to also work with 3.10.
+
+ tests/test_gi.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 0a30f8d02099e582ea3ded800303e14d2e7ab212
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Sep 16 10:12:33 2013 -0500
+
+ release 3.9.92
+
+ NEWS | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+commit 506f1e35a9375be80a6a79421bf8272165fdd90a
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Sep 16 01:23:49 2013 -0700
+
+ Update current maintainers list in README
+
+ README | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit ef120498e060e88a1efcb82de385a23c1fa9c7da
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Tue Sep 10 17:11:21 2013 -0700
+
+ Fix union argument regression when marshaling from python
+
+ Check for union members when marshaling boxed types from Python.
+ This is a regression caused by stricter type checking added when
+ merging code from pygi-argument.c.
+ Re-add pyg_boxed_check to the same bit of code in addition to
+ __gtype__ checking to avoid a double regression.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=703873
+
+ gi/pygi-marshal-from-py.c | 53
+ ++++++++++++++++++++++++++---------------------
+ 1 file changed, 29 insertions(+), 24 deletions(-)
+
+commit 59a2964141e963d2961e55d4b84a777927b4f21b
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Wed Sep 11 05:05:33 2013 -0700
+
+ Fix GLib.Source sub-classing with initializer args
+
+ Add variable args and keyword args to the GLib.Source.__new__
+ method to support sub-classes which want to implement __init__.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=707904
+
+ gi/overrides/GLib.py | 2 +-
+ tests/test_source.py | 11 +++++++++++
+ 2 files changed, 12 insertions(+), 1 deletion(-)
+
+commit afa42ab95327da1de0cf86005974cd8ab0d46872
+Author: Vratislav Podzimek <vpodzime@redhat.com>
+Date: Wed Sep 4 14:17:31 2013 +0200
+
+ Copy __doc__ when wrapping function
+
+ Signed-off-by: Vratislav Podzimek <vpodzime@redhat.com>
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/overrides/__init__.py | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 7914a6828a533d8c579a5b422351e18b9f9afc8c
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Sep 2 14:56:24 2013 +0200
+
+ configure.ac: post-release bump to 3.9.92
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit ad8b7d1a89eb2d030a504d521f7589a4c1d835fb
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Sep 2 14:38:41 2013 +0200
+
+ release 3.9.91
+
+ NEWS | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+commit 9df8eb79929025f12d51bc7f79b1d160156c2755
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Sep 2 04:19:35 2013 -0700
+
+ Fix GObject signal methods to work with new annotations
+
+ Add conditional support for signal methods annotated as gpointer
+ or GObject.Object. This is needed to work with newer versions of
+ glib which changed annotations to GObject.Object (bug #685387).
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=707280
+
+ gi/overrides/GObject.py | 106
+ ++++++++++++++++++++++++++++++------------------
+ 1 file changed, 66 insertions(+), 40 deletions(-)
+
+commit 9b6b6c7ee6a621cba99f51857eadd622a1535118
+Author: Chun-wei Fan <fanchunwei@src.gnome.org>
+Date: Thu Aug 15 14:41:40 2013 +0800
+
+ Fix build on C89 Compilers
+
+ Avoid a variable declaration at the middle of the block
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=707264
+
+ gi/pygi-closure.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit 19c1a2dfb91a83a6fb0ca76b9c95c42a49a3736e
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun Sep 1 20:44:26 2013 -0700
+
+ Change boxed type checking in marshaling to use __gtype__ attribute
+
+ Replace usage of pyg_boxed_check(pyboxed) with g_type_is_a and
+ pyg_type_from_object. This has the effect of using the __gtype__
+ attribute stashed on object class instead of the PyGBoxed
+ internally held gtype. This fixes type descrepencies for objects
+ marshaled into overridden signal class closures and passed back
+ to functions taking an alias their type.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=707140
+
+ gi/pygi-marshal-from-py.c | 8 +++++++-
+ tests/test_overrides_gtk.py | 34 ++++++++++++++++++++++++++++++++++
+ 2 files changed, 41 insertions(+), 1 deletion(-)
+
+commit dab0c09f1996e124ca98334e5aea0852904b44b5
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun Sep 1 17:49:09 2013 -0700
+
+ Use G_IS_VALUE for checking return values in closure marshaling
+
+ Replace return_value argument NULL checks in GClosureMarshal
+ implementations with G_IS_VALUE. This checks both NULL and
+ validity of the value (!= G_TYPE_INVALID). This is needed
+ because GLib can pass either NULL or an invalid value based
+ on whether or not G_ENABLE_DEBUG is set.
+ See: https://bugzilla.gnome.org/show_bug.cgi?id=707249
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=707170
+
+ gi/_gobject/pygtype.c | 4 ++--
+ gi/pygi-signal-closure.c | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+commit c7b75a8c250078ac8ea28752f087ed687bd20edd
+Author: Yanko Kaneti <yaneti@declera.com>
+Date: Wed Aug 21 08:53:07 2013 +0200
+
+ Fix PEP-8 errors in propertyhelper.py
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=706319
+
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/_gobject/propertyhelper.py | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+commit 6fdd58404103596accb6ab04d4de33846d853c58
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Aug 19 17:13:30 2013 +0200
+
+ configure.ac: post-release bump to 3.9.91
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 6fbe2580deda215896e9583b418b8bc1aceb2f96
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Aug 19 17:10:52 2013 +0200
+
+ release 3.9.90
+
+ NEWS | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+commit a8d5da559ef088b05062681206758d2718946269
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Aug 19 11:38:31 2013 +0200
+
+ NEWS: retroactively fix last version number
+
+ NEWS | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit aba45eb2617c4b35168089bc9028f351732a617f
+Author: Benjamin Berg <benjamin@sipsolutions.net>
+Date: Tue Aug 6 00:41:52 2013 +0200
+
+ Create GLib.Pid in the same way on python 2 and 3
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=705451
+
+ gi/_glib/pygspawn.c | 8 --------
+ 1 file changed, 8 deletions(-)
+
+commit 2d203b7529c95ba4461a5a6d4c6b67169fabc4cf
+Author: Benjamin Berg <benjamin@sipsolutions.net>
+Date: Mon Aug 5 17:04:15 2013 +0200
+
+ Use PyLong_Type.tp_new for GLib.Pid
+
+ For GLib.Pid the original implementation for __new__ needs to be used,
+ as it is able to initialize the integer correctly.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=705451
+
+ gi/_glib/pygspawn.c | 1 +
+ tests/test_subprocess.py | 1 +
+ 2 files changed, 2 insertions(+)
+
+commit c32793dafbd52eab87b14ca064b47f5a4fb9000b
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Aug 5 14:40:38 2013 -0700
+
+ Add accumulator and accu_data arguments to GObject.Signal decorator
+
+ Update __init__, __call__, and copy methods to accept and pass
+ accumulators and associated user data through them. Update
+ accumulator unittests to use Signal decorators for testing accumulator
+ pass throughs. Verified the __gsignals__ dictionary accepts None
+ as valid values for accumulator and accu_data so specialization
+ for these arguments is not necessary.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=705533
+
+ gi/_gobject/signalhelper.py | 17 ++++++++++-----
+ tests/test_signal.py | 52
+ ++++++++++++++++++++++++---------------------
+ 2 files changed, 40 insertions(+), 29 deletions(-)
+
+commit 78f72654f5cb6c06e76ed9a532fc1ee328b60e50
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Aug 5 14:12:24 2013 -0700
+
+ Pass return values through the GObject.Signal.emit wrapper
+
+ Return the result of GObject.emit from the Signal decorators wrapping.
+ Update unittest for decorated return type to use skipUnless for
+ Python 3.
+ Add test for Signal decorator return type.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=705530
+
+ gi/_gobject/signalhelper.py | 2 +-
+ tests/test_signal.py | 37 +++++++++++++++++++++----------------
+ 2 files changed, 22 insertions(+), 17 deletions(-)
+
+commit 08cc206afeaefd1ce50ecfd1411807225a11c8f8
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Jul 29 03:33:40 2013 -0700
+
+ configure.ac: post-release bump to 3.9.90
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+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(+)
+
+commit af8d048442b924c72a1d0ae868ee63ccf292759d
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Fri May 24 13:03:07 2013 +0200
+
+ examples/option.py: Port to GI and Python 3
+
+ examples/option.py | 38 +++++++++++++++++++-------------------
+ 1 file changed, 19 insertions(+), 19 deletions(-)
+
+commit bef5939ca77f4d6939cd9229bd124dfe825b3bdb
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun May 12 18:58:06 2013 -0700
+
+ Fix vfunc info search for classes with multiple inheritance
+
+ Ensure the search for vfunc GI info continues recursively even if the
+ current class being looked at does not contain GI info of type
+ InterfaceInfo. This more exhaustive search is needed for setups with
+ multiple sub-classes and multiple inheritance.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=700092
+
+ gi/types.py | 12 +++++++-----
+ tests/test_gi.py | 1 -
+ 2 files changed, 7 insertions(+), 6 deletions(-)
+
+commit 5b8dff59baa1a3e524dac7877dd5b33dea52b026
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun May 12 22:19:38 2013 -0700
+
+ Fix closure argument conversion for enum and flag in args
+
+ Replace incorrect cast and assignment of double with uint for flags
+ and enums.
+
+ gi/pygi-closure.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 065503d5e284dc89bacd79d0d9a72eb739882bf8
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sat May 11 21:47:54 2013 -0700
+
+ tests: Add tests for overriding vfunc implementations
+
+ Add tests for overriding vfuncs for both single inheritance
+ and multiple inheritance with an interface (currently failing).
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=700092
+
+ tests/test_gi.py | 23 +++++++++++++++++++++++
+ 1 file changed, 23 insertions(+)
+
+commit c4e1112840004af264b4f2a052f333ea38f95cb6
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sat May 11 20:28:22 2013 -0700
+
+ Fix marshaling Python to FFI return value for enum and flags
+
+ Add break to GI_TYPE_TAG_INTERFACE case. This was falling through
+ causing
+ assignment of arg.v_pointer to the ffi return arg.
+
+ gi/pygi-closure.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit a703217eaf4075e9720d4247351e1dfc4f553772
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Fri Apr 19 06:37:24 2013 -0700
+
+ Remove half implemented GC in PyGIBaseInfo, PyGIStruct, and PyGIBoxed
+
+ Remove half implemented GC tracking from PyGIBaseInfo as it was not
+ needed (the implemented was also missing usage of
+ PyObject_GC_New/Track).
+ Ensure weakref list for PyGIBaseInfo is initialized to NULL and
+ cleared
+ properly.
+ Remove invalid calls to PyObject_GC_UnTrack and PyObject_ClearWeakRefs
+ for both PyGIStruct and PyGIBoxed as these types were not being
+ advertised as GC aware with Py_TPFLAGS_HAVE_GC.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=677091
+
+ gi/pygi-boxed.c | 4 ----
+ gi/pygi-info.c | 20 +++++---------------
+ gi/pygi-struct.c | 4 ----
+ 3 files changed, 5 insertions(+), 23 deletions(-)
+
+commit 87e41db2e060acd689a2ac043bc1ac51007de6f3
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Fri May 3 02:00:07 2013 -0700
+
+ Replace usage of pyg_begin_allow_threads with Py_BEGIN_ALLOW_THREADS
+
+ Replace all usage of pyg[lib]_begin_allow_threads with direct usage
+ of Py_BEGIN_ALLOW_THREADS.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=699440
+
+ gi/_glib/pyglib.h | 4 ----
+ gi/_glib/pygoptioncontext.c | 4 ++--
+ gi/_gobject/pygobject.c | 33 ++++++++++++++++-----------------
+ gi/gimodule.c | 4 ++--
+ gi/pygi-invoke.c | 4 ++--
+ 5 files changed, 22 insertions(+), 27 deletions(-)
+
+commit c9e95663d05de98a9abd3d1479554b1f09753382
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Thu May 2 03:57:05 2013 -0700
+
+ Remove and deprecate API for setting of thread blocking functions
+
+ Remove pyglib_set_thread_block_funcs and deprecate
+ pyg_set_thread_block_funcs.
+ The thread block function APIs are no longer be neccessary because
+ PyGObject
+ can use the Python C API directly when working with threads.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=699440
+
+ gi/_glib/pyglib.c | 41 -----------------------------------
+ gi/_glib/pyglib.h | 9 ++++----
+ gi/_gobject/gobjectmodule.c | 25 ++++++++-------------
+ gi/_gobject/pygobject-private.h | 33 ----------------------------
+ gi/_gobject/pygobject.h | 48
+ ++++++++++++++++++++---------------------
+ gi/gimodule.c | 15 +++++++------
+ 6 files changed, 46 insertions(+), 125 deletions(-)
+
+commit 05498a5732582a5ed1944bd1383af154ca5fc4e6
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Apr 30 11:51:05 2013 -0700
+
+ configure.ac: Post-release bump to 3.9.2
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 902bb6685fd9c90c7d81127861a152b0fab4b107
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Apr 30 11:49:03 2013 -0700
+
+ release 3.9.1
+
+ NEWS | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 49 insertions(+)
+
+commit f463d7cfaf65e0f3594ec15d897325f84225f1c5
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun Apr 28 19:59:35 2013 -0700
+
+ gtk-demo: Wrap description strings at 80 characters
+
+ Wrap trailing demo description strings so they are easier to read
+ in a programming editor. The gtk-demo itself re-wraps this using
+ textwrap and the Gtk.TextView dynamic wrapping.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=698547
+
+ demos/gtk-demo/demos/Entry/search_entry.py | 6 +++---
+ demos/gtk-demo/demos/Icon View/iconviewbasics.py | 8 ++++----
+ demos/gtk-demo/demos/Icon View/iconviewedit.py | 5 +++--
+ demos/gtk-demo/demos/Tree View/liststore.py | 5 ++++-
+ demos/gtk-demo/demos/images.py | 6 ++++--
+ demos/gtk-demo/demos/menus.py | 20
+ ++++++++++++++++----
+ demos/gtk-demo/demos/pickers.py | 4 ++--
+ demos/gtk-demo/demos/pixbuf.py | 5 +++--
+ demos/gtk-demo/demos/rotatedtext.py | 6 ++++--
+ 9 files changed, 43 insertions(+), 22 deletions(-)
+
+commit f0d4b963c42ac31d4d17ec0f2271940df2568644
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sat Apr 27 22:30:35 2013 -0700
+
+ gtk-demo: Use textwrap to reformat description for Gtk.TextView
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=698547
+
+ demos/gtk-demo/gtk-demo.py | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+commit ed41e260dcf5745fcc0656412be3c4a520ee20fc
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sat Apr 27 21:58:28 2013 -0700
+
+ gtk-demo: Use GtkSource.View for showing source code
+
+ Replace manual syntax highlighting of Gtk.TextView with usage of
+ GtkSource.View when available. Fall back to TextView with no
+ hightlighting when GtkSource is not available.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=698547
+
+ demos/gtk-demo/gtk-demo.py | 170
+ ++++++++++++---------------------------------
+ 1 file changed, 44 insertions(+), 126 deletions(-)
+
+commit 150104db47ac5ba32758fba0c156adaecc0fbcc0
+Author: Mike Ruprecht <mike.ruprecht@collabora.co.uk>
+Date: Sun Apr 28 01:40:34 2013 -0500
+
+ Use correct class for GtkEditable's get_selection_bounds() function
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=699096
+
+ gi/overrides/Gtk.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 61663928259f6f48c11f6e43334a62dd2b3eb8e6
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Thu Apr 25 05:27:35 2013 -0700
+
+ Test results of g_base_info_get_name for NULL
+
+ Block against potential NULL result when generating type hint with
+ _g_arg_get_pytype_hint.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=698829
+
+ gi/pygi-info.c | 12 ++++++++++--
+ 1 file changed, 10 insertions(+), 2 deletions(-)
+
+commit 0dff1940caf52ea5f1de27cc801ea6d4dab3a446
+Author: Jose Rostagno <joserostagno@vijona.com.ar>
+Date: Sun Apr 21 19:09:59 2013 -0300
+
+ Remove g_type_init conditional call
+
+ It's deprecated in the glib version we depend on.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=698763
+
+ gi/_gobject/gobjectmodule.c | 3 ---
+ 1 file changed, 3 deletions(-)
+
+commit c84b071ed8d3b78b4e4a6aef12f5f8bb99bdc107
+Author: Jose Rostagno <joserostagno@vijona.com.ar>
+Date: Sat Mar 30 20:59:44 2013 -0300
+
+ Update deps versions also in README
+
+ commit f957e33bc1ef2a4175bab85cfcd9b5faf092aa2f missed to update
+ that file
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=698763
+
+ README | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 4f25fa43e1e5c0f3cd22bcdadadb1d731f01fe34
+Author: Jose Rostagno <joserostagno@vijona.com.ar>
+Date: Sat Mar 30 20:50:35 2013 -0300
+
+ Drop compat code for old python version
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=698763
+
+ gi/_glib/pyglib-python-compat.h | 12 ------------
+ 1 file changed, 12 deletions(-)
+
+commit 8104fa04cac2cba74337e6c4b3ecf56fd6cbb80b
+Author: Niklas Koep <niklas.koep@gmail.com>
+Date: Thu Apr 25 06:14:12 2013 +0200
+
+ Remove duplicate call to _gi.Repository.require()
+
+ repository.require() was called twice in IntrospectionModule's
+ constructor.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=698797
+
+ gi/module.py | 1 -
+ 1 file changed, 1 deletion(-)
+
+commit f22b95033c0bcd99e9c70e6f0dc999f5e64b08a6
+Author: Johan Dahlin <johan@gnome.org>
+Date: Mon Oct 1 03:02:10 2012 -0700
+
+ Add ObjectInfo.get_class_struct()
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=685218
+
+ gi/pygi-info.c | 15 +++++++++++++++
+ tests/test_gi.py | 4 ++++
+ 2 files changed, 19 insertions(+)
+
+commit 2d34d35e5db06b0eb29cba91d0999b20a5c0b450
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Apr 22 03:43:23 2013 -0700
+
+ Change interpretation of NULL pointer field from None to 0
+
+ The usage of 0 is needed because these fields should generally
+ be used to store integer indices or hashes, not necessarily
+ pointers to actual data.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=698366
+
+ gi/pygi-argument.c | 11 +----------
+ tests/test_everything.py | 5 +++--
+ 2 files changed, 4 insertions(+), 12 deletions(-)
+
+commit 8d61ad38eb90d639da08289c036ae4cb99336c2a
+Author: Sobhan Mohammadpour <sobhanmohammadpour1@yahoo.fr>
+Date: Fri Mar 8 08:25:58 2013 +0330
+
+ Do not build tests until needed
+
+ Originally by [Alexandre Rostovtsev <tetromino@gmail.com>
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=698444
+
+ tests/Makefile.am | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+commit f61f23b999ae6e27ca852753da906de4ab8e6e25
+Author: Kai Willadsen <kai.willadsen@gmail.com>
+Date: Sun Apr 14 15:16:40 2013 +1000
+
+ pygi-convert: Support toolbar styles
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=698477
+
+ pygi-convert.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 7a92ade7ee5fe2f9eb8de2626c34650e2e5c06df
+Author: Kai Willadsen <kai.willadsen@gmail.com>
+Date: Sun Apr 14 10:54:04 2013 +1000
+
+ pygi-convert: Support new-style constructors for Gio.File
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=698477
+
+ pygi-convert.sh | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 1e8120992dc103ac817351be3c150e6cb25f719f
+Author: Kai Willadsen <kai.willadsen@gmail.com>
+Date: Sun Apr 14 10:22:55 2013 +1000
+
+ pygi-convert: Add some support for recent manager constructs
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=698477
+
+ pygi-convert.sh | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit 17d349f98d62ea7947c1553e0ef7e867301523aa
+Author: Kai Willadsen <kai.willadsen@gmail.com>
+Date: Sun Apr 14 07:37:24 2013 +1000
+
+ pygi-convert: Check for double quote in require statement
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=698477
+
+ pygi-convert.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit cc8bd6bd3fdf99762aa3431ceee347a05f6f3200
+Author: Kai Willadsen <kai.willadsen@gmail.com>
+Date: Sun Apr 14 07:37:00 2013 +1000
+
+ pygi-convert: Don't transform arbitrary keysym imports
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=698477
+
+ pygi-convert.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 99872a18ed1468b2c85cc7b96a0d12f2ae5167f0
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Thu Apr 11 04:09:59 2013 -0700
+
+ Remove Python keyword escapement in Repository.find_by_name
+
+ Strip trailing underscore from module level items before
+ calling g_irepository_find_by_name. This fixes a problem
+ with GI module level items having the same name as a Python
+ keyword raising an AttributeError during access (Pango.break_).
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=697363
+
+ gi/pygi-info.c | 32 ++++++++++++++++++++++----------
+ gi/pygi-info.h | 2 ++
+ gi/pygi-repository.c | 16 ++++++++++++++++
+ tests/test_overrides_pango.py | 5 +++++
+ 4 files changed, 45 insertions(+), 10 deletions(-)
+
+commit c07404461b126206e369270b56e613f81369c70a
+Author: Daniel Drake <dsd@laptop.org>
+Date: Mon Mar 18 16:08:09 2013 -0600
+
+ Optimize signal lookup in gi repository
+
+ Now that we have GSignalQuery results available to us when connecting
+ signals, we already know which GType implements the signal in
+ question.
+
+ Therefore there is no need to traverse the class parent hierarchy
+ looking for this, which takes a considerable amount of CPU time.
+
+ There is also no need to canonicalize the signal name; both before
+ and after this patch, by the time we reach this point we have already
+ successfully looked up the signal name as presented from Python.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=696143
+
+ gi/_gobject/pygobject.c | 5 ++--
+ gi/pygi-signal-closure.c | 59
+ +++++++++++++-----------------------------------
+ gi/pygi-signal-closure.h | 1 +
+ gi/pygi.h | 4 +++-
+ 4 files changed, 23 insertions(+), 46 deletions(-)
+
+commit e220706b3e4d9fd454613fbfe1e60e7e1da94ae0
+Author: Daniel Drake <dsd@laptop.org>
+Date: Mon Mar 18 15:38:19 2013 -0600
+
+ Optimize connection of Python-implemented signals
+
+ Like properties, when working with signals we must detect if the
+ signal is implemented in a Python class or if it originates from the
+ gi repository, and act accordingly.
+
+ Asking the gi repository if it can find a signal that is implemented
+ in a Python class (it can't) takes a considerable amount of CPU time.
+
+ Use g_signal_query() to find out which GType implements the signal.
+ Then perform a simple test to see if this type is implemented at the
+ Python level, allowing us to to skip the GI querying in this case.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=696143
+
+ gi/_gobject/pygobject.c | 19 +++++++++++++++----
+ 1 file changed, 15 insertions(+), 4 deletions(-)
+
+commit e91b35d72f93678a79623347dce271148d57046f
+Author: Daniel Drake <dsd@laptop.org>
+Date: Mon Mar 18 15:24:52 2013 -0600
+
+ Consolidate signal connection code
+
+ This code was repeated 4 times with very little variance;
+ consolidate it and add simple tests to ensure basic coverage.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=696143
+
+ gi/_gobject/pygobject.c | 129
+ +++++++++++++++--------------------------------
+ tests/test_everything.py | 33 ++++++++++++
+ 2 files changed, 74 insertions(+), 88 deletions(-)
+
+commit cd91e1d5db617d470acbf8c5bc74c11c92f946f6
+Author: Daniel Drake <dsd@laptop.org>
+Date: Mon Mar 18 15:11:16 2013 -0600
+
+ Fix setting of struct property values
+
+ "goto out" in this context means that an error occurred, but this
+ particular instance was sitting in the "good" codepath.
+
+ Fixes setting of struct property values.
+
+ gi/pygi-property.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit 8981ea0422c6837d488311dafe8937593372e736
+Author: Daniel Drake <dsd@laptop.org>
+Date: Mon Mar 18 14:25:45 2013 -0600
+
+ Optimize property get/set when using GObject.props
+
+ Skip GI repository lookup for properties defined on Python
+ defined GObject types.
+
+ Signed-off-by: Simon Feltman <sfeltman@src.gnome.org>
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=696143
+
+ gi/_gobject/pygobject.c | 37 +++++++++++++++++++------------------
+ 1 file changed, 19 insertions(+), 18 deletions(-)
+
+commit 266e389ff90d982151bae3ac22b9b8b0739f520f
+Author: Christoph Reiter <reiter.christoph@gmail.com>
+Date: Sat Apr 13 17:28:26 2013 +0200
+
+ configure.ac: Fix PYTHON_SO with Python3.3
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=696646
+
+ configure.ac | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+commit e54c2d1df3812a1789ee240b0ba71ddf77c2f90a
+Author: Daniel Drake <dsd@laptop.org>
+Date: Mon Mar 18 14:13:37 2013 -0600
+
+ Simplify registration of custom types
+
+ Use custom quark data to track Python created GTypes.
+
+ Remove previous mechanism to track registration of python-implemented
+ GTypes as it was unused (no custom registration was ever tracked).
+
+ Leave vtable pointer and set to NULL to avoid an ABI break.
+
+ Signed-off-by: Simon Feltman <sfeltman@src.gnome.org>
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=696143
+
+ gi/_gobject/gobjectmodule.c | 11 +++++--
+ gi/_gobject/pygobject-private.h | 8 ++---
+ gi/_gobject/pygobject.c | 8 ++---
+ gi/_gobject/pygobject.h | 9 +++---
+ gi/_gobject/pygtype.c | 69
+ +++--------------------------------------
+ 5 files changed, 22 insertions(+), 83 deletions(-)
+
+commit 50702a09344825e3a8aa54365d78de807f989d88
+Author: Christoph Reiter <reiter.christoph@gmail.com>
+Date: Sat Apr 13 16:04:17 2013 +0200
+
+ pygi-convert.sh: Add GStreamer rules
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=697951
+
+ pygi-convert.sh | 17 +++++++++++++++++
+ 1 file changed, 17 insertions(+)
+
+commit b289176e6b37cb2825bd555cea019b85b68d5c57
+Author: Jussi Kukkonen <jussi.kukkonen@intel.com>
+Date: Sun Mar 10 15:04:40 2013 +0200
+
+ pygi-convert: Add rule for TreeModelFlags
+
+ Signed-off-by: Simon Feltman <sfeltman@src.gnome.org>
+
+ pygi-convert.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 09610bf42be76f65d7d2afe1c691f7b4a7c64e5b
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Fri Mar 29 03:20:44 2013 -0700
+
+ Unify interface struct to Python GI marshaling code
+
+ Add pygi_marshal_to_py_interface_struct used for direct gi method
+ call out args and vfunc in args.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=693405
+
+ gi/pygi-argument.c | 72 ++++++-------------------------
+ gi/pygi-marshal-to-py.c | 112
+ +++++++++++++++++++++++++++++-------------------
+ gi/pygi-marshal-to-py.h | 8 ++++
+ 3 files changed, 91 insertions(+), 101 deletions(-)
+
+commit 6d3a0751e71ee3c37b3bb646723aed75971e5b39
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Thu Mar 28 22:41:51 2013 -0700
+
+ Unify Python interface struct to GI marshaling code
+
+ Add pygi_marshal_from_py_interface_struct used for direct gi method
+ call in args and vfunc out args.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=693405
+
+ gi/pygi-argument.c | 75 +++++++--------------
+ gi/pygi-cache.c | 12 +---
+ gi/pygi-marshal-from-py.c | 167
+ +++++++++++++++++++++++++++++-----------------
+ gi/pygi-marshal-from-py.h | 11 +++
+ 4 files changed, 141 insertions(+), 124 deletions(-)
+
+commit 1ea654b4d34e0d119556b232796cd9370b2572f1
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Thu Mar 28 06:17:15 2013 -0700
+
+ Unify Python float and double to GI marshaling code
+
+ Change _pygi_argument_from_object to use the cachers marshalers
+ (_pygi_marshal_from_py_float/double) directly instead of keeping a
+ copy of the code.
+ Refactor _pygi_marshal_from_py_float/double to use a common utility
+ _pygi_py_arg_to_double for initial error checking and conversion.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=693405
+
+ gi/pygi-argument.c | 26 ++++----------------------
+ gi/pygi-marshal-from-py.c | 42 ++++++++++++++++++++----------------------
+ 2 files changed, 24 insertions(+), 44 deletions(-)
+
+commit 2eb2a712864a1a685d19018e0860cf0da7c5c9ab
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Thu Mar 28 05:29:08 2013 -0700
+
+ Unify filename to Python GI marshaling code
+
+ Change _pygi_argument_to_object to use the cachers marshaler
+ (_pygi_marshal_to_py_filename) directly instead of keeping a
+ copy of the code.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=693405
+
+ gi/pygi-argument.c | 22 ++--------------------
+ gi/pygi-marshal-to-py.c | 6 ++----
+ 2 files changed, 4 insertions(+), 24 deletions(-)
+
+commit 54aa043d96deb02589e13042a46917405ca53780
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Thu Mar 28 05:20:00 2013 -0700
+
+ Unify utf8 to Python GI marshaling code
+
+ Change _pygi_argument_to_object to use the cachers marshaler
+ (_pygi_marshal_to_py_utf8) directly instead of keeping a
+ copy of the code.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=693405
+
+ gi/pygi-argument.c | 11 ++++-------
+ gi/pygi-marshal-to-py.c | 4 +---
+ 2 files changed, 5 insertions(+), 10 deletions(-)
+
+commit 03ff41ae4bb83858338d96cc6210092c7fb82464
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Thu Mar 28 05:10:45 2013 -0700
+
+ Unify unichar to Python GI marshaling code
+
+ Change _pygi_argument_to_object to use the cachers marshaler
+ (_pygi_marshal_to_py_unichar) directly instead of keeping a
+ copy of the code.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=693405
+
+ gi/pygi-argument.c | 19 ++-----------------
+ 1 file changed, 2 insertions(+), 17 deletions(-)
+
+commit 594ad084c2cc21cebce209c11740e6d4866b0b82
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sat Feb 16 19:49:59 2013 -0800
+
+ Unify Python unicode to filename GI marshaling code
+
+ Change _pygi_argument_from_object to use the cachers marshaler
+ (_pygi_marshal_from_py_filename) directly instead of keeping a
+ copy of the code.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=693405
+
+ gi/pygi-argument.c | 30 ++----------------------------
+ 1 file changed, 2 insertions(+), 28 deletions(-)
+
+commit a62e8cdf90f7b03cfc8116125ef3557f9ad08dde
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sat Feb 16 19:32:54 2013 -0800
+
+ Unify Python unicode to utf8 GI marshaling code
+
+ Change _pygi_argument_from_object to use the cachers marshaler
+ (_pygi_marshal_from_py_utf8) directly instead of keeping a
+ copy of the code.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=693405
+
+ gi/pygi-argument.c | 32 ++------------------------------
+ 1 file changed, 2 insertions(+), 30 deletions(-)
+
+commit e253c73335fccabc61e0329f8528a90f79858c67
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sat Feb 16 19:16:43 2013 -0800
+
+ Unify Python unicode to unichar GI marshaling code
+
+ Change _pygi_argument_from_object to use the cachers marshaler
+ (_pygi_marshal_from_py_unichar) directly instead of keeping a
+ copy of the code.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=693405
+
+ gi/pygi-argument.c | 34 ++--------------------------------
+ gi/pygi-marshal-from-py.c | 9 +++++++++
+ 2 files changed, 11 insertions(+), 32 deletions(-)
+
+commit 216caf590b262fed40d10bb34d020089d1197160
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Thu Apr 4 15:57:12 2013 -0700
+
+ Fix enum and flags marshaling type assumptions
+
+ Replace assignments of GFlags and GEnum values to various GIArgument
+ members with v_uint and v_int respectively.
+
+ gi/pygi-argument.c | 6 +++---
+ gi/pygi-property.c | 4 ++--
+ 2 files changed, 5 insertions(+), 5 deletions(-)
+
+commit 4799ef1d0cb9a4b27c7952585d33b58ea9ec34ca
+Author: Christoph Reiter <reiter.christoph@gmail.com>
+Date: Thu Apr 4 10:08:38 2013 +0200
+
+ Make AM_CHECK_PYTHON_LIBS not depend on AM_CHECK_PYTHON_HEADERS
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=696648#c6
+
+ m4/python.m4 | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit f82f755a0f419539c223e4a74e33145726c6e69f
+Author: Christoph Reiter <reiter.christoph@gmail.com>
+Date: Thu Apr 4 09:05:48 2013 +0200
+
+ Use distutils.sysconfig to retrieve the python include path.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=696648
+
+ m4/python.m4 | 8 ++------
+ 1 file changed, 2 insertions(+), 6 deletions(-)
+
+commit cf81dd66e6387bf27122a71176e91ca39beb6519
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Thu Apr 4 06:47:56 2013 +0200
+
+ Use g_strdup() consistently
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=696650
+
+ gi/pygi-marshal-from-py.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 6c22fea63fa6978c2a717ff12ff84d3aff776b5e
+Author: Christoph Reiter <reiter.christoph@gmail.com>
+Date: Tue Mar 26 16:03:59 2013 +0100
+
+ Support PEP 3149 (ABI version tagged .so files)
+
+ Add a ABI suffix to the shared library retrieved from
+ distutils.sysconfig
+ instead of hardcoding it. This should also make things more robust
+ on Windows.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=696646
+
+ configure.ac | 3 +++
+ gi/Makefile.am | 14 +++++++-------
+ gi/_glib/Makefile.am | 14 +++++++-------
+ gi/_gobject/Makefile.am | 14 +++++++-------
+ 4 files changed, 24 insertions(+), 21 deletions(-)
+
+commit 2259ccac8aa2ec23240e92e303ea3f2c53dc2a88
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun Mar 31 01:32:34 2013 -0700
+
+ Fix stack corruption due to incorrect format for argument parser
+
+ Fix call to PyArg_ParseTupleAndKeywords that used a format parser
+ of "l" meaning long (8 bytes) in combination with an output pointer
+ of guint (4 bytes). Change to use gulong with a format of "k".
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=696892
+
+ gi/_gobject/pygflags.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 48e52210ece0e144b4c959e773ea542a912358e7
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Thu Mar 7 00:26:37 2013 -0800
+
+ Deprecate GLib and GObject threads_init
+
+ Remove a handful of Python threading related helper functions
+ from pyglib and pygobject. The binding internals required
+ GLib.threads_init to be called for PyGObject to work with
+ Python threads. This was removed as it should not be a requirement.
+ Using the Python threading module already initializes threading
+ for us (PyEval_InitThreads).
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=686914
+
+ gi/_glib/glibmodule.c | 16 --------
+ gi/_glib/pyglib.c | 94
+ ---------------------------------------------
+ gi/_glib/pyglib.h | 28 +++++++-------
+ gi/_gobject/gobjectmodule.c | 31 ++++-----------
+ gi/overrides/GLib.py | 8 +++-
+ gi/overrides/GObject.py | 2 +-
+ 6 files changed, 28 insertions(+), 151 deletions(-)
+
+commit 89d05f91cee419d46cb5318d4a9001ec315a3475
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Mar 25 09:03:51 2013 +0100
+
+ Drop support for Python 2.6
+
+ 2.7 has been released long ago, nobody tests PyGObject with 2.6 any
+ more, and
+ this unblocks e. g. GNOME #682320.
+
+ Drop usage of PyCObject_* (which has been superseded by PyCapsule
+ for >= 2.7),
+ and drop Python 2.6 specific workarounds.
+
+ configure.ac | 2 +-
+ gi/_glib/pyglib-python-compat.h | 20 ------------------
+ gi/_gobject/pygobject.h | 6 ------
+ gi/pygi.h | 4 ----
+ m4/python.m4 | 2 +-
+ tests/runtests.py | 45
+ +----------------------------------------
+ tests/test_gobject.py | 1 -
+ tests/test_signal.py | 4 ----
+ 8 files changed, 3 insertions(+), 81 deletions(-)
+
+commit 56347953abb1e214817186581eaf2b2d8762cf97
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Wed Oct 24 16:43:25 2012 +0200
+
+ Remove static PollFD bindings
+
+ Use the GLib API through GI instead, and provide an override to keep a
+ backwards compatible constructor syntax.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=686795
+
+ gi/_glib/Makefile.am | 2 --
+ gi/_glib/glibmodule.c | 2 --
+ gi/_glib/pygsource.c | 98
+ ---------------------------------------------------
+ gi/_glib/pygsource.h | 36 -------------------
+ gi/overrides/GLib.py | 17 +++++++--
+ 5 files changed, 15 insertions(+), 140 deletions(-)
+
+commit a93eb5ecc982b5fe1bdf8f78b15ba10351a63b89
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Mar 25 08:44:24 2013 +0100
+
+ Drop test skipping due to too old g-i
+
+ We depend on gobject-introspection 1.35.9 now, which has all this API.
+
+ tests/test_gi.py | 24 ------------------------
+ tests/test_object_marshaling.py | 14 --------------
+ 2 files changed, 38 deletions(-)
+
+commit f957e33bc1ef2a4175bab85cfcd9b5faf092aa2f
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Mar 25 08:37:37 2013 +0100
+
+ Bump glib and g-i dependencies
+
+ Now require g-i 1.35.9 and glib 2.35.9, i. e. the current stable
+ GNOME 3.8
+ versions. This allows us to drop the conditional test suite skips
+ and drop the
+ static PollFD bindings.
+
+ configure.ac | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 252556d044322207429c0d0c269365f48e4d819a
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Mar 25 08:43:53 2013 +0100
+
+ configure.ac: post-release version bump to 3.9.1
+
+ configure.ac | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 5f82e007e2dcdbfd82a20d8c4d54f9cd7b3b77ac
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Mar 25 08:12:10 2013 +0100
+
+ release 3.8.0
+
+ NEWS | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+commit bb4fa093d59173f68a0b16e10016bafe7cd18f62
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Wed Mar 20 23:45:01 2013 -0700
+
+ tests: Fix incorrect assumption when testing pyglib version
+
+ Replace version test of 3.7.2 with 3.0.0 as it is the only reasonable
+ value that can be used for a future proof unittest here.
+
+ tests/test_glib.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 78b7b0bea3068b81ba67deea4d06b1fb27434841
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Mar 18 14:02:29 2013 +0100
+
+ configure.ac: post-release bump to 3.8.0
+
+ configure.ac | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit defbd63e95faafaa84230f160bc95dad0f55e37d
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Mar 18 14:01:05 2013 +0100
+
+ release 3.7.92
+
+ NEWS | 18 ++++++++++++++++++
+ 1 file changed, 18 insertions(+)
+
+commit a0844a896603c5c91bed24cf94106765f0ced74e
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun Mar 17 23:22:38 2013 -0700
+
+ Fix stack smasher when marshaling enums as a vfunc return value
+
+ Add special case for marshaling GI_TYPE_TAG_INTERFACE with enum or
+ flag types. Default interfaces to marshal as a pointer.
+ Add explicit cases for GType and Unichar out/return marshaling.
+ Fix leaking of GIBaseInfo when marshaling interface as out arg.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=637832
+
+ gi/pygi-closure.c | 69
+ ++++++++++++++++++++++++++++++++++++++++++++++---------
+ tests/test_gi.py | 19 +++++++++++++++
+ 2 files changed, 77 insertions(+), 11 deletions(-)
+
+commit 669e15c35213dbce6ceb0a4a3d474aae620910ce
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun Mar 17 15:37:09 2013 -0700
+
+ Change base class of PyGIDeprecationWarning based on minor version
+
+ Use RuntimeWarning as the base class of PyGIDeprecationWarning
+ for unstable (odd minor version) and use DeprecationWarning for
+ stable (even minor version). This is so PyGObject deprecations
+ behave the same as regular Python deprecations in stable releases.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=696011
+
+ gi/__init__.py | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
+
+commit 755b2e6fc635489d98d48254ea60b2631b43dfbd
+Author: Alban Browaeys <prahal@yahoo.com>
+Date: Thu Feb 28 18:57:21 2013 +0100
+
+ autogen.sh: Source gnome-autogen to fix out of source builddir
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=694889
+
+ autogen.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit a38392a9d713b0001cf30066d337b1abbbbbc59e
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Mar 5 12:22:15 2013 +0100
+
+ Add 3.7.91.1 NEWS entry
+
+ Forgot to push this back then.
+
+ NEWS | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit 85f8aae849dd0fb21de8722a3af9234ca20ea1e0
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun Mar 17 04:19:57 2013 -0700
+
+ pygtkcompat: Make gdk.Window.get_geometry return tuple of 5
+
+ Make get_geometry return a tuple of (x, y, width, height, depth)
+ as it did in pygtk 2.
+ Update pygtkcompat.enable_gtk() to default to version 3.0 because
+ version 2.0 core dumps trying to use introspection with gtk 2.
+
+ pygtkcompat/pygtkcompat.py | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+commit 38683f721c33cc35f0260868e58643fd35f04cbe
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun Mar 17 02:08:03 2013 -0700
+
+ testhelpermodule: Fix build warning for PyGObject_Type redefinition
+
+ Remove dynamic retrieval of PyGObject_Type as it is available
+ in pygobject.h since commit 2656bc47 (causing this compile warning)
+
+ tests/testhelpermodule.c | 14 +-------------
+ 1 file changed, 1 insertion(+), 13 deletions(-)
+
+commit a3ec8867945da7722beebb7e77c6255ee3ba8bb8
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun Mar 17 01:51:33 2013 -0700
+
+ pygtkcompat: Initialize hint to zero in set_geometry_hints
+
+ pygtkcompat/pygtkcompat.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 471204953d6fc93b3d311afd133d40f7d75ec541
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Fri Mar 15 04:33:22 2013 -0700
+
+ Remove incorrect bounds check with property helper flags
+
+ Remove bounds check for flags as it is not necessary for the
+ helper to make these kind of judgement calls in general.
+ e.g. leave it to marshaling/internals to complain about potential
+ problems. The flags were being bounds checked to a maximum
+ value of 32 (the intention was most likely to limit it to 32 bits).
+
+ gi/_gobject/propertyhelper.py | 3 ---
+ tests/test_properties.py | 1 -
+ 2 files changed, 4 deletions(-)
+
+commit 2656bc47ca1219b329066da1c2c58018ae624866
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Thu Mar 7 18:07:17 2013 -0800
+
+ Fix crash when setting property of type object to an incorrect type
+
+ Add type check when marshaling an object from Python for GObject
+ types.
+ Add PyGObject_Type as part of the pygobject API to check for this.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=695420
+
+ gi/_gobject/gobjectmodule.c | 3 ++-
+ gi/_gobject/pygobject.h | 2 ++
+ gi/pygi-marshal-from-py.c | 8 ++++++++
+ tests/test_object_marshaling.py | 4 ++++
+ 4 files changed, 16 insertions(+), 1 deletion(-)
+
+commit 44587f42224a44a480629223c8d78a426bc32a12
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Thu Mar 7 17:59:02 2013 -0800
+
+ Remove skipping of object property tests
+
+ These were showing up as unexpected successes now that bug 675726
+ is fixed.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=695420
+
+ tests/test_object_marshaling.py | 7 ++-----
+ 1 file changed, 2 insertions(+), 5 deletions(-)
+
+commit 10214ba2d96fd6d66eeea159219f585abff8632a
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Thu Mar 7 15:34:49 2013 -0800
+
+ Give more informative error when setting property to incorrect type
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=695420
+
+ gi/_gobject/pygobject.c | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+commit 9ab6e5451aea43ed086c0d26324c4efed24476d7
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Mar 5 12:04:55 2013 +0100
+
+ Revert "Drop gi.overrides.overridefunc()"
+
+ This reverts commit 1dc2bc9f65669417ae1964d70b85f115928b2963. External
+ modules
+ like GEdit plugins use @overrides for functions as well, we must
+ not break
+ them.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=695199
+
+ gi/overrides/Gtk.py | 7 ++++---
+ gi/overrides/__init__.py | 24 ++++++++++++++++++++++--
+ 2 files changed, 26 insertions(+), 5 deletions(-)
+
+commit 862de794bf01a66aa6d796c674bce375cad37ba7
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Mar 4 17:33:51 2013 +0100
+
+ configure.ac: Post-release bump to 3.7.92
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit bb12e652d661cf6ce931b44a89c11951894101bf
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Mar 4 17:27:50 2013 +0100
+
+ release 3.7.91
+
+ NEWS | 33 +++++++++++++++++++++++++++++++++
+ 1 file changed, 33 insertions(+)
+
+commit 25a6f90f28b065dd4f1cd352826598577402dc0b
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Mar 4 17:16:22 2013 +0100
+
+ Dot not clobber original Gdk/Gtk functions with overrides
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=686835
+
+ gi/overrides/Gdk.py | 3 ++-
+ gi/overrides/Gtk.py | 3 ++-
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+commit d50d16428edf42799489fe1befbc4ce56f0fa181
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Mar 4 15:30:31 2013 +0100
+
+ tests: Reorganize GError and GClosure tests
+
+ Split TestGClosure.test_gclosure_in() into its three components.
+
+ Merge the various TestGError* classes into one, to match the structure
+ of the
+ other tests.
+
+ tests/test_gi.py | 59
+ +++++++++++++++++++++++++-------------------------------
+ 1 file changed, 26 insertions(+), 33 deletions(-)
+
+commit 8cfd596c7849bf78a74fee04630fbbb104f02080
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Mar 4 15:16:25 2013 +0100
+
+ Fix memory leaks in property setting/getting
+
+ Do not leak GValues and string arrays, free them properly. As we
+ always free
+ the intermediate GValues, use g_value_dup_boxed() instead of
+ g_value_get_boxed() when appropriate.
+
+ Detected by test_gi.TestPropertiesObject.test_strv test case.
+
+ gi/pygi-property.c | 21 ++++++++++++++++-----
+ 1 file changed, 16 insertions(+), 5 deletions(-)
+
+commit eec8c3a932d42e92ccaf7f97d3d90948842e263f
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Mar 4 12:43:24 2013 +0100
+
+ Fix memory leak in pyg_flags_get_value_nicks()
+
+ Discovered by test_gi.TestKeywords.test_uppercase() test.
+
+ gi/_gobject/pygflags.c | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+commit 002a834dd993b82508a4fe262269befcf1a6d341
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Mar 4 12:10:03 2013 +0100
+
+ Fix memory leak in _pygi_argument_to_array()
+
+ Free the originally allocated GArray data before setting it to
+ our already
+ existing C array.
+
+ Discovered by test_gi.TestStructure.test_boxed_struct_return test
+ case.
+
+ gi/pygi-argument.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit d32b410a1b1fcca6d10d75fbd771ea789999da64
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Mar 4 10:19:34 2013 +0100
+
+ Fix leaking inout C arrays
+
+ g_*_info_invoke() changes the original state->in_args and state->args
+ C arrays
+ to the output values for (inout) arguments, thus losing the pointer
+ to the
+ originally allocated array. Remember that in state->args_data,
+ so that we can
+ free it in _pygi_marshal_cleanup_from_py_array().
+
+ Reproduced by test_gi.TestArray.test_array_fixed_inout test case.
+
+ gi/pygi-marshal-cleanup.c | 6 ++++++
+ gi/pygi-marshal-from-py.c | 4 ++++
+ 2 files changed, 10 insertions(+)
+
+commit e4098cbc28ff9324fa851bca2e423da4e51b5091
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Fri Mar 1 15:12:31 2013 +0100
+
+ Fix leak in _PyGI_ERROR_PREFIX()
+
+ Properly clean up our allocated py_error_prefix string.
+
+ Fixes memory leak in e. g. test_gi.TestArray.test_array_fixed_int_in.
+
+ gi/pygi-private.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit b388c3e87ce86d26560337c88eb33d0a95647db8
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Fri Mar 1 15:01:06 2013 +0100
+
+ Fix leaking of boxed array elements
+
+ Commit 631d8ef879a copies struct array elements, but this needlessly
+ duplicates
+ and leaks the array element for boxed types. So only do it for
+ plain structs.
+
+ This fixes the memory leak with
+ test_gi.TestGValue.test_gvalue_flat_array_out.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=693402
+
+ gi/pygi-marshal-to-py.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit 1dc2bc9f65669417ae1964d70b85f115928b2963
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Fri Mar 1 14:04:34 2013 +0100
+
+ Drop gi.overrides.overridefunc()
+
+ This just adds an unnecessary extra function call and is not really
+ needed.
+ Drop it from the only remaining function which uses this
+ (Gtk.main_quit) and
+ drop overridefunc().
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=686835
+
+ gi/overrides/Gtk.py | 7 +++----
+ gi/overrides/__init__.py | 24 ++----------------------
+ 2 files changed, 5 insertions(+), 26 deletions(-)
+
+commit 1edc4ba31b3f9375ec3920aab5b71eb066ee3739
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Fri Mar 1 14:02:02 2013 +0100
+
+ Add some tests for overridden Gdk/Gtk functions
+
+ Add tests for Gtk.main_quit, Gtk.stock_parse(), and Gdk.color_parse(),
+ as we
+ have overrides for them.
+
+ tests/test_overrides_gdk.py | 7 +++++++
+ tests/test_overrides_gtk.py | 15 +++++++++++++++
+ 2 files changed, 22 insertions(+)
+
+commit 6f6c0ceff00fea83bc85756b10694f7c96039abc
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Fri Mar 1 11:10:01 2013 +0100
+
+ Fix GLib.Source ref leak upon destruction
+
+ In GLib.Source.__del__(), manually unref the source if we are a
+ custom Source.
+ As we use a static binding to create it, the GI part won't unref it
+ for us,
+ leading to finalize() method not being called and the GSource
+ object leaking.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=510511
+
+ gi/overrides/GLib.py | 4 ++++
+ tests/test_source.py | 31 +++++++++++++++++++++++++++++++
+ 2 files changed, 35 insertions(+)
+
+commit 91f76dd94fb0afc6888a821a31c3a4e2e053360e
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Thu Feb 28 15:08:56 2013 +0100
+
+ Add performance test for Gtk.ListStore.append
+
+ We are going to optimize this in various ways, so let's measure it.
+
+ tests/test_overrides_gtk.py | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+commit b1ff74b085bdca72c272f019be4dd387073a991a
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Thu Feb 28 04:32:30 2013 -0800
+
+ Optimize GValue.get/set_value by setting GValue.g_type to a local
+
+ This increases performance by a factor of 2x for types later
+ in the dispatch.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=694857
+
+ gi/overrides/GObject.py | 98
+ +++++++++++++++++++++++++------------------------
+ 1 file changed, 51 insertions(+), 47 deletions(-)
+
+commit 105e6738ee249b64904da26ae45dd273ca4eeba8
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Thu Feb 28 11:43:47 2013 +0100
+
+ Fix leak of caller-allocated boxed values
+
+ Add a new "allocated_slice" argument to _pygi_boxed_new() which
+ specifies
+ whether its "boxed" pointer was allocated using a slice (by giving
+ its size) or
+ malloc (by specifying 0), as _pygi_boxed_new cannot determine that
+ itself any
+ more.
+
+ Use this in _pygi_marshal_to_py_interface_struct() for
+ caller-allocated boxed
+ values, as _caller_alloc() uses _pygi_boxed_alloc() for those
+ (i. e. slices),
+ which would otherwise leak.
+
+ Thanks to Mike Gorse <mgorse@suse.com> for the original patch!
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=691501
+
+ gi/gimodule.c | 2 +-
+ gi/pygi-argument.c | 2 +-
+ gi/pygi-boxed.c | 14 ++++++++++----
+ gi/pygi-boxed.h | 3 ++-
+ gi/pygi-marshal-to-py.c | 6 ++++--
+ gi/pygi-source.c | 3 ++-
+ 6 files changed, 20 insertions(+), 10 deletions(-)
+
+commit 64bcca2d39fed1734ad1abbe291406387e901f5c
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Thu Feb 28 10:48:18 2013 +0100
+
+ Fix memory handling of caller-allocated boxed types
+
+ _pygi_marshal_to_py_interface_struct() and other places treat
+ subtypes of
+ G_TYPE_BOXED as boxed values and wrap them with _pygi_boxed_new(). Fix
+ _caller_alloc() and _cleanup_caller_allocates() to consider
+ G_TYPE_BOXED
+ subtypes as well and use the slice allocator instead of malloc()'ing
+ a struct.
+ This avoids trying to free an malloc'ed struct with g_slice_free()
+ and properly
+ cleans up the boxed values.
+
+ The leak was produced with:
+
+ G_SLICE=debug-blocks PYTHONPATH=. valgrind --tool=memcheck
+ --leak-check=full --show-possibly-lost=no \
+ python3 -c 'from gi.repository import Gtk; b=Gtk.TextBuffer();
+ (s,e) = b.get_bounds()'
+
+ gi/pygi-invoke.c | 2 +-
+ gi/pygi-marshal-cleanup.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 4f5e8b7554b6388aa2d0eb4a3b285d99499163be
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Wed Feb 27 23:21:34 2013 +0100
+
+ Fix cleanup of GValue arrays
+
+ Commit bc1fd8 introduced a thinko: We must not change
+ item_arg_cache->from_py_cleanup, as it's a global cache. Revert
+ the original
+ change, and instead put the hack into
+ _pygi_marshal_cleanup_from_py_array(),
+ which now short-circuits
+ _pygi_marshal_cleanup_from_py_interface_struct_gvalue() to avoid
+ trying to release a slice which has never been allocated in
+ _pygi_marshal_from_py_array().
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672224
+
+ gi/pygi-marshal-cleanup.c | 11 ++++++++++-
+ gi/pygi-marshal-from-py.c | 10 +++-------
+ 2 files changed, 13 insertions(+), 8 deletions(-)
+
+commit 70118c3840b10e1585d066a4be485c097cd23e99
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Wed Feb 27 21:52:43 2013 +0100
+
+ Revert "Mark caller-allocated boxed structures as having a slice
+ allocated"
+
+ This is wrong after all, as it sets slice_allocated to TRUE, but
+ doesn't set a
+ corresponding size. Also, poking in internal fields from that place
+ is ugly;
+ this should rather be fixed in gi/pygi-marshal-cleanup.c
+ _cleanup_caller_allocates().
+
+ This reverts commit dc3d21173b75232f7ea0b9913f7309486456a69d.
+
+ gi/pygi-marshal-to-py.c | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+commit a51c72c771dafc0c13d7990f1ff3e428dca729a1
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Wed Feb 27 21:51:30 2013 +0100
+
+ Run tests with G_SLICE=debug_blocks
+
+ This will help finding regressions in slice management, like in
+ https://bugzilla.gnome.org/show_bug.cgi?id=691501
+
+ tests/Makefile.am | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit 4f6ebcfe0605a7a593dc3f9dd322a4da9bd091a3
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Wed Feb 27 18:30:23 2013 +0100
+
+ Add override helper for stripping boolean returns
+
+ Introduce a gi.overrides.strip_boolean_result() helper which checks
+ a boolean
+ return value and if True, return the remaining arguments, otherwise
+ return a
+ default. This pattern is being used by a lot of overrides, which get
+ significantly smaller and more consistent that way.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=694431
+
+ gi/overrides/Gdk.py | 27 +-------
+ gi/overrides/Gtk.py | 156
+ +++++++++--------------------------------------
+ gi/overrides/__init__.py | 22 +++++++
+ 3 files changed, 53 insertions(+), 152 deletions(-)
+
+commit 08c97b0bd3140921f1b5c74f7764e23d3a9bf0ee
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Wed Feb 27 15:39:23 2013 +0100
+
+ Drop obsolete pygobject_register_sinkfunc() declaration
+
+ There is no definition for this any more, nor is it being used
+ anywhere.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=639849
+
+ gi/_gobject/pygobject-private.h | 2 --
+ 1 file changed, 2 deletions(-)
+
+commit b6fefd625b843d4fc3dabc456584a2ad27a48c8c
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Wed Feb 27 13:41:55 2013 +0100
+
+ Fix marshalling of C arrays with explicit length in signal arguments
+
+ We need _pygi_argument_to_array() from both closure marshalling
+ (where we have
+ the arguments as GIArgument array) and signal closure marshalling
+ (where we
+ have the arguments in a GValue array). Add an alternative
+ "args_values"
+ parameter to _pygi_argument_to_array() so that callers can specify
+ one or the
+ other depending on which type they have available.
+
+ This allows us to pass on the full argument list for signal closures,
+ so that
+ _pygi_argument_to_array() can access the explicit length argument
+ for an
+ array.
+
+ This fixes the GSettings:change-event signal.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=662241
+
+ gi/pygi-argument.c | 36 ++++++++++++++++++++++++++++--------
+ gi/pygi-argument.h | 1 +
+ gi/pygi-closure.c | 2 +-
+ gi/pygi-info.c | 4 ++--
+ gi/pygi-signal-closure.c | 3 ++-
+ tests/test_gio.py | 18 ++++++++++++++++++
+ 6 files changed, 52 insertions(+), 12 deletions(-)
+
+commit caeeeb7e4282e183eefc3c53b2d53c8c2bb7de89
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Wed Feb 27 08:07:20 2013 +0100
+
+ Fix signedness, overflow checking, and 32 bit overflow of GFlags
+
+ GFlagsValue.value is a guint, so we must access it as unsigned
+ type. Define two
+ new macros PYGLIB_PyLong_FromUnsignedLong() and
+ PYGLIB_PyLong_AsUnsignedLong()
+ for that purpose, and consistently use them for handling flag
+ values. Use the
+ checked variant of these functions which produce OverflowErrors
+ instead
+ of the unchecked PYGLIB_PyLong_AS_LONG().
+
+ Insert zero padding after the PyLongObject in PyGFlags and
+ PyGEnum. Without
+ this, the directly adjacent GType field seems to confuse
+ PyLong_FromUnsignedLong() and includes the GType into the numeric
+ value.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=693121
+
+ gi/_glib/pyglib-python-compat.h | 8 +++++++
+ gi/_gobject/gobjectmodule.c | 2 +-
+ gi/_gobject/pygflags.c | 52
+ +++++++++++++++++++++++++----------------
+ gi/_gobject/pygobject-private.h | 10 ++++----
+ gi/_gobject/pygobject.h | 4 ++--
+ gi/_gobject/pygtype.c | 6 ++---
+ tests/test_overrides_gdk.py | 15 ++++++++++++
+ 7 files changed, 67 insertions(+), 30 deletions(-)
+
+commit b3a3da37e369f3f5d434c8dc9f3c7f1e74d537ac
+Author: Chun-wei Fan <fanchunwei@src.gnome.org>
+Date: Tue Feb 26 16:15:36 2013 +0800
+
+ gi/pygi-marshal-from-py.c: Fix build on Visual C++
+
+ Since Visual C++ does not provide the INFINITY and NAN constants
+ in its
+ math.h (they are items defined by C99), provide fallback
+ implementations
+ for it here. The INFINITY constant can be provided with HUGE_VAL,
+ since
+ we are using INFINITY to check the value of a variable of double
+ type, and
+ we could use a rather simple workaround for NAN.
+
+ Also avoid declaring variables in the middle of the block.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=692856
+
+ gi/pygi-marshal-from-py.c | 19 ++++++++++++++++++-
+ 1 file changed, 18 insertions(+), 1 deletion(-)
+
+commit 5210e3d5bb7936a21b6a2c938ede505bf1d848c9
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Feb 26 16:42:19 2013 +0100
+
+ Fix some style issues with previous patch
+
+ gi/pygi-cache.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 999679beaa9f5b36d9483abdbd30cd5e113b6bf6
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Feb 26 10:15:22 2013 +0100
+
+ Raise DeprecationWarning on deprecated callables
+
+ Check if a callable is marked as deprecated and raise a
+ DeprecationWarning in
+ that case.
+
+ Notes:
+ - Python hides DeprecationWarning by default, you need to enable
+ them with -Wd
+ - The deprecation message is currently not in the typelib (bug
+ #694728)
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=665084
+
+ gi/pygi-cache.c | 14 ++++++++++++++
+ tests/test_gi.py | 10 ++++++++++
+ 2 files changed, 24 insertions(+)
+
+commit 9f8258cfdcf562aa6cf37b9e66075b7f6a6ed97a
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Feb 18 00:39:45 2013 -0800
+
+ pygtkcompat: Add Widget.window, scroll_to_mark, and window methods
+
+ Fix gi.pygtkcompat attempting relative import in Python < 3.0.
+ Add Gtk.Widget.window property which uses get_window()
+ Add Gtk.TextView.scroll_to_mark with defaults
+ Add Gtk.window_list_toplevels and Gtk.window_set_default_icon_name
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=694067
+
+ gi/pygtkcompat.py | 2 ++
+ pygtkcompat/pygtkcompat.py | 14 ++++++++++++++
+ 2 files changed, 16 insertions(+)
+
+commit e8e2bbee7bb79039bbd9a968f7db88438bd937f9
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun Dec 16 02:56:06 2012 -0800
+
+ pygtkcompat: Add Gtk.Window.set_geometry_hints which accepts keyword
+ arguments
+
+ Monkey patch a keyword argument version of set_geometry_hints onto
+ Gtk.Window.
+ This version is compatible with pygtk and takes keywords instead of a
+ Gdk.Geometry and Gdk.GeometryMask.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=694067
+
+ pygtkcompat/pygtkcompat.py | 44
+ ++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 44 insertions(+)
+
+commit 1ca0e142709843cdae9ca965dfa6cc292ef53ab5
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Feb 26 10:09:47 2013 +0100
+
+ tests: Fix warning behaviour
+
+ -Werror::* does not seem to do what it says on the tin, these
+ options are
+ ignored entirely apparently. Just keep -Wd to actually show all
+ warnings
+ including DeprecationWarning, which is hidden by default.
+
+ tests/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit e7ea6952c7a2d8da68ed8b66770d889cd756df9a
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Feb 26 08:49:10 2013 +0100
+
+ Ship pygobject.doap for autogen.sh
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=694591
+
+ Makefile.am | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 80ed803dab3ad914d7214a475e3c6ed743dfdccc
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Tue Feb 19 03:07:19 2013 -0800
+
+ Fix crashes in various GObject signal handler functions
+
+ Fix crashes in a large amount of signal handler functions exposed
+ on the GObject module. This is possible now that the underlying
+ GObject pointer is exposed to Python as a PyCapsule which marshaling
+ can handle. The following functions in the GObject module have been
+ verified:
+
+ signal_handler_unblock
+ signal_handler_disconnect
+ signal_handler_is_connected
+ signal_stop_emission
+ signal_stop_emission_by_name
+ signal_has_handler_pending
+ signal_connect_closure
+ signal_connect_closure_by_id
+ signal_handler_find
+ signal_handlers_destroy
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=633927
+
+ gi/_gobject/gobjectmodule.c | 57 ++--------------
+ gi/overrides/GObject.py | 158
+ ++++++++++++++++++++++++++++++++++----------
+ tests/test_signal.py | 121 ++++++++++++++++++++++++++++++++-
+ 3 files changed, 247 insertions(+), 89 deletions(-)
+
+commit e9c578c1d47375cb2249ccdd86873faad04b89e1
+Author: Olivier Crête <olivier.crete@collabora.com>
+Date: Fri Sep 14 21:29:53 2012 -0400
+
+ pygi-closure: Protect the GSList prepend with the GIL
+
+ Signed-off-by: Simon Feltman <sfeltman@src.gnome.org>
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=684060
+
+ gi/pygi-closure.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 6e0a32f6d9febbd782dc56a619974f009e79abd9
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Wed Feb 20 01:21:32 2013 -0800
+
+ generictreemodel: Fix bad default return type for get_column_type
+
+ pygtkcompat/generictreemodel.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 8ec5c335e223bdf00c7bb6c9aac3e7ac7791e38e
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Feb 19 12:23:13 2013 +0100
+
+ configure.ac: post-release bump to 3.7.91
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit f2fb7f6142cd7112db9c2526d7f1c642a50cfc2a
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Feb 19 12:19:35 2013 +0100
+
+ Release 3.7.90
+
+ NEWS | 17 +++++++++++++++++
+ configure.ac | 2 +-
+ 2 files changed, 18 insertions(+), 1 deletion(-)
+
+commit 840c871441cb215f24cc6e7ed26b9f38e5aad0df
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Feb 18 01:46:22 2013 -0800
+
+ overrides: Fix inconsistencies with drag and drop target list API
+
+ Add support to Gtk.Widget.drag_dest_set_target_list and
+ Gtk.Widget.drag_source_set_target_list to accept iterables containing
+ mixed TargetEntry or a tuple of (target, flags, info).
+ Add support to Gtk.TreeView.enable_model_drag_source and
+ Gtk.TreeView.enable_model_drag_dest to accept a list of
+ Gtk.TargetEntry
+ items.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=680640
+
+ gi/overrides/Gtk.py | 40 +++++++++++++++++++++++++++++-----------
+ tests/test_overrides_gtk.py | 32 ++++++++++++++++++++++++++++++++
+ 2 files changed, 61 insertions(+), 11 deletions(-)
+
+commit 62e94b0f87845bb7a1cfddf70dcdc89ff7a80bf7
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Feb 18 03:19:34 2013 -0800
+
+ tests: Add test_marshaling_object to Makefile.am
+
+ tests/Makefile.am | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit a10fb7216de57046d1ecacb73dd032eaadcbad09
+Author: Simon Feltman <s.feltman@gmail.com>
+Date: Wed Aug 29 03:46:23 2012 -0700
+
+ pygtkcompat: Add pygtk compatible GenericTreeModel implementation
+
+ Add Python implementation of the GenericTreeModel that was
+ available in pygtk. The implementation attempts a better job
+ than the original at ref counting by guaranteeing no leaks
+ upon deletion of the model itself. Or by using the extra "node"
+ argument to the row_deleted signal. The model is available in
+ the pygtkcompat package directly as
+ pygtkcompat.generictreemodel.GenericTreeModel or with as
+ gtk.GenericTreeModel when pygtkcompat.enable_gtk() is set.
+
+ Add file list and tree demos making use of GenericTreeModel
+ to gtk-demo.
+
+ Auto-expand gtk-demo app tree to give a better overview of
+ the demos available.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=682933
+
+ .../gtk-demo/demos/Tree View/treemodel_filelist.py | 234 ++++++++++++
+ .../gtk-demo/demos/Tree View/treemodel_filetree.py | 279 ++++++++++++++
+ demos/gtk-demo/gtk-demo.py | 2 +-
+ gi/pygtkcompat.py | 2 +-
+ pygtkcompat/Makefile.am | 1 +
+ pygtkcompat/generictreemodel.py | 420
+ +++++++++++++++++++++
+ pygtkcompat/pygtkcompat.py | 3 +
+ tests/Makefile.am | 1 +
+ tests/test_generictreemodel.py | 406
+ ++++++++++++++++++++
+ 9 files changed, 1346 insertions(+), 2 deletions(-)
+
+commit 871878c7a1e18fbdbf0744e0dd52cbcc6b610cdb
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Feb 18 02:54:14 2013 -0800
+
+ overrides: Add support for iterables besides tuples for TreePath
+ creation
+
+ Allow Gtk.TreePath to accept any iterable for creation of the path.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=682933
+
+ gi/overrides/Gtk.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 93c1536b45f56c20b6d874c41c4cacd2b6cdca0a
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Fri Feb 15 22:56:29 2013 -0800
+
+ Unify Python callable to GClosure GI marshaling code
+
+ Add pygi_marshal_from_py_gclosure which can be used for direct
+ gi method
+ call args and vfunc out args.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=693405
+
+ gi/pygi-argument.c | 14 +-----------
+ gi/pygi-marshal-from-py.c | 55
+ ++++++++++++++++++++++++++++-------------------
+ gi/pygi-marshal-from-py.h | 3 +++
+ 3 files changed, 37 insertions(+), 35 deletions(-)
+
+commit 9e47afe459df942d9ffc4f71b39f1443976293df
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Fri Feb 15 20:56:12 2013 -0800
+
+ Unify Python object to GValue GI marshaling code
+
+ Add pygi_marshal_from_py_g_value which can be used for direct
+ gi method
+ call args and vfunc out args. The new method also adds an
+ "is_allocated"
+ parameter that will be used to fix leaks in the future.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=693405
+
+ gi/pygi-argument.c | 43 +++++++--------------------
+ gi/pygi-marshal-from-py.c | 74
+ ++++++++++++++++++++++++++++++++---------------
+ gi/pygi-marshal-from-py.h | 5 ++++
+ 3 files changed, 65 insertions(+), 57 deletions(-)
+
+commit 15cd7be5ad80e2411d6c13b04f5e2c33e4f5605e
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Fri Feb 15 23:07:57 2013 -0800
+
+ Rename pygi_marshal_from_py_object to make it more explicit
+
+ Rename pygi_marshal_from_py_object to pygi_marshal_from_py_gobject
+ to make it more explicit and give consistency with future refactoring.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=693405
+
+ gi/pygi-argument.c | 2 +-
+ gi/pygi-marshal-from-py.c | 22 +++++++++++++---------
+ gi/pygi-marshal-from-py.h | 6 +++---
+ 3 files changed, 17 insertions(+), 13 deletions(-)
+
+commit 84103dfabd05742d1a18729663a609e9bf7c45f8
+Author: Niklas Koep <niklas.koep@gmail.com>
+Date: Fri Feb 15 21:23:01 2013 -0800
+
+ Prefix __module__ attribute of function objects with gi.repository
+
+ This allows gi module methods to work with pydoc and help().
+ Additionally correct typo in two docstrings of the same module.
+
+ Co-authored-by: Simon Feltman <sfeltman@src.gnome.org>
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=693839
+
+ gi/overrides/__init__.py | 3 ++-
+ gi/types.py | 6 +++---
+ 2 files changed, 5 insertions(+), 4 deletions(-)
+
+commit f6d4d2da676ae63d7a24dd172775b488ce665fe4
+Author: Jonathan Ballet <jon@multani.info>
+Date: Thu Feb 14 07:50:02 2013 +0100
+
+ configure.ac: only enable code coverage when available
+
+ When building with an older gnome-common which does not yet provide
+ code
+ coverage support, disable it instead of breaking the configure script.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=693328
+
+ configure.ac | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+commit 42cbff60e2032f715d9be6ab280954211899e03c
+Author: Jonathan Ballet <jon@multani.info>
+Date: Tue Feb 12 23:03:00 2013 +0100
+
+ Correctly set properties on object with statically defined properties
+
+ Fix failures in GObject.Object.set_properties() when used with
+ statically defined properties:
+
+ * Calling the method was raising a "SystemError: error return without
+ exception set" since `result` was (most of the time) still NULL at the
+ end of pygobject_set_properties()
+
+ * Calling the method with several properties would only set one of
+ the properties, since the function was exiting too early.
+
+ Signed-off-by: Simon Feltman <sfeltman@src.gnome.org>
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=693618
+
+ gi/_gobject/pygobject.c | 19 +++++++++++--------
+ tests/test_gi.py | 6 ++++++
+ 2 files changed, 17 insertions(+), 8 deletions(-)
+
+commit 2384769810a61d6ed08d8742b7ae976ebfaa8cb5
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Feb 11 18:08:37 2013 +0100
+
+ autogen.sh: Use gnome-autogen.sh
+
+ We depend on gnome-common now anyway, so use gnome-autogen.sh. This
+ will result
+ in a much better error message when gnome-common is not installed,
+ too.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=693328
+
+ autogen.sh | 30 +++++++++++++++++-------------
+ 1 file changed, 17 insertions(+), 13 deletions(-)
+
+commit c107bb1f9275a748b494d3f32818f227e07cadf0
+Author: Christoph Reiter <christoph.reiter@gmx.at>
+Date: Mon Feb 11 10:07:47 2013 +0100
+
+ GTK tests: Add and use context manager for realized widgets
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=693377
+
+ tests/test_overrides_gtk.py | 91
+ +++++++++++++++++++++++++--------------------
+ 1 file changed, 50 insertions(+), 41 deletions(-)
+
+commit e6670ee26b7682e6213f71deef813ce2e7cd6730
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Feb 11 08:55:19 2013 +0100
+
+ _pygi_marshal_from_py_array: Fix uninitialized variable
+
+ gi/pygi-marshal-from-py.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit a37bfdcb3d9dcc8bcdd8126ad55d80fab4729c62
+Author: Christoph Reiter <christoph.reiter@gmx.at>
+Date: Mon Feb 11 08:34:42 2013 +0100
+
+ Skip some vfunc tests with gi 1.34
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=693374
+
+ tests/test_object_marshaling.py | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+commit aff2ea1b681c3019f7dbdc841c2e33de78dbb88f
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun Feb 10 13:40:45 2013 -0800
+
+ Remove workaround for g_struct_info_get_size reporting incorrect size
+
+ Remove workaround for g_struct_info_get_size reporting incorrect size
+ for boxed GValues. Verified this now returns the correct size of 24.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=622711
+
+ gi/pygi-boxed.c | 31 +++++++++++++------------------
+ 1 file changed, 13 insertions(+), 18 deletions(-)
+
+commit 5efe2e5c8458d9f4d72329ea1209d96b5ebecfb4
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Feb 4 20:50:10 2013 -0800
+
+ Fix reference leaks with transient floating objects
+
+ Unify and refactor caller and callee GObject argument marshalers.
+ Combine code from the large switch statement used to marshal
+ arguments to and from vfuncs/closures with the marshalers used
+ for direct calls to gi functions. This fixes a reference leak
+ when marshalling GObjects to Python with transfer=full due to
+ the diverging code paths.
+ Replace ability in gobject_new_full to optionally sink objects
+ with ability to optionaly "steal" objects. This fits the premise
+ that binding layers should always sink objects initially. The
+ steal argument is then used for marshalling arguments which are
+ transfer=full.
+ Add hacks and comments to work around GTK+ bugs 693393 and 693400.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=687522
+
+ gi/_gobject/gobjectmodule.c | 10 +++++--
+ gi/_gobject/pygobject-private.h | 2 +-
+ gi/_gobject/pygobject.c | 45 ++++++++++++++++++++----------
+ gi/_gobject/pygobject.h | 8 ++++--
+ gi/pygi-argument.c | 52 +++++++++++++++++------------------
+ gi/pygi-marshal-from-py.c | 61
+ +++++++++++++++++++++++++++++++++++++----
+ gi/pygi-marshal-from-py.h | 6 ++++
+ gi/pygi-marshal-to-py.c | 45 +++++++++++++++---------------
+ gi/pygi-marshal-to-py.h | 5 ++++
+ tests/test_object_marshaling.py | 44 ++++++++++++++---------------
+ 10 files changed, 181 insertions(+), 97 deletions(-)
+
+commit bd54b8ab30fc957849e7f57e9ee4c4b41aa37013
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Wed Feb 6 12:56:44 2013 -0800
+
+ tests: Fix spelling mistakes in new vfunc object marshalling tests
+
+ tests/test_object_marshaling.py | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+commit cd96fd8b8e10add9890f36ec237bb78548de7002
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Feb 5 07:53:38 2013 +0100
+
+ configure.ac: post-release bump to 3.7.6
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 92b1404e61f46348168f32720eff4a482531e5e3
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Feb 5 07:46:46 2013 +0100
+
+ release 3.7.5.1
+
+ NEWS | 3 +++
+ configure.ac | 2 +-
+ 2 files changed, 4 insertions(+), 1 deletion(-)
+
+commit a3a30559240077194f23c4651d6f382fa59b7d63
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Feb 4 15:16:37 2013 -0800
+
+ Fix API break with pygobject.h
+
+ Move pygobject_new_full after everything in the public API table.
+ This fixes a break that went in along with bug 675726.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=675726
+
+ gi/_gobject/gobjectmodule.c | 5 +++--
+ gi/_gobject/pygobject.h | 2 +-
+ 2 files changed, 4 insertions(+), 3 deletions(-)
+
+commit b3ca7e27494c35620995840d777037a097082661
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Feb 4 19:53:26 2013 +0100
+
+ configure.ac: post-release bump to 3.7.6
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 77f638411314218748f349b337a36e2864eed1f4
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Feb 4 19:37:14 2013 +0100
+
+ release 3.7.5
+
+ NEWS | 24 ++++++++++++++++++++++++
+ 1 file changed, 24 insertions(+)
+
+commit 50da4fca1435f8c27072e15875227c5e7fb9b7e4
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun Feb 3 23:56:14 2013 -0800
+
+ Fix pointer cast warning that was missed in bug 675726
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=675726
+
+ gi/_gobject/pygobject.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit b31d8a952cd57dc92b06a381e054199660a2d570
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Thu Jan 31 02:35:36 2013 -0800
+
+ Move various signal methods from static bindings to gi and python
+
+ Move disconnect, handler_is_connected, handler_block, handler_unblock,
+ and stop_emission from static to gi python overrides.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=692918
+
+ gi/_gobject/pygobject.c | 90
+ -------------------------------------------------
+ gi/overrides/GObject.py | 44 +++++++++++++++++-------
+ tests/test_signal.py | 19 ++++++-----
+ 3 files changed, 42 insertions(+), 111 deletions(-)
+
+commit 3a6a4a7a21a0f5e851518b7912d8ff455aa3ede4
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Fri Feb 1 21:09:26 2013 +0100
+
+ GLib overrides: Support unpacking 'maybe' variants
+
+ Automatically unpack 'maybe' variants to None or to their actual value
+ as we do for other kind of variants
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=693032
+
+ gi/overrides/GLib.py | 5 +++++
+ tests/test_overrides_glib.py | 8 ++++++++
+ 2 files changed, 13 insertions(+)
+
+commit 9bc3e6807f6c14fb0e132a90ff8f9984229896f6
+Author: Mike Gorse <mgorse@suse.com>
+Date: Mon Jan 21 16:45:52 2013 -0600
+
+ Fix ref count leak when creating pygobject wrappers for input args
+
+ Only sink input references for closures and vfuncs when transfer is
+ everything. This fixes cases where incoming floating references for
+ callbacks need to maintain their floating state throughout the
+ callback so they don't leak a strong reference. Re-introduce a
+ working "sink" argument to pygobject_new_full which allows for this.
+ Change existing callers to always sink in order maintain behavior.
+
+ Co-Authored-By: Simon Feltman <sfeltman@src.gnome.org>
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=675726
+
+ gi/_gobject/gobjectmodule.c | 5 +--
+ gi/_gobject/pygobject.c | 7 ++--
+ gi/_gobject/pygobject.h | 2 ++
+ gi/pygi-argument.c | 13 +++----
+ tests/test_object_marshaling.py | 76
+ +++++++++++++++++++++++++++++++++++++----
+ 5 files changed, 85 insertions(+), 18 deletions(-)
+
+commit a53a9176a3f87cfb26f3ad98ea746ada0f1a39fa
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Thu Jan 31 01:50:44 2013 -0800
+
+ Add tests for signal stop_emission, disconnect, and
+ handler_is_connected
+
+ Add tests for methods which will be moving from static bindings to gi
+ by using the new __gpointer__ attribute of GObject.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=692918
+
+ tests/test_signal.py | 51
+ ++++++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 50 insertions(+), 1 deletion(-)
+
+commit df18f9cc3828d1bcf6b6cdf26af786fd9f36d77e
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Wed Jan 30 21:37:07 2013 -0800
+
+ Add __gpointer__ property to GObject static binding
+
+ Add access to the underlying C GObject pointer by wrapping it in a
+ PyCapsule/PyCPointer and exposing it as __gpointer__.
+ Add special case marshaling for gi parameters annotated as gpointer
+ to accept a PyCapsule and extract the underlying pointer as the arg.
+ This allows usage of methods like GObject.signal_handler_disconnect
+ which we can start replacing the static bindings with.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=692918
+
+ gi/_gobject/pygobject.c | 11 +++++++++--
+ gi/pygi-marshal-from-py.c | 6 +++++-
+ 2 files changed, 14 insertions(+), 3 deletions(-)
+
+commit 571e0cb246baa4ef7db179b20da6b325f358fe5b
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun Jan 27 01:22:37 2013 -0800
+
+ Prefix names of typeless enums and flags for GType registration
+
+ Prefix names given to g_flags_register_static and
+ g_enum_register_static
+ with "Py". This avoids conflicts with GTypes of the same name being
+ registered later by a library which does not provide a "get-type"
+ annotation.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=692515
+
+ gi/gimodule.c | 10 ++++++++--
+ tests/test_gi.py | 4 ++--
+ 2 files changed, 10 insertions(+), 4 deletions(-)
+
+commit 97f48f5dcabc8dad4480727a78416b1c2a220777
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Wed Jan 30 04:35:32 2013 -0800
+
+ Add tests for vfunc object arguments and returns
+
+ Add tests which use different combinations of floating, transfer full,
+ transfer none, and held wrapper as in, out, or return arguments
+ to vfuncs.
+ Most of these are marked as skip or expectedFailure due to various
+ bugs
+ noted on the tests.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=687522
+
+ gi/overrides/GObject.py | 15 +-
+ tests/test_object_marshaling.py | 540
+ ++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 550 insertions(+), 5 deletions(-)
+
+commit 73a83186329ede7702501d5bc49df269482461e4
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Wed Jan 30 17:48:12 2013 +0100
+
+ Cosmetic fix to last patch
+
+ gi/pygi-argument.c | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+commit 9e0c41509d62e8df7d0d82608a8be75f3defe05c
+Author: Chun-wei Fan <fanchunwei@src.gnome.org>
+Date: Fri Jan 25 13:05:18 2013 +0800
+
+ gi/pygi-info.c, gi/pygi-repository.c: Deal with C99isms
+
+ Drop the array forward static declarations. They are not necessary
+ and are not
+ valid in C89.
+
+ Also move declarations of variables to the top of their respective
+ blocks.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=692856
+
+ gi/pygi-info.c | 18 ++++++++++--------
+ gi/pygi-repository.c | 2 --
+ 2 files changed, 10 insertions(+), 10 deletions(-)
+
+commit 2e7c458ef6377a872043634b47737ef12eed744a
+Author: Chun-wei Fan <fanchunwei@src.gnome.org>
+Date: Fri Jan 25 13:00:48 2013 +0800
+
+ Move variable declaration to top of blocks (C99ism)
+
+ Move variable declarations to the top of their respective blocks,
+ so that these
+ code will build under C89 compilers such as Visual C++.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=692856
+
+ gi/pygi-argument.c | 10 ++++++----
+ gi/pygi-closure.c | 23 +++++++++++++++--------
+ gi/pygi-invoke.c | 3 ++-
+ gi/pygi-marshal-cleanup.c | 3 ++-
+ gi/pygi-property.c | 3 ++-
+ 5 files changed, 27 insertions(+), 15 deletions(-)
+
+commit 20fc5aa7514215fc7807adceb603d17f7943304a
+Author: Chun-wei Fan <fanchunwei@src.gnome.org>
+Date: Fri Jan 25 12:58:26 2013 +0800
+
+ gi/pygobject-external.h: Remove GCCism
+
+ We can use G_GNUC_UNUSED from GLib that does the same purpose of
+ __attribute__ ( (unused)) when we are using a GCC that provides this.
+
+ The GLib headers that defines that macro should have already been
+ included
+ before this header is included (due to use of gboolean).
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=692856
+
+ gi/pygobject-external.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 5d2f453f3fdb167a4b4a833011ae777bfd228eb9
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Wed Jan 30 14:59:11 2013 +0100
+
+ tests: Update test_double() after e65c1248
+
+ Commit e65c1248 introduced support for NaN and ±inf as valid
+ float values,
+ rendering the "expect ValueError on 2*double" check broken. Just
+ remove it.
+
+ tests/test_everything.py | 1 -
+ 1 file changed, 1 deletion(-)
+
+commit b8bf4ec6c2478275dc9c813946a90b82ded6d9ce
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Wed Jan 23 07:14:16 2013 +0100
+
+ Do not immediately initialize Gdk and Gtk on import
+
+ Raising an exception if Gdk/Gtk cannot be imported makes it
+ impossible to
+ merely import a module for e. g. nosetests without actually running
+ it.
+
+ Programs who want to provide a proper error message should check
+ Gtk.initialized explicitly after importing. Check initialized
+ status in
+ Window.__init__() instead to provide a reasonably early error message
+ for most
+ programs.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=692300
+
+ gi/overrides/Gdk.py | 2 --
+ gi/overrides/Gtk.py | 5 +++--
+ 2 files changed, 3 insertions(+), 4 deletions(-)
+
+commit 93d5cc2986cb3d3d979694b1beb1719d2d8fed53
+Author: Chun-wei Fan <fanchunwei@src.gnome.org>
+Date: Fri Jan 25 12:49:18 2013 +0800
+
+ gi/overrides/Glib.py: Fix running on Windows/non-Unix
+
+ The definition of self._signal_source uses a Unix-specific GLib
+ API, which
+ does not exist or have a direct equivilant on Windows.
+
+ Only define and use that variable when we aren't on Windows.
+
+ gi/overrides/GLib.py | 18 ++++++++++--------
+ 1 file changed, 10 insertions(+), 8 deletions(-)
+
+commit e65c124893ceaa9c97eb4c8c743fbeb756b9a6e6
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Wed Jan 23 14:56:02 2013 +0100
+
+ Accept ±inf and NaN as float and double values
+
+ Also fix the broken error message when a float value is out of range.
+ PyErr_Format() does not support float macros.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=692381
+
+ gi/pygi-marshal-from-py.c | 37 +++++++++++++++++++------------------
+ tests/test_gobject.py | 14 ++++++++++++++
+ 2 files changed, 33 insertions(+), 18 deletions(-)
+
+commit a52245381fab3c2aebd330cc9c5e717a93c9607d
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Wed Jan 23 14:28:42 2013 +0100
+
+ Fix repr() of GLib.Variant
+
+ When using a standard constructor like GLib.Variant.new_*(), the
+ object does
+ not have a format_string property, and previously repr() would
+ crash. Fall back
+ to get_type_string() instead.
+
+ Also drop the unintended type annotations in repr().
+
+ gi/overrides/GLib.py | 6 +++++-
+ tests/test_overrides_glib.py | 15 ++++++++++++++-
+ 2 files changed, 19 insertions(+), 2 deletions(-)
+
+commit 2270cf15012005362dc47456213c5d9e7f6ed28a
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Wed Jan 23 14:14:29 2013 +0100
+
+ Fix gtk-demo for Python 3
+
+ It was crashing with
+
+ package = __import__(packagename, globals(), locals(),
+ [modulename], -1)
+ ValueError: level must be >= 0
+
+ Using level zero works with both Python 2 and 3.
+
+ demos/gtk-demo/gtk-demo.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit b24d07577da1e17c8e27f758fc1a23d7f2d0f668
+Author: Colin Walters <walters@verbum.org>
+Date: Tue Jan 22 10:49:57 2013 -0500
+
+ build: Add autogen.sh to EXTRA_DIST
+
+ So downstreams that patch the autotools can use it.
+
+ Makefile.am | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit ed7fb99efa81854d947ae548d41a03f5275c5884
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Thu Jan 17 08:23:02 2013 +0100
+
+ Define GObject.TYPE_VALUE gtype constant
+
+ gi/overrides/GObject.py | 4 +++-
+ tests/test_gobject.py | 4 ++++
+ 2 files changed, 7 insertions(+), 1 deletion(-)
+
+commit fd32acdd97f49f086a8ad5cf2b65862c4e6ccc44
+Author: Olivier Crête <olivier.crete@collabora.com>
+Date: Mon Sep 17 15:37:04 2012 -0400
+
+ gobject: Go through introspection on property setting
+
+ Consider introspected properties in object.set_property().
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=684062
+
+ gi/_gobject/pygobject.c | 18 +++++++++++++++++-
+ tests/test_properties.py | 13 ++++++++++---
+ 2 files changed, 27 insertions(+), 4 deletions(-)
+
+commit 9a2060f26c2cc2f9ef79ab6fb9f512c317004856
+Author: Mike Gorse <mgorse@suse.com>
+Date: Tue Jan 15 20:04:46 2013 -0600
+
+ Clean up caller-allocated GValues and their memory
+
+ When space for a GValue is allocated by the caller (as in
+ gtk_tree_model_get_value), we need to free the space allocated for the
+ value along with its contents. The GValue is not needed after
+ Pyg_value_as_pyobject is called, so call _cleanup_caller_allocates and
+ have it unset the value and deallocate the memory.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=691820
+
+ gi/pygi-marshal-cleanup.c | 20 ++++++++++++++++++--
+ 1 file changed, 18 insertions(+), 2 deletions(-)
+
+commit 45b7975d0a3d78f01f1112ae7b3f4208f15694d8
+Author: Dmitry Shachnev <mitya57@ubuntu.com>
+Date: Wed Jan 16 13:44:42 2013 +0400
+
+ tests: define correct unittest.skipIf for python 2.6
+
+ tests/runtests.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 4706cd686ea1b25260c9ecc77abd324d6e4cf505
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Wed Jan 16 09:17:13 2013 +0100
+
+ tests: More robust tree view realization
+
+ With current GNOME git head, the Gtk.TreeViews were not realized
+ enough any
+ more to receive property values. Put them into a Gtk.Dialog now and
+ show it to
+ ensure that they are realized.
+
+ tests/test_overrides_gtk.py | 16 ++++++++++------
+ 1 file changed, 10 insertions(+), 6 deletions(-)
+
+commit 90c6f596df2a96f9c8059ae9157bc467a80b7574
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Jan 15 10:42:49 2013 +0100
+
+ Drop deprecated g_thread_create()
+
+ Replace with g_thread_new(). This is available with glib >= 2.32,
+ and we
+ already require >= 2.34.
+
+ tests/test-thread.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+commit 98504273dead9eade6e53c2297bcaec7bea6265a
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Jan 15 10:37:52 2013 +0100
+
+ Drop usage of deprecated GStaticPrivate
+
+ Replace with GPrivate.
+
+ gi/_gobject/gobjectmodule.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 655e2eece14f5de3baf4505f524d17484b8b5a75
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Jan 15 10:29:47 2013 +0100
+
+ Don't call g_type_init() with glib >= 2.35.x
+
+ This fixes a deprecation warning.
+
+ gi/_gobject/gobjectmodule.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 206e736380ba798c68de09f661d75c8e27451117
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Jan 15 09:47:11 2013 +0100
+
+ Use GNOME_COMPILE_WARNINGS from gnome-common
+
+ As we are now using gnome-common anyway for the code coverage macro,
+ also use
+ GNOME_COMPILE_WARNINGS, and only manually specify the extra options
+ that we
+ want beyond that.
+
+ This also enables -Wstrict-prototypes.
+
+ configure.ac | 14 ++++----------
+ 1 file changed, 4 insertions(+), 10 deletions(-)
+
+commit 137679426ff39507e15f08e9e6428d851fee06b7
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Jan 15 09:46:01 2013 +0100
+
+ Fix function prototypes and static functions
+
+ These cause errors/warnings with -Wstrict-prototypes.
+
+ gi/_glib/pyglib-python-compat.h | 2 ++
+ gi/pygi-foreign.c | 2 +-
+ gi/pygi-marshal-from-py.c | 4 ++--
+ gi/pygi-marshal-to-py.c | 4 ++--
+ gi/pygi-source.c | 2 +-
+ gi/pygi-source.h | 2 +-
+ 6 files changed, 9 insertions(+), 7 deletions(-)
+
+commit d47927f1701a11aec8566425f22688c5df73d7f2
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Jan 14 17:38:23 2013 +0100
+
+ configure.ac: post-release bump to 3.7.5
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit bd6da84a4aec74e47f5d70e8ed18695c37e746c6
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Jan 14 17:30:48 2013 +0100
+
+ release 3.7.4
+
+ NEWS | 38 ++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 38 insertions(+)
+
+commit c90ef9dfac7dd51ec82c99c3605915996bea0f73
+Author: Simonas Kazlauskas <simonas@kazlauskas.me>
+Date: Tue Dec 4 15:45:00 2012 +0200
+
+ Allow setting values through GtkTreeModelFilter
+
+ Previously, trying to set a value through filter throwed an exception
+ that the
+ model has no set_value() method. You had to first retrieve the
+ deepest child
+ model and set value to it.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=689624
+
+ gi/overrides/Gtk.py | 5 +++++
+ tests/test_overrides_gtk.py | 11 +++++++++++
+ 2 files changed, 16 insertions(+)
+
+commit b092630efc691a6f7ae94ae896193254f5a961a6
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Jan 14 12:37:18 2013 +0100
+
+ tests: Add (failing) test case for GParamSpec arguments
+
+ This reproduces
+ https://bugzilla.gnome.org/show_bug.cgi?id=682355
+
+ tests/test_gi.py | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+commit 52d84b5da7f9fd4f65faea4e6fe3d250f937a208
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Jan 14 12:20:27 2013 +0100
+
+ tests: Skip struct string member tests with g-i 1.34
+
+ We still support building against gobject-introspection 1.34, so
+ skip tests
+ which do not work with that version yet.
+
+ tests/test_gi.py | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+commit f9429192cb1002725a11a75a7b8f9300375b9caf
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Jan 14 12:15:27 2013 +0100
+
+ Support GParamSpec signal arguments from Python
+
+ In pyg_value_from_pyobject(), recognize both the real GI
+ GObject.ParamSpec type
+ as well as the statically wrapped _gobject.GParamSpec type.
+
+ This fixes marshalling GObject.ParamSpec signal/vfunc arguments.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=683099
+
+ gi/_gobject/pygtype.c | 6 +++++-
+ tests/test_signal.py | 12 ++++++++++++
+ tests/testhelpermodule.c | 13 +++++++++++++
+ 3 files changed, 30 insertions(+), 1 deletion(-)
+
+commit 99f72925c7de76611f7592bce9d8217a9ff46809
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Jan 14 11:48:11 2013 +0100
+
+ pygobject_emit(): Fix cleanup on error
+
+ Dot not try to unset GValues which have not been initialized yet,
+ when type
+ conversion fails for a parameter.
+
+ gi/_gobject/pygobject.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit acef1d3266d11b2465d61185a55526df879a5c62
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Dec 31 19:01:57 2012 -0800
+
+ Add signal emission methods to TreeModel which coerce the path
+ argument
+
+ Override TreeModel row_changed, row_inserted, row_has_child_toggled,
+ row_deleted, and rows_reordered methods to accept python iterables as
+ the path parameter. This is for compatibility with pygtk and
+ consistency
+ with the rest of the TreeModel and TreePath overrides.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=682933
+
+ gi/overrides/Gtk.py | 31 ++++++++++++++++++++++++++++---
+ tests/test_overrides_gtk.py | 27 +++++++++++++++++++++++++++
+ 2 files changed, 55 insertions(+), 3 deletions(-)
+
+commit 9cfba517e1a6dced5e66786b28ed5e101b7b4a29
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Jan 14 10:36:36 2013 +0100
+
+ Simplify overrides and tests using the new GObject.Value override
+
+ The previous commit added support for constructing a GObject.Value
+ with a given
+ GType and Python object conversion. Use this to simplify the Gtk
+ override and
+ the tests that construct GValues.
+
+ See https://bugzilla.gnome.org/show_bug.cgi?id=677473
+
+ gi/overrides/Gtk.py | 88
+ +++------------------------------------------
+ tests/test_gi.py | 26 +++++---------
+ tests/test_overrides_gtk.py | 2 +-
+ tests/test_signal.py | 12 ++-----
+ 4 files changed, 17 insertions(+), 111 deletions(-)
+
+commit f62b98398177991bfdbe0b6753342e79e6cf170a
+Author: Bastian Winkler <buz@netbuz.org>
+Date: Mon Jan 14 10:26:08 2013 +0100
+
+ Add override for GValue
+
+ Override GValue with a custom constructor and set_value()/get_value()
+ methods. This allows you to call
+
+ >>> GObject.Value(GObject.TYPE_FLOAT, 42.23)
+
+ instead of
+
+ >>> value = GObject.Value()
+ >>> value.init(GObject.TYPE_FLOAT)
+ >>> value.set_float(42.23)
+
+ This is especially useful for overrides that need to convert a Python
+ value to a expected type like G_TYPE_FLOAT.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=677473
+
+ gi/overrides/GObject.py | 127
+ +++++++++++++++++++++++++++++++++++++++++++++++-
+ tests/test_gobject.py | 47 +++++++++++++++++-
+ 2 files changed, 172 insertions(+), 2 deletions(-)
+
+commit dc3d21173b75232f7ea0b9913f7309486456a69d
+Author: Mike Gorse <mgorse@suse.com>
+Date: Thu Jan 10 15:48:30 2013 -0600
+
+ Mark caller-allocated boxed structures as having a slice allocated
+
+ When a C function takes a pointer and fills it with a boxed structure
+ (ie,
+ gtk_tree_store_insert_with_values), pygi should deallocate the slice
+ when the
+ box is no longer being used.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=699501
+
+ gi/pygi-marshal-to-py.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+commit 0c496d230fee7fd3ada90ee9af10e0bc1e29ee12
+Author: Olivier Crête <olivier.crete@collabora.com>
+Date: Fri Sep 14 21:31:32 2012 -0400
+
+ pygi-property: Support boxed GSList/GList types
+
+ Note that this does not yet work for construct properties.
+
+ Co-Authored-By: Martin Pitt <martinpitt@gnome.org>
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=684059
+
+ gi/pygi-property.c | 10 ++++++++--
+ tests/test_gi.py | 21 +++++++++++++++++++++
+ 2 files changed, 29 insertions(+), 2 deletions(-)
+
+commit 074f10d815453e58f4bee2f440c5db799add3876
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Jan 14 07:48:31 2013 +0100
+
+ test_gio: Fix for Python 2
+
+ Python 2 does not yet take an "encoding" argument for str(), while
+ Python 3
+ requires it. Use a less fancy static test string instead.
+
+ tests/test_gio.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 734979d0c8317201148a7e94a323225fba2d1635
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Jan 14 07:40:10 2013 +0100
+
+ tests: Add missing backwards compat methods for Python 2.6
+
+ Define skipIf(), assertLess(), and assertLessEqual() for running
+ the tests with
+ Python 2.6.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=691646
+
+ tests/runtests.py | 17 +++++++++++++++++
+ 1 file changed, 17 insertions(+)
+
+commit dc0dafd1f6ca3ebbf04210768a45587387e44551
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Jan 14 07:34:46 2013 +0100
+
+ tests: Stop using assertSequenceEqual()
+
+ assertSequenceEqual() does not yet exist in Python 2.6, and is
+ not necessary
+ either as assertEqual() on sequences automatically does list
+ comparison.
+
+ Part of https://bugzilla.gnome.org/show_bug.cgi?id=691646
+
+ tests/test_gtype.py | 6 ++----
+ tests/test_signal.py | 6 ++----
+ 2 files changed, 4 insertions(+), 8 deletions(-)
+
+commit 0a5587b6a56d417a6703e342f153596f08cd5889
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Sun Jan 13 18:19:51 2013 -0800
+
+ Allow setting TreeModel values to None
+
+ Change TreeModel.set_value to use an empty but initialized GValue when
+ None is used as the value argument. This allows clearing of cell data
+ which was not accessible due to auto-coercion.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=684094
+
+ gi/overrides/Gtk.py | 11 ++++++++---
+ tests/test_overrides_gtk.py | 8 ++++++++
+ 2 files changed, 16 insertions(+), 3 deletions(-)
+
+commit 5ae129da436793478750f0dc9427a174a980e10b
+Author: Mike Gorse <mgorse@suse.com>
+Date: Thu Jan 10 16:42:17 2013 -0600
+
+ Set clean-up handler for marshalled arrays
+
+ Arrays did not have a cleanup handler set in some cases, resulting
+ in a leak.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=691509
+
+ gi/pygi-cache.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 58bd307c57d542a8f69867dea2d0a0eb51230c7b
+Author: Vadim Rutkovsky <vrutkovs@redhat.com>
+Date: Fri Jan 11 15:41:27 2013 +0100
+
+ Support setting string fields in structs
+
+ Co-Authored-By: Martin Pitt <martinpitt@gnome.org>
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=678401
+
+ gi/pygi-info.c | 3 ++-
+ tests/test_gi.py | 16 ++++++++++++++++
+ 2 files changed, 18 insertions(+), 1 deletion(-)
+
+commit f2bcaa43c1158040a8c2cbc3a2ba5070d126a410
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Fri Jan 11 14:58:44 2013 +0100
+
+ Re-enable test_gi.TestPropertiesObject.test_char test
+
+ The gobject-introspection bug got fixed:
+ https://bugzilla.gnome.org/show_bug.cgi?id=691524
+
+ tests/test_gi.py | 14 +++-----------
+ 1 file changed, 3 insertions(+), 11 deletions(-)
+
+commit 9a8c49087cf400e01c1f78241fa4d74b4d15f54e
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Fri Jan 11 09:46:56 2013 +0100
+
+ tests: Re-enable test_callback_scope_call_array() check
+
+ Drop the expected failure from test_callback_scope_call_array()
+ and just add
+ the explicit array length arguments. While it would look cleaner to
+ not pass
+ them, it is probably not worth breaking the API for this.
+
+ tests/test_everything.py | 9 +++------
+ 1 file changed, 3 insertions(+), 6 deletions(-)
+
+commit 609636424b5f9b659e99a4bb53a48c165187c430
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Fri Jan 11 09:13:36 2013 +0100
+
+ Permit plain integers for "gchar" values
+
+ Similar to guchar/guint8, allow plain integers (withing correct
+ boundaries) as
+ values for gchar/gint8 types.
+
+ This is covered by the test_gi.TestPropertiesObject.test_char
+ test when
+ removing the "expected failure" flag.
+
+ gi/_gobject/pygtype.c | 16 ++++++++++++----
+ 1 file changed, 12 insertions(+), 4 deletions(-)
+
+commit a558d3d3a9274aeccfc54705bf5effdf71dee06b
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Fri Jan 11 09:09:41 2013 +0100
+
+ Allow single byte values for int8 types
+
+ When fixing gobject-introspection to consider "gchar" as signed (see
+ https://bugzilla.gnome.org/show_bug.cgi?id=691524), we must also
+ permit a
+ single-element "bytes" array as a valid value for int8, not just
+ for uint8.
+
+ This is caught by the test_overrides_gtk.TestTreeModel.test_tree_store
+ test.
+
+ gi/pygi-argument.c | 4 ++--
+ gi/pygi-marshal-from-py.c | 34 +++++++++++++++++++++-------------
+ 2 files changed, 23 insertions(+), 15 deletions(-)
+
+commit aa7f6cd12fe403acb2cffc7890724af7abb9b990
+Author: Mike Gorse <mgorse@suse.com>
+Date: Thu Jan 10 14:11:56 2013 -0600
+
+ Fix invalid memory access handling errors when registering an
+ enum type
+
+ Don't free the name until we are done with it.
+
+ gi/gimodule.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit ecd235959317d39b6d598662c00829e0ec717b17
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Thu Jan 10 16:42:46 2013 +0100
+
+ Fix (out) arguments in callbacks
+
+ Do not ignore the first argument in _pygi_closure_set_out_arguments().
+ Presumably that has been done to skip over "self", but callbacks
+ are not
+ required to have a self argument. As self is never (out), we can
+ safely include
+ it in the loop.
+
+ gi/pygi-closure.c | 2 +-
+ tests/test_gi.py | 4 ----
+ 2 files changed, 1 insertion(+), 5 deletions(-)
+
+commit d8e241e24a816691acbd592775b73defd9aa4f44
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Thu Jan 10 15:14:05 2013 +0100
+
+ Fix C to Python marshalling of struct pointer arrays
+
+ Do not treat an array of pointers to values like an array of values on
+ marshalling from C. This makes the test_array_boxed_struct_return()
+ test case
+ work.
+
+ gi/pygi-marshal-to-py.c | 5 +++--
+ tests/test_gi.py | 2 --
+ 2 files changed, 3 insertions(+), 4 deletions(-)
+
+commit 60544b02f6f98c0b212625ae83b94a4c6debddeb
+Author: Simonas Kazlauskas <simonas@kazlauskas.me>
+Date: Tue Jan 8 23:22:54 2013 +0200
+
+ Add tests for GFile
+
+ Most notably this commit contains a test for
+ Gio.File.replace_contents_async(),
+ which currently fails. Disable the tests for now as it breaks the
+ other tests.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=690525
+
+ tests/test_gio.py | 64
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 64 insertions(+)
+
+commit 118c5eaad045580455515876ba73b9537a8468b4
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Thu Jan 10 13:56:11 2013 +0100
+
+ Rename test_overrides_gio.py to test_gio.py
+
+ As we want to add more tests for non-overridden API.
+
+ tests/Makefile.am | 2 +-
+ tests/test_gio.py | 121
+ ++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_overrides_gio.py | 121
+ --------------------------------------------
+ 3 files changed, 122 insertions(+), 122 deletions(-)
+
+commit 8117e6bce73581e89211371708ff7d5de7d870d4
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Thu Jan 10 12:13:16 2013 +0100
+
+ Don't let Property.setter() method names define property names
+
+ Defining property names in install_properties() is too late when using
+ @propname.setter decorators; their method names don't define a
+ property name,
+ nor are they even required to be a valid property identifier.
+
+ So change the logic to already fix the property name when using
+ a setter
+ decorator and use that instead of the member name in
+ install_properties().
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=688971
+
+ gi/_gobject/propertyhelper.py | 29 ++++++++++++++++++++++-------
+ tests/test_properties.py | 18 ++++++++++++++++++
+ 2 files changed, 40 insertions(+), 7 deletions(-)
+
+commit c0bd060521cc1b481995648dbe286b7e2f9ecd80
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Wed Jan 9 10:39:36 2013 +0100
+
+ tests: Force UTF-8 file name encoding
+
+ The test_gi.TestFilename tests fail if the environment specifies
+ a non-UTF8
+ file name encoding. Force it to "UTF-8" for the tests.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=691355
+
+ tests/runtests.py | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit c02a00ae9599a661076630b21b7e24e78fb88c29
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Jan 8 16:56:40 2013 +0100
+
+ Use g-i stack allocation API
+
+ Where possible, i. e. when not keeping references across functions,
+ use the
+ _load_() methods instead of the _get_() ones from
+ gobject-introspection, which
+ is faster and less prone to memory leaks:
+
+ g_callable_info_get_arg () → g_callable_info_load_arg ()
+ g_callable_info_get_return_type() →
+ g_callable_info_load_return_type ()
+ g_arg_info_get_type() → g_arg_info_load_type ()
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=615982
+
+ gi/pygi-argument.c | 16 ++++------
+ gi/pygi-closure.c | 88
+ ++++++++++++++++++++++++------------------------------
+ 2 files changed, 45 insertions(+), 59 deletions(-)
+
+commit 23d1f14f553069740465c82eaa937b877c41e0cb
+Author: Ray Strode <rstrode@redhat.com>
+Date: Wed Dec 19 13:04:32 2012 -0500
+
+ pyg_value_from_pyobject: support GArray
+
+ This commit adds support for marshalling a python list (or other
+ sequence)
+ returned from signal handlers to GArray, if necessary.
+
+ This parallels the implementation written to marshal to (the now
+ deprecated)
+ GValueArray.
+
+ This fixes a crash in rhythmbox as seen downstream here:
+ https://bugzilla.redhat.com/show_bug.cgi?id=872851
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=690514
+
+ Co-Authored-By: Martin Pitt <martinpitt@gnome.org>
+
+ gi/_gobject/pygtype.c | 60
+ ++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_everything.py | 22 ++++++++++++++++++
+ 2 files changed, 82 insertions(+)
+
+commit 2089dbb117bae769b0303411c2630b6f86dc7d2d
+Author: Marko Lindqvist <cazfi74@gmail.com>
+Date: Fri Jan 4 07:01:29 2013 +0100
+
+ Fix obsolete automake macros
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=691101
+
+ configure.ac | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+commit 6c02ab0ad720780f176192fdc6372aaa178812fd
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Mon Dec 31 02:53:07 2012 -0800
+
+ Change dynamic enum and flag gtype creation to use namespaced naming
+
+ Use the combination of g_base_info_get_namespace and
+ g_base_info_get_name
+ as the name for registering enum and flag types with glib through
+ g_enum_register_static and g_flags_register_static. This avoids
+ conflicts
+ with types like GLib.SeekType and Gst.SeekType. Add better exceptions
+ and memory cleanup for invalid registration problems.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=690455
+
+ gi/_gobject/pygenum.c | 6 ++--
+ gi/gimodule.c | 78
+ ++++++++++++++++++++++++++++++++++++++++++++-------
+ tests/test_gi.py | 35 +++++++++++++++++++++++
+ 3 files changed, 106 insertions(+), 13 deletions(-)
+
+commit 692c80e11a05e2fb0515580acb22fd6fe65cede1
+Author: Dan Horák <dan@danny.cz>
+Date: Fri Dec 28 22:12:32 2012 +0100
+
+ Fix test for GBytes.compare()
+
+ The result of the compare method is defined as equal, less than or
+ greater than zero
+ and the test must match to that. The underlaying memcmp() function
+ can return other
+ values than -1, 0 and 1. For example on architectures where it is
+ implemented directly
+ via a CPU instruction like on s390(x) where I can see -2 as a result
+ instead of the
+ "expected" -1.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=690837
+
+ tests/test_gi.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 948dbcb223249a08f4398d4ad8861e92e3de0dfa
+Author: Jonathan Ballet <jon@multani.info>
+Date: Thu Dec 27 16:04:51 2012 +0100
+
+ Fix Gtk.UIManager.add_ui_from_string() override for non-ASCII chars
+
+ The length argument is the size of the buffer in bytes, not in
+ characters.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=690329
+
+ Co-Authored-By: Martin Pitt <martinpitt@gnome.org>
+
+ gi/overrides/Gtk.py | 2 +-
+ tests/test_overrides_gtk.py | 7 +++++++
+ 2 files changed, 8 insertions(+), 1 deletion(-)
+
+commit 53bc12a87da824cbfb006a4fd65731edec12ecc7
+Author: Mike Gorse <mgorse@suse.com>
+Date: Wed Dec 19 20:51:03 2012 -0500
+
+ Don't dup strings before passing them to type registration functions
+
+ Strings passed to g_enum_register_static and g_flags_register_static
+ are
+ eventually passed to g_quark_from_string, which dups the string
+ passed to it if
+ needed and does not take ownership of it, so passing in a
+ dynamically-allocated
+ string without freeing it results in a small leak.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=690532
+
+ gi/gimodule.c | 2 --
+ 1 file changed, 2 deletions(-)
+
+commit 9454c01f2b1b82d43eea0f72fe9a28ef50065fc9
+Author: Carlos Garnacho <carlos@lanedo.com>
+Date: Tue Dec 18 22:47:09 2012 +0100
+
+ Fix marshalling of arrays of boxed struct values
+
+ This fixes methods like gtk_selection_set_with_data(). In such cases
+ data is passed as an array of struct pointers, so it must be converted
+ to an array of structs.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=656312
+
+ Co-Authored-By: Martin Pitt <martinpitt@gnome.org>
+
+ gi/pygi-marshal-from-py.c | 6 ++++++
+ tests/test_gi.py | 12 ++++++++++++
+ 2 files changed, 18 insertions(+)
+
+commit 231d5a7cfc73518b4e2b0c926d4c1ce9a804797e
+Author: Simon Feltman <sfeltman@src.gnome.org>
+Date: Tue Dec 18 02:03:41 2012 -0800
+
+ Add reference counting tests for Object.bind_property
+
+ Add tests which ensure transform callbacks and user_data
+ are propertly ref-counted.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=690397
+
+ tests/test_gobject.py | 40 ++++++++++++++++++++++++++++++++++++----
+ 1 file changed, 36 insertions(+), 4 deletions(-)
+
+commit c29e11812d176b1f057074c9bab22c9614ae4f8c
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Dec 18 11:43:04 2012 +0100
+
+ testhelpermodule.c: Do not unref called method
+
+ In _wrap_test_gerror_exception(), do not unref the method
+ arguments. This
+ causes a crash when being run with the stricter refcounting/memory
+ checks with
+ debug-enabled Python builds.
+
+ tests/testhelpermodule.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+commit ff0d9106bcd02a6b2c67cc3722481218c599a9f4
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Dec 17 23:20:50 2012 +0100
+
+ configure.ac: post-release bump to 3.7.4
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+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
+
+ Bump g-i dependency to 1.33.14
+
+ To ensure we have all the Regress test APIs that we use.
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit b6f4ef327fbeaa10fd74571c3df540311834d6ae
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Sep 17 22:52:49 2012 +0200
+
+ post-release bump to 3.3.93
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 7e154cf01cf0ce7a8b52c45ba4db755f73b45d1d
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Sep 17 22:48:13 2012 +0200
+
+ release 3.3.92
+
+ NEWS | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+commit adbe30dc72b4d88bb31055f6ee33fddf32638af9
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Sep 17 22:32:55 2012 +0200
+
+ release-news: Generate HTML changelog
+
+ In addition to producing a NEWS paragraph from the changelog,
+ generate a
+ changelog HTML which can be put into blog announcements.
+
+ Update HACKING to point this out, too.
+
+ HACKING | 2 +-
+ Makefile.am | 22 ++++++++++++++++------
+ 2 files changed, 17 insertions(+), 7 deletions(-)
+
+commit be4a0682bdd189ee908ab1961001f759a80e133c
+Author: Simon Feltman <s.feltman@gmail.com>
+Date: Sun Sep 16 17:27:25 2012 -0700
+
+ [API add] Add ObjectInfo.get_abstract method
+
+ Adds exposure of g_object_info_get_abstract to python for
+ helping with analysis of non-constructable objects from
+ within python.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=675581
+
+ gi/pygi-info.c | 8 ++++++++
+ tests/test_gi.py | 12 ++++++++++++
+ 2 files changed, 20 insertions(+)
+
+commit 3ada408434860d0c8eee6c6a869b5a3d801cfbc8
+Author: Simon Feltman <s.feltman@gmail.com>
+Date: Thu Sep 13 20:53:22 2012 -0700
+
+ Add deprecation warning when setting gpointers to anything other
+ than int.
+
+ This is a first pass which does not change anything except add
+ a warning
+ when anything other than an int is set on a gpointer on a boxed type.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=683599
+
+ gi/pygi-info.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+commit a047f61f26d9c78b82d22948199313e5a389e918
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Sep 17 09:41:24 2012 +0200
+
+ test_properties: Test accessing a property from a superclass
+
+ We already cover accessing the superclass' property if that was
+ defined in
+ Python. Add a corresponding test case for a property defined in C.
+
+ See https://bugzilla.gnome.org/show_bug.cgi?id=684058
+
+ tests/test_properties.py | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+commit 3e6a4000cbc4b0cb503fcd89b50202ed0b70d3a7
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Sep 17 09:31:05 2012 +0200
+
+ test_properties.py: Consistent test names
+
+ Use underscore style method/test case names consistently. Also rename
+ some test
+ cases to better describe what they do.
+
+ tests/test_properties.py | 78
+ ++++++++++++++++++++++++------------------------
+ 1 file changed, 39 insertions(+), 39 deletions(-)
+
+commit 4069c3d8547f35437e0cee175a5912febe25326d
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Wed Sep 12 06:51:24 2012 +0200
+
+ test_everything: Ensure TestSignals callback does get called
+
+ tests/test_everything.py | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit 4e4c87e3868948743e0446abe2ba0cf5626374c4
+Author: Nicolas Dufresne <nicolas.dufresne@collabora.com>
+Date: Fri Sep 7 17:17:09 2012 -0400
+
+ argument: Fix 64bit integer convertion from GValue
+
+ Trying to get a 64bit integer using the wrong getter was resulting
+ in an
+ assertion and 0 being returned.
+
+ Co-Authored-By: Martin Pitt <martinpitt@gnome.org>
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=683596
+
+ gi/pygi-argument.c | 8 ++++++--
+ tests/test_everything.py | 52
+ ++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 58 insertions(+), 2 deletions(-)
+
+commit e474ce243ea7a58358af344ccadb1418f4d2c8eb
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Sep 11 12:32:10 2012 +0200
+
+ Add Simon Feltman as a project maintainer
+
+ Signed-off-By: Martin Pitt <martinpitt@gnome.org>
+ Signed-off-By: Paolo Borelli <pborelli@gnome.org>
+
+ pygobject.doap | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+commit ee1fc78258f10e8a7872ee3da6c9ad6e7984706e
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Sep 11 10:17:50 2012 +0200
+
+ test_signals.py: Drop global type variables
+
+ Just use the real types and flags from GObject instead of redefining
+ aliases
+ for them. They weren't used consistently, make the tests harder to
+ read, and we
+ really do not want global single-letter variables like "f" and "l".
+
+ tests/test_signal.py | 38 ++++++++++++++++----------------------
+ 1 file changed, 16 insertions(+), 22 deletions(-)
+
+commit 3688cf6efe7161585b943cfaafcfd4610b7ad768
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Sep 11 10:11:58 2012 +0200
+
+ test_signals.py: Consistent test names
+
+ Use underscore style method/test case names consistently.
+
+ tests/test_signal.py | 88
+ ++++++++++++++++++++++++++--------------------------
+ 1 file changed, 44 insertions(+), 44 deletions(-)
+
+commit 4559247553b792db956f69c9674c12344d719c82
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Sep 11 09:43:14 2012 +0200
+
+ Add test cases for GValue signal arguments
+
+ These cover various types, (u)int(64) and string.
+
+ Keep the test case for implicit int64 GValues disabled, as this
+ currently does
+ not work and it is not clear whether it should:
+ https://bugzilla.gnome.org/show_bug.cgi?id=683775
+
+ tests/test_signal.py | 41 +++++++++++++++++++++++++++++++++++++++++
+ tests/testhelpermodule.c | 17 +++++++++++++++++
+ 2 files changed, 58 insertions(+)
+
+commit fddb01b0b71b68d154d130cf40fd5f38647b1a4d
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Sep 11 09:31:18 2012 +0200
+
+ Add test for GValue signal return values
+
+ Another attempt to reproduce the reported error in
+ https://bugzilla.gnome.org/show_bug.cgi?id=683596
+ but this works already.
+
+ tests/test_signal.py | 13 +++++++++++++
+ tests/testhelpermodule.c | 36 ++++++++++++++++++++++++++++++++++++
+ 2 files changed, 49 insertions(+)
+
+commit 4f77c7798563ea436ff5b6306a987f03de50b211
+Author: Simon Feltman <s.feltman@gmail.com>
+Date: Fri Sep 7 02:32:15 2012 -0700
+
+ Improve setting pointer fields/arguments to NULL using None
+
+ Setting gi pointers will set them to the address of the python object.
+ This is good except in the case of None which should be used to NULL
+ the pointer out as a special case.
+
+ Commit 21b1d17d2a already fixed this. This improved patch
+ does that in a cleaner and safer way and adds more comments.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=683150
+
+ gi/pygi-argument.c | 8 +-------
+ gi/pygi-info.c | 14 +++++++++++++-
+ 2 files changed, 14 insertions(+), 8 deletions(-)
+
+commit 15046b5a11f6c58a3e5a9c50cf0ce7f31f2cd55f
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Sep 10 16:46:30 2012 +0200
+
+ Test gint64 C signal arguments and return values
+
+ tests/test_signal.py | 12 ++++++++++++
+ tests/testhelpermodule.c | 14 ++++++++++++++
+ 2 files changed, 26 insertions(+)
+
+commit 822d9e07a95f706a40f64335765293542787da90
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Sep 10 16:29:32 2012 +0200
+
+ Test in/out int64 GValue method arguments.
+
+ See https://bugzilla.gnome.org/show_bug.cgi?id=683596
+
+ tests/test_gi.py | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+commit 2d83e52233812618493af4b165615e8741ba41c8
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Wed Sep 5 08:54:53 2012 +0200
+
+ Bump g-i dependency to 1.33.10
+
+ To ensure we have all the Regress test APIs that we use.
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 6a4f4dc9a3d21c3ac8a0aa51432fb8952b4e1ebf
+Author: Thibault Saunier <thibault.saunier@collabora.com>
+Date: Wed Aug 8 12:57:41 2012 -0400
+
+ Fix -uninstalled.pc.in file
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=683379
+
+ pygobject-3.0-uninstalled.pc.in | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit d8f1398dbc7fa7803639c542a607f24f18614ad6
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Sep 3 22:16:47 2012 +0200
+
+ post-release bump to 3.3.92
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit ea992324b8197b2d04ff2849b9ab46f8a04b4ed7
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Sep 3 22:04:01 2012 +0200
+
+ release 3.3.91
+
+ NEWS | 32 ++++++++++++++++++++++++++++++++
+ 1 file changed, 32 insertions(+)
+
+commit 1e1f5b2f2f15547c1f2cbc948d2b764bd0a37c44
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Sep 3 21:57:00 2012 +0200
+
+ Fix exception test case for Python 2
+
+ Regression from commit 77844c5 which did not work with Python 2.
+
+ tests/test_everything.py | 12 +++++++-----
+ 1 file changed, 7 insertions(+), 5 deletions(-)
+
+commit 41bb687c058e08b05108b4b2f081cd83d4f93da8
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Sep 3 21:16:01 2012 +0200
+
+ Bump g-i dependency
+
+ Require at least 1.33.9, as we got a couple of bug fixes there which
+ the tests,
+ and for some cases the code, depend on. We actually require 1.33.10
+ for all
+ tests to succeed, but that hasn't been released yet.
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 77844c571ad0badc189428b93de9f2572051b67e
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Sep 3 17:58:38 2012 +0200
+
+ Show proper exception when trying to allocate a disguised struct
+
+ Instead of a simple "MemoryError" with no details, raise a proper
+ TypeError with a traceback and an explanation what happened.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=639972
+
+ gi/pygi-struct.c | 7 +++++++
+ tests/test_everything.py | 13 +++++++++++++
+ 2 files changed, 20 insertions(+)
+
+commit 0d099bdb3f4bbd962e5e60b583673d9e6f5673cc
+Author: Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
+Date: Mon Sep 3 16:47:22 2012 +0200
+
+ Support marshalling GParamSpec signal arguments
+
+ Fix marshalling GParamSpec arguments from C to Python.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=683099
+
+ Co-Authored-By: Martin Pitt <martinpitt@gnome.org>
+
+ gi/pygi-argument.c | 10 +++++++++-
+ tests/test_signal.py | 14 ++++++++++++++
+ 2 files changed, 23 insertions(+), 1 deletion(-)
+
+commit 69fb92c22b3f3d1d5e8c3e14134eee3242fdc5fc
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Sep 3 16:06:49 2012 +0200
+
+ Add test for a signal that returns a GParamSpec
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=683265
+
+ tests/test_signal.py | 6 ++++++
+ tests/testhelpermodule.c | 12 ++++++++++++
+ 2 files changed, 18 insertions(+)
+
+commit a7c524219987fbf37e455a91e4c78d2b9b4db12d
+Author: Simon Feltman <s.feltman@gmail.com>
+Date: Tue Mar 20 04:33:50 2012 -0700
+
+ [API add] Add Signal class for adding and connecting custom signals.
+
+ The Signal class provides easy creation of signals and removes the
+ need for __gsignals__ in client code. The Signal class can also be
+ used as a decorator for wrapping up the custom closure. As well as
+ providing a "BoundSignal" when accessed on an instance for making
+ connections without specifying a signal name string.
+ Python3 annotations can also be used to supply closure argument and
+ return types when Signal is used as a decorator. For example:
+
+ class Eggs(GObject.GObject):
+ @GObject.Signal
+ def spam(self, count:int):
+ pass
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=434924
+
+ examples/signal.py | 34 ++++--
+ gi/_gobject/Makefile.am | 3 +-
+ gi/_gobject/__init__.py | 5 +
+ gi/_gobject/signalhelper.py | 251
+ ++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_signal.py | 208 ++++++++++++++++++++++++++++++++++--
+ 5 files changed, 482 insertions(+), 19 deletions(-)
+
+commit 96fa22369fd188465559fc904c7f76e73040e6dd
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Sep 3 15:32:12 2012 +0200
+
+ Fix pygtkcompat's Gtk.TreeView.insert_column_with_attributes()
+
+ We have a proper implementation for insert_column_with_attributes()
+ now, so
+ drop pygtkcompat's empty stub for it.
+
+ Also improve test case for
+ Gtk.TreeView.insert_column_with_attributes().
+
+ gi/pygtkcompat.py | 6 ------
+ tests/test_overrides_gtk.py | 16 ++++++++--------
+ 2 files changed, 8 insertions(+), 14 deletions(-)
+
+commit 542cf22c9de9b2094868c4e879b0f24b15c4c012
+Author: Marta Maria Casetti <mmcasetti@gmail.com>
+Date: Mon Sep 3 13:06:22 2012 +0200
+
+ Add override for Gtk.TreeView.insert_column_with_attributes()
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=679415
+
+ Co-Authored-By: Martin Pitt <martinpitt@gnome.org>
+
+ gi/overrides/Gtk.py | 7 +++++++
+ tests/test_overrides_gtk.py | 38 ++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 45 insertions(+)
+
+commit 1c73e845361e471b1c3a3f17e40e6a6cfa740877
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Sep 3 11:09:55 2012 +0200
+
+ .gitignore: Add missing built files
+
+ .gitignore | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+commit 96431f393036a688666dcf67911bf12b9824b264
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Sep 3 11:07:32 2012 +0200
+
+ Ship tests/gi in tarball
+
+ Spotted by distcheck.
+
+ tests/Makefile.am | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+commit dc2c6e6f60d2757462cbceef6176b0b3013904d3
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Sep 3 10:18:45 2012 +0200
+
+ Fix separate build tree and distcheck
+
+ Fix regression from c7c95a79: We must set sys.path in runtests.py
+ properly and
+ cannot rely on setting $PYTHONPATH from Makefile.am only. Python
+ always
+ prepends the directory of the source file to sys.path, but that
+ points to the
+ source dir, not the build dir. The build dir has to take precedence,
+ otherwise
+ we fail to import the built libraries.
+
+ tests/runtests-windows.py | 10 +++++++---
+ tests/runtests.py | 13 ++++++++-----
+ 2 files changed, 15 insertions(+), 8 deletions(-)
+
+commit 2d8f48f4ff56bb75985136452b50b75895258608
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Sep 3 07:57:01 2012 +0200
+
+ Split test_overrides.py
+
+ Split the huge test_overrides.py into separate files for gdk, gtk,
+ gio, glib,
+ and pango. Further split the monolithic classes for Gtk and Gio
+ into several
+ ones.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=683188
+
+ tests/Makefile.am | 5 +
+ tests/test_overrides.py | 2198
+ +----------------------------------------
+ tests/test_overrides_gdk.py | 119 +++
+ tests/test_overrides_gio.py | 114 +++
+ tests/test_overrides_glib.py | 445 +++++++++
+ tests/test_overrides_gtk.py | 1517 ++++++++++++++++++++++++++++
+ tests/test_overrides_pango.py | 32 +
+ 7 files changed, 2234 insertions(+), 2196 deletions(-)
+
+commit 1223358e2c558dd7ac3300126f989054ec5a5b3f
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Sep 3 07:17:57 2012 +0200
+
+ _pygi_argument_to_object(): Clean up array unmarshalling
+
+ The NULL case is already handled at the top, so it does not need to be
+ re-checked again.
+
+ Emit a critical if we fail to allocate a Python array of the
+ requested size.
+
+ gi/pygi-argument.c | 47 ++++++++++++++++-------------------------------
+ 1 file changed, 16 insertions(+), 31 deletions(-)
+
+commit 65bfbc624bc9da6e18ff2945b14099ab8eeb7601
+Author: Alban Browaeys <prahal@yahoo.com>
+Date: Wed Aug 29 21:24:17 2012 +0200
+
+ Fix memory leak in _pygi_argument_to_object()
+
+ Avoid leaking the item_type_info when breaking out of the
+ switch in _pygi_argument_to_object() for unmarshalling arrays.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=682979
+
+ gi/pygi-argument.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+commit 21b1d17d2ada2edf4063a4262b3436c279da3dc2
+Author: Simon Feltman <s.feltman@gmail.com>
+Date: Sat Sep 1 03:40:31 2012 -0700
+
+ Fix setting pointer fields/arguments to NULL using None.
+
+ Setting gi pointers will set them to the address of the python object.
+ This is good except in the case of None which should be used to NULL
+ the pointer out as a special case.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=683150
+
+ gi/pygi-argument.c | 8 +++++++-
+ tests/test_overrides.py | 41 +++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 48 insertions(+), 1 deletion(-)
+
+commit 6123e6f5001ca5eaea18123d8a53525abab31a45
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Thu Aug 23 06:44:27 2012 +0200
+
+ Fix for python 2.6, drop support for < 2.6
+
+ Replace sys.version_info.major access to tuple access which also
+ works for
+ Python 2.6.
+
+ When building for Python 2.6, inject some missing unittest API such as
+ @unittest.skipUnless and assertGreaterEqual() into the unittest
+ module in
+ runtests.py, so that the tests have a chance to run.
+
+ As building with Python 2.5 has been broken for a long time with
+ nobody
+ complaining, and 2.5 is ancient, bump minimum Python requirement to
+ 2.6. Drop
+ obsolete #ifdef paths which only apply to <= 2.5.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=682422
+
+ configure.ac | 2 +-
+ gi/_glib/pyglib-python-compat.h | 8 --------
+ gi/_gobject/gobjectmodule.c | 8 --------
+ gi/module.py | 2 +-
+ tests/runtests.py | 27 +++++++++++++++++++++++++++
+ tests/test_gi.py | 2 +-
+ 6 files changed, 30 insertions(+), 19 deletions(-)
+
+commit b1a9848a7a7255e6b1ccd98712dd62b1514078b9
+Author: Thibault Saunier <thibault.saunier@collabora.com>
+Date: Tue Aug 21 07:54:09 2012 +0200
+
+ Allow overrides in other directories than gi itself
+
+ Use pkgutil.extend_path() for the gi and gi.overrides modules, so that
+ libraries can install overrides in a path that is different from
+ the one that
+ pygobject installs itself into. These overrides need to put this
+ into their
+ __init__.py at the top:
+
+ from pkgutil import extend_path
+ __path__ = extend_path(__path__, __name__)
+
+ and put themselves somewhere into the default PYTHONPATH.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=680913
+
+ Co-Authored-By: Martin Pitt <martinpitt@gnome.org>
+ Co-Authored-By: Simon Feltman <s.feltman@gmail.com>
+
+ gi/__init__.py | 4 ++++
+ gi/overrides/__init__.py | 4 ++++
+ tests/gi/__init__.py | 2 ++
+ tests/gi/overrides/Regress.py | 26 ++++++++++++++++++++++++++
+ tests/gi/overrides/__init__.py | 2 ++
+ tests/test_overrides.py | 6 ++++++
+ 6 files changed, 44 insertions(+)
+
+commit c7c95a795eee499373499ea5b771447746317bfb
+Author: Simon Feltman <s.feltman@gmail.com>
+Date: Thu Aug 23 06:03:09 2012 +0200
+
+ Clean up sys.path handling in tests
+
+ Only set sys.path once in runtests.py, not in the individual test
+ modules. This
+ reduces hidden dependencies between tests by building up a run
+ order dependent
+ search path, and also makes it easier in the future to run the
+ tests against
+ the installed system libraries.
+
+ Side issue in https://bugzilla.gnome.org/show_bug.cgi?id=680913
+
+ tests/runtests-windows.py | 6 +++++-
+ tests/runtests.py | 3 +++
+ tests/test_everything.py | 1 -
+ tests/test_gdbus.py | 3 ---
+ tests/test_overrides.py | 3 ---
+ tests/test_pygtkcompat.py | 3 ---
+ 6 files changed, 8 insertions(+), 11 deletions(-)
+
+commit 3e3525e93d852cde0f63e835b774a9b004773c69
+Author: Simon Feltman <s.feltman@gmail.com>
+Date: Sun Aug 19 02:30:39 2012 -0700
+
+ Fix dynamic creation of enum and flag gi types for Python 3.3
+
+ Importing Gtk was crashing on instantiation of dynamic Enum and Flag
+ subclasses due to what looks to be an unsupported technique. Change
+ tp_new() method for classes dynamically derived from PyGEnum_Type and
+ PyGFlags_Type to call PyLong_Type.tp_new() instead of attempting
+ to call
+ __new__() as a python method. This technique seems to work with all
+ versions of python so the previous python version checking also became
+ unnecessary.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=682323
+
+ gi/_gobject/pygenum.c | 29 ++++++++++++++++-------------
+ gi/_gobject/pygflags.c | 21 +++++++++------------
+ 2 files changed, 25 insertions(+), 25 deletions(-)
+
+commit dd31b67e821f92b5f1c2ee0382cac5edd477cd11
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Wed Aug 22 10:45:39 2012 +0200
+
+ [API add] Override g_menu_item_set_attribute
+
+ This C utility API take a vararg, add a corresponding override that
+ takes a list of tuples
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=682436
+
+ gi/overrides/Gio.py | 10 ++++++++++
+ tests/test_overrides.py | 11 +++++++++++
+ 2 files changed, 21 insertions(+)
+
+commit 836902801373e386d370c44e7487aac3432f19f6
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Aug 20 23:37:40 2012 +0200
+
+ post-release bump to 3.3.91
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 6a629e23ff7b0d6f532184017577c7427d577e28
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Aug 20 23:05:49 2012 +0200
+
+ release 3.3.90
+
+ NEWS | 13 +++++++++++++
+ configure.ac | 2 +-
+ 2 files changed, 14 insertions(+), 1 deletion(-)
+
+commit 5cd18c9bd59a60b930ced0b35d728c12bb3291c7
+Author: Mathieu Duponchelle <mathieu.duponchelle@epitech.eu>
+Date: Mon Aug 20 22:54:52 2012 +0200
+
+ Implement marshalling for GParamSpec
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=681565
+
+ Co-Authored-By: Martin Pitt <martinpitt@gnome.org>
+
+ gi/pygi-marshal-to-py.c | 16 ++++++++++++----
+ tests/test_gi.py | 14 ++++++++++++++
+ 2 files changed, 26 insertions(+), 4 deletions(-)
+
+commit 16462de3f025f14706ec23fa9b3653feb66ad57f
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Aug 20 15:24:10 2012 +0200
+
+ Fix pep8/pyflakes invocation
+
+ Fix regression from commit 1e056e4f4a: Do fail the tests if
+ pyflakes/pep8
+ exist, but fail.
+
+ tests/Makefile.am | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 1bee194274bcda9ba5f6751fa921218a92c8ac72
+Author: Simon Feltman <s.feltman@gmail.com>
+Date: Thu Aug 16 16:05:52 2012 -0700
+
+ Fix erronous import statements for Python 3.3
+
+ Update pygobject-external.h to use GType (which is what GTypeWrapper
+ is
+ exposed as) instead of GTypeWrapper when attempting import.
+
+ Catch ImportError around attempted imports of a typelibs override file
+ which don't always exist (GObject...). This is a behavioural change in
+ Python 3.3 (http://bugs.python.org/issue15715), but let's fix
+ it anyway.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=682051
+
+ gi/module.py | 7 +++++--
+ gi/pygobject-external.h | 2 +-
+ 2 files changed, 6 insertions(+), 3 deletions(-)
+
+commit 1e056e4f4a19fd1139187467677c2592c2722290
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Aug 20 11:52:08 2012 +0200
+
+ Do not fail tests if pyflakes or pep8 are not installed
+
+ These tools might not be desirable in restricted build environments or
+ backports, and e. g. Fedora patches those out. So let the tests
+ work without
+ these tools.
+
+ tests/Makefile.am | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit c219fa6da89a7d55c5c111751684aae6876a9fe3
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Aug 20 11:42:47 2012 +0200
+
+ gtk-demo: Fix some PEP-8 whitespace issues
+
+ demos/gtk-demo/demos/Icon View/iconviewbasics.py | 3 +--
+ demos/gtk-demo/demos/dialogs.py | 2 +-
+ demos/gtk-demo/demos/rotatedtext.py | 3 +--
+ 3 files changed, 3 insertions(+), 5 deletions(-)
+
+commit 0ac2a85cae368c046839b5619a96efc9e0b91ba3
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Aug 20 11:38:50 2012 +0200
+
+ test_overrides.py: Fix PEP8 whitespacing
+
+ tests/test_overrides.py | 48
+ +++++++++++++++++++++++++-----------------------
+ 1 file changed, 25 insertions(+), 23 deletions(-)
+
+commit 631a9cd05cbc7dc3d0f743a84b948ef7d93c0ed4
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Aug 20 11:36:19 2012 +0200
+
+ Ignore E124 pep8 error
+
+ This is "closing bracket does not match visual indentation" which
+ is really
+ stupid. We do want the closing bracket at the same indentation level
+ as the
+ opening bracket, not the indentation level of the whole statement.
+
+ tests/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 266d37719bb54e6f04d23ff21bcceb9514e20ff2
+Author: David Malcolm <dmalcolm@redhat.com>
+Date: Mon Aug 20 11:27:52 2012 +0200
+
+ Fix unmarshalling of gssize
+
+ Do not assume that the v_int union member always corresponds to a
+ gssize. This
+ is not true on big-endian 64 bit machines like ppc64, so add a new
+ gi_argument_to_gssize() and use it properly.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=680693
+ https://bugzilla.redhat.com/show_bug.cgi?id=842880
+
+ gi/pygi-argument.c | 53
+ +++++++++++++++++++++++++++++++++++++++++++++---
+ gi/pygi-argument.h | 1 +
+ gi/pygi-closure.c | 2 +-
+ gi/pygi-info.c | 4 ++--
+ gi/pygi-signal-closure.c | 2 +-
+ 5 files changed, 55 insertions(+), 7 deletions(-)
+
+commit 1c5d497d3c354f4d02f1d4570df2c61d6f47300c
+Author: David Malcolm <dmalcolm@redhat.com>
+Date: Mon Aug 20 11:19:27 2012 +0200
+
+ Fix various endianess errors
+
+ Fix code which assumed little endian behaviour when mixing different
+ types of
+ ints, putting ints into pointers, etc.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=680692
+ https://bugzilla.redhat.com/show_bug.cgi?id=841596
+
+ gi/pygi-argument.c | 64 +++++++++++++--
+ gi/pygi-argument.h | 6 ++
+ gi/pygi-cache.c | 2 +
+ gi/pygi-closure.c | 57 ++++++++++++-
+ gi/pygi-marshal-from-py.c | 203
+ ++++++++++++++++++++++++++++++++++++----------
+ gi/pygi-marshal-from-py.h | 3 +
+ gi/pygi-marshal-to-py.c | 137 ++++++++++++++++++++++++-------
+ 7 files changed, 391 insertions(+), 81 deletions(-)
+
+commit ee6da6f1aa2cd6e55834f9edc17f785613d00031
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Wed Aug 15 13:16:11 2012 +0200
+
+ Add unit test for the TreeModelSort override
+
+ tests/test_overrides.py | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+commit 9f027daa5737107b5959964b699c0089aec8ab1e
+Author: Simon Feltman <s.feltman@gmail.com>
+Date: Thu Aug 9 03:33:06 2012 -0700
+
+ Gtk overrides: Add TreeModelSort.__init__(self, model)
+
+ This adds "model" as a required argument to TreeModelSort
+ instead of it being a hidden keyword argument. This is needed
+ because the model property is set to construct only and the
+ default value of None/NULL makes the object useless anyhow.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=681477
+
+ gi/overrides/Gtk.py | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+commit c8424c2bb19356679e250e73542682dd5f4c74a5
+Author: Manuel Quiñones <manuq@laptop.org>
+Date: Fri Aug 10 09:38:24 2012 -0300
+
+ Convert Gtk.CellRendererState in the pygi-convert script
+
+ Signed-off-by: Manuel Quiñones <manuq@laptop.org>
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=681596
+
+ pygi-convert.sh | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+commit 54d829b34a0d32d852db370f61cc7f25c149f373
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Mon Aug 6 16:19:28 2012 +0200
+
+ More updates to the HACKING file
+
+ module-install has been replaced with 'ftpadmin install' and other
+ minor
+ changes
+
+ HACKING | 26 ++++++++++----------------
+ 1 file changed, 10 insertions(+), 16 deletions(-)
+
+commit 0788880c6cf4070d3db09896c165fe470d2ec186
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Mon Aug 6 16:00:39 2012 +0200
+
+ Post-release version bump to 3.3.6
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 664403d953c3e07077d0db90bfae3b51c7f1767c
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Mon Aug 6 15:52:22 2012 +0200
+
+ release 3.3.5
+
+ NEWS | 29 +++++++++++++++++++++++++++++
+ 1 file changed, 29 insertions(+)
+
+commit b748753a2a9af018001213e2e58c48d6c8bfadbd
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Mon Aug 6 15:44:32 2012 +0200
+
+ Update HACKING file to mention "make release-news"
+
+ HACKING | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+commit 587a0c33901383b891f8eb77351c17f06af20b4f
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Mon Aug 6 15:38:23 2012 +0200
+
+ pygi-closure: remove unused variables
+
+ These variables are assigned but never actually used
+
+ gi/pygi-closure.c | 8 --------
+ 1 file changed, 8 deletions(-)
+
+commit dbc6df6aad7197fcf8721ade429baadd749f7069
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Fri Aug 3 07:13:55 2012 +0200
+
+ tests: Do not break on Pango warnings
+
+ In some restricted environments (like chroots) we sometimes get
+ warnings from
+ Pango when it cannot find an appropriate font. Do not make the tests
+ fail on
+ those.
+
+ tests/test_overrides.py | 4 ++++
+ tests/test_pygtkcompat.py | 6 ++++++
+ 2 files changed, 10 insertions(+)
+
+commit 770e6abfd5bc5dad7d5f56a18f1ef63f9754ada9
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Fri Aug 3 06:45:48 2012 +0200
+
+ Fix list marshalling on big-endian machines
+
+ On big endian machines we cannot simply set e. g. GIArgument.v_int8
+ and expect
+ GIArgument.v_pointer to be a correct representation. This needs to use
+ GINT_TO_POINTER/GPOINTER_TO_INT properly, so use the already existing
+ _pygi_hash_pointer_to_arg()/_pygi_arg_to_hash_pointer() methods
+ in marshalling
+ to and from GList and GSList, and handle int8 and int16 as well.
+
+ Part of porting pygobject to ppc64:
+ https://bugzilla.redhat.com/show_bug.cgi?id=842880
+ https://bugzilla.gnome.org/show_bug.cgi?id=680693
+
+ gi/pygi-marshal-from-py.c | 48 ++++++++++++++++++++++++-----------------
+ gi/pygi-marshal-to-py.c | 54
+ +++++++++++++++++++++++++++--------------------
+ 2 files changed, 60 insertions(+), 42 deletions(-)
+
+commit b5cd13f47309ec26727b7574e33595a357602468
+Author: Colin Walters <walters@verbum.org>
+Date: Tue Jul 31 11:47:02 2012 -0400
+
+ pygi-marshal: One more 32-bit -Werror=format fix
+
+ gi/pygi-marshal-from-py.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 526bf43691cb6ed908589312b1693a6389eba00c
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Jul 31 17:14:37 2012 +0200
+
+ Beautify class/interface type mismatch error messages
+
+ Avoid saying "<unknown module>.int", just skip the module name
+ completely if we do not have one.
+
+ gi/pygi-marshal-from-py.c | 20 ++++++++++++--------
+ 1 file changed, 12 insertions(+), 8 deletions(-)
+
+commit 8fb18c62d9c7faff38df3886cb4289b618c81b85
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Jul 31 13:13:21 2012 +0200
+
+ Skip instead of fail tests which need Pango, Atk, Gdk, Gtk
+
+ On initial jhbuild bootstrap or restricted environments, the Pango,
+ Atk, Gdk,
+ and Gtk typelibs might not be available. Skip tests which need these
+ instead of
+ failing the testsuite.
+
+ tests/test_atoms.py | 7 ++++++-
+ tests/test_everything.py | 9 ++++++++-
+ tests/test_overrides.py | 32 ++++++++++++++++++++++++++------
+ tests/test_pygtkcompat.py | 30 ++++++++++++++++++++----------
+ 4 files changed, 60 insertions(+), 18 deletions(-)
+
+commit a2e73c109f3ed6080eabc85810e624b9f984317e
+Author: Colin Walters <walters@verbum.org>
+Date: Tue Jul 31 09:02:24 2012 -0400
+
+ pygi-argument: Fix -Wformat warning on 32 bit builds
+
+ gi/pygi-argument.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 7563bb9f8ed5740f52ddf0ca59daf7839853505b
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Jul 31 11:14:36 2012 +0200
+
+ Fix tests for Python 2
+
+ In Python 2 we get different error messages for a mismatching self
+ type. Fixes
+ check after commit 121b14028.
+
+ tests/test_gi.py | 32 ++++++++++++++++++++------------
+ 1 file changed, 20 insertions(+), 12 deletions(-)
+
+commit 5c5b066854cc0b3b7702f31d212aa3f511c62127
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Jul 31 10:30:22 2012 +0200
+
+ Build with -Werror=format
+
+ This catches format string problems on particular architectures like
+ in commit
+ dea24f8e12 much more insistently.
+
+ configure.ac | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 6e84a3052667fdc88c2081e20cc6dc3257ec9d6c
+Author: Simon Feltman <s.feltman@gmail.com>
+Date: Mon Jul 30 02:00:16 2012 -0700
+
+ [API add] pygtkcompat: Add more pixbuf creation functions
+
+ Add the following functions:
+ pixbuf_new_from_data
+ pixbuf_new_from_file_at_scale
+ pixbuf_new_from_file_at_size
+ pixbuf_new_from_inline
+ pixbuf_new_from_stream
+ pixbuf_new_from_stream_at_scale
+ pixbuf_new_from_xpm_data
+ pixbuf_get_file_info
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=680814
+
+ gi/pygtkcompat.py | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+commit dea24f8e1221516b2d8ea578e55124b0409d6a76
+Author: Colin Walters <walters@verbum.org>
+Date: Mon Jul 30 22:17:44 2012 -0400
+
+ marshal: Fix a lot of format string warnings on 32 bit
+
+ G_GUINT64_FORMAT and friends handle "%lld" portably.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=680878
+
+ gi/pygi-marshal-from-py.c | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+commit b630038d9a1c8cb7e5914c77fbacbed646c154d1
+Author: Colin Walters <walters@verbum.org>
+Date: Mon Jul 30 22:30:07 2012 -0400
+
+ marshal: Fix build break on Python 2
+
+ I *think* using this wrapper function instead is right.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=680879
+
+ gi/pygi-marshal-from-py.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit a8338a991bbe919f0e2d9b92f7b71f89ccd2c875
+Author: Manuel Quiñones <manuq@laptop.org>
+Date: Mon Jul 30 12:53:36 2012 -0300
+
+ Improve testcase for tree_view_column_set_attributes
+
+ Signed-off-by: Manuel Quiñones <manuq@laptop.org>
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=680320
+
+ tests/test_overrides.py | 20 ++++++++++++++++++--
+ 1 file changed, 18 insertions(+), 2 deletions(-)
+
+commit 121b1402860407fe46f7501e42447bf3607872ec
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Jul 31 00:37:55 2012 +0200
+
+ Fix error messages on interface/class type mismatches
+
+ Previously, when you called a function with an argument which was not
+ compatible with the expected class/interface type, you got an
+ error message
+ like
+
+ TypeError: Expected Gtk.TreeViewColumn, but got GObjectMeta
+
+ which had the wrong (and useless) class name for the actual type,
+ and did not
+ tell you which argument caused the problem. With this it says e. g.
+
+ TypeError: argument column: Expected Gtk.TreeViewColumn, but
+ got Gtk.Button
+
+ instead.
+
+ gi/pygi-marshal-from-py.c | 41 ++++++++++++++++++++++++++--------
+ tests/test_gi.py | 57
+ ++++++++++++++++++++++++++++++++++++++++++++++-
+ 2 files changed, 88 insertions(+), 10 deletions(-)
+
+commit 8f31e85db1392eb7222593fc0d05144c2bca06a3
+Author: Simon Feltman <s.feltman@gmail.com>
+Date: Sun Jul 29 23:36:25 2012 -0700
+
+ Fix crash when returning (False, None) from
+ Gtk.TreeModel.do_get_iter()
+
+ Add a Py_None check before attempting memcpy().
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=680812
+
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/pygi-closure.c | 10 +++++++---
+ tests/test_overrides.py | 9 +++++++++
+ 2 files changed, 16 insertions(+), 3 deletions(-)
+
+commit 94e5d58e7794de91d3291e0e51c42070da4fc92b
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Jul 30 11:58:24 2012 +0200
+
+ Add test case for Gtk.TextIter.forward_search()
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=679415
+
+ tests/test_overrides.py | 19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+
+commit aae4e77482c02e21154ab02b159f380f5f0f74be
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Fri Jul 27 23:06:39 2012 +0200
+
+ Add missing static declarations
+
+ This fixes a lot of -Wmissing-prototype warnings.
+
+ Also remove _pygi_marshal_cleanup_closure_unref() which is not
+ used anywhere.
+
+ gi/_gobject/gobjectmodule.c | 4 ++--
+ gi/_gobject/pygobject.c | 2 +-
+ gi/pygi-cache.c | 2 +-
+ gi/pygi-foreign-cairo.c | 24 ++++++++++++------------
+ gi/pygi-foreign.c | 2 +-
+ gi/pygi-marshal-cleanup.c | 9 ---------
+ tests/test-unknown.c | 2 +-
+ tests/testhelpermodule.c | 4 ++--
+ 8 files changed, 20 insertions(+), 29 deletions(-)
+
+commit 5f88d3017f853c4ff5e9fd89ef39e4569a9b9c16
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Fri Jul 27 23:01:08 2012 +0200
+
+ Fix more missing #includes
+
+ Add missing includes which caused -Wmissing-prototypes warnings.
+
+ gi/_gobject/pygenum.c | 2 ++
+ gi/_gobject/pyginterface.c | 2 ++
+ 2 files changed, 4 insertions(+)
+
+commit 97b5184c6650964ae8a7616353f5ce8e3ca19af3
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Fri Jul 27 22:59:21 2012 +0200
+
+ Make some warnings fatal
+
+ Add -Werror for some warnings which are real errors in the source
+ which we
+ really want to avoid. This includes -Wmissing-prototypes, but that
+ currently
+ breaks on building g-i's regress.c.
+
+ configure.ac | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+commit c2ee8c550199de59dd220561ed028ec6fb8e1daf
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Fri Jul 27 22:08:47 2012 +0200
+
+ Fix missing #includes
+
+ Add missing includes which caused -Wmissing-prototypes warnings.
+
+ gi/_glib/pygiochannel.c | 2 ++
+ gi/_glib/pygspawn.c | 2 ++
+ 2 files changed, 4 insertions(+)
+
+commit 8bc98fc6665ebab763ee92361929139a0ebe66b5
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Fri Jul 27 20:52:00 2012 +0200
+
+ pygi-info.c: Robustify pointer arithmetic
+
+ In _wrap_g_field_info_{get,set}_value(), use explicit char* casts
+ to point out
+ that we are using byte offsets. Fixes warnings:
+
+ pygi-info.c:1277:43: warning: pointer of type 'void *' used in
+ arithmetic [-Werror=pointer-arith]
+
+ gi/pygi-info.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit d0a561057b727ebcc1fd06fa6a3b48f2a1f8338e
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Fri Jul 27 20:50:30 2012 +0200
+
+ pyglib.c: Remove some dead code
+
+ Drop unused pyglib_gil_state_ensure_py23() and
+ pyglib_gil_state_release_py23().
+
+ gi/_glib/pyglib.c | 18 ------------------
+ 1 file changed, 18 deletions(-)
+
+commit a46d165d906d0ac7613f4d946542423e979f39d5
+Author: Manuel Quiñones <manuq@laptop.org>
+Date: Fri Jul 20 10:37:04 2012 -0300
+
+ Add set_attributes() override to Gtk.TreeViewColumn
+
+ Looking at the C code, gtk_tree_view_column_set_attributesv just calls
+ gtk_cell_layout_clear_attributes and then
+ gtk_cell_layout_add_attribute for each (name, value) passed. This
+ patch makes the same in the overrides.
+
+ Signed-off-by: Manuel Quiñones <manuq@laptop.org>
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/overrides/Gtk.py | 7 +++++++
+ tests/test_overrides.py | 6 ++++++
+ 2 files changed, 13 insertions(+)
+
+commit 4df676e10a5ea595a0d491af10268f557dd722d7
+Author: Daniel Narvaez <dwnarvaez@gmail.com>
+Date: Tue Jul 24 13:49:15 2012 +0200
+
+ Drop git.mk
+
+ The autogenerated gitignores was missing several files. So we
+ was using a manual .gitignore at the root. But since it's
+ enough to add a couple of entries to it to cover the whole
+ tree, there is no much point in using git.mk at all.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=678192
+
+ Makefile.am | 3 -
+ docs/Makefile.am | 2 -
+ examples/Makefile.am | 3 -
+ gi/Makefile.am | 3 -
+ gi/_glib/Makefile.am | 3 -
+ gi/_gobject/Makefile.am | 2 -
+ gi/overrides/Makefile.am | 2 -
+ gi/repository/Makefile.am | 2 -
+ git.mk | 200
+ ----------------------------------------------
+ tests/Makefile.am | 2 -
+ 10 files changed, 222 deletions(-)
+
+commit 0d729c1534c7f3226b492f549d8f6ad3bb3ac8b7
+Author: Simon Feltman <s.feltman@gmail.com>
+Date: Fri Jul 20 19:55:46 2012 -0700
+
+ Gtk overrides: Add TreePath.__getitem__()
+
+ Use pythons sub-script operator for indexing into TreePaths
+ as was the case in PyGtk. Also changed __iter__ to use
+ TreePath.get_indices as opposed to formatting and re-parsing
+ a string for getting an index list.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=680353
+
+ gi/overrides/Gtk.py | 5 ++++-
+ tests/test_overrides.py | 4 ++++
+ 2 files changed, 8 insertions(+), 1 deletion(-)
+
+commit affc7faa3fa7250e2e8c2c65e6860906f6fbc4fb
+Author: Simon Feltman <s.feltman@gmail.com>
+Date: Fri Jul 20 21:34:33 2012 -0700
+
+ Fix property type mapping from int to TYPE_INT for python3.
+
+ Python3 does not have a long type, however, propertyhelper.py was
+ using long_ = int; to get things working. Type mapping code
+ was then checking for long_ first and always returning TYPE_LONG.
+ Additional refactoring was done to move large if/elif statements
+ into dictionary lookups and usage of tuples instead of lists
+ for simple 'in' list of items tests.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=679939
+
+ gi/_gobject/propertyhelper.py | 117
+ +++++++++++++++++++-----------------------
+ tests/test_properties.py | 55 +++++++++++++++-----
+ 2 files changed, 96 insertions(+), 76 deletions(-)
+
+commit 6fddba5bc5ea02938677a89ffeb0cfc53229b894
+Author: Manuel Quiñones <manuq@laptop.org>
+Date: Thu Jul 19 12:11:34 2012 -0300
+
+ Convert Gtk.DestDefaults constants in pygi-convert.sh script
+
+ Signed-off-by: Manuel Quiñones <manuq@laptop.org>
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=680259
+
+ pygi-convert.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit d58c3553062fd8704a81a8233b4a1563a6611718
+Author: Manuel Quiñones <manuq@laptop.org>
+Date: Thu Jul 19 12:04:03 2012 -0300
+
+ Convert all Gdk.WindowState constants in pygi-convert.sh
+
+ Signed-off-by: Manuel Quiñones <manuq@laptop.org>
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=680257
+
+ pygi-convert.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit a3aae2e152c0b955037b7b85e16d14d00881d870
+Author: Joe R. Nassimian <placidrage@gmail.com>
+Date: Thu Jul 19 15:48:20 2012 +0200
+
+ [API add] Add API for checking pygobject's version
+
+ Add a gi.__version__ attribute for the textual version, and
+ gi.version_info for
+ a version triple similar to sys.version_info.
+
+ Also add a gi.require_version(<minimum_version>) which raises an
+ exception if
+ the pygobject version is older.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=680176
+
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/__init__.py | 16 ++++++++++++++++
+ tests/test_gi.py | 16 ++++++++++++++++
+ 2 files changed, 32 insertions(+)
+
+commit a2d9b71d84f0fcb7aaf5ce483ffee3b3a1ccaca1
+Author: Manuel Quiñones <manuq@laptop.org>
+Date: Mon Jul 16 17:14:46 2012 -0300
+
+ pygi-convert.sh: Add some missing Gdk.CursorTypes
+
+ This patch adds WATCH, ARROW and CLOCK.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=680050
+
+ Signed-off-by: Manuel Quiñones <manuq@laptop.org>
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ pygi-convert.sh | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit 0b08c01414ac73a4604acd9a846e7af09574929f
+Author: Manuel Kaufmann <humitos@gmail.com>
+Date: Tue Jul 17 09:05:27 2012 -0300
+
+ pygi-convert.sh: convert rsvg.Handle(data=...)
+
+ Replace rsvg.Handle(data=data) with Rsvg.Handle.new_from_data(data)
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=680092
+
+ Signed-off-by: Manuel Kaufmann <humitos@gmail.com>
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ pygi-convert.sh | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 975855d0fff7f2042fe1f0e843f96b9a37cc6b79
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Jul 16 17:35:38 2012 +0200
+
+ configure.ac: post-release bump to 3.3.5
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 126842b7227fcc1381dc158acdc5a96d0a465515
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Jul 16 17:33:08 2012 +0200
+
+ release 3.3.4
+
+ NEWS | 28 ++++++++++++++++++++++++++++
+ 1 file changed, 28 insertions(+)
+
+commit 079b73b3eb9083bd53e06d095f9dccc02acf2a6e
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Jul 16 17:29:22 2012 +0200
+
+ test_gi: Fix for Python 2
+
+ tests/test_gi.py | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+commit 30935fe31bfe201bbfdb7734f09fdd2bbaf80e08
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Jul 16 16:35:33 2012 +0200
+
+ pygi-convert.sh: Drop bogus filter_new() conversion
+
+ my_tree_model.filter_new() is still a method on GtkTreeModel, not a
+ constructor, so do not try to convert it to a constructor call.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=679999
+
+ pygi-convert.sh | 1 -
+ 1 file changed, 1 deletion(-)
+
+commit c0607d970fc59528ca27d518282cf2871b92e909
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Jul 16 16:00:40 2012 +0200
+
+ Fix help() for GI modules
+
+ Derive DynamicModule from types.ModuleType, so that the inspect
+ modules'
+ ismodule() actually succeeds on those and generates useful help on
+ a GI
+ repository module.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=679804
+
+ gi/module.py | 3 ++-
+ tests/test_gi.py | 15 +++++++++++++++
+ 2 files changed, 17 insertions(+), 1 deletion(-)
+
+commit 3235f1a397c334de5a7570f5ceed4da709fe1714
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Jul 16 15:53:31 2012 +0200
+
+ Skip gi.CallbackInfo objects from a module's dir()
+
+ Skip gi.CallbackInfo items from IntrospectionModule's __dir__(),
+ as we do not
+ implement __getattr__ for those.
+
+ Add a test case that dir() works on GI modules, contain expected
+ identifiers,
+ and that all identifiers in dir() can actually be retrieved.
+
+ Prerequisite for https://bugzilla.gnome.org/show_bug.cgi?id=679804
+
+ gi/module.py | 7 +++++--
+ tests/test_gi.py | 14 ++++++++++++++
+ 2 files changed, 19 insertions(+), 2 deletions(-)
+
+commit f6cc039e014448a553d626aac4020ee69717edab
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Jul 16 15:38:05 2012 +0200
+
+ Fix __path__ module attribute
+
+ get_typelib_path() returns bytes, not strings, so in Python 3 we
+ need to decode
+ it to get a proper __path__ attribute.
+
+ gi/module.py | 17 +++++++++++++++++
+ tests/test_gi.py | 10 ++++++++++
+ 2 files changed, 27 insertions(+)
+
+commit 858048f7cec78129aa914e2341ab80aac0e95cc5
+Author: Joe R. Nassimian <placidrage@gmail.com>
+Date: Mon Jul 16 15:02:10 2012 +0200
+
+ pygi-convert.sh: Fix some child → getChild() false positives
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=680004
+
+ pygi-convert.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit a31fabdc12f1da301c8df0af319ca3f4181671ee
+Author: Mikkel Kamstrup Erlandsen <mikkel.kamstrup@canonical.com>
+Date: Thu Jul 12 09:19:42 2012 +0200
+
+ Fix array handling for interfaces, properties, and signals
+
+ Fix lots of corner cases where arrays are not handled properly.
+ _pygi_argument_to_object() now has the documented expectation of
+ getting arrays
+ packed in GArrays. This was implicit before and not correctly done
+ on most call
+ sites.
+
+ The helper _pygi_argument_to_array() has been improved to work on
+ any kind of
+ array. Fix all call sites of _pygi_argument_to_object() to do the
+ array conversion appropriately before calling
+ _pygi_argument_to_object().
+
+ Adds a test case that implements a GInterface with a method that
+ takes an array
+ of variants as input.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=667244
+
+ gi/pygi-argument.c | 156
+ ++++++++++++++++++++++++++++++++---------------
+ gi/pygi-argument.h | 4 +-
+ gi/pygi-closure.c | 11 ++++
+ gi/pygi-info.c | 20 ++++--
+ gi/pygi-property.c | 1 +
+ gi/pygi-signal-closure.c | 14 ++++-
+ tests/test_gi.py | 18 ++++++
+ 7 files changed, 167 insertions(+), 57 deletions(-)
+
+commit bb80d124269ee2389c04d03a478475868fd9ff7b
+Author: Manuel Quiñones <manuq@laptop.org>
+Date: Wed Jul 11 22:05:41 2012 -0300
+
+ Add conversion of the Gdk.PropMode constants to pygi-convert.sh script
+
+ Signed-off-by: Manuel Quiñones <manuq@laptop.org>
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=679775
+
+ pygi-convert.sh | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit e3a63eefa5fb2abeabd210790e12642e577363c8
+Author: Manuel Quiñones <manuq@laptop.org>
+Date: Wed Jul 11 13:18:16 2012 -0300
+
+ Add the same rules for pack_start to convert pack_end
+
+ Signed-off-by: Manuel Quiñones <manuq@laptop.org>
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=679760
+
+ pygi-convert.sh | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+commit b4bef457c2d0ca6899e06a021f1f06252a37e326
+Author: Dave Malcolm <dmalcolm@redhat.com>
+Date: Wed Jul 11 08:21:27 2012 +0200
+
+ Add error-checking for the case where _arg_cache_new() fails
+
+ This can happen when a typelib and its underlying library are
+ out-of-sync. This
+ converts the segfault into a more helpful traceback.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=678914
+
+ gi/pygi-cache.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 41287d8a439c656e4ac60361fddec643c713234c
+Author: Manuel Quiñones <manuq@laptop.org>
+Date: Wed Jul 11 11:13:38 2012 -0300
+
+ Add conversion of the Gdk.NotifyType constants to pygi-convert.sh
+ script
+
+ Signed-off-by: Manuel Quiñones <manuq@laptop.org>
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=679754
+
+ pygi-convert.sh | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+commit 5403149b900d1b73cbc78767dc43be2eb344c836
+Author: Simon Feltman <s.feltman@gmail.com>
+Date: Tue Jul 10 19:07:32 2012 -0700
+
+ Fix PyObject_Repr and PyObject_Str reference leaks
+
+ Fix all calls to PyObject_Repr() and PyObject_Str() to be properly
+ DECREF'd.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=675857
+
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/_glib/glibmodule.c | 10 +++++++--
+ gi/_gobject/gobjectmodule.c | 17 ++++++++++-----
+ gi/_gobject/pygobject.c | 53
+ ++++++++++++++++++++++++++++++---------------
+ gi/pygi-marshal-from-py.c | 9 +++++---
+ 4 files changed, 62 insertions(+), 27 deletions(-)
+
+commit 0ddfecf3bf0a5d7893cd02cff41503d810ef6ce8
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Wed Jul 4 08:46:30 2012 +0200
+
+ [API add] Gtk overrides: Add TreePath.__len__()
+
+ Use the path depth as length of a Gtk.TreePath object.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=679199
+
+ gi/overrides/Gtk.py | 3 +++
+ tests/test_overrides.py | 4 ++++
+ 2 files changed, 7 insertions(+)
+
+commit e1e849d1a9af77c29ee35971db8d439bac60d573
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Wed Jul 4 08:35:16 2012 +0200
+
+ GLib.Variant: Fix repr(), add proper str()
+
+ Fix the GLib.Variant override's repr() after commit 16280d6985. Also
+ add a
+ proper __str__() method, and tests for both.
+
+ Thanks to Rul Matos for spotting this!
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=679336
+
+ gi/overrides/GLib.py | 6 +++++-
+ tests/test_overrides.py | 5 +++++
+ 2 files changed, 10 insertions(+), 1 deletion(-)
+
+commit af20d7c929b9c1888454b52932a308d346e1c12b
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Thu Jun 28 06:51:22 2012 +0200
+
+ m4/python.m4: Update Python version list
+
+ Thanks to Dieter Verfaillie for pointing this out.
+
+ m4/python.m4 | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+commit a96a26234e2aaa157837d26094864e3ad9b63edf
+Author: Micah Carrick <micah@quixotix.com>
+Date: Mon Jun 25 09:05:59 2012 -0700
+
+ Remove "label" property from Gtk.MenuItem if it is not set
+
+ The Gtk.MenuItem will not render as a separator if the "label" or
+ "user-underline" properties have been accessed. The constructor
+ for Gtk.MenuItem override should not pass the "label" property
+ as an argument if it is None since that will still result in an
+ empty label widget which breaks Gtk.SeparatorMenuItem.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=670575
+
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/overrides/Gtk.py | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+commit afa12faf339efb4f7780168e884ecf49b630644a
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Jun 25 16:36:31 2012 +0200
+
+ configure.ac: Post-release bump to 3.3.4.
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 198066effc0ca44ccb897e9f0738ab627e8b3275
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Jun 25 16:35:49 2012 +0200
+
+ release 3.3.3.1
+
+ NEWS | 3 +++
+ configure.ac | 2 +-
+ 2 files changed, 4 insertions(+), 1 deletion(-)
+
+commit cb70ae0aa52ab7624b2b8c30297d8a52a7db7f44
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Jun 25 16:32:45 2012 +0200
+
+ Do not escape enum and flag names that are Python keywords
+
+ These are translated to upper case, and thus can never be
+ keywords. This broke
+ existing API such as Gtk.ShadowType.IN.
+
+ gi/module.py | 2 +-
+ gi/pygi-info.c | 7 +++++++
+ tests/test_gi.py | 3 +++
+ 3 files changed, 11 insertions(+), 1 deletion(-)
+
+commit f2524a982b0b8ba7cdbb77003372416af0b7a978
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Jun 25 15:39:50 2012 +0200
+
+ configure.ac: Post-release version bump to 3.3.4
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit fe56faa346c8e8f9fd5915602424778d458a776d
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Jun 25 15:36:37 2012 +0200
+
+ release 3.3.3
+
+ NEWS | 15 +++++++++++++++
+ 1 file changed, 15 insertions(+)
+
+commit 299a2fd726f0aceaf67b1cec7a0ef8b21ff7bcbc
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Jun 25 15:35:19 2012 +0200
+
+ Bring back ChangeLog make target
+
+ This is being used by "make dist".
+
+ Makefile.am | 15 +++++++++++++++
+ 1 file changed, 15 insertions(+)
+
+commit 760118e4ed73de2f022706ef897fcc848e90c005
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Jun 25 15:31:14 2012 +0200
+
+ Remove obsolete ChangeLog and release-tag make targets
+
+ Makefile.am | 23 -----------------------
+ 1 file changed, 23 deletions(-)
+
+commit e92278692bb51679d6e957c2ac36db64498a7c73
+Author: Simon Schampijer <simon@schampijer.de>
+Date: Fri Jun 15 16:11:21 2012 +0200
+
+ Do not do any python calls when GObjects are destroyed after the
+ python interpreter has been finalized
+
+ This happens when pygobject_data_free () function is called after
+ the python
+ interpreter shuts down, we can't do python calls after that.
+
+ Benzea did the findings because of a bug in Sugar, and commented
+ in this
+ SugarLabs ticket: http://bugs.sugarlabs.org/ticket/3670
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=678046
+
+ Signed-off-by: Benjamin Berg <benzea@sugarlabs.org>
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/_gobject/pygobject.c | 27 ++++++++++++++++++++++-----
+ 1 file changed, 22 insertions(+), 5 deletions(-)
+
+commit de4aa426002eeb09a060f8fd70bd6cb25a17766a
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Jun 25 15:06:47 2012 +0200
+
+ Do not change constructor-only "type" Window property
+
+ When reading a Gtk.Window subclass from a GtkBuilder object,
+ the object's
+ properties are already set at __init__ time. Do not try to set it
+ again, to
+ avoid a warning.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=678510
+
+ gi/overrides/Gtk.py | 8 +++++++-
+ tests/test_overrides.py | 36 ++++++++++++++++++++++++++++++++++++
+ 2 files changed, 43 insertions(+), 1 deletion(-)
+
+commit 16280d6985f2cf4db9cf062e857650e620fd9da8
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Jun 25 09:40:38 2012 +0200
+
+ Escape identifiers which are Python keywords
+
+ Add a trailing underscore to identifiers which are Python keywords.
+
+ We use a per-major-version static identifier list derived from
+ keyword.kwlist
+ instead of calling out to Python's keyword.iskeyword(). This is
+ much faster,
+ and also allows us to tweak the result. For example, Python 3 dropped
+ "print"
+ as a keyword, but we still want to escape that to avoid breaking
+ the API
+ between different Python versions.
+
+ Error out when building with a major Python version not covered yet,
+ so that we
+ do not forget to update the list in the future.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=676746
+
+ gi/pygi-info.c | 38 +++++++++++++++++++++++++++++++++++++-
+ tests/test_gi.py | 17 +++++++++++++++++
+ 2 files changed, 54 insertions(+), 1 deletion(-)
+
+commit 3864d7a3b7def035ee2daf22ba717371c8d261de
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Fri Jun 22 13:13:37 2012 +0200
+
+ Ignore E123 in pep8 tests
+
+ This is "closing bracket does not match indentation of opening
+ bracket's line",
+ but it really looks better to have the closing bracket on the
+ indentation level
+ of the opening bracket instead of the indentation level of the
+ line that
+ contains the opening bracket.
+
+ tests/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit fb436dd6d3b40b3f2a8ba6f402e2987752ad1902
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Fri Jun 22 13:08:34 2012 +0200
+
+ PEP8: Fix indentation
+
+ Spotted by current pep8 checker.
+
+ demos/gtk-demo/demos/Entry/entry_buffer.py | 6 +--
+ demos/gtk-demo/demos/Entry/entry_completion.py | 6 +--
+ demos/gtk-demo/demos/Entry/search_entry.py | 4 +-
+ demos/gtk-demo/demos/appwindow.py | 2 +-
+ demos/gtk-demo/demos/clipboard.py | 8 +--
+ demos/gtk-demo/demos/colorselector.py | 6 +--
+ demos/gtk-demo/demos/rotatedtext.py | 8 +--
+ demos/gtk-demo/gtk-demo.py | 6 +--
+ examples/option.py | 29 ++++++-----
+ examples/signal.py | 3 +-
+ gi/_glib/option.py | 6 +--
+ gi/_gobject/propertyhelper.py | 18 +++----
+ gi/module.py | 14 +++---
+ gi/overrides/GLib.py | 2 +-
+ gi/overrides/Gio.py | 11 +++--
+ gi/overrides/Gtk.py | 16 +++---
+ gi/pygtkcompat.py | 7 ++-
+ gi/types.py | 17 ++++---
+ tests/runtests.py | 2 +-
+ tests/test_gdbus.py | 55 +++++++++++----------
+ tests/test_gi.py | 15 +++---
+ tests/test_gobject.py | 18 +++----
+ tests/test_option.py | 26 +++++-----
+ tests/test_overrides.py | 67
+ +++++++++++++-------------
+ tests/test_properties.py | 30 ++++++------
+ tests/test_signal.py | 2 +-
+ tests/test_uris.py | 9 ++--
+ 27 files changed, 200 insertions(+), 193 deletions(-)
+
+commit 129462ccc4a2191ecbb42247030c91bd0f1454f6
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Fri Jun 22 12:36:54 2012 +0200
+
+ PEP8: Use isinstance() instead of direct type comparisons
+
+ Spotted by current pep8 checker.
+
+ gi/overrides/GLib.py | 2 +-
+ gi/overrides/__init__.py | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 50e45a624e6301e65c150e137aad6d092f203f3f
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Fri Jun 22 12:30:10 2012 +0200
+
+ PEP8: Fix continuation lines
+
+ Spotted by current pep8 checker.
+
+ demos/gtk-demo/demos/Entry/search_entry.py | 6 +++---
+ gi/__init__.py | 6 +++---
+ gi/_gobject/__init__.py | 6 ++----
+ gi/module.py | 6 +++---
+ tests/test_overrides.py | 11 +++--------
+ 5 files changed, 14 insertions(+), 21 deletions(-)
+
+commit ef06548b0dc6aee0e8ab208a78966dc1d5d917ee
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Fri Jun 22 12:24:32 2012 +0200
+
+ PEP8: Consistent comparisons against True, False, and None
+
+ Spotted by current pep8 checker.
+
+ demos/gtk-demo/demos/clipboard.py | 4 ++--
+ demos/gtk-demo/demos/drawingarea.py | 4 ++--
+ demos/gtk-demo/gtk-demo.py | 8 ++++----
+ gi/overrides/Gdk.py | 2 +-
+ gi/overrides/Gtk.py | 2 +-
+ tests/test_gi.py | 4 ++--
+ tests/test_overrides.py | 3 +--
+ 7 files changed, 13 insertions(+), 14 deletions(-)
+
+commit 379c1474a071292a1e8da413af2f5438cff09fc8
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Wed Jun 20 12:23:12 2012 +0200
+
+ Fix crash in GLib.find_program_in_path()
+
+ We need to handle a NULL return value properly.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=678119
+
+ gi/_glib/glibmodule.c | 10 ++++++++--
+ tests/Makefile.am | 1 +
+ tests/test_glib.py | 15 +++++++++++++++
+ 3 files changed, 24 insertions(+), 2 deletions(-)
+
+commit 73531fd7820bd1922347bd856298d68205a27877
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Wed Jun 20 11:16:39 2012 +0200
+
+ Revert "Do not bind gobject_get_data() and gobject_set_data()"
+
+ We should have some deprecation period for this, so bring back
+ these two
+ methods and add deprecation warnings.
+
+ This reverts commit 24cc09a7105299805fcc5bc151f53ac69958d728.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=641944
+
+ gi/_gobject/pygobject.c | 44 ++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 44 insertions(+)
+
+commit a0daa843801658929ffee5bcb9eb67d955dc7921
+Author: David Keijser <keijser@gmail.com>
+Date: Mon Jun 18 15:09:34 2012 +0200
+
+ GVariant: Raise proper TypeError on invalid tuple input
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=678317
+
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/overrides/GLib.py | 4 ++--
+ tests/test_overrides.py | 1 +
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+commit fb39ba934180e1e48fd15774e69d1cecf47a4c84
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Jun 5 19:11:38 2012 +0200
+
+ configure.ac: Post-release bump to 3.3.3
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 7f0995e7fa865ebde7490d0570a7135a2f962cdf
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Jun 5 19:09:12 2012 +0200
+
+ Release 3.3.2
+
+ NEWS | 44 ++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 44 insertions(+)
+
+commit 8209c1ae1632c77768699481e574d5d378956e71
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Jun 5 19:04:49 2012 +0200
+
+ Fix "release-news" make target
+
+ Actually list changes since the previous release, not since 3.1.92.
+
+ Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit b21f66d2a399b8c9a36a1758107b7bdff0ec8eaa
+Author: Bastian Winkler <buz@netbuz.org>
+Date: Wed May 9 19:04:01 2012 +0200
+
+ foreign: Register cairo.Path and cairo.FontOptions foreign structs
+
+ They are rarely used, but they are used at least by Gdk, PangoCairo
+ and
+ Clutter.
+
+ clutter.Path is not used by any API that the test suite uses, so
+ leave that
+ without a test for now.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=677388
+
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/pygi-foreign-cairo.c | 85
+ ++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_everything.py | 8 +++++
+ 2 files changed, 93 insertions(+)
+
+commit 635a7d1b48d99ddd1ea123797c493b18b0cdfd45
+Author: Marien Zwart <marien.zwart@gmail.com>
+Date: Wed May 23 01:51:46 2012 +0200
+
+ Check types in GBoxed assignments
+
+ Check if the Python value is GBoxed instead of assuming it is.
+ Without this, the following segfaults:
+
+ from gi.repository import Soup
+
+ msg = Soup.Message()
+ msg.props.uri = 'http://www.gnome.org'
+
+ as we assume the new property is a GBoxed while it is actually a
+ string.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=676603
+
+ Co-authored-by: Martin Pitt <martinpitt@gnome.org>
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/pygi-argument.c | 10 +++++++---
+ tests/test_gi.py | 19 +++++++++++++++++++
+ 2 files changed, 26 insertions(+), 3 deletions(-)
+
+commit 2305dcd7e8841f87dc2fc683390df78453a5dc2a
+Author: Bastian Winkler <buz@netbuz.org>
+Date: Sat May 12 14:08:51 2012 +0200
+
+ [API add] Gtk overrides: Add TreeModelRow.get_previous()
+
+ TreeModelRow has get_next() and a next property, it should also have
+ get_previous() and previous.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=677389
+
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/overrides/Gtk.py | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+commit 5501fba534696974899f2591929bff9e1b6ecd65
+Author: Bastian Winkler <buz@netbuz.org>
+Date: Sat May 12 13:50:02 2012 +0200
+
+ [API add] Add missing GObject.TYPE_VARIANT
+
+ Add TYPE_VARIANT to constants to make it accessible as
+ GObject.TYPE_VARIANT.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=677387
+
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/_gobject/__init__.py | 1 +
+ gi/_gobject/constants.py | 1 +
+ 2 files changed, 2 insertions(+)
+
+commit 4c51a5411092f8ab6f8f6e9692a9b49692f621a7
+Author: Jasper St. Pierre <jstpierre@mecheye.net>
+Date: Fri Jun 1 02:53:13 2012 -0400
+
+ Fix boxed type equality
+
+ Each boxed type has its own Python type, not PyGBoxed_Type. Use
+ PyObject_IsInstance instead of comparing against PyGBoxed_Type
+ directly.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=677249
+
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/_gobject/pygboxed.c | 3 ++-
+ tests/test_everything.py | 8 ++++++++
+ 2 files changed, 10 insertions(+), 1 deletion(-)
+
+commit dc8eef26906753fcb3ce057b23ca110137897fa5
+Author: Jose Rostagno <joserostagno@vijona.com.ar>
+Date: Fri Jun 1 13:43:38 2012 +0200
+
+ Fix TestProperties.testBoxed test
+
+ A typo was preventing the test from being run.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=676644
+
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ tests/test_properties.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 853e6a71234ebd66af5a64dfb296e323c2c905a6
+Author: Carlos Garnacho <carlos@lanedo.com>
+Date: Thu May 17 17:09:15 2012 +0200
+
+ Fix handling of by-reference structs as out parameters
+
+ When marshalling back from python, copy the result of by-reference
+ structs into the memory expected by the native caller, instead of
+ attempting to handle it as a pointer.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=653151
+
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/pygi-closure.c | 17 +++++++++++++++++
+ tests/test_gi.py | 5 +++++
+ 2 files changed, 22 insertions(+)
+
+commit bac9d526f6a9774821d1c9c0e7b35cc6db942975
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Fri Jun 1 12:28:53 2012 +0200
+
+ tests: Add more vfunc checks for GIMarshallingTestsObject
+
+ tests/test_gi.py | 25 +++++++++++++++++++++++++
+ 1 file changed, 25 insertions(+)
+
+commit e1aaf4a48453be0e69e7f3a70a2e7a790871a4d2
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Fri Jun 1 12:02:55 2012 +0200
+
+ Test caller-allocated GValue out parameter
+
+ This came up as a side issue in
+ https://bugzilla.gnome.org/show_bug.cgi?id=653151
+
+ tests/test_gi.py | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit edc17e703e1a05e20545d3df9167ceb076450443
+Author: Bastian Winkler <buz@netbuz.org>
+Date: Wed May 16 11:13:05 2012 +0200
+
+ GObject.bind_property: Support transform functions
+
+ Add support for optional transformation functions to
+ pygobject_bind_property(). It uses a custom PyGClosure to marshal the
+ return value correctly.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=676169
+
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/_gobject/pygobject.c | 130
+ +++++++++++++++++++++++++++++++++++++++++++++---
+ tests/test_gobject.py | 59 ++++++++++++++++++++++
+ 2 files changed, 181 insertions(+), 8 deletions(-)
+
+commit 07a08b49aae83a297e2f91240448314e4663f724
+Author: Carlos Garnacho <carlos@lanedo.com>
+Date: Mon May 14 15:31:14 2012 +0200
+
+ Fix lookup of vfuncs in parent classes
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672864.
+
+ As subclasses implemented in python override the attribute for the
+ vfunc, __mro__ has to be used so subclasses of the subclass overriding
+ methods may find the corresponding VFuncInfo.
+
+ Co-Authored-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/types.py | 6 +++---
+ tests/test_gi.py | 27 +++++++++++++++++++++++++++
+ 2 files changed, 30 insertions(+), 3 deletions(-)
+
+commit b965ee15bac6cd28d16d32205d96d2b1bdd3f0e1
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Fri Jun 1 08:18:40 2012 +0200
+
+ tests/test_properties.py: Fix whitespace
+
+ The pep8 check failed on this.
+
+ tests/test_properties.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 274d60a7c08d74a299f4b83d8054c00eadb4bdbd
+Author: Jasper St. Pierre <jstpierre@mecheye.net>
+Date: Wed May 30 16:45:53 2012 -0400
+
+ gi: Support zero-terminated arrays with length arguments
+
+ Sometimes, you may see (array zero-terminated=1 length=length)
+ annotations.
+ Don't expose the length argument to the user in this case.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=677124
+
+ gi/pygi-cache.c | 13 ++++---------
+ tests/test_gi.py | 3 +++
+ 2 files changed, 7 insertions(+), 9 deletions(-)
+
+commit 62c2e962a225ec2527aa3d7406aa0dae232a0886
+Author: Jasper St. Pierre <jstpierre@mecheye.net>
+Date: Fri May 25 17:09:55 2012 -0400
+
+ Fix build
+
+ libregress now needs cairo-gobject
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 9477f0f2f17a6d9b97e5ee08378bc009b8d4c30a
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon May 14 15:48:34 2012 +0200
+
+ Fix comment in previous commit
+
+ tests/test_gobject.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 6610428394d0c65987de5021bf2c38641cdb7116
+Author: Simon Feltman <s.feltman@gmail.com>
+Date: Tue May 8 20:04:09 2012 -0700
+
+ [API add] Add GObject.bind_property method
+
+ This adds the "bind_property" method for binding two gobject
+ properties
+ together. The method returns a weak reference to a GBinding object.
+ The BindingWeakRef object is used to manage GBinding objects within
+ python
+ created through GObject.bind_property. It is a sub-class
+ PyGObjectWeakRef so
+ that we can maintain the same reference counting semantics between
+ Python
+ and GObject Binding objects. This gives explicit direct control of the
+ binding lifetime by using the "unbind" method on the BindingWeakRef
+ object
+ along with implicit management based on the lifetime of the source or
+ target objects.
+
+ Note this does not yet include support for converter closures. This
+ can come
+ later after the initial implementation is accepted.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=675582
+
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/_gobject/pygobject.c | 104
+ +++++++++++++++++++++++++++++++++++++++++++++++-
+ tests/test_gobject.py | 90 +++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 193 insertions(+), 1 deletion(-)
+
+commit 88babe7377402f6e6f912a8b83615aab848eae81
+Author: Jose Rostagno <joserostagno@vijona.com.ar>
+Date: Fri May 11 19:08:47 2012 -0300
+
+ pygtkcompat: Correctly set flags
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=675911
+
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/pygtkcompat.py | 5 ++---
+ tests/test_pygtkcompat.py | 1 +
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+commit 3f712b56397296bca2f5358cd52977b1a2011964
+Author: Jose Rostagno <joserostagno@vijona.com.ar>
+Date: Fri May 11 12:39:05 2012 -0300
+
+ Gtk overrides: Implement __delitem__ on TreeModel
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=675892
+
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/overrides/Gtk.py | 16 ++++++++++++----
+ tests/test_overrides.py | 9 +++++++++
+ 2 files changed, 21 insertions(+), 4 deletions(-)
+
+commit 9a1a07742ec0b1821d469603f9996a2b7d832f40
+Author: Simon Feltman <s.feltman@gmail.com>
+Date: Sun May 6 18:10:39 2012 -0700
+
+ Gdk Color override should support red/green/blue_float properties
+
+ Added red_float, green_float, and blue_float properties to Color.
+ Also added Color.from_floats, RGBA.to_color, and RGBA.from_color.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=675579
+
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/overrides/Gdk.py | 44 ++++++++++++++++++++++++++++++++++++++++++++
+ tests/Makefile.am | 2 +-
+ tests/test_overrides.py | 17 +++++++++++++++++
+ 3 files changed, 62 insertions(+), 1 deletion(-)
+
+commit d9608c332d9592f03545b110cfac8105453ea035
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Sat May 5 12:42:42 2012 -0700
+
+ Support marshalling of GVariants for closures
+
+ Add GVariant handling to pyg_value_{as,from}_pyobject(), so that
+ closures can
+ be called with GVariant arguments and return GVariant.
+
+ Unmark the corresponding test case as "expected failure", and also
+ add cases
+ for None values and type mismatches.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=656554
+
+ gi/_gobject/pygtype.c | 47
+ +++++++++++++++++++++++++++++++++++++++++++++--
+ tests/test_everything.py | 16 ++++++++++++----
+ 2 files changed, 57 insertions(+), 6 deletions(-)
+
+commit e7a909c16dc1c625ab11e270f23d540f15c71767
+Author: Johan Dahlin <johan@gnome.org>
+Date: Mon May 7 10:33:40 2012 -0300
+
+ Require gobject-introspection 1.33.0
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 9e8239684433631e0d1650d25416e4d7bf92a058
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Sun May 6 18:28:23 2012 -0700
+
+ NEWS: Add API additions since 3.2.0
+
+ NEWS | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+commit d1a2bf51eb25b54028fbf496d20dfad9546bcb5e
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Sun May 6 18:25:23 2012 -0700
+
+ NEWS: Mark API changes since 3.2.0
+
+ NEWS | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit a3329539291bd8ea9aa6cb184a05ea7c21f8885a
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Sun May 6 18:19:35 2012 -0700
+
+ Fix commit 168a087 for Python 3
+
+ Simplify the type check and use the already existing one. Fix the
+ string check
+ to work with both Python 2 and 3.
+
+ gi/pygi-argument.c | 42 +++++++++---------------------------------
+ 1 file changed, 9 insertions(+), 33 deletions(-)
+
+commit 42c717ed77613e02f3c8ef2685bc071462b87d73
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Sun May 6 18:08:57 2012 -0700
+
+ pygtkcompat.py: Typo fix
+
+ Was missing a space around operator, causing the PEP8 check to fail.
+
+ gi/pygtkcompat.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 168a08753cec1ff77ccca5d81b9a5fd2af5d3720
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Sun May 6 18:02:04 2012 -0700
+
+ _pygi_argument_from_object(): Check for compatible data type
+
+ Verify that the passed PyObject actually matches the expected type
+ of the
+ argument. With this, trying to assign a wrong type to a property
+ will now raise
+ a proper TypeError.
+
+ gi/pygi-argument.c | 39 +++++++++++++++++++++++++++++++++++++++
+ gi/pygi-property.c | 3 +++
+ tests/test_gi.py | 40 ++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 82 insertions(+)
+
+commit 5948b62ba3e08ea943e6965ee38c94c363186226
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Sun May 6 17:59:57 2012 -0700
+
+ pygtkcompat: Fix color conversion
+
+ gtk_style_context_get_background_color() returns a GdkRGBA value,
+ which has
+ float values between 0 and 1. However, we construct a GdkColor
+ object from
+ that, so we need to scale to 0..65535 and round to int.
+
+ gi/pygtkcompat.py | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 6af74c501bc604559f8b5b4e0d856d022ed882bb
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Sun May 6 06:02:31 2012 -0700
+
+ test_gi: Check setting properties in constructor
+
+ tests/test_gi.py | 33 +++++++++++++++++++++++++++++++++
+ 1 file changed, 33 insertions(+)
+
+commit 9f50fd214e4214f83959b2883a0c667f7f157c97
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Sun May 6 05:50:00 2012 -0700
+
+ Support getting and setting GStrv properties
+
+ gi/pygi-property.c | 36 ++++++++++++++++++++++++++++++++++++
+ tests/test_gi.py | 11 +++++++++++
+ 2 files changed, 47 insertions(+)
+
+commit 8321af2c7df499291e664c676376f149a0c3dcac
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Sat May 5 13:58:29 2012 -0700
+
+ Support defining GStrv properties from Python
+
+ gi/_gobject/propertyhelper.py | 10 ++++++--
+ tests/test_properties.py | 58
+ +++++++++++++++++++++++++++++++++++++++++--
+ 2 files changed, 64 insertions(+), 4 deletions(-)
+
+commit f2494526e1c579c41babfe7ff67deef0f6966adf
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Sat May 5 13:21:20 2012 -0700
+
+ Add GObject.TYPE_STRV constant
+
+ gi/_gobject/__init__.py | 1 +
+ gi/_gobject/constants.py | 1 +
+ tests/test_everything.py | 2 +-
+ tests/test_signal.py | 2 +-
+ 4 files changed, 4 insertions(+), 2 deletions(-)
+
+commit 8c7306e4d6355ca45f8f1b4adf7d0595b4e8bcf8
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Sat May 5 09:28:36 2012 +0200
+
+ Unref GVariants when destroying the wrapper
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=675472
+
+ gi/overrides/GLib.py | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit d6c091d87c86c8ccc7cb54347fbceccedac61633
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Sat May 5 09:23:55 2012 +0200
+
+ Fix TestArrayGVariant test cases
+
+ test_array_gvariant_container_in() and test_array_gvariant_full_in()
+ called
+ GIMarshallingTests.array_gvariant_none_in(), presumably a copy&paste
+ error.
+ Actually do what they mean to do now and call the corresponding
+ GIMarshallingTests methods.
+
+ tests/test_gi.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit fda8a069d503e63c76a6b1ba285a181822549059
+Author: Jose Rostagno <joserostagno@vijona.com.ar>
+Date: Sat May 5 08:52:41 2012 +0200
+
+ pygtkcompat: Add gdk.pixbuf_get_formats compat code
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=675489
+
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/pygtkcompat.py | 20 ++++++++++++++++++++
+ tests/test_pygtkcompat.py | 8 ++++++++
+ 2 files changed, 28 insertions(+)
+
+commit 2b49c5f58bb841de7a9077eeeaf996eb9851dab3
+Author: Jose Rostagno <joserostagno@vijona.com.ar>
+Date: Mon Apr 30 13:44:19 2012 -0300
+
+ pygtkcompat: Add some more compat functions
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=675489
+
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/pygtkcompat.py | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+commit 16fbb17a9fd17eeb9f886af99e89a214d328dae1
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Thu May 3 12:25:04 2012 +0200
+
+ Fix tests for Python 3
+
+ cmp() does not exist any more in Python 3, replace with comparison
+ operators.
+
+ GIMarshallingTests.array_in_nonzero_nonlen() expects a guint8 array,
+ so we
+ can't pass a str (which is an Unicode object in Python 3). Pass a
+ byte array
+ instead.
+
+ tests/test_gi.py | 2 +-
+ tests/test_overrides.py | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit fd7f8eefbe8aba0b29d80e3eb9d985d33a268c8a
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Thu May 3 09:38:56 2012 +0200
+
+ Fix building with --disable-cairo
+
+ Build gobject-introspection's regress.c against cairo, not
+ pycairo/py3cairo. We
+ always need cairo to build, so unconditionally check for this in
+ configure.ac.
+
+ In test_everything.py, gracefully handle the absence of the "cairo"
+ Python
+ module, which we do not have when building without cairo support.
+
+ configure.ac | 3 +++
+ tests/Makefile.am | 4 ++--
+ tests/test_everything.py | 8 +++++++-
+ 3 files changed, 12 insertions(+), 3 deletions(-)
+
+commit 1c5634e6d98c8b67b37a2747951c66f5d8f1907d
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Thu May 3 09:28:51 2012 +0200
+
+ tests: Fix deprecated assertions
+
+ assertAlmostEquals → assertAlmostEqual
+ assertNotEquals → assertNotEqual
+
+ tests/test_everything.py | 4 ++--
+ tests/test_gi.py | 12 ++++++------
+ tests/test_overrides.py | 10 +++++-----
+ 3 files changed, 13 insertions(+), 13 deletions(-)
+
+commit 07f312e66c07357168098d3f96813d2c997e8dc7
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Wed May 2 12:08:19 2012 +0200
+
+ Run tests with MALLOC_PERTURB_
+
+ We mostly use the glib allocation functions, but this might
+ help to uncover access to already freed or uninitialized memory in
+ a few edge
+ cases.
+
+ tests/Makefile.am | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit b0740d386c2cbbd153878209b584b568968e4d98
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Apr 30 16:26:57 2012 +0200
+
+ configure.ac: Post-release bump to 3.3.2
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit d3977266faadacd3d05705497c1cf51a01a6606f
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Apr 30 16:08:09 2012 +0200
+
+ Release 3.3.1
+
+ NEWS | 66
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 66 insertions(+)
+
+commit a8e222f04aac3bcf7e4421c4da8d080eeb8b5f56
+Author: Giovanni Campagna <gcampagna@src.gnome.org>
+Date: Sun Apr 29 23:55:15 2012 +0200
+
+ GSettings: allow extra keyword arguments
+
+ All GObject constructors are expected to accept any construct
+ property as keyword argument, and overrides should respect that.
+ In particular, not doing this for GSettings prevents using a custom
+ GSettingsSchema.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=675105
+
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/overrides/Gio.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 592c67482c254f65817c1a1b5c5de5dfcaab31b4
+Author: Jose Rostagno <joserostagno@vijona.com.ar>
+Date: Sun Apr 29 12:56:50 2012 -0300
+
+ pygtkcompat: Correct Userlist module use
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=675084
+
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/pygtkcompat.py | 2 +-
+ tests/test_pygtkcompat.py | 4 ++++
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+
+commit 3551462a429ef30274fa01fc8111da5025f9c342
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Sun Apr 29 20:17:47 2012 +0200
+
+ Add release-news make rule
+
+ This produces a commit log since the previous release in our
+ current NEWS
+ format. This does not currently wrap long lines automatically, though.
+
+ Do include bug numbers from now on, as they are very useful.
+
+ Makefile.am | 12 ++++++++++--
+ 1 file changed, 10 insertions(+), 2 deletions(-)
+
+commit fe79ef612a7853f024b73c7997b8ec89015ae94c
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Wed Apr 25 13:07:59 2012 +0200
+
+ Add "make check.nemiver" target
+
+ Similar to "check.gdb", but invokes nemiver.
+
+ Makefile.am | 3 +++
+ tests/Makefile.am | 3 +++
+ 2 files changed, 6 insertions(+)
+
+commit 3090cc70a7ce8df38dd6cf6c17350417a7367c0b
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Apr 24 13:24:00 2012 +0200
+
+ Test flags and enums in GHash values
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=637466
+
+ tests/test_everything.py | 18 ++++++++++++------
+ 1 file changed, 12 insertions(+), 6 deletions(-)
+
+commit 88d189ec3e3d900a96496a50c1d6e76615b19558
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Apr 24 13:03:36 2012 +0200
+
+ tests: Activate test_hash_in and apply workaround
+
+ Work around pygobject's current inability to produce a GStrv object
+ from a
+ string array by explicitly producing a GStrV object, and reactivate
+ test case.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=666636
+
+ tests/test_everything.py | 24 +++++++++++++-----------
+ 1 file changed, 13 insertions(+), 11 deletions(-)
+
+commit 8ee21619b3cfc179cf114813478470d9aa3f6fb8
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Apr 23 12:33:09 2012 +0200
+
+ Add special case for Gdk.Atom array entries from Python
+
+ Gdk.Atom pretends to be a struct pointer, but is really just an
+ int wrapped
+ into a pointer. So we must not dereference it directly, nor free
+ it, but
+ instead just copy the pointer value.
+
+ Also add a few other test cases for "single Atom return", "single
+ Atom argument
+ in", and Atom GList return", which already work fine.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=661709
+
+ gi/pygi-marshal-from-py.c | 18 ++++++++++++++----
+ tests/Makefile.am | 1 +
+ tests/test_atoms.py | 41 +++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 56 insertions(+), 4 deletions(-)
+
+commit b9f24b4fbc2ca9f9b94b86f029c59b2fc3e8590f
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Apr 23 20:09:43 2012 +0200
+
+ test_gdbus: Call GetConnectionUnixProcessID() with correct signature
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=667954
+
+ tests/test_gdbus.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 3ae38d7519524288a57e5d522954b9d6725f0185
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Apr 23 18:47:34 2012 +0200
+
+ Add test case for Gtk.ListStore custom sort
+
+ This works in Python 2, but crashes in Python 3, another case of
+ the segfaults
+ we get when C calls a Python callback in Python 3.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=674475
+
+ tests/test_overrides.py | 31 +++++++++++++++++++++++++++++++
+ 1 file changed, 31 insertions(+)
+
+commit c12b10ca0feaaf61f23354c7b6631a9ef3635c36
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Apr 23 17:40:23 2012 +0200
+
+ GTK overrides: Add missing keyword arguments
+
+ Add missing **kwargs to overridden __init__() constructors, to
+ allow specifying
+ arbitrary widget properties.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=660018
+
+ gi/overrides/Gtk.py | 34 ++++++++++++++++++----------------
+ tests/test_overrides.py | 6 ++++++
+ 2 files changed, 24 insertions(+), 16 deletions(-)
+
+commit d37680bb9390426f7f58ea3d352c3e5e2106e978
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Apr 23 15:24:04 2012 +0200
+
+ Add missing override for TreeModel.iter_previous()
+
+ This should behave like the override for TreeModel.iter_next().
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=660018
+
+ gi/overrides/Gtk.py | 6 ++++++
+ tests/test_overrides.py | 4 ++++
+ 2 files changed, 10 insertions(+)
+
+commit e03284f852f0e404cc91374f3e2e42b0ac1977b4
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Sun Apr 22 16:45:06 2012 +0200
+
+ pygi-convert.py: Drop obsolete drag method conversions
+
+ Drop conversion of drag_source_unset() and drag_dest_{,un}set(). These
+ were
+ fixed a while ago to be proper Widget methods again.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=652860
+
+ pygi-convert.sh | 3 ---
+ 1 file changed, 3 deletions(-)
+
+commit f82eca6006dec21624796074af8ffe9b2256f7a4
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Sat Apr 21 14:00:50 2012 +0200
+
+ tests: Replace deprecated assertEquals() with assertEqual()
+
+ tests/test_everything.py | 144 ++++++-------
+ tests/test_gi.py | 502
+ +++++++++++++++++++++++-----------------------
+ tests/test_gobject.py | 58 +++---
+ tests/test_option.py | 6 +-
+ tests/test_overrides.py | 352 ++++++++++++++++----------------
+ tests/test_properties.py | 18 +-
+ tests/test_pygtkcompat.py | 42 ++--
+ 7 files changed, 561 insertions(+), 561 deletions(-)
+
+commit ddb0bf01e694585d58af52673a21796e7c9578ea
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Sat Apr 21 12:02:54 2012 +0200
+
+ Plug tiny leak in constant_info_get_value
+
+ Fixes https://bugzilla.gnome.org/show_bug.cgi?id=642754
+
+ gi/pygi-info.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 9c48a561c5ee010410df7d6e430353b41d5fbd88
+Author: Bastian Winkler <buz@netbuz.org>
+Date: Thu Apr 12 20:30:05 2012 +0200
+
+ Fix len_arg_index for array arguments
+
+ Don't set len_arg_index for arrays without the length annotation
+ given.
+ This fixes methods like Clutter.Texture.set_from_rgb_data() and
+ Clutter.Image.set_data()
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=674271
+
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/pygi-cache.c | 4 +++-
+ gi/pygi-marshal-cleanup.c | 4 ++--
+ tests/test_gi.py | 3 +++
+ 3 files changed, 8 insertions(+), 3 deletions(-)
+
+commit 71246ca0568bf3e9b81e88dd13b6d29e9417e313
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Thu Apr 19 13:11:56 2012 +0200
+
+ Support defining GType properties from Python
+
+ Commit 84e3471 fixed the handling of GType properties for properties
+ that are
+ defined in the C library already. Add the missing support for
+ defining such
+ properties in Python as well.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=674351
+
+ gi/_gobject/gobjectmodule.c | 5 ++++-
+ gi/_gobject/propertyhelper.py | 9 ++++++---
+ tests/test_properties.py | 42
+ +++++++++++++++++++++++++++++++++++++++---
+ 3 files changed, 49 insertions(+), 7 deletions(-)
+
+commit 2158ecd05a2770d6538bae67d01d1f718855a7d4
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Thu Apr 19 16:12:29 2012 +0200
+
+ Fix typo in previous commit
+
+ In the test case, actually assign the newly created object, so that
+ we test the
+ properties of the right object.
+
+ tests/test_everything.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 84e3471ba4595534cbe6875f1c8b77776e1d1814
+Author: Bastian Winkler <buz@netbuz.org>
+Date: Wed Apr 18 21:44:08 2012 +0200
+
+ Handle GType properties correctly
+
+ Fix conversion from/to properties of type G_TYPE_GTYPE
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=674351
+
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/_gobject/pygtype.c | 9 +++++++--
+ tests/test_everything.py | 15 +++++++++++++++
+ 2 files changed, 22 insertions(+), 2 deletions(-)
+
+commit d1362451e070e156d2f49c9cde930cc38befb12b
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Thu Apr 19 07:27:10 2012 +0200
+
+ Add missing GObject.TYPE_GTYPE
+
+ gi/_gobject/__init__.py | 1 +
+ gi/_gobject/constants.py | 1 +
+ 2 files changed, 2 insertions(+)
+
+commit d3225f1540e09719caa73e52d402e946da3add24
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Apr 10 12:44:00 2012 +0200
+
+ Fix test_mainloop.py for Python 3
+
+ tests/test_mainloop.py | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+commit 903283119896f3e054694484da4147788b02ce60
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Mon Apr 9 15:20:39 2012 +0200
+
+ Make callback exception propagation test stricter
+
+ Propagating Python exceptions from callbacks through the C context
+ back to the
+ original caller does not currently happen, is nontrivial/unsafe
+ to implement,
+ and not desirable at this point any more as by now we have established
+ the
+ current behaviour. So remove the catching of ZeroDivisionError in
+ the tests.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=616279
+
+ tests/test_everything.py | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+commit 0fd900d351c8d7d57dc6a1b049ee05f342f6ab1d
+Author: Simon Feltman <s.feltman@gmail.com>
+Date: Sun Mar 18 15:59:58 2012 -0700
+
+ Add context management to freeze_notify() and handler_block().
+
+ These methods now return a context manager object. Within the
+ __exit__ method
+ thaw_notify() and handler_unblock() are called respectively. This
+ allows
+ statements like the following:
+
+ with obj.freeze_notify():
+ obj.props.width = 100
+ obj.props.height = 100
+ obj.props.opacity = 0.5
+
+ This does not affect standard usage of these methods.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672324
+
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/_gobject/pygobject.c | 138 +++++++++++++++++++++++++++++++++++++++---
+ tests/test_gobject.py | 158
+ ++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 288 insertions(+), 8 deletions(-)
+
+commit c0922589964c1d8bffe5a56d2f56df96eedfac10
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Wed Apr 4 19:08:54 2012 +0200
+
+ Add support for GFlags properties
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=620943
+
+ gi/_gobject/propertyhelper.py | 9 +++++++--
+ tests/test_properties.py | 28 +++++++++++++++++++++++++++-
+ 2 files changed, 34 insertions(+), 3 deletions(-)
+
+commit d4054be9de3b7e4ed64c8172ebbde0a697462c79
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Wed Apr 4 17:54:52 2012 +0200
+
+ Wrap GLib.Source.is_destroyed() method
+
+ Based on original patch from Bryan Silverthorn.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=524719
+
+ gi/_glib/pygsource.c | 15 +++++++++++++++
+ tests/test_source.py | 24 ++++++++++++++++++++++++
+ 2 files changed, 39 insertions(+)
+
+commit 05030a95a4d3090162ed5f510a26d69bbb152942
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Wed Apr 4 15:59:24 2012 +0200
+
+ Fix error message when trying to override a non-GI class
+
+ Based on original patch by Juanje Ojeda <jojeda@emergya.es>.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=646667
+
+ gi/overrides/__init__.py | 7 ++++---
+ tests/test_overrides.py | 13 +++++++++++++
+ 2 files changed, 17 insertions(+), 3 deletions(-)
+
+commit 96f14989baea76fe8692f10c1a37e2dfc45fecbf
+Author: Steve Frécinaux <code@istique.net>
+Date: Wed Apr 4 15:30:55 2012 +0200
+
+ Fix segfault when accessing __grefcount__ before creating the GObject
+
+ When creating a new instance using Type() and trying to access
+ __grefcount__ before calling the subclass's __init__ function, there
+ used to be a segmentation fault because we were trying to access the
+ not yet created object. Now raise a proper exception instead.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=640434
+
+ Co-authored-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/_gobject/pygobject.c | 4 ++++
+ tests/test_gobject.py | 11 +++++++++++
+ 2 files changed, 15 insertions(+)
+
+commit 24cc09a7105299805fcc5bc151f53ac69958d728
+Author: Steve Frécinaux <code@istique.net>
+Date: Wed Feb 9 18:37:33 2011 +0100
+
+ Do not bind gobject_get_data() and gobject_set_data()
+
+ They will basically cause a crash if misused, and you can always use a
+ python member attribute instead.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=641944
+
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/_gobject/pygobject.c | 40 ----------------------------------------
+ 1 file changed, 40 deletions(-)
+
+commit 2a5a33a9c9c170830c98c2e32fa8dcea3c35f2e6
+Author: Martin Pitt <martinpitt@gnome.org>
+Date: Tue Apr 3 22:26:34 2012 +0200
+
+ Add test case for multiple GLib.MainLoop instances
+
+ Commit 832f16f9 fixed a lockup with multiple GLib.MainLoops. Add
+ corresponding
+ test case.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=663068
+
+ tests/test_mainloop.py | 25 ++++++++++++++++++++++++-
+ 1 file changed, 24 insertions(+), 1 deletion(-)
+
+commit d03696c1aaa7e66f8f16554cf4a4b97addb5aea1
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Feb 21 15:13:42 2012 +0100
+
+ Add a ccallback type which is used to invoke callbacks passed to
+ a vfunc
+
+ Used when overriding methods like gtk_container_forall wich pass in a
+ callback that needs to be executed on internal children:
+ def do_forall(self, callback, userdata):
+ callback(self.custom_child, userdata)
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=644926
+
+ Co-authored-by: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+ Co-authored-by: Simon Schampijer <simon@laptop.org>
+
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ gi/Makefile.am | 2 +
+ gi/gimodule.c | 1 +
+ gi/module.py | 5 +++
+ gi/pygi-argument.c | 12 +----
+ gi/pygi-cache.c | 28 ++++++++++--
+ gi/pygi-cache.h | 9 ++--
+ gi/pygi-ccallback.c | 100
+ ++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-ccallback.h | 41 +++++++++++++++++
+ gi/pygi-closure.c | 50 ++++++++++++++++++++-
+ gi/pygi-invoke-state-struct.h | 2 +
+ gi/pygi-invoke.c | 73 ++++++++++++++++++++----------
+ gi/pygi-invoke.h | 3 ++
+ gi/pygi-private.h | 1 +
+ gi/pygi.h | 10 +++++
+ tests/test_gi.py | 16 +++++++
+ 15 files changed, 312 insertions(+), 41 deletions(-)
+
+commit db7e1d078db16b6f11dee51aa97525c451346632
+Author: Alberto Mardegan <alberto.mardegan@canonical.com>
+Date: Tue Mar 27 17:34:48 2012 +0200
+
+ Regression test: marshalling GValues in GHashTable
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=668903
+
+ Signed-off-by: Martin Pitt <martinpitt@gnome.org>
+
+ tests/test_everything.py | 19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+
+commit 7c0017c30129a8db391f902ed592782200d69c64
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Mon Mar 26 17:55:41 2012 +0200
+
+ Bump version to 3.3.1
+
+ 3.2.x is built from the pygobject-3-2 branch now, and 3.2.0 is
+ released. So
+ continue with 3.3.x on master.
+
+ configure.ac | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 8309f305e5ce508fc5f6411c8153bea2cee5f741
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Mon Mar 26 17:51:37 2012 +0200
+
+ Update .gitignore
+
+ - Ignore *.o, backup files, and generated Makefiles in all
+ subdirectories
+ - Ignore *.pyc files.
+ - Do not ignore .gitignore, we actually want to track this.
+
+ .gitignore | 61
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 61 insertions(+)
+
+commit 81de788a72b40acd2f857718d78bdeea01d12eb1
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Mon Mar 26 17:45:08 2012 +0200
+
+ Fix "distcheck" and tests with out-of-tree builds
+
+ - Symlink *.py files from srcdir into builddir during build, as
+ Python does not
+ accept the extensions and modules in different paths.
+ - "make clean" should remove *.pyc files
+ - tests/runtests.py: Look for tests in srcdir, not in builddir
+
+ Makefile.am | 6 ++++--
+ gi/Makefile.am | 13 +++++++++++--
+ gi/_glib/Makefile.am | 12 ++++++++++--
+ gi/_gobject/Makefile.am | 12 ++++++++++--
+ gi/overrides/Makefile.am | 10 ++++++++++
+ gi/repository/Makefile.am | 11 +++++++++++
+ tests/runtests.py | 6 ++++--
+ 7 files changed, 60 insertions(+), 10 deletions(-)
+
+commit f83d95e6fff572bda659a48e309b4524dafa4e83
+Author: Johan Dahlin <johan@gnome.org>
+Date: Thu Mar 22 11:14:03 2012 -0300
+
+ Add a pep8 check to the makefile
+
+ Also reorganize the pyflakes check, since target dependencies do not
+ take the exit status of the shell command into account.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672627
+
+ tests/Makefile.am | 9 ++++-----
+ 1 file changed, 4 insertions(+), 5 deletions(-)
+
+commit d1f5474c6c50163aefe660e0689dc7f30e6cd48b
+Author: Johan Dahlin <johan@gnome.org>
+Date: Thu Mar 22 10:56:59 2012 -0300
+
+ PEP8: Remaining whitespace fixes
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672627
+
+ demos/gtk-demo/demos/Icon View/iconviewedit.py | 7 +++----
+ demos/gtk-demo/demos/Tree View/liststore.py | 28
+ +++++++++++++-------------
+ demos/gtk-demo/demos/appwindow.py | 10 ++++-----
+ demos/gtk-demo/demos/rotatedtext.py | 2 +-
+ examples/cairo-demo.py | 4 ++--
+ tests/test_gi.py | 12 +++++------
+ tests/test_overrides.py | 2 +-
+ 7 files changed, 32 insertions(+), 33 deletions(-)
+
+commit 032fcce2bf6070a9001cbb780e90403051e303b1
+Author: Johan Dahlin <johan@gnome.org>
+Date: Thu Mar 22 10:56:03 2012 -0300
+
+ PEP8: Add spaces before #
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672627
+
+ demos/gtk-demo/demos/drawingarea.py | 6 +++---
+ demos/gtk-demo/demos/images.py | 10 +++++-----
+ demos/gtk-demo/demos/rotatedtext.py | 2 +-
+ gi/__init__.py | 2 +-
+ gi/_glib/option.py | 2 +-
+ gi/_gobject/__init__.py | 2 +-
+ gi/overrides/GLib.py | 12 ++++++------
+ gi/types.py | 4 ++--
+ tests/runtests.py | 2 +-
+ tests/test_gdbus.py | 4 ++--
+ 10 files changed, 23 insertions(+), 23 deletions(-)
+
+commit 6a58edbf11c612e9a14347b1556d1e0dd2ec1823
+Author: Johan Dahlin <johan@gnome.org>
+Date: Thu Mar 22 10:52:05 2012 -0300
+
+ PEP8: Add missing whitespace after : and ,
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672627
+
+ demos/gtk-demo/demos/Tree View/liststore.py | 2 +-
+ demos/gtk-demo/demos/appwindow.py | 2 +-
+ tests/test_everything.py | 23 +++++++++--------------
+ tests/test_gi.py | 2 +-
+ tests/test_overrides.py | 2 +-
+ 5 files changed, 13 insertions(+), 18 deletions(-)
+
+commit a8d361e66b2a0e09cfa5dbade4725074b0cc2fd1
+Author: Johan Dahlin <johan@gnome.org>
+Date: Thu Mar 22 10:49:52 2012 -0300
+
+ PEP8: Remove too whitespace before }
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672627
+
+ tests/test_overrides.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 2b8eb9fa5b9ca454d7130b3eec15a982fee1bdc9
+Author: Johan Dahlin <johan@gnome.org>
+Date: Thu Mar 22 10:49:27 2012 -0300
+
+ PEP8: Remove too many blank lines
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672627
+
+ demos/gtk-demo/demos/rotatedtext.py | 1 -
+ tests/test_overrides.py | 1 -
+ 2 files changed, 2 deletions(-)
+
+commit 03e597cb8f3b075efae556ee51a598695a883ad3
+Author: Johan Dahlin <johan@gnome.org>
+Date: Thu Mar 22 10:48:59 2012 -0300
+
+ PEP8: Fix whitespace around operators
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672627
+
+ demos/gtk-demo/demos/images.py | 2 +-
+ examples/cairo-demo.py | 8 ++++----
+ tests/test_gi.py | 4 ++--
+ tests/test_overrides.py | 8 ++++----
+ tests/test_properties.py | 14 +++++++-------
+ tests/test_signal.py | 2 +-
+ 6 files changed, 19 insertions(+), 19 deletions(-)
+
+commit 21aeb19107b718293116e51ecd6479d4d7198b8f
+Author: Johan Dahlin <johan@gnome.org>
+Date: Thu Mar 22 10:46:17 2012 -0300
+
+ PEP8: Remove whitespace before (
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672627
+
+ demos/gtk-demo/demos/Entry/entry_buffer.py | 2 +-
+ demos/gtk-demo/demos/Entry/entry_completion.py | 2 +-
+ demos/gtk-demo/demos/Entry/search_entry.py | 12 ++---
+ demos/gtk-demo/demos/Icon View/iconviewedit.py | 4 +-
+ demos/gtk-demo/demos/Tree View/liststore.py | 2 +-
+ demos/gtk-demo/demos/dialogs.py | 12 ++---
+ demos/gtk-demo/demos/pickers.py | 8 ++--
+ demos/gtk-demo/demos/pixbuf.py | 4 +-
+ demos/gtk-demo/demos/printing.py | 8 ++--
+ demos/gtk-demo/demos/rotatedtext.py | 2 +-
+ demos/gtk-demo/gtk-demo.py | 4 +-
+ gi/module.py | 4 +-
+ gi/overrides/Pango.py | 2 +-
+ gi/pygtkcompat.py | 4 +-
+ tests/test_everything.py | 4 +-
+ tests/test_overrides.py | 62
+ +++++++++++++-------------
+ 16 files changed, 68 insertions(+), 68 deletions(-)
+
+commit b04d209930ab01bae6563b0d714aec829739bdc6
+Author: Johan Dahlin <johan@gnome.org>
+Date: Thu Mar 22 10:40:46 2012 -0300
+
+ PEP8: Remove whitespace around {}
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672627
+
+ tests/test_signal.py | 20 ++++++++++----------
+ 1 file changed, 10 insertions(+), 10 deletions(-)
+
+commit 725483a5dc36739dc7836716b5d6d48091564bf8
+Author: Johan Dahlin <johan@gnome.org>
+Date: Thu Mar 22 10:38:59 2012 -0300
+
+ PEP8: run via --fix from craigds fork
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672627
+
+ demos/gtk-demo/demos/Entry/entry_buffer.py | 1 +
+ demos/gtk-demo/demos/Entry/entry_completion.py | 1 +
+ demos/gtk-demo/demos/Entry/search_entry.py | 3 +-
+ demos/gtk-demo/demos/Icon View/iconviewbasics.py | 1 +
+ demos/gtk-demo/demos/Icon View/iconviewedit.py | 2 +
+ demos/gtk-demo/demos/Tree View/liststore.py | 3 ++
+ demos/gtk-demo/demos/appwindow.py | 13 +++++-
+ demos/gtk-demo/demos/assistant.py | 1 +
+ demos/gtk-demo/demos/builder.py | 1 +
+ demos/gtk-demo/demos/button_box.py | 1 +
+ demos/gtk-demo/demos/clipboard.py | 2 +-
+ demos/gtk-demo/demos/colorselector.py | 1 +
+ demos/gtk-demo/demos/combobox.py | 4 +-
+ demos/gtk-demo/demos/dialogs.py | 2 +
+ demos/gtk-demo/demos/drawingarea.py | 1 +
+ demos/gtk-demo/demos/expander.py | 4 +-
+ demos/gtk-demo/demos/images.py | 10 +++--
+ demos/gtk-demo/demos/infobars.py | 2 +
+ demos/gtk-demo/demos/links.py | 2 +
+ demos/gtk-demo/demos/menus.py | 2 +
+ demos/gtk-demo/demos/pickers.py | 2 +
+ demos/gtk-demo/demos/pixbuf.py | 2 +
+ demos/gtk-demo/demos/printing.py | 5 ++-
+ demos/gtk-demo/demos/rotatedtext.py | 4 +-
+ demos/gtk-demo/demos/test.py | 1 +
+ demos/gtk-demo/gtk-demo.py | 9 ++--
+ examples/cairo-demo.py | 57
+ ++++++++++++++----------
+ examples/option.py | 1 -
+ examples/properties.py | 1 +
+ examples/signal.py | 4 ++
+ gi/__init__.py | 2 +
+ gi/_glib/option.py | 4 +-
+ gi/_gobject/__init__.py | 1 +
+ gi/_gobject/propertyhelper.py | 5 ++-
+ gi/module.py | 3 ++
+ gi/overrides/GIMarshallingTests.py | 2 +
+ gi/overrides/GLib.py | 12 +++--
+ gi/overrides/Gdk.py | 9 ++++
+ gi/overrides/Gio.py | 4 ++
+ gi/overrides/Gtk.py | 56
+ ++++++++++++++++++++---
+ gi/overrides/Pango.py | 2 +
+ gi/overrides/__init__.py | 5 ++-
+ gi/pygtkcompat.py | 16 +++++--
+ gi/types.py | 4 ++
+ tests/test_everything.py | 30 +++++++++----
+ tests/test_gdbus.py | 1 +
+ tests/test_gi.py | 30 +++++++------
+ tests/test_gobject.py | 3 +-
+ tests/test_mainloop.py | 1 +
+ tests/test_option.py | 1 +
+ tests/test_overrides.py | 55
+ ++++++++++++-----------
+ tests/test_properties.py | 11 ++++-
+ tests/test_signal.py | 32 ++++++++++++-
+ tests/test_source.py | 1 +
+ tests/test_subprocess.py | 1 +
+ tests/test_thread.py | 1 +
+ tests/test_uris.py | 1 +
+ tests/testmodule.py | 1 +
+ 58 files changed, 326 insertions(+), 111 deletions(-)
+
+commit 917275d4aa81db39ccaca34fa514032fb80a3187
+Author: Johan Dahlin <johan@gnome.org>
+Date: Thu Mar 22 10:33:29 2012 -0300
+
+ PEP8: Remove spaces around = for keyword arguments
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672627
+
+ demos/gtk-demo/demos/appwindow.py | 8 ++++----
+ demos/gtk-demo/demos/colorselector.py | 4 ++--
+ demos/gtk-demo/gtk-demo.py | 24 ++++++++++++------------
+ examples/option.py | 4 ++--
+ gi/_glib/option.py | 2 +-
+ gi/overrides/Gtk.py | 2 +-
+ tests/test_gi.py | 26 +++++++++++++-------------
+ tests/test_option.py | 2 +-
+ tests/test_overrides.py | 8 ++++----
+ 9 files changed, 40 insertions(+), 40 deletions(-)
+
+commit 0c85656f95d3cb31becff10bbee7faae7b0b875b
+Author: Johan Dahlin <johan@gnome.org>
+Date: Thu Mar 22 10:28:28 2012 -0300
+
+ PEP8: Remove trailing ;
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672627
+
+ demos/gtk-demo/demos/appwindow.py | 4 ++--
+ demos/gtk-demo/demos/dialogs.py | 30 +++++++++++++++---------------
+ demos/gtk-demo/demos/links.py | 2 +-
+ demos/gtk-demo/demos/pixbuf.py | 2 +-
+ demos/gtk-demo/demos/printing.py | 8 ++++----
+ gi/overrides/Gtk.py | 4 ++--
+ tests/test_everything.py | 22 +++++++++++-----------
+ tests/test_gi.py | 2 +-
+ tests/test_overrides.py | 8 ++++----
+ 9 files changed, 41 insertions(+), 41 deletions(-)
+
+commit 32cc594ab6dfbd4843f3db5ec8338d31ad5df6c6
+Author: Johan Dahlin <johan@gnome.org>
+Date: Thu Mar 22 10:24:40 2012 -0300
+
+ Remove all tabs and fix indentation
+
+ By running the whole source tree via the indent.py script found
+ in the Python distribution.
+
+ demos/gtk-demo/demos/Entry/search_entry.py | 4 +-
+ demos/gtk-demo/demos/Icon View/iconviewedit.py | 41 +++----
+ demos/gtk-demo/demos/Tree View/liststore.py | 8 +-
+ demos/gtk-demo/demos/appwindow.py | 18 +--
+ demos/gtk-demo/demos/dialogs.py | 26 ++---
+ demos/gtk-demo/demos/expander.py | 6 +-
+ demos/gtk-demo/demos/images.py | 2 +-
+ demos/gtk-demo/demos/links.py | 2 +-
+ demos/gtk-demo/demos/rotatedtext.py | 20 ++--
+ gi/_glib/option.py | 2 +-
+ gi/_gobject/constants.py | 1 -
+ gi/importer.py | 1 -
+ gi/module.py | 10 +-
+ gi/overrides/GLib.py | 11 +-
+ gi/overrides/Gdk.py | 30 ++---
+ gi/overrides/Gio.py | 4 +-
+ gi/overrides/Gtk.py | 150
+ ++++++++++++-------------
+ gi/overrides/Pango.py | 1 -
+ gi/overrides/__init__.py | 10 +-
+ gi/pygtkcompat.py | 2 +-
+ tests/compathelper.py | 2 +-
+ tests/runtests.py | 19 ++--
+ tests/test_everything.py | 22 ++--
+ tests/test_gdbus.py | 11 +-
+ tests/test_gi.py | 38 +++----
+ tests/test_gobject.py | 2 +-
+ tests/test_interface.py | 1 -
+ tests/test_option.py | 1 -
+ tests/test_overrides.py | 78 ++++++-------
+ tests/test_properties.py | 2 +-
+ tests/test_uris.py | 1 -
+ 31 files changed, 255 insertions(+), 271 deletions(-)
+
+commit c375e3136f0f48eb8a6717c0053155db088b329d
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Thu Mar 22 10:32:43 2012 +0100
+
+ tests: Replace deprecated Python API
+
+ failIf → assertFalse, failUnless → assertTrue
+
+ Caught by the previous commit of making deprecations fatal.
+
+ tests/test_option.py | 10 +++----
+ tests/test_overrides.py | 66
+ +++++++++++++++++++++++------------------------
+ tests/test_properties.py | 14 +++++-----
+ tests/test_pygtkcompat.py | 18 ++++++-------
+ tests/test_signal.py | 4 +--
+ 5 files changed, 56 insertions(+), 56 deletions(-)
+
+commit 32525e565cc48454cdacbc44ad3fd751b81cb7e3
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Thu Mar 22 10:31:22 2012 +0100
+
+ Fail tests if they use or encounter deprecations
+
+ tests/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 65762243a34af014950527c323a51a29d40fb3e1
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Thu Mar 22 10:15:16 2012 +0100
+
+ Do not run tests in two phases any more
+
+ As we dropped the static bindings a while ago, there is no need any
+ more to run
+ the tests in two phases (static/GI). Now just run them all in one go,
+ simplifying tests/Makefile.am.
+
+ As this changes the order of the tests, defining $GSETTINGS_SCHEMA_DIR
+ now
+ needs to happen even further, so move it from tests/test_overrides.py
+ to
+ tests/runtests.py.
+
+ tests/Makefile.am | 33 ++++++++++++---------------------
+ tests/runtests.py | 7 +++++++
+ tests/test_overrides.py | 6 ------
+ 3 files changed, 19 insertions(+), 27 deletions(-)
+
+commit 3b4ae83a0ece8e3aed1de5452e2acd32841e629a
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Thu Mar 22 09:58:21 2012 +0100
+
+ test_overrides: Find local gsettings schema with current glib
+
+ With current glib, gsettings now fails to find the gschemas.compiled
+ during the
+ tests. Move the setting of $GSETTINGS_SCHEMA_DIR before the module
+ import,
+ which makes this work again.
+
+ tests/test_overrides.py | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+commit 927f7877ffa5e16c4cabcecbc05656ee0ec6a167
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Wed Mar 21 21:09:24 2012 +0100
+
+ Add GtkComboBoxEntry compatibility
+
+ This widget has been removed in Gtk+ 3, add a small wrapper to the
+ compat module to make at least basic pygtk programs that use it work.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672589
+
+ gi/pygtkcompat.py | 19 +++++++++++++++++++
+ tests/test_pygtkcompat.py | 22 ++++++++++++++++++++++
+ 2 files changed, 41 insertions(+)
+
+commit b322d6a1f6d44bace4eefb98558cfe94a73a727c
+Author: Johan Dahlin <johan@gnome.org>
+Date: Wed Mar 21 16:01:35 2012 -0300
+
+ Correct review comments from Martin
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672578
+
+ tests/test_everything.py | 4 ++--
+ tests/test_pygtkcompat.py | 18 ++++++++++++++++++
+ 2 files changed, 20 insertions(+), 2 deletions(-)
+
+commit c8bc6ae10cfe8b2eff4204ec2175907a6eb0585a
+Author: Johan Dahlin <johan@gnome.org>
+Date: Wed Mar 21 14:45:53 2012 -0300
+
+ Correct pyflakes warnings/errors
+
+ And add a target to make check that runs pyflakes.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672578
+
+ demos/gtk-demo/demos/Entry/entry_buffer.py | 2 +-
+ demos/gtk-demo/demos/Entry/entry_completion.py | 2 +-
+ demos/gtk-demo/demos/Entry/search_entry.py | 12 +-
+ demos/gtk-demo/demos/Icon View/iconviewbasics.py | 2 +-
+ demos/gtk-demo/demos/Icon View/iconviewedit.py | 2 +-
+ demos/gtk-demo/demos/Tree View/liststore.py | 3 +-
+ demos/gtk-demo/demos/appwindow.py | 13 +-
+ demos/gtk-demo/demos/assistant.py | 4 +-
+ demos/gtk-demo/demos/builder.py | 4 +-
+ demos/gtk-demo/demos/button_box.py | 2 +-
+ demos/gtk-demo/demos/clipboard.py | 2 +-
+ demos/gtk-demo/demos/colorselector.py | 2 +-
+ demos/gtk-demo/demos/combobox.py | 4 +-
+ demos/gtk-demo/demos/dialogs.py | 4 +-
+ demos/gtk-demo/demos/drawingarea.py | 2 +-
+ demos/gtk-demo/demos/expander.py | 4 +-
+ demos/gtk-demo/demos/images.py | 8 +-
+ demos/gtk-demo/demos/infobars.py | 2 +-
+ demos/gtk-demo/demos/links.py | 2 +-
+ demos/gtk-demo/demos/menus.py | 5 +-
+ demos/gtk-demo/demos/pickers.py | 2 +-
+ demos/gtk-demo/demos/pixbuf.py | 2 +-
+ demos/gtk-demo/demos/printing.py | 3 +-
+ demos/gtk-demo/demos/rotatedtext.py | 6 +-
+ demos/gtk-demo/gtk-demo.py | 9 +-
+ examples/cairo-demo.py | 2 +-
+ gi/__init__.py | 4 +
+ gi/_glib/__init__.py | 101 ++++++++++-
+ gi/_glib/option.py | 1 +
+ gi/_gobject/__init__.py | 203
+ ++++++++++++++++++++---
+ gi/_gobject/constants.py | 2 -
+ gi/_gobject/propertyhelper.py | 4 +-
+ gi/importer.py | 2 +-
+ gi/module.py | 1 -
+ gi/overrides/Gtk.py | 1 -
+ gi/overrides/__init__.py | 1 -
+ gi/pygtkcompat.py | 2 +
+ gi/types.py | 3 +
+ tests/Makefile.am | 5 +
+ tests/test_everything.py | 6 +-
+ tests/test_gi.py | 8 +-
+ tests/test_option.py | 10 +-
+ tests/test_overrides.py | 30 ++--
+ tests/test_properties.py | 12 +-
+ tests/test_pygtkcompat.py | 4 -
+ tests/test_signal.py | 4 +-
+ tests/test_source.py | 6 +-
+ 47 files changed, 377 insertions(+), 138 deletions(-)
+
+commit 39650906559fcc39b4be406fa7e25c4788d349a3
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Wed Mar 21 16:59:33 2012 +0100
+
+ Make tests fail on CRITICAL logs, too, and apply to all tests
+
+ Instead of setting warnings/criticals to fatal in individual test
+ modules, do
+ it in runtests.py, so that it applies to all tests.
+
+ We currently have some tests which are known to generate CRITICALs
+ (now marked
+ with FIXME), and some WARNINGs (as they test behaviour with known-bad
+ values).
+ For these, warnings/criticals are now explicitly permitted.
+
+ tests/runtests.py | 1 +
+ tests/test_gi.py | 7 ++++++-
+ tests/test_overrides.py | 14 +++++++-------
+ tests/test_properties.py | 36 +++++++++++++++++++++---------------
+ 4 files changed, 35 insertions(+), 23 deletions(-)
+
+commit efcb4b0b32c4dda06c3eeec83802fc0f302f0d27
+Author: Alberto Mardegan <alberto.mardegan@canonical.com>
+Date: Tue Mar 20 14:55:07 2012 +0400
+
+ Support marshalling GI_TYPE_TAG_INTERFACE
+
+ Marshalling of interfaces got broken with commit
+ 7746d2188ac4933c2c9011d84525d1e62fc18953.
+
+ Also, do not abort on unsupported types, but log a critical failure
+ and
+ continue.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=668903
+
+ gi/pygi-marshal-from-py.c | 3 ++-
+ gi/pygi-marshal-to-py.c | 3 ++-
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+commit 8d85d6639778ec6364235071d272d67e7aae49ae
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Wed Mar 21 14:34:36 2012 +0100
+
+ Fix warnings on None values in added tree/list store rows
+
+ Commit bf8c95836e1c changed the List/TreeStore overrides to use
+ insert_with_valuesv(), but supplied all columns instead of just
+ those which are
+ not None. With this, None values cause warnings like
+
+ (runtests.py:12375): Gtk-WARNING **:
+ /build/buildd/gtk+3.0-3.3.20/./gtk/gtkliststore.c:851: Unable to
+ convert from (null) to gboolean
+
+ Update the tests to make warnings fatal, to catch this better.
+
+ Change _convert_row() to skip the None entries and return the list
+ of not-None
+ columns, and use the latter instead of a simple range(n_columns). This
+ matches
+ the behaviour before bf8c95836e1c, where columns with None values
+ were skipped
+ as well.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672463
+
+ gi/overrides/Gtk.py | 26 ++++++++++++++------------
+ tests/test_overrides.py | 5 +++++
+ 2 files changed, 19 insertions(+), 12 deletions(-)
+
+commit 38aecc481741fd3a319a76a0ec8bf5329a483876
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Wed Mar 21 15:21:02 2012 +0100
+
+ pygtkcompat test: Properly clean up PixbufLoader
+
+ Tests currently give
+
+ (runtests.py:15072): GdkPixbuf-WARNING **: GdkPixbufLoader finalized
+ without calling gdk_pixbuf_loader_close() - this is not allowed. You
+ must explicitly end the data stream to the loader before dropping
+ the last reference.
+
+ Fix this by calling close().
+
+ tests/test_pygtkcompat.py | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit 5e0e5e72a4436badd09f0aa07f62960afcdca8c6
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Mon Mar 19 16:58:22 2012 +0100
+
+ post-release bump
+
+ Use 3.1.93 for now, this will most likely become 3.2.0 as it is.
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 88924e399d7ccf7af2e9a78720e0c508cd6080d8
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Mon Mar 19 16:41:17 2012 +0100
+
+ Release 3.1.92
+
+ NEWS | 46 ++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 46 insertions(+)
+
+commit b41e6139befb984c0b78bcefe2630ab1393b4b40
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Mon Mar 19 16:14:54 2012 +0100
+
+ README: Update current maintainers
+
+ Also update Martin's email address.
+
+ README | 10 ++++++----
+ pygobject.doap | 2 +-
+ 2 files changed, 7 insertions(+), 5 deletions(-)
+
+commit 45e27ba7e447552057a2950fc768c63ff2e6612e
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Mon Mar 19 16:11:22 2012 +0100
+
+ Bump version to 3.1.92, in sync with GNOME
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 77d358f8c5f524259249ea686899e3a4da05562e
+Author: Johan Dahlin <johan@gnome.org>
+Date: Mon Mar 19 11:54:07 2012 -0300
+
+ Correct Gtk.TreePath.__iter__ to work with Python 3
+
+ gi/overrides/Gtk.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 1f18bcb37bdc42368ad9a07c7f348f736c2f665d
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Mon Mar 19 15:54:13 2012 +0100
+
+ Fix pygtkcompat.py to work with Python 3
+
+ gi/pygtkcompat.py | 20 +++++++++++++++-----
+ 1 file changed, 15 insertions(+), 5 deletions(-)
+
+commit 96a9f92da801989464fbcedf6d849819f6dbea64
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Mon Mar 19 15:32:22 2012 +0100
+
+ Fix test_everything.TestSignals.test_object_param_signal test case
+
+ The callback gets two arguments, not one. This short-circuited
+ the actual
+ assertions. Fix the arguments and update the refcount check, as it
+ is not
+ exactly two at the moment.
+
+ tests/test_everything.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit ba00afb1e50759b2b321f16e05a15946053cdafa
+Author: Johan Dahlin <johan@gnome.org>
+Date: Mon Mar 19 10:58:09 2012 -0300
+
+ pygtkcompat: Remove first argument for get_origin()
+
+ gi/pygtkcompat.py | 5 +++++
+ tests/test_pygtkcompat.py | 5 +++++
+ 2 files changed, 10 insertions(+)
+
+commit 65499246a862ce6a82bc3b0cc74fe8ff82dde687
+Author: Johan Dahlin <johan@gnome.org>
+Date: Fri Mar 16 16:08:44 2012 -0300
+
+ GtkViewport: Add a default values for the adjustment constructor
+ parameters
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672260
+
+ gi/overrides/Gtk.py | 10 ++++++++++
+ tests/test_overrides.py | 11 +++++++++++
+ 2 files changed, 21 insertions(+)
+
+commit 43c761d9f35252dcb58b9cf2278016d841eea4ec
+Author: Johan Dahlin <johan@gnome.org>
+Date: Fri Mar 16 16:08:23 2012 -0300
+
+ GtkIconSet: Add a default value for the pixbuf constructor parameter
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672260
+
+ gi/overrides/Gtk.py | 11 +++++++++++
+ tests/test_overrides.py | 6 ++++++
+ 2 files changed, 17 insertions(+)
+
+commit 116d3712251b1b8aa2d4f4a9e40e22f5b9fcbe4f
+Author: Johan Dahlin <johan@gnome.org>
+Date: Fri Mar 16 16:07:30 2012 -0300
+
+ PangoLayout: Add a default value for set_markup()
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672260
+
+ gi/overrides/Pango.py | 3 +++
+ tests/test_overrides.py | 4 ++++
+ 2 files changed, 7 insertions(+)
+
+commit a3ca47b086b7fcf084282be788c5d737dde847ac
+Author: Johan Dahlin <johan@gnome.org>
+Date: Fri Mar 16 16:06:37 2012 -0300
+
+ Gtk[HV]Scrollbar: Add a default value for the adjustment constructor
+ parameter
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672260
+
+ gi/overrides/Gtk.py | 15 +++++++++++++++
+ tests/test_overrides.py | 14 ++++++++++++++
+ 2 files changed, 29 insertions(+)
+
+commit 458dab08c78cb730dd95bcd67af20a0d73a3af2f
+Author: Johan Dahlin <johan@gnome.org>
+Date: Fri Mar 16 16:06:12 2012 -0300
+
+ GtkToolButton: Add a default value for the stock_id constructor
+ parameter
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672260
+
+ gi/overrides/Gtk.py | 10 ++++++++++
+ tests/test_overrides.py | 9 ++++++++-
+ 2 files changed, 18 insertions(+), 1 deletion(-)
+
+commit 2f7789a5a1f55ec38c5ff0f96bc5c9023679a333
+Author: Johan Dahlin <johan@gnome.org>
+Date: Fri Mar 16 16:05:55 2012 -0300
+
+ GtkIconView: Add a default value for the model constructor parameter
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672260
+
+ gi/overrides/Gtk.py | 3 +++
+ tests/test_overrides.py | 11 +++++++++++
+ 2 files changed, 14 insertions(+)
+
+commit 2dd9dadd1bd92c3324e9de209ba8205a9d4106d6
+Author: Johan Dahlin <johan@gnome.org>
+Date: Thu Mar 15 15:22:46 2012 -0300
+
+ Add a default value for column in Gtk.TreeView.get_cell_area()
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672260
+
+ gi/overrides/Gtk.py | 5 +++++
+ tests/test_overrides.py | 3 +++
+ 2 files changed, 8 insertions(+)
+
+commit bf8c95836e1cc1e1629937cbc69ea3027fb82746
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Thu Mar 15 09:48:10 2012 +0100
+
+ Atomic inserts in Gtk.{List,Tree}Store overrides
+
+ Gtk.{List,Tree}Store's overrides provide append(), insert()
+ etc. methods which
+ take an optional data row array. If this is given, use
+ insert_with_valuesv()
+ instead of creating a new iter and then filling it with data. The
+ latter sent a
+ row-added signal, at which time the row was still empty, and a
+ subsequent
+ row-changed signal. With this we only get a single row-added
+ signal with
+ complete row data.
+
+ Note that this does not change insert_{before,after}(), as there is no
+ counterpart of insert_with_valuesv() which takes a TreeIter instead
+ of a
+ position. For those you will still get two signals, and have to deal
+ with None
+ values.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=671610
+
+ gi/overrides/Gtk.py | 81
+ ++++++++++++++++++++++++++++++-------------------
+ tests/test_overrides.py | 74 ++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 124 insertions(+), 31 deletions(-)
+
+commit f7db4eaf8148f2dd8bf1718152a1dcae509470c7
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Sun Mar 18 16:07:26 2012 +0100
+
+ Fix Gtk.Button constructor to accept use_stock parameter
+
+ Thanks to kalanzun@googlemail.com!
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672318
+
+ Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+
+ gi/overrides/Gtk.py | 4 +---
+ tests/test_overrides.py | 6 ++++++
+ 2 files changed, 7 insertions(+), 3 deletions(-)
+
+commit 466337cf2fd091738eeab12c10d250a9d0827284
+Author: Johan Dahlin <johan@gnome.org>
+Date: Fri Mar 16 16:55:47 2012 -0300
+
+ Correct bad rebase, remove duplicate Window
+
+ gi/overrides/Gtk.py | 7 -------
+ 1 file changed, 7 deletions(-)
+
+commit c60d5ee3c88bd8e1c68ea97f079947cf79d5bb7d
+Author: Johan Dahlin <johan@gnome.org>
+Date: Thu Mar 15 15:42:28 2012 -0300
+
+ Add a PyGTK compatibility layer
+
+ This module tries quite a bit harder to maintain compatibility
+ with PyGTK, module names, enums, flags and some API.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=653462
+
+ gi/Makefile.am | 3 +-
+ gi/pygtkcompat.py | 421
+ ++++++++++++++++++++++++++++++++++++++++++++++
+ tests/Makefile.am | 3 +-
+ tests/test_pygtkcompat.py | 77 +++++++++
+ 4 files changed, 502 insertions(+), 2 deletions(-)
+
+commit 680a2e04ac4f80ad16e820d3f753519477c988aa
+Author: Johan Dahlin <johan@gnome.org>
+Date: Wed Mar 14 15:20:53 2012 -0300
+
+ Add bw-compatible arguments to Gtk.Adjustment
+
+ The argument used to be called page/step_incr, if they
+ are found map them to the existing properties for extra
+ compatibility.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672087
+
+ gi/overrides/Gtk.py | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+commit fbd21ee7176bc1b70547ea464b512c8ffd674187
+Author: Johan Dahlin <johan@gnome.org>
+Date: Wed Mar 14 17:13:04 2012 -0300
+
+ GtkTreePath: make it iterable
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672093
+
+ gi/overrides/Gtk.py | 3 +++
+ tests/test_overrides.py | 2 ++
+ 2 files changed, 5 insertions(+)
+
+commit a7b08cb75541612c78d123b1d968be7874e3c481
+Author: Johan Dahlin <johan@gnome.org>
+Date: Wed Mar 14 13:32:31 2012 -0300
+
+ Add a default argument to TreeModelFilter.set_visible_func()
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672081
+
+ gi/overrides/Gtk.py | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+commit 02950cabb38b1b3c9378c42c069eefdbccbce17d
+Author: Johan Dahlin <johan@gnome.org>
+Date: Wed Mar 14 13:31:41 2012 -0300
+
+ Add a default argument to Gtk.TreeView.set_cursor
+
+ And also make sure that the path is a Gtk.TreePath.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672081
+
+ gi/overrides/Gtk.py | 4 ++++
+ tests/test_overrides.py | 10 ++++++++++
+ 2 files changed, 14 insertions(+)
+
+commit 7245bd0ae3f6243c79fa8543a0ed1e50e5015844
+Author: Johan Dahlin <johan@gnome.org>
+Date: Wed Mar 14 13:31:06 2012 -0300
+
+ Add a default argument to Pango.Context.get_metrics()
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672081
+
+ gi/overrides/Pango.py | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+commit bc1fd8814df6c1e85b586d0fb943c89f7e2b78b5
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Fri Mar 16 13:27:56 2012 +0100
+
+ Fix double-freeing GValues in arrays
+
+ When marshalling a GValue array to C, the GValue items are copied
+ into a C
+ GValue array, not a C GValue pointer
+ array. _pygi_marshal_from_py_array()
+ already calls the cleanup_func for the original item;
+ _pygi_marshal_cleanup_from_py_array() must not do it again, as this
+ would try
+ to g_slice_free the array item.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672224
+
+ gi/pygi-marshal-from-py.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+commit a906b7d1947ba905f959d3f738eb6c29b02f96e7
+Author: Simon Feltman <s.feltman@gmail.com>
+Date: Fri Mar 16 00:29:31 2012 -0700
+
+ Renamed "property" class to "Property"
+
+ Renamed to match the rest of the class names in GObject and also
+ not clobber the builtin python property.
+
+ Keep the old "property" identifier for backwards compatibility
+ for now.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672168
+
+ Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+
+ examples/properties.py | 6 +--
+ gi/_gobject/__init__.py | 7 ++--
+ gi/_gobject/propertyhelper.py | 12 +++---
+ tests/test_interface.py | 4 +-
+ tests/test_properties.py | 94
+ +++++++++++++++++++++----------------------
+ 5 files changed, 62 insertions(+), 61 deletions(-)
+
+commit d7d28d717e38c0546529b09b8b571a5cc631c5b5
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Wed Mar 14 22:52:47 2012 +0100
+
+ Fix Python to C marshalling of GValue arrays
+
+ For GValues we cannot just copy the GValue memory in
+ _pygi_marshal_from_py_array(), as the from_py_cleanup() function
+ clears and
+ releases the GValue and with it its v_pointer. Use g_value_copy()
+ to copy by
+ value instead.
+
+ This uncovered another bug in _pygi_marshal_cleanup_from_py_array():
+ It always
+ assumed that C arrays contained pointers, but this is not the case
+ for GValue
+ arrays: these are actual struct arrays, not struct pointer arrays
+ (cf. their
+ construction in _pygi_marshal_from_py_array()). Check if an array
+ contains
+ pointers or values and compute the correct array item pointer for
+ both cases.
+
+ Also add a corresponding test case for marshalling GValue arrays
+ from C back to
+ Python, which works fine.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672065
+
+ gi/pygi-marshal-cleanup.c | 19 ++++++++++++++-----
+ gi/pygi-marshal-from-py.c | 13 ++++++++++++-
+ tests/test_gi.py | 8 ++++++++
+ 3 files changed, 34 insertions(+), 6 deletions(-)
+
+commit 27ac9c1de6487035b18ef4511c155d251cb6d39d
+Author: Johan Dahlin <johan@gnome.org>
+Date: Fri Mar 16 09:59:57 2012 +0100
+
+ Correct the Gtk.Window hierarchy
+
+ We need to make sure that all Gtk.Dialog subclasses inherit from
+ the overridden Window class. For that to be done automaticly we need
+ to create the Window class before the Dialog class.
+
+ Now when it's inherited properly we need to avoid calling the Window
+ constructor twice as it passes in a construct-only parameter. So add
+ **kwargs to the Window constructor to allow us to pass in any kind
+ of GObject property to it and refactor the Dialog subclasses to pass
+ in all properties to the same constructor.
+
+ Also adds a bunch of tests to make sure that the hiearchy is correct.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672158
+
+ Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+
+ gi/overrides/Gtk.py | 56
+ ++++++++++++++++++++++++-------------------------
+ tests/test_overrides.py | 35 +++++++++++++++++++++++++++++--
+ 2 files changed, 61 insertions(+), 30 deletions(-)
+
+commit 77ab27ab8a580d98f76730f075e083e1e870f55e
+Author: simon <simon@gerty>
+Date: Tue Mar 13 01:41:53 2012 -0700
+
+ Renamed getter/setter instance attributes to fget/fset respectively.
+
+ The python 'property' class allows for decoration of methods using
+ .getter and .setter. These were added as methods to the
+ GObject.property
+ class to match that of the python property class and allow for
+ decoratored
+ setter methods.
+
+ In addition, __call__ was added to allow an instantiated decorator
+ with
+ args to also decorate a method:
+
+ class C(GObject.GObject):
+ _value = 0
+ @GObject.property(type=int, default=0)
+ def propInt(self):
+ return self._value
+ @propInt.setter
+ def propInt(self, value):
+ self._value = value
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=586181
+
+ Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+
+ gi/_gobject/__init__.py | 10 ++++----
+ gi/_gobject/propertyhelper.py | 59
+ +++++++++++++++++++++++++++++++------------
+ tests/test_properties.py | 41 ++++++++++++++++++++++++++++++
+ 3 files changed, 89 insertions(+), 21 deletions(-)
+
+commit 174a61fb3149c07dab5cc35e64825922cdefcb95
+Author: Johan Dahlin <johan@gnome.org>
+Date: Tue Mar 13 17:10:13 2012 -0300
+
+ Add Gtk.Arrow/Gtk.Window constructor override
+
+ Adds argument that makes them compatible with PyGTK.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=672045
+
+ gi/overrides/Gtk.py | 17 +++++++++++++++++
+ 1 file changed, 17 insertions(+)
+
+commit 7746d2188ac4933c2c9011d84525d1e62fc18953
+Author: Michel Dänzer <michel@daenzer.net>
+Date: Fri Mar 9 12:26:53 2012 +0100
+
+ Fix marshalling to/from Python to work on big endian machines.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=668903
+
+ Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+
+ gi/pygi-argument.c | 25 ++++++++++++++++---------
+ gi/pygi-marshal-from-py.c | 32 +++++++++++++++++++++++++-------
+ gi/pygi-marshal-to-py.c | 19 +++++++++++++++++++
+ 3 files changed, 60 insertions(+), 16 deletions(-)
+
+commit 0591cc6f160ae6e9d8c3970934ae105ef340d7d3
+Author: Michel Dänzer <michel@daenzer.net>
+Date: Thu Mar 8 12:21:28 2012 +0100
+
+ Use gi_cclosure_marshal_generic instead of duplicating it.
+
+ Bump gobject-introspection dependency to ensure that we have the
+ corresponding
+ changes in g-i.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=668903
+
+ Signed-off-by: Michel Dänzer <michel@daenzer.net>
+ Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+
+ configure.ac | 3 +-
+ gi/_gobject/Makefile.am | 7 +-
+ gi/_gobject/ffi-marshaller.c | 194
+ -------------------------------------------
+ gi/_gobject/ffi-marshaller.h | 31 -------
+ gi/_gobject/gobjectmodule.c | 12 +--
+ 5 files changed, 4 insertions(+), 243 deletions(-)
+
+commit 8ca828825a2c47080055c5f986979aac8da9a93f
+Author: René Stadler <rene.stadler@collabora.co.uk>
+Date: Mon Mar 5 21:10:55 2012 +0100
+
+ Override Gtk.TreeView.get_visible_range to fix return
+
+ Just like IconView.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=671409
+
+ gi/overrides/Gtk.py | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+commit 4824ceaa77b59788325a2c1ee0f994d4e74d7a1c
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Sun Mar 4 16:41:18 2012 +0100
+
+ Plug memory leak in _is_union_member
+
+ When we found the member, unref the objects before breaking out of the
+ loop.
+
+ gi/pygi-marshal-from-py.c | 9 +++------
+ 1 file changed, 3 insertions(+), 6 deletions(-)
+
+commit c6ae29ac157978a61b11cc2de9e8485d8a175105
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Tue Feb 21 15:37:18 2012 +0100
+
+ tests: Split TestInterfaces into separate tests
+
+ tests/test_gi.py | 36 +++++++++++++++++++-----------------
+ 1 file changed, 19 insertions(+), 17 deletions(-)
+
+commit de3299818ae5fdf1c7abbe05a36bfd5cdface7b8
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Mon Feb 20 19:37:32 2012 +0100
+
+ Post release version bump to 3.1.2
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit fd020e783c0dacea3320225b4ddd57d6a0fce7ea
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Mon Feb 20 19:33:56 2012 +0100
+
+ Prepare 3.1.1 release
+
+ NEWS | 18 ++++++++++++++++++
+ 1 file changed, 18 insertions(+)
+
+commit 99485d96811667ef7a7a393b68b7361733157d61
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Sat Feb 18 00:38:05 2012 +0100
+
+ Don't use C99 style
+
+ gi/pygi-cache.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit 0739c39f6282d95fc17ee406fa1151d074b0450d
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Thu Feb 16 16:42:53 2012 +0100
+
+ Add test for GPtrArray with transfer full
+
+ This complements the already existing test for a "transfer container"
+ return
+ array. We can't verify the internal refcount as these arrays get
+ marshalled
+ internally, but at least we can verify that it does not crash due to
+ double-free.
+
+ tests/test_everything.py | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+commit 087a104f66793a981a0c02f1c7ab9cc1cf659da3
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Wed Feb 15 13:36:39 2012 +0100
+
+ Drop obsolete g_thread_init()
+
+ Not necessary any more since glib 2.24, and we depend on 2.31.
+
+ gi/_glib/pyglib.c | 3 ---
+ 1 file changed, 3 deletions(-)
+
+commit 66fb610e45912a7def29e5848577d280ef55643a
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Wed Feb 15 13:35:33 2012 +0100
+
+ Fix deprecated g_source_get_current_time()
+
+ Use g_get_real_time() instead as recommended by the
+ documentation. This also
+ simplifies the code.
+
+ gi/_glib/pygsource.c | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+commit 18342edded05d3d9cccf648ed92bc1cac95c51eb
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Wed Feb 15 13:31:23 2012 +0100
+
+ Fix deprecated g_value_[gs]et_char()
+
+ Replace with _schar(). We depend on glib >= 2.31 already.
+
+ gi/_gobject/ffi-marshaller.c | 2 +-
+ gi/_gobject/pygtype.c | 6 +++---
+ gi/pygi-argument.c | 2 +-
+ 3 files changed, 5 insertions(+), 5 deletions(-)
+
+commit 3dfb8dcbe7cf09dc170433fc48d3273c6ea9448e
+Author: Simon Schampijer <simon@schampijer.de>
+Date: Thu Feb 2 19:06:01 2012 +0100
+
+ Make pygiconvert.sh correctly convert gtk.gdk.x11_*
+
+ Looking at the gir file gtk.gdk.x11_* should get converted to
+ GdkX11.x11_*. Fixing pygiconvert.sh to do so.
+
+ pygi-convert.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 3af5016978df598d5fd1c225cc49bb2c04dc4e35
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Fri Feb 10 13:29:41 2012 +0100
+
+ Raise required glib version to 2.31 because of g_value_(get|set)_schar
+
+ Commit ee62df4d2fc0cc63c2f29d3ad9b47b875dbd5f89 introduced both calls
+
+ configure.ac | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 50c3b1bad3ea79750649f4b48fce0adbfaba5268
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Fri Feb 10 09:28:36 2012 +0100
+
+ Fix cset_first typo
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=649267
+
+ gi/_gobject/pygparamspec.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 6ab542fb3ec1031922ba65664d77bbaac0df453e
+Author: Bastian Winkler <buz@netbuz.org>
+Date: Mon Nov 14 14:41:08 2011 +0100
+
+ pygi-convert: Handle Clutter and Cogl
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=664496
+
+ pygi-convert.sh | 76
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 76 insertions(+)
+
+commit 4aeb27efc43e131de5d0bc0f60dca7c1d34c3d45
+Author: Cédric Krier <cedric.krier@b2ck.com>
+Date: Fri Feb 10 09:04:18 2012 +0100
+
+ Provide access to gpointer struct values
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=668356
+
+ Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+
+ gi/pygi-argument.c | 3 ++-
+ gi/pygi-info.c | 13 +++++++++++++
+ tests/test_everything.py | 21 +++++++++++++++++++++
+ 3 files changed, 36 insertions(+), 1 deletion(-)
+
+commit 5c0b20cc1a261cb7430a5251dffe60da698033b5
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Thu Feb 9 18:15:42 2012 +0100
+
+ Add some GType tests
+
+ Use what was recently added in g-i
+
+ tests/test_gi.py | 17 +++++++++++++++--
+ 1 file changed, 15 insertions(+), 2 deletions(-)
+
+commit ea7778f6f37a6fc38f88d89d4b6cae8be0ed9753
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Thu Feb 9 18:14:52 2012 +0100
+
+ Split GStrv and array variant tests in their own classes
+
+ Also tidy up the spacing a bit
+
+ tests/test_gi.py | 29 +++++++++++++++++++++++------
+ 1 file changed, 23 insertions(+), 6 deletions(-)
+
+commit db7f9be319d3cf52aef300fbac60cabb7ff57276
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Wed Feb 8 22:23:30 2012 +0100
+
+ Add unit test for builder's connect_after
+
+ tests/test_overrides.py | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+commit 671f9b0dd73ac41a84caf9d1f04cec351bc01b47
+Author: Ryan Lortie <desrt@desrt.ca>
+Date: Wed Feb 8 16:06:22 2012 -0500
+
+ fix GtkBuilder signal connection 'after' logic
+
+ All GtkBuilder signals are presently being connected 'after', ignoring
+ what is specified in the builder XML. This is due to an obvious logic
+ error.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=669705
+
+ gi/overrides/Gtk.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 1d23d8006be98b77a0134fddd23b76df05e489fa
+Author: Patrick Welche <prlw1@cam.ac.uk>
+Date: Tue Feb 7 11:49:58 2012 +0000
+
+ test(1) uses '=' to test if strings are identical
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=669598
+
+ m4/python.m4 | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 945fd18e531c2131440af93dcd89f6c63abbfd7c
+Author: Ryan Lortie <desrt@desrt.ca>
+Date: Tue Feb 7 13:42:19 2012 -0500
+
+ pygspawn: improve error checking
+
+ gspawn 'argv' and 'envp' parameters expect sequences of strings. This
+ is enforced by checking that the passed argument is a sequence
+ and that
+ each item returned from it is a string.
+
+ We do now, however, verify that each item can be successfully
+ taken from
+ the sequence. 'os.environ' is an example of an object that passes
+ PySequence_Check() but fails to return objects from PySequence_ITEM().
+
+ Add a simple NULL check to avoid the crash.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=669594
+
+ gi/_glib/pygspawn.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 8fc969c45d6d720400dc6c9ef391d0ca93f14b5a
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Mon Feb 6 19:15:53 2012 +0100
+
+ Post release version bump to 3.1.1
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit f76b2fe6d37be76bf129ee2adee90b2cc0eee56e
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Mon Feb 6 19:11:52 2012 +0100
+
+ Prepare 3.1.0 release
+
+ NEWS | 34 ++++++++++++++++++++++++++++++++++
+ 1 file changed, 34 insertions(+)
+
+commit c09d0dffc5a570d5ae4df1ae07b2e5594c3ca1bf
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Mon Feb 6 19:04:41 2012 +0100
+
+ Updated DOAP file to only include people currently actively working
+ on the project
+
+ Removed obsolete MAINTAINERS file
+
+ MAINTAINERS | 19 -------------------
+ pygobject.doap | 44 +++++++++++++++-----------------------------
+ 2 files changed, 15 insertions(+), 48 deletions(-)
+
+commit 0285e107be581c4d594127dc06cd05df1f02fb3f
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Mon Feb 6 18:57:01 2012 +0100
+
+ Revert "Convert all strings to utf-8 encoding when retrieving from
+ TreeModel"
+
+ This reverts commit 654711d0f940d7480d0f1cdb25a3dc9996f7a706.
+
+ Due to this commit breaking backwards compatability, we decided to
+ revert this change
+
+ gi/overrides/Gtk.py | 15 ---------------
+ tests/compathelper.py | 2 --
+ tests/test_overrides.py | 31 +------------------------------
+ 3 files changed, 1 insertion(+), 47 deletions(-)
+
+commit 0e921cd26ed5a6e3bc6ef5f553e8b22b862d72a6
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Sun Feb 5 13:47:10 2012 +0100
+
+ tests: Fixed issues with python3
+
+ tests/test_gi.py | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+commit ee62df4d2fc0cc63c2f29d3ad9b47b875dbd5f89
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Sun Feb 5 11:59:51 2012 +0100
+
+ Properly distinguish between different integer types for properties
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=664150
+
+ gi/pygi-property.c | 48 ++++++++++++++++++++++++++++++++++++++----
+ tests/test_gi.py | 62
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 106 insertions(+), 4 deletions(-)
+
+commit c329bf2aee8d75ce452638db75e09197ff2b9b65
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Sun Feb 5 11:46:21 2012 +0100
+
+ Distinguish between GArray and GPtrArray when cleaning up
+
+ This fixes a crash in test_gi.TestGPtrArray and makes sure
+ memory is free'd correctly
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=669393
+
+ gi/pygi-marshal-cleanup.c | 32 +++++++++++++++++++++++---------
+ 1 file changed, 23 insertions(+), 9 deletions(-)
+
+commit 4ea37c606f67df843788261b2c8acd6bac4c1e0c
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Sun Feb 5 18:51:53 2012 +0100
+
+ Add null_gerror_callback unit test
+
+ This models the case where the callback is successful and does not set
+ an error.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=669415
+
+ tests/test_everything.py | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+commit a41984780ee49dcf02c718ca1be87bba747472e5
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Mon Feb 6 09:34:28 2012 +0100
+
+ pyglib_error_check: Re-add missing NULL check
+
+ Commit adcfe96d49b09bc accidentally dropped the check if *error is
+ NULL, i. e.
+ any error is actually set. Due to that, pyglib_error_check()
+ always returned
+ TRUE. Reintroduce the check.
+
+ Thanks to Alberto Mardegan for spotting this!
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=669415
+
+ gi/_glib/pyglib.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 2c797c17913999379e277788d5e4cce8d68cebb0
+Author: Michael Culbertson <michael.culbertson@gmail.com>
+Date: Sat Feb 4 16:11:34 2012 +0100
+
+ Add tests/runtests-windows.py to source tarball
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=663288
+
+ tests/Makefile.am | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit d6a899cdf70e978534326155e3fad75a705f4b20
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Sat Feb 4 15:55:55 2012 +0100
+
+ Don't issue a depreciation warning for GtkDialog's NO_SEPARATOR flag,
+ even when unused
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=665553
+
+ gi/overrides/Gtk.py | 6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+commit 534ec71c575a279ff1c05da20a8858bb1145b4d0
+Author: Nirbheek Chauhan <nirbheek@gentoo.org>
+Date: Sat Feb 4 15:42:36 2012 +0100
+
+ Fix bool() operations on GLib.Variant objects
+
+ Defines __nonzero__ (python2) and __bool__ (python3) for GLib.Variant
+
+ Also adds some tests for boolean comparisons.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=647723
+
+ gi/overrides/GLib.py | 18 ++++++++++++++++++
+ tests/test_overrides.py | 45
+ +++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 63 insertions(+)
+
+commit 8d6a127df5dd1e5f26faeba8f977074b4496b24f
+Author: Nirbheek Chauhan <nirbheek@gentoo.org>
+Date: Sat Feb 4 15:41:08 2012 +0100
+
+ Fix hash() and __eq__() for GLib.Variant objects
+
+ Define __hash__, __eq__, __ne__ for GLib.Variant so that objects can
+ be used in sets, dicts, and can be compared using == and != easily.
+
+ Also adds some tests for this.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=647725
+
+ gi/overrides/GLib.py | 23 ++++++++++++++++++++
+ tests/test_overrides.py | 56
+ +++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 79 insertions(+)
+
+commit f82404034be042bf2026bbb7f1e33b11d6e17a6f
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Wed Jan 25 07:01:06 2012 +0100
+
+ Fix method names of callback tests
+
+ Change test_everything.TestCallbacks.* test names from camelCase
+ to the
+ standard PEP-8 underscore_style. This is now consistent with all
+ other test
+ case names.
+
+ tests/test_everything.py | 30 +++++++++++++++---------------
+ 1 file changed, 15 insertions(+), 15 deletions(-)
+
+commit e37ee78fbf0aa72159a40da4165a26bea065faf1
+Author: Will Thompson <will.thompson@collabora.co.uk>
+Date: Mon Jan 23 13:10:30 2012 +0000
+
+ Cairo: add missing braces around array-of-struct definition
+
+ This triggered a -Wmissing-braces warning.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=668497
+
+ gi/pygi-foreign-cairo.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit db24865d6b60351d72f5b8f47103d6d0a6c63b2e
+Author: Will Thompson <will.thompson@collabora.co.uk>
+Date: Mon Jan 23 13:06:41 2012 +0000
+
+ g_instance_init: cast to PyGObject * as needed
+
+ This squashes a compiler warning.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=668497
+
+ gi/_gobject/gobjectmodule.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit a8408cfd68cd5e7cdb0b8a83e107d9a0d828e4bd
+Author: Will Thompson <will.thompson@collabora.co.uk>
+Date: Mon Jan 23 13:01:27 2012 +0000
+
+ Fix a few set-but-not-used warnings.
+
+ In a couple of cases, the variable in question was set to a value
+ spelled out again later in the function.
+
+ The 'sequence_cache' variable is re-declared five lines below.
+
+ The return value of 'read' was previously completely ignored. The
+ 'gssize ret' variable was in fact added to squash an unused-result
+ warning.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=668497
+
+ gi/_glib/pygiochannel.c | 2 +-
+ gi/_glib/pygmainloop.c | 3 +--
+ gi/_gobject/pygobject.c | 2 +-
+ gi/pygi-marshal-cleanup.c | 2 --
+ 4 files changed, 3 insertions(+), 6 deletions(-)
+
+commit 29a30490ed51e347e8f57d2bf9af69400734eee8
+Author: Stefano Facchini <stefano.facchini@gmail.com>
+Date: Thu Jan 19 18:09:07 2012 +0100
+
+ pygmainloop: allow for extra arguments in 'quit' method
+
+ To allow for the common syntax:
+
+ object.connect('signal-name', main_loop.quit)
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=668288
+
+ gi/_glib/pygmainloop.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 557a61c12c01137a0d7c679c4b053973df09d445
+Author: Alexandre Rostovtsev <tetromino@gentoo.org>
+Date: Mon Dec 26 00:44:56 2011 -0500
+
+ Fix bytearray test compatibility with python3
+
+ https://bugs.gentoo.org/show_bug.cgi?id=321879
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=666852
+
+ tests/test_gi.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit d69e5b3c7bdb9113382fd125c256b12bff4c24d2
+Author: Alberto Mardegan <mardy@users.sourceforge.net>
+Date: Mon Jan 23 12:37:26 2012 +0200
+
+ Respect transfer-type when demarshalling GErrors
+
+ The marshaller previously ignored "transfer full" on GError*
+ arguments, causing
+ crashes due to double-freeing them. This causes the
+ testCallbackUserdata() test
+ case to crash after the previous GError/GHashTable marshalling fix.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=666270
+
+ gi/pygi-argument.c | 12 +++++++++++-
+ 1 file changed, 11 insertions(+), 1 deletion(-)
+
+commit 77f32d9110bfeb6dad8457f565b4c70b5998fef6
+Author: Alberto Mardegan <mardy@users.sourceforge.net>
+Date: Thu Dec 15 16:12:01 2011 +0200
+
+ Support GHashTable and GError as callback/closure arguments
+
+ Marshalling of these types from C is already implemented, let's
+ take it
+ into use for calbacks and closures too.
+
+ Add corresponding test cases.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=666270
+
+ Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+
+ gi/pygi-closure.c | 2 ++
+ tests/test_everything.py | 35 +++++++++++++++++++++++++++++++++++
+ 2 files changed, 37 insertions(+)
+
+commit 4b9dc03d0e49e9a1f4bf0f2df503bdff00d13a2b
+Author: Will Thompson <will.thompson@collabora.co.uk>
+Date: Mon Jan 23 13:56:02 2012 +0000
+
+ Don't leak when marshalling GErrors to C
+
+ Python-land GLib.GErrors are supposed to have three attributes:
+ "message", "domain" and "code". If those attributes are missing,
+ or they
+ have the wrong types, the C GError is filled in with a message
+ describing the error. The present-but-ill-typed code paths did not
+ DECREF the ill-typed values.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=666098
+
+ gi/_glib/pyglib.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit adcfe96d49b09bcc550653d73de196610fd5144d
+Author: Will Thompson <will.thompson@collabora.co.uk>
+Date: Fri Jan 20 16:20:10 2012 +0000
+
+ Support functions which return GError
+
+ GStreamer has the following method:
+
+ void gst_message_parse_error (
+ GstMessage *message,
+ GError **error,
+ gchar **debug_message);
+
+ With this patch, we marshal the GError out parameter as a
+ GObject.GError
+ exception, but return it rather than throwing it. The test cases cover
+ two variations on the theme of the function above (one with (transfer
+ full), as in GStreamer, and another with (transfer none)) as well as a
+ function with return type GError *.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=666098
+
+ gi/_glib/pyglib.c | 46
+ +++++++++++++++++++++++++++++++++++-----------
+ gi/_glib/pyglib.h | 1 +
+ gi/pygi-marshal-to-py.c | 16 +++++++++++++---
+ tests/test_gi.py | 32 ++++++++++++++++++++++++++++++++
+ 4 files changed, 81 insertions(+), 14 deletions(-)
+
+commit 09f003729eac9d553a208c343c2a14d253b77d9a
+Author: Alberto Mardegan <mardy@users.sourceforge.net>
+Date: Mon Jan 23 12:42:21 2012 +0200
+
+ Fix indentation of _pygi_argument_to_object()
+
+ Side issue in https://bugzilla.gnome.org/show_bug.cgi?id=666270
+
+ Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+
+ gi/pygi-argument.c | 26 +++++++++++++-------------
+ 1 file changed, 13 insertions(+), 13 deletions(-)
+
+commit c71c010be01d706f90bc200194325fd82f4071b2
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Sat Jan 14 14:24:23 2012 +0100
+
+ Avoid C99 syntax.
+
+ gi/gimodule.c | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+commit c299d058c22385ececaec64c872d1dd1bc1ae17a
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Fri Jan 6 13:39:31 2012 +0100
+
+ Connect to first action of a radio group.
+
+ gi/overrides/Gtk.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit dee2f179037902a3883bd0e61ff1c350e1fd8a4f
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Wed Jan 4 16:40:51 2012 +0100
+
+ Use g_slist_free_full in pygi-closure.
+
+ gi/pygi-closure.c | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+commit 2bee4207ab6f07dc9c0952affe72f0e304cfb624
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Wed Jan 4 15:24:13 2012 +0100
+
+ Avoid O(n^2) behavior when marshalling lists
+
+ Appending requires walking the list every time: just prepend and
+ reverse
+ the list at the end.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=667261
+
+ gi/pygi-marshal-from-py.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit d68455e99b1a9ebba31209b17a11317b1958678b
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Tue Jan 3 16:57:40 2012 +0100
+
+ Handle NULL as a valid case of a char** array
+
+ Treat NULL as an empty array and add the corresponding testcase
+
+ gi/pygi-marshal-to-py.c | 9 +++++----
+ tests/test_gi.py | 3 +++
+ 2 files changed, 8 insertions(+), 4 deletions(-)
+
+commit e3451b8e6018bb76e9992fb6af24a71725de5cfd
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.com>
+Date: Fri Dec 23 12:01:43 2011 +0100
+
+ Branching, bump version to 3.1.0
+
+ configure.ac | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 8d1a36cc73f5f4df091ecb289c8a7b38ec2ab605
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.com>
+Date: Mon Dec 12 18:35:30 2011 +0100
+
+ Add notes about branching to HACKING
+
+ HACKING | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+commit 00030bc6f0fb961c716ed692144cd8e4bb9be7d0
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Sat Dec 10 12:51:45 2011 +0100
+
+ Fixed bug where GObject.property did not respect minimum and maximum
+ values
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=664864
+
+ gi/_gobject/propertyhelper.py | 2 +-
+ tests/test_properties.py | 31 +++++++++++++++++++++++++++++++
+ 2 files changed, 32 insertions(+), 1 deletion(-)
+
+commit 7b78abc6c399abd0daa4c11c644d107e1bb7b452
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.com>
+Date: Mon Dec 12 17:00:24 2011 +0100
+
+ Remove mention of removed option --enable-docs
+
+ HACKING | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 4cba52f5b5e79b7b6212cb0795e8976a9da9f21d
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.com>
+Date: Mon Dec 12 17:00:03 2011 +0100
+
+ Fix sebp's name in NEWS
+
+ NEWS | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 8c95981d0ba224a577f87998030c384b3dae3d80
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.com>
+Date: Mon Dec 12 16:20:09 2011 +0100
+
+ Release 3.0.3
+
+ NEWS | 15 +++++++++++++++
+ 1 file changed, 15 insertions(+)
+
+commit 58e47fd28c5d75bb78042c8f9eb5aae84de9c64d
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.com>
+Date: Mon Dec 12 16:16:44 2011 +0100
+
+ Pre-release version bump
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 884468d4816fc976c0c0c72651e7f81d13f3f78b
+Author: Manuel Quiñones <manuq@laptop.org>
+Date: Thu Dec 1 11:50:38 2011 -0300
+
+ Convert all modifier constants to Gdk.ModifierType
+
+ Signed-off-by: Manuel Quiñones <manuq@laptop.org>
+
+ pygi-convert.sh | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+commit 654711d0f940d7480d0f1cdb25a3dc9996f7a706
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Tue Nov 8 12:38:12 2011 +0100
+
+ Convert all strings to utf-8 encoding when retrieving from TreeModel
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=663610
+
+ gi/overrides/Gtk.py | 15 +++++++++++++++
+ tests/compathelper.py | 2 ++
+ tests/test_overrides.py | 31 ++++++++++++++++++++++++++++++-
+ 3 files changed, 47 insertions(+), 1 deletion(-)
+
+commit 4f637212f13b197a95c824967a58496b9e3b877c
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Nov 2 14:51:24 2011 -0400
+
+ add test for bytearray variants
+
+ tests/test_gi.py | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+commit 20ca3f129d6cc662285cce8c732b55596016aefa
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Nov 2 14:50:42 2011 -0400
+
+ handle NULL arrays correctly for each array type
+
+ gi/pygi-marshal-to-py.c | 11 ++++++-----
+ 1 file changed, 6 insertions(+), 5 deletions(-)
+
+commit ce2f780bffe44b1d4de617dcbce4b90c58b03c18
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Nov 2 14:17:21 2011 -0400
+
+ Revert "Revert "Fix array termination and size calculation""
+
+ This reverts commit cfda820e8d9604c5ef2ad1161c22b20080d5daf4.
+
+ gi/pygi-marshal-from-py.c | 6 +++++-
+ gi/pygi-marshal-to-py.c | 8 +++++++-
+ 2 files changed, 12 insertions(+), 2 deletions(-)
+
+commit 832f16f96815adc22cc3acbeb3fa969631795a29
+Author: Owen W. Taylor <otaylor@fishsoup.net>
+Date: Sun Oct 30 18:08:57 2011 -0400
+
+ pygmainloop: avoid lockups if multiple glib.MainLoop exist
+
+ If multiple glib.MainLoop() sources exist, then we will add multiple
+ watches, and when python writes a byte to the wakeup pipe, all of the
+ sources will try to read it; only one will succeed and the others
+ will block. Set both ends of the pipe nonblocking to avoid this.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=663068
+
+ gi/_glib/pygmainloop.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+commit 2fd3aa9d4ca0906a5e609845ee500ba72e358f94
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.com>
+Date: Sat Oct 29 15:08:03 2011 +0200
+
+ Properly chain up to the class that implements a given vfunc.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=662994
+
+ gi/types.py | 22 +++++++++++++---------
+ tests/test_gi.py | 20 ++++++++++----------
+ 2 files changed, 23 insertions(+), 19 deletions(-)
+
+commit cfda820e8d9604c5ef2ad1161c22b20080d5daf4
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.com>
+Date: Wed Nov 2 14:54:21 2011 +0100
+
+ Revert "Fix array termination and size calculation"
+
+ This reverts commit eef35b2df8023ffff2d195ee16c084f5cfcb6ba3.
+
+ gi/pygi-marshal-from-py.c | 6 +-----
+ gi/pygi-marshal-to-py.c | 8 +-------
+ 2 files changed, 2 insertions(+), 12 deletions(-)
+
+commit eef35b2df8023ffff2d195ee16c084f5cfcb6ba3
+Author: Holger Berndt <hb@gnome.org>
+Date: Sun Oct 30 16:36:32 2011 +0100
+
+ Fix array termination and size calculation
+
+ When creating an array of element type uint8 and setting it directly
+ with
+ memcpy(), make sure that zero-termination is respected.
+
+ When calculating the length of a zero-terminated array of type uint8,
+ fall back to strlen() instead of g_strv_length().
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=662550
+
+ gi/pygi-marshal-from-py.c | 6 +++++-
+ gi/pygi-marshal-to-py.c | 8 +++++++-
+ 2 files changed, 12 insertions(+), 2 deletions(-)
+
+commit 4c1d9f01b8fa6702f73b290180f934250e179caa
+Author: Daniel Drake <dsd@laptop.org>
+Date: Sun Oct 30 09:20:45 2011 +0000
+
+ pygi-convert: fix for Pango.Alignment
+
+ pygi-convert.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit e3abd76096cc9f335681c7225f452c286b9c59e2
+Author: Daniel Drake <dsd@laptop.org>
+Date: Sun Oct 30 07:06:57 2011 +0000
+
+ pygi-convert: fix for Gtk.Orientation
+
+ pygi-convert.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 52b82c5f78ef3755388457fa9440c36ccd2dfbbf
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Thu Oct 27 07:16:24 2011 +0200
+
+ Add tests for calling closures
+
+ Add checks for correct handling of closure calls.
+ Regress.test_closure_one_arg() is working fine and should continue
+ to do so.
+ Regress.test_closure_variant() is known to not work yet, so mark
+ this as EXFAIL
+ for now. (See https://bugzilla.gnome.org/show_bug.cgi?id=656554)
+
+ tests/test_everything.py | 24 ++++++++++++++++++++++++
+ 1 file changed, 24 insertions(+)
+
+commit c7aa0e79dfb4c1092c51ae1464b8414083b4f3fc
+Author: Mikkel Kamstrup Erlandsen <mikkel.kamstrup@canonical.com>
+Date: Tue Oct 4 12:28:26 2011 +0200
+
+ fix marshaling of arrays of GVariants
+
+ Add unit tests for marshaling of arrays of variants with all
+ transfer modes. Requires latest gobject-introspection.
+
+ Plug potential leaks of GArray data members
+
+ Fix calling of wrong cleanup_from_py for arrays
+
+ Simplify and fix logic for cleaning up arrays both in from_py()
+ and to_py() code paths.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=638915
+
+ Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
+
+ gi/pygi-cache.c | 2 +-
+ gi/pygi-marshal-cleanup.c | 81
+ ++++++++++++++++++++++++++++++-----------------
+ gi/pygi-marshal-from-py.c | 10 ++++--
+ gi/pygi-marshal-to-py.c | 13 ++++++--
+ tests/test_gi.py | 14 +++++++-
+ 5 files changed, 85 insertions(+), 35 deletions(-)
+
+commit c2ec4d8eb46ae2e6ee4372b2a4f9d5df0e5d82f3
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date: Sat Oct 22 00:20:57 2011 +0200
+
+ Release 3.0.2
+
+ NEWS | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+commit 5c24760b797e985721f7fe51d52252e4dd54a417
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Fri Oct 21 17:31:41 2011 +0200
+
+ Fix "Returns: (skip)" method calls without (out) arguments
+
+ When we have a method call with a skipped return value, but no
+ other out
+ arguments, we previously returned NULL to Python, which causes
+ "SystemError:
+ error return without exception set". Return None instead.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=662383
+
+ gi/pygi-invoke.c | 10 ++++++++++
+ tests/test_everything.py | 8 ++++++++
+ 2 files changed, 18 insertions(+)
+
+commit 585222915dc98b0e375de3db4771466278a32e81
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Oct 18 00:39:16 2011 -0400
+
+ Do union member checks for unions that are parameters
+
+ * before we were only doing checks if the union was an instance
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=661673
+
+ gi/pygi-marshal-from-py.c | 121
+ ++++++++++++++++++++++++++--------------------
+ 1 file changed, 68 insertions(+), 53 deletions(-)
+
+commit 8deaec6b9abd87f02060c9feec773d4693e89028
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Wed Oct 19 14:35:11 2011 +0200
+
+ Gdk overrides: Unbreak for Gdk-2.0
+
+ Fix regression from commit 31db3ed: Gdk 2.0 did not yet have
+ atom_intern(), so
+ only do this for Gdk >= 3.0.
+
+ https://launchpad.net/bugs/875399
+
+ gi/overrides/Gdk.py | 95
+ +++++++++++++++++++++++++++--------------------------
+ 1 file changed, 48 insertions(+), 47 deletions(-)
+
+commit f395fb131caf7ca550acd17138d8061926ef4f92
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Oct 14 17:19:45 2011 -0400
+
+ unit test for checking ref count of object param in signals
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=661359
+
+ tests/test_everything.py | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+commit 611f58b99851328653af4930f188c33eccaa9f6f
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Oct 14 16:42:32 2011 -0400
+
+ when converting an object with transfer none, make sure the wrapper
+ owns a ref
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=661359
+
+ gi/pygi-argument.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+commit 0f1eb9fa0e7aa5e7c22dabc709c0dfb469e404f1
+Author: Timo Vanwynsberghe <timovwb@gmail.com>
+Date: Tue Oct 4 11:13:43 2011 +0200
+
+ Allow GBoxed types as property
+
+ Add the GBoxed type as valid type to the gobject property helper
+ https://bugzilla.gnome.org/show_bug.cgi?id=660798
+
+ gi/_gobject/propertyhelper.py | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+commit bef8d385117dd0295c9ba7567710d76fc2bb729a
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date: Mon Oct 10 11:24:42 2011 +0200
+
+ Add tests for boxed properties.
+
+ tests/test_properties.py | 20 ++++++++++++++++++--
+ 1 file changed, 18 insertions(+), 2 deletions(-)
+
+commit 77123ffeb1585837033848f4d5a90cfa63fdaee0
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date: Fri Sep 30 20:21:07 2011 +0200
+
+ Post release bump version
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit f5ccfec0a1bc4c999bfa49d75383ea06d3a068c4
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date: Fri Sep 30 20:19:46 2011 +0200
+
+ Release 3.0.1
+
+ NEWS | 5 +++++
+ configure.ac | 2 +-
+ 2 files changed, 6 insertions(+), 1 deletion(-)
+
+commit 56ac9339eb1d6950623dc4d8c3b9972874e7fa86
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Sep 22 19:03:20 2011 -0400
+
+ when checking instances union members are same type as parent
+
+ * this is so we can support sending Gdk.Event members in place of
+ the Event union into methods
+ * we only support this if the union member has a type of GI_INTERFACE
+ for now
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=659879
+
+ gi/pygi-marshal-from-py.c | 60
+ +++++++++++++++++++++++++++++++++++++++++++----
+ 1 file changed, 56 insertions(+), 4 deletions(-)
+
+commit 311a4f8035a95b41bc3c0a836c32b7a5bf2d9959
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Sep 21 21:50:48 2011 -0400
+
+ add a floating flag to pygobjects
+
+ * this allows us to correctly refcount when custom gobjects are
+ instantiated
+ via g_object_new
+
+ gi/_gobject/gobjectmodule.c | 5 +++++
+ gi/_gobject/pygobject-private.h | 3 +++
+ gi/_gobject/pygobject.c | 27 ++++++++++++++++++++++++++-
+ gi/_gobject/pygobject.h | 3 ++-
+ 4 files changed, 36 insertions(+), 2 deletions(-)
+
+commit d2d29ae5845217254b9336fd8629f369cb119b25
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Sep 21 21:13:22 2011 -0400
+
+ Revert "Fix refcount bug by not creating python wrapper during
+ gobject init stage"
+
+ This reverts commit f6fa5dd8f39af1b8a52d7600d257400b0983e8c5.
+
+ gi/_gobject/gobjectmodule.c | 32 +++++++++++++++++---------------
+ 1 file changed, 17 insertions(+), 15 deletions(-)
+
+commit a24c10b779f2a1b0425d56d03d59c393389cad98
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Sep 21 21:10:00 2011 -0400
+
+ make sure to commit the NEWS file
+
+ NEWS | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+commit 2eed2940c9be099fb6305288d895265e6b35d3d2
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Sep 19 13:19:57 2011 -0400
+
+ prep for 3.0 release
+
+ configure.ac | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit fbd58b70c2c3c1128f95a87eb4cc8313b6a401b8
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Sep 16 14:19:15 2011 -0400
+
+ up version required of gobject-introspection to 1.29.0
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 225f21117b6b3546989abe22538c784291e86b2a
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Sep 16 12:26:10 2011 -0400
+
+ fix most warnings
+
+ * remove some unused vars
+ * correctly cast vars
+ * handle deprecated enums in switch statments by using default:
+ * unused wanrings still remain in some places
+
+ gi/pygi-argument.c | 2 +-
+ gi/pygi-cache.c | 7 ++-----
+ gi/pygi-info.c | 6 ++++++
+ gi/pygi-invoke.c | 2 +-
+ gi/pygi-marshal-from-py.c | 17 +++++++++--------
+ gi/pygi-marshal-to-py.c | 3 +--
+ 6 files changed, 20 insertions(+), 17 deletions(-)
+
+commit 9a70f01288e1b049206d25d67938907f1b38a490
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Sep 16 12:24:38 2011 -0400
+
+ post release bump
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 3ec4020205e909ee4400650434f9ae7b89c2bde8
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Sep 15 18:12:01 2011 -0400
+
+ edit HACKING file to show correct tag format
+
+ HACKING | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 2e864fd05bc0adf48df9f65ab72785ebb1d0d3f0
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Sep 15 18:10:33 2011 -0400
+
+ update NEWS file to prep for release
+
+ NEWS | 35 +++++++++++++++++++++++++++++++++++
+ 1 file changed, 35 insertions(+)
+
+commit 0da687fa699aba4f42c42a924d6754e2bd47df50
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Sep 15 17:59:31 2011 -0400
+
+ fix typo s/lenth/length
+
+ gi/overrides/Gtk.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 0e4861abaff64d8e7e8d1aeedf9dd1e80de8aab2
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Sep 15 17:48:58 2011 -0400
+
+ fix typo in docstring
+
+ gi/_gobject/propertyhelper.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit e7fcc326d64def610e5a1003cf6c7ca97023814d
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Sep 15 17:46:46 2011 -0400
+
+ do not pass in len(str) to the length argument of
+ gtk_test_buffer_insert* apis
+
+ * in python 3 len(str) returns the number of characters while
+ the length
+ parameter is expecting the number of bytes. It also excepts -1
+ for null
+ terminated string. Since all of our strings are null terminated,
+ just
+ set length to that.
+
+ gi/overrides/Gtk.py | 6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+commit 6f380153afb3390f7da9f4b8befb1c4ee224da17
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Mon Sep 12 21:07:20 2011 +0200
+
+ Switch tarball compression format to tar.xz only.
+
+ See
+ http://mail.gnome.org/archives/gnome-announce-list/2011-September/msg00031.html
+ for more information.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=659140
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 11c45ac6dcb6ffad766d03bfc77f45a6d703a90d
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Thu Sep 15 14:18:57 2011 +0200
+
+ Remove pygtk_version attribute from internal gi._gobject module.
+
+ This used to be provided for backwards compatibility with older PyGTK
+ versions. As PyGObject3 no longer provides support for static bindings
+ like PyGTK, the pygtk_version attribute has become obsolete.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=659142
+
+ gi/_gobject/gobjectmodule.c | 4 ----
+ gi/_gobject/pygobject.h | 2 --
+ 2 files changed, 6 deletions(-)
+
+commit 7e48fd6dfd86b7082c3fd35d25d9693c56c9665a
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Sep 15 15:52:18 2011 -0400
+
+ remove overridesdir from the .pc file and add it to the gi module
+
+ * having the variable in the .pc file caused issues parallel
+ installing
+ for different versions of python
+ * putting it into the module allows us to give the correct directory
+ based on which version of python you run the script from
+ * access the var as such:
+ import gi
+ installdir = gi._overridesdir
+
+ gi/__init__.py | 2 ++
+ pygobject-3.0.pc.in | 10 +++++++++-
+ 2 files changed, 11 insertions(+), 1 deletion(-)
+
+commit beea7072a5a989be47a755ac46647380d4dbd6b4
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Sep 15 00:11:09 2011 -0400
+
+ fix tests to correctly construct a dummy Gtk.TargetEntry
+
+ * structs are sometimes a pain in gi. Simply constructing them
+ using the
+ the standard constructor (e.g. Gtk.TargetEntry()) will malloc
+ the struct
+ but not correctly initialize the fields which can cause a crash.
+ * tests didn't crash before because they were sending in bogus
+ data that
+ somehow did not trigger the issue
+ * now with the C struct array marshallers doing the right thing,
+ the incorrect
+ use of TargetEntry was causing a crash
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=627236
+
+ tests/test_overrides.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 46ba7f04ef3df08e07ddda5c10f0c98bec5fa183
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Sep 15 00:08:31 2011 -0400
+
+ we now assume that C arrays of structs are flat so memcpy them
+ when marshalling
+
+ * there is no way in GI to tell if a C array is flat or an array
+ of pointers
+ so we assume that all arrays of simple structs and gvalues are
+ flat and
+ all arrays of objects and boxed structs are pointer arrays.
+ * this will be removed once GI gets the ability to annotate level
+ of indirection
+ for arrays
+ https://bugzilla.gnome.org/show_bug.cgi?id=627236
+
+ gi/pygi-marshal-from-py.c | 35 ++++++++++++++++++++++++++++++++---
+ tests/test_gi.py | 29 +++++++++++++++++++++++++++++
+ 2 files changed, 61 insertions(+), 3 deletions(-)
+
+commit e30a41592baa942188574e5c9f99572963e2e387
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Sep 15 00:02:34 2011 -0400
+
+ only update the arg counts once if child arg comes before parent arg
+
+ * if the child arg comes before the parent arg we need to update the
+ argument counts and take the child arg out of the marshalling lists
+ since it is handled by the parent
+ * when two parents reference the same child arg as is the case with
+ two arrays which have a single length argument we only want
+ to update
+ the count once
+ * to do this we introduce the PYGI_META_ARG_CHILD_NEEDS_UPDATE
+ meta type
+ and only do the count update if this is set
+ * APIs should keep in mind that this take extra processing so
+ child args
+ should really come after their parents
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=627236
+
+ gi/pygi-cache.c | 30 ++++++++++++++++++++----------
+ gi/pygi-cache.h | 9 +++++++--
+ 2 files changed, 27 insertions(+), 12 deletions(-)
+
+commit f6fa5dd8f39af1b8a52d7600d257400b0983e8c5
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Sep 14 20:26:15 2011 -0400
+
+ Fix refcount bug by not creating python wrapper during gobject
+ init stage
+
+ * This only applys to python subclasses of GObject which are
+ instantiated
+ using GObject.new
+ * Because we were creating the wrapper when the gobject is
+ initialized
+ and then again calling pygobject_new_full the wrapper would get
+ ref'ed twice.
+ * we could not simply Py_DECREF the wrapper due to the fact that
+ non-subclassed objects (e.g. GObject.Object) instantiated via
+ new do not run the same initialization code and would not have the
+ extra ref
+ * solution was to simply not create the wrapper during initialization
+ because if it doesn't exist when pygobject_new_full is called
+ it gets created and registered there
+ * move the call to __init__ into pyg_object_new
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=657403
+
+ gi/_gobject/gobjectmodule.c | 32 +++++++++++++++-----------------
+ 1 file changed, 15 insertions(+), 17 deletions(-)
+
+commit 61b64a65beee9011f8e4ed20f0a83e6630ba154f
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Sep 13 18:08:04 2011 -0400
+
+ don't destroy just created wrapper when object is created via
+ g_object_new
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=657403
+
+ gi/_gobject/gobjectmodule.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 93e12cc2eb7e7f2c18971da86e9c9452d3f566b7
+Author: Steve Frécinaux <code@istique.net>
+Date: Fri Aug 26 11:22:09 2011 +0200
+
+ Remove deprecated API from pygobject.h
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=657416
+
+ gi/_gobject/pygobject.h | 19 +------------------
+ 1 file changed, 1 insertion(+), 18 deletions(-)
+
+commit e1c71092af6e2cffa36248519adfceac1874051d
+Author: Marcin Owsiany <marcin@owsiany.pl>
+Date: Wed Aug 31 09:43:28 2011 +0100
+
+ Convert gtk.TRUE/FALSE to Python True/False.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=657785
+
+ pygi-convert.sh | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 3ace5c2e2268285a5dcb39889fcb2a71bc1063bd
+Author: Steve Frécinaux <code@istique.net>
+Date: Fri Sep 2 08:37:15 2011 +0200
+
+ Drop legacy __gobject_init__ method of GObject.Object.
+
+ This method was used in gobject initialization at some point, but now
+ using GObject.__init__() is sufficient, so let's not keep this old
+ method around and let people misuse it.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=658032
+
+ examples/signal.py | 2 --
+ gi/_gobject/pygobject.c | 11 -----------
+ 2 files changed, 13 deletions(-)
+
+commit fcd457d1d1d8a813acb2ebfe5ee0e9aab2c9c88c
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Tue Sep 13 12:05:30 2011 +0200
+
+ AM_CHECK_PYTHON_LIBS does not work for lib64
+
+ But on Windows, Python extension modules need to be explicitly
+ linked to libpython.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=658856
+
+ configure.ac | 4 +++-
+ gi/Makefile.am | 9 ++++++---
+ gi/_glib/Makefile.am | 10 ++++++++--
+ gi/_gobject/Makefile.am | 8 +++++++-
+ 4 files changed, 24 insertions(+), 7 deletions(-)
+
+commit 863c087911203a8f3ebaa8e77622a3437a7cd320
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Mon Sep 12 23:03:05 2011 +0200
+
+ Remove common_ldflags from Makefile.am as it is no longer used.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=658856
+
+ Makefile.am | 6 ------
+ 1 file changed, 6 deletions(-)
+
+commit 24b920f9922e367bdb8b3e56c2f61e0c8f5cdb66
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Sep 13 16:20:48 2011 -0400
+
+ cast params for PyObject_IsInstance to suppress warnings
+
+ gi/_gobject/pygobject-private.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 861369ec59b17f67151813dc2e87c6e86126b954
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Sep 13 16:04:31 2011 -0400
+
+ check if object is actually a PyGFlag before trying to access g_type
+
+ * we are lucky this bit of code worked for as long as it did but when
+ checking if an object is a PyGFlag we can't just rely on looking
+ at the g_type field because if a regular gobject is passed in
+ as is the case when you compare a long to a gflag, the gobject
+ will not have a g_type field. Accessing a non-existant field
+ could at best give you a false positive and at worse read
+ memory beyond the bounds of the actual structure passed in
+
+ gi/_gobject/pygobject-private.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit eea93e89fb064253bd8903c8b453daf4b3c87c2c
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Sep 13 16:03:02 2011 -0400
+
+ fix regression - add instance type checks since Py3 no longer does
+ this for us
+
+ gi/pygi-marshal-from-py.c | 21 +++++++++++++++++++--
+ 1 file changed, 19 insertions(+), 2 deletions(-)
+
+commit a4e4318b50a24a688e32579273fbcfa51d1b422a
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Sep 2 18:39:51 2011 -0400
+
+ refactor in/out marshalling to be to_py/from_py
+
+ * in/out make sense from a C perspective but when you get to the
+ python layers it makes more sense to label them as to_py and
+ from_py to denote which way we are marshalling
+ * this helps clear up the difference between callbacks which
+ call into python and invoked functions which call into C
+ * in the callback case we marshal in values to Python objects
+ and out values to C types but in the invoke case we do the
+ reverse. Dealing with to_py/from_py makes the code much more
+ resuable and consistant
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=658362
+
+ gi/Makefile.am | 8 +-
+ gi/pygi-cache.c | 673 ++++++++++-----------
+ gi/pygi-cache.h | 62 +-
+ gi/pygi-invoke.c | 144 ++---
+ gi/pygi-marshal-cleanup.c | 168 +++---
+ gi/pygi-marshal-cleanup.h | 128 ++--
+ gi/pygi-marshal-from-py.c | 1412
+ +++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-marshal-from-py.h | 186 ++++++
+ gi/pygi-marshal-in.c | 1412
+ ---------------------------------------------
+ gi/pygi-marshal-in.h | 186 ------
+ gi/pygi-marshal-out.c | 768 ------------------------
+ gi/pygi-marshal-out.h | 144 -----
+ gi/pygi-marshal-to-py.c | 768 ++++++++++++++++++++++++
+ gi/pygi-marshal-to-py.h | 144 +++++
+ 14 files changed, 3122 insertions(+), 3081 deletions(-)
+
+commit 45b0fcff9e948c65a3903c32a3957802034c5e47
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Fri Sep 9 16:50:25 2011 +0200
+
+ Examples: fix cairo-demo.py imports
+
+ examples/cairo-demo.py | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 3ca19fc13e6024fd04851e6f269020a92b09fa17
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Fri Sep 9 15:08:27 2011 +0200
+
+ Fix paths and add missing overridesdir variable used in uninstalled
+ pkgconfig file
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=658654
+
+ pygobject-3.0-uninstalled.pc.in | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+commit 6e773175b9d2f46b3df5075ec952a8c5aff3c607
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Fri Sep 9 15:08:04 2011 +0200
+
+ Remove no longer used variables from pkgconfig files
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=658654
+
+ pygobject-3.0-uninstalled.pc.in | 6 ------
+ pygobject-3.0.pc.in | 5 +----
+ 2 files changed, 1 insertion(+), 10 deletions(-)
+
+commit 81d388780311311d8dc4a027a59d114edf9a00fc
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Fri Sep 9 14:57:58 2011 +0200
+
+ docs/Makefile.am and m4/python.m4: Python3 portability fixes
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=658652
+
+ docs/Makefile.am | 2 +-
+ m4/python.m4 | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 7e692ee061406e48e4862b98a0829650b1d6d585
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Fri Sep 9 14:57:46 2011 +0200
+
+ Refactor and clean Makefile.am files
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=658652
+
+ Makefile.am | 2 -
+ gi/Makefile.am | 81 +++++++++++++++++++++++--------------
+ gi/_glib/Makefile.am | 100
+ ++++++++++++++++++++++++++++++----------------
+ gi/_gobject/Makefile.am | 85 ++++++++++++++++++++-------------------
+ gi/overrides/Makefile.am | 4 +-
+ gi/repository/Makefile.am | 4 +-
+ 6 files changed, 162 insertions(+), 114 deletions(-)
+
+commit 3dd59b07d1f4a93ee1f65d6a64e1afb6f5e84232
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Fri Sep 9 14:57:36 2011 +0200
+
+ Remove all PLATFORM_VERSION = 2.0 traces
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=658652
+
+ gi/Makefile.am | 2 --
+ gi/overrides/Makefile.am | 1 -
+ gi/repository/Makefile.am | 1 -
+ 3 files changed, 4 deletions(-)
+
+commit db1e484bfa157967de55ee2e0e18a82b8e388b61
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Fri Sep 9 14:57:25 2011 +0200
+
+ Remove gi/tests/ directory as all the tests now live in tests/
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=658652
+
+ gi/tests/Makefile.am | 24 ------------------------
+ gi/tests/runtests.py | 21 ---------------------
+ 2 files changed, 45 deletions(-)
+
+commit b0ecbf00138ef1147e478ebf3c66f0e9b3f85dfc
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Fri Sep 9 14:55:25 2011 +0200
+
+ autogen.sh: Use autoreconf instead of a custom script and honor
+ ACLOCAL_FLAGS
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=658652
+
+ Makefile.am | 2 +-
+ autogen.sh | 95
+ +++++++------------------------------------------------------
+ 2 files changed, 12 insertions(+), 85 deletions(-)
+
+commit 4671f5397003f376f00830e3fd1c214de594619f
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Fri Sep 9 14:55:01 2011 +0200
+
+ use improved python.m4 macros to search for Python headers and libs
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=658652
+
+ configure.ac | 3 ++-
+ m4/python.m4 | 47 +++++++++++++++++++++++++++++++++++++----------
+ 2 files changed, 39 insertions(+), 11 deletions(-)
+
+commit 2c9fd09da196d35db968bff4ae63fcce2d891e69
+Author: Javier Jardón <jjardon@gnome.org>
+Date: Fri Sep 9 15:38:22 2011 +0100
+
+ Make maintiner mode enabled by default
+
+ See
+ http://blogs.gnome.org/desrt/2011/09/08/am_maintainer_mode-is-not-cool/
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit b24dcb415406668931e02a1f669ef9861bb3a660
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Wed Aug 24 09:58:10 2011 +0200
+
+ Disable documentation for now since they are completely wrong for GI.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=657054
+
+ Makefile.am | 2 +-
+ configure.ac | 25 -------------------------
+ 2 files changed, 1 insertion(+), 26 deletions(-)
+
+commit ecea2358a379c8ff44dff2f8f9c30a9092af1681
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Wed Sep 7 10:38:28 2011 +0200
+
+ Fix documentation installation directory
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=657054
+
+ docs/Makefile.am | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+commit 8d3125c8ce9890c70400dd8a3ac273b590fe6a31
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Tue Sep 6 22:22:11 2011 +0200
+
+ Remove distutils based build system.
+
+ The only reason this might be brought back to life again is when
+ the whole stack can be built with Visual Studio (including
+ gobject-introspection) again. Building with MinGW/MSYS can now
+ be done with the usual autogen.sh/configure/make/make install dance.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=657054
+
+ MANIFEST.in | 7 -
+ Makefile.am | 25 +--
+ README.win32 | 21 --
+ dsextras.py | 509
+ -----------------------------------------------
+ pygobject_postinstall.py | 9 -
+ setup.py | 351 --------------------------------
+ 6 files changed, 7 insertions(+), 915 deletions(-)
+
+commit b82d916635aa0b732840548088a3fcfcb2e41bc4
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Wed Sep 7 10:40:36 2011 +0200
+
+ [gtk-demo] Fix syntax highlighter encoding issue
+
+ With Python 3, Gtk.TextBuffer.get_text returns a str (not bytes), with
+ Python 2 however we get a str (not unicode). So with Python 2 the
+ tokenizer returned bogus data when ran over a demo that contains real
+ UTF-8 codepoints (like rotatedtext.py for example).
+
+ This patch thus fixes the "Gtk-CRITICAL **:
+ gtk_text_iter_set_line_offset:
+ assertion `char_on_line <= chars_in_line` failed" assertions when
+ selecting
+ the rotated text demo in the treeview.
+
+ demos/gtk-demo/gtk-demo.py | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit 31db3ed3d233bd495c3a2f99b3fa51031bfa30c6
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date: Tue Sep 6 22:13:54 2011 +0200
+
+ overrides: add constants for atoms
+
+ gi/overrides/Gdk.py | 49
+ +++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 49 insertions(+)
+
+commit 81861bc2d664eb38d46e5c38ff755d436f040f63
+Author: Steve Frécinaux <code@istique.net>
+Date: Wed Aug 31 14:18:56 2011 +0200
+
+ Drop pygobject_construct() from public API.
+
+ These functions were introduced in 2005 because python objects
+ could not
+ "just" be instantiated using g_object_new(), but this is not true
+ anymore since the introduction of new-style constructors. Hence
+ this API
+ has no reason to be there anymore.
+
+ Nowadays, people who want to construct GObjects defined in python
+ should
+ just use g_object_new().
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=657814
+
+ gi/_gobject/gobjectmodule.c | 118
+ +++++++++-------------------------------
+ gi/_gobject/pygobject-private.h | 3 -
+ gi/_gobject/pygobject.h | 8 ---
+ 3 files changed, 26 insertions(+), 103 deletions(-)
+
+commit c4c55a98ccf9e39ed0d10ed49b66a76dc7d7c509
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date: Wed Aug 31 18:00:44 2011 +0200
+
+ post release version bump
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit ac5a0f46242abdd3cd98ec5f9f2bf8e5b05f3845
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date: Wed Aug 31 17:58:37 2011 +0200
+
+ Release 2.90.3
+
+ NEWS | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+commit 429569abddada5a3bad554de707ddf35b349936e
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Aug 25 13:57:53 2011 -0400
+
+ support skip annotation for return values
+
+ * this is used for things like skiping gboolean returns that are
+ useful is C but useless in python
+
+ * cleans up after skipped returns that are also marked transfer
+ full
+ https://bugzilla.gnome.org/show_bug.cgi?id=650135
+
+ gi/pygi-cache.c | 1 +
+ gi/pygi-cache.h | 1 +
+ gi/pygi-invoke.c | 48
+ ++++++++++++++++++++++++++++++------------------
+ tests/test_everything.py | 8 ++++++++
+ 4 files changed, 40 insertions(+), 18 deletions(-)
+
+commit 7a234b185b131f3eb6a6e8a8c717ddf4d508b15e
+Author: Xavier Claessens <xclaesse@gmail.com>
+Date: Tue Aug 2 12:05:12 2011 +0200
+
+ Test GPtrArray regression
+
+ tests/test_everything.py | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit 42fc9fa437102c882844a0e70a081ab08de92658
+Author: Steve Frécinaux <code@istique.net>
+Date: Fri Aug 26 10:53:43 2011 +0200
+
+ Drop support for old constructor style.
+
+ Bindings don't write their own constructors anymore, and the old style
+ has been deprecated for ages, so let's just drop them now and make
+ pygobject simpler.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=657413
+
+ gi/_gobject/gobjectmodule.c | 20 --------------------
+ gi/_gobject/pygobject-private.h | 1 -
+ gi/_gobject/pygobject.c | 1 -
+ gi/_gobject/pygobject.h | 2 --
+ gi/gimodule.c | 28 ----------------------------
+ gi/types.py | 2 --
+ tests/testhelpermodule.c | 5 -----
+ 7 files changed, 59 deletions(-)
+
+commit 3961a405e1bddef22e1a5a0c7aa3ae55e4ec09ad
+Author: Steve Frécinaux <code@istique.net>
+Date: Fri Aug 26 10:45:59 2011 +0200
+
+ Drop support for sink functions.
+
+ Sink functions were meant to deal with floating references in a custom
+ way. They are not useful anymore with the dynamic bindings.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=642233
+
+ gi/_gobject/gobjectmodule.c | 1 -
+ gi/_gobject/pygobject.c | 53 ----------------------------------------
+ gi/_gobject/pygobject.h | 4 ---
+ tests/test-floating.c | 59
+ +++++++--------------------------------------
+ tests/test-floating.h | 42 +++++++++-----------------------
+ tests/test_gobject.py | 13 +++-------
+ tests/testhelpermodule.c | 32 +++++++-----------------
+ 7 files changed, 32 insertions(+), 172 deletions(-)
+
+commit 631d8ef879a13492945a3e30b3df9863a4ba2f44
+Author: Mike Gorse <mgorse@novell.com>
+Date: Wed Aug 24 17:30:09 2011 -0500
+
+ Reinstate copying of in-line structs in arrays
+
+ For arrays of in-line, non-boxed structures with (transfer full),
+ _pygi_marshal_free_out_array eventually gets called and frees
+ the array
+ data, so we should copy it (IE, BGO#653588).
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=657120
+
+ gi/pygi-marshal-out.c | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+commit f38511f251602e18551c04617cc2e2d42e812e1e
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Aug 23 14:18:43 2011 -0400
+
+ fix inline struct array handling
+
+ * we now assume any non-boxed structs are inline in an array since
+ there is
+ no way to check in GI and this is the most common use for an
+ array of
+ non-boxed structs
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=657120
+
+ gi/pygi-marshal-out.c | 23 +++++++++--------------
+ tests/test_gi.py | 8 ++++++++
+ 2 files changed, 17 insertions(+), 14 deletions(-)
+
+commit d92846a5446b0dd2e69c813f56224a1966ab1a33
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Tue Aug 23 11:30:41 2011 +0200
+
+ [gtk-demo] printing.py: set print and error dialog transient parent
+
+ demos/gtk-demo/demos/printing.py | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit 1aebc1565752840075027b9452fe2a67217bf53b
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Tue Aug 23 11:28:05 2011 +0200
+
+ [gtk-demo] printing.py: exit Gtk mainloop when done and correctly
+ handle printing errors
+
+ demos/gtk-demo/demos/printing.py | 14 ++++++++++----
+ 1 file changed, 10 insertions(+), 4 deletions(-)
+
+commit 1f9e4486c5b84209ce0038887738fc16a4ef7da3
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Tue Aug 23 08:05:43 2011 +0200
+
+ [gtk-demo] show "activated" demo's in italic font in the TreeView
+
+ demos/gtk-demo/gtk-demo.py | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+commit 971d063f7a36e13ef6621db7002b00af52f6292a
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Mon Aug 22 14:52:28 2011 +0200
+
+ [gtk-demo] source colorizer: Python3 does not have the BACKQUOTE
+ token, so simply remove it
+
+ demos/gtk-demo/gtk-demo.py | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+commit c2979a37d6d505095b6e55789150a6498d95819d
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Mon Aug 22 14:22:18 2011 +0200
+
+ [gtk-demo] In Python3, GLib.file_get_contents returns a bytes object
+ but Gtk.TextBuffer.insert expects a string.
+
+ Fixed by using codes.open() as hinted in
+ http://docs.python.org/dev/howto/pyporting.html#text-files
+ section "If pre-2.6 compatibility is needed" (because configure.ac
+ is still happy with Python 2.5.2).
+
+ demos/gtk-demo/gtk-demo.py | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+commit 9ea56535f35abbea4cd977dea4c89247e4b01694
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Mon Aug 22 12:30:24 2011 +0200
+
+ [gtk-demo] images.py: fix 'Insensitive 'button mnenomic
+
+ demos/gtk-demo/demos/images.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 7829dae1cdb8697a19c2b5e158ef0e08f6c2558b
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Mon Aug 22 10:38:04 2011 +0200
+
+ [gtk-demo] printing.py: fix Pango.EllipsizeType > Pango.EllipsizeMode
+ & get_pixel_size
+
+ demos/gtk-demo/demos/printing.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 07f0274301d77d9bf62b49a14b059d9a52afb445
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Mon Aug 22 10:37:08 2011 +0200
+
+ [gtk-demo] printing.py: fix text file loading
+
+ demos/gtk-demo/demos/printing.py | 32 ++++++++++++++++----------------
+ 1 file changed, 16 insertions(+), 16 deletions(-)
+
+commit 135148a4c35aac1d132b0b8fa3adbf1fdcdb3a24
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Mon Aug 22 10:20:35 2011 +0200
+
+ [gtk-demo] pixbuf.py: fix image loading
+
+ demos/gtk-demo/demos/pixbuf.py | 25 +++++++++++--------------
+ 1 file changed, 11 insertions(+), 14 deletions(-)
+
+commit a93cae2c80e30a408f86e7e6c4d15a538011a189
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Mon Aug 22 10:10:02 2011 +0200
+
+ [gtk-demo] images.py: fix logo loading
+
+ demos/gtk-demo/demos/images.py | 70
+ +++++++++++++++++-------------------------
+ 1 file changed, 29 insertions(+), 41 deletions(-)
+
+commit eddc0824e0e4c156fca5de05bdeb600c534d4b24
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Wed Aug 24 12:19:21 2011 +0200
+
+ [gtk-demo] appwindow.py: set AboutDialog parent
+
+ demos/gtk-demo/demos/appwindow.py | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+commit 7fe10a5b33148b1f029f3d34f76b7f880c1c2e7a
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Mon Aug 22 07:58:25 2011 +0200
+
+ [gtk-demo] appwindow.py: fix logo loading
+
+ demos/gtk-demo/demos/appwindow.py | 10 +++-------
+ 1 file changed, 3 insertions(+), 7 deletions(-)
+
+commit 62fda288c1c37167c589e8e9d49ed625f770a98a
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Mon Aug 22 07:57:31 2011 +0200
+
+ [gtk-demo] appwindow.py: fix callback signatures
+
+ demos/gtk-demo/demos/appwindow.py | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 87e9ab4d3a0aac4f4710aa0f8af0a1736f781ad9
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Mon Aug 22 07:48:28 2011 +0200
+
+ [gtk-demo] fix glib vs GLib usage
+
+ demos/gtk-demo/demos/Icon View/iconviewbasics.py | 2 +-
+ demos/gtk-demo/demos/appwindow.py | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit d29cad6976a80862e1fc590d3e7d190e8a234866
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Wed Aug 24 12:19:02 2011 +0200
+
+ [gtk-demo] iconviewedit.py: fix for Gdk.color_parse API breakage
+ caused by improved GDK overrides
+
+ demos/gtk-demo/demos/Icon View/iconviewedit.py | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit f29d3a85a275a39e8481484779264b0dea1160ab
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Mon Aug 22 07:25:32 2011 +0200
+
+ [gtk-demo] optimize source colorizer by only preparing iters for
+ known colorized tokens
+
+ demos/gtk-demo/gtk-demo.py | 20 +++++++++++++++-----
+ 1 file changed, 15 insertions(+), 5 deletions(-)
+
+commit ecd1eb00b19733da3f2e3d7935792378f34cab19
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Fri Aug 19 18:31:20 2011 +0200
+
+ [gtk-demo] small formatting fixes
+
+ demos/gtk-demo/demos/Entry/entry_buffer.py | 1 +
+ demos/gtk-demo/demos/Entry/entry_completion.py | 1 +
+ demos/gtk-demo/demos/Icon View/iconviewbasics.py | 8 ++++----
+ demos/gtk-demo/demos/assistant.py | 1 +
+ demos/gtk-demo/demos/builder.py | 4 +++-
+ demos/gtk-demo/demos/button_box.py | 1 +
+ demos/gtk-demo/demos/clipboard.py | 1 +
+ demos/gtk-demo/demos/colorselector.py | 1 +
+ demos/gtk-demo/demos/combobox.py | 1 +
+ demos/gtk-demo/demos/drawingarea.py | 4 +++-
+ demos/gtk-demo/demos/test.py | 2 ++
+ 11 files changed, 19 insertions(+), 6 deletions(-)
+
+commit c42cb4da399ff5732f4ca732b85134de796a60fa
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Fri Aug 19 18:30:50 2011 +0200
+
+ [gtk-demo] remove "is_fully_bound" from demos
+
+ demos/gtk-demo/demos/Entry/entry_buffer.py | 2 --
+ demos/gtk-demo/demos/Entry/entry_completion.py | 2 --
+ demos/gtk-demo/demos/appwindow.py | 3 ---
+ demos/gtk-demo/demos/assistant.py | 2 --
+ demos/gtk-demo/demos/builder.py | 2 --
+ demos/gtk-demo/demos/button_box.py | 2 --
+ demos/gtk-demo/demos/clipboard.py | 2 --
+ demos/gtk-demo/demos/colorselector.py | 2 --
+ demos/gtk-demo/demos/combobox.py | 2 --
+ demos/gtk-demo/demos/drawingarea.py | 2 --
+ demos/gtk-demo/demos/test.py | 1 -
+ 11 files changed, 22 deletions(-)
+
+commit cad6a62c63f455f0b1315465a9cd71c0f02b12a5
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Fri Aug 19 18:26:31 2011 +0200
+
+ [gtk-demo] add source colorizer loosely based on PyGTK's pygtk-demo
+ and GTK+'s gtk-demo code
+
+ demos/gtk-demo/gtk-demo.py | 116
+ +++++++++++++++++++++++++++++++++++++++------
+ 1 file changed, 101 insertions(+), 15 deletions(-)
+
+commit 250c36f4a8352ff1b31c1c85b156d3e803d4b8ef
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Fri Aug 19 15:08:15 2011 +0200
+
+ [gtk-demo] remove C-isms
+
+ demos/gtk-demo/gtk-demo.py | 28 ++++++++++++++--------------
+ 1 file changed, 14 insertions(+), 14 deletions(-)
+
+commit cf35fe8e259e786d0fa21b08b1f5c64c9bb0a84e
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Fri Aug 19 14:54:39 2011 +0200
+
+ [gtk-demo] fix text on info tab to be more like GTK+'s gtk-demo
+
+ demos/gtk-demo/gtk-demo.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 241827208e25c72a990d8edd95a3b879470d6409
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Fri Aug 19 14:40:56 2011 +0200
+
+ [gtk-demo] remove duplicate storage of demos by only storing them
+ in a TreeStore subclass
+
+ This also moves demos loading code into the TreeStore subclass and
+ demo loading code into the Demo class
+
+ demos/gtk-demo/gtk-demo.py | 151
+ +++++++++++++++++++++------------------------
+ 1 file changed, 70 insertions(+), 81 deletions(-)
+
+commit 58797c355a08a35375988881a17958bb42ad54bb
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Fri Aug 19 14:40:00 2011 +0200
+
+ [gtk-demo] make GtkDemoApp a Gtk.Window subclass and adapt main()
+ to demonstrate the GLib.MainLoop
+
+ demos/gtk-demo/gtk-demo.py | 43
+ ++++++++++++++++++++++++++-----------------
+ 1 file changed, 26 insertions(+), 17 deletions(-)
+
+commit 1e4fc1ea54527cff78f6c633db39e9a0bd3c64d2
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Fri Aug 19 11:46:17 2011 +0200
+
+ [gtk-demo] correctly load demo code when cwd != demos/gtk-demo/
+
+ demos/gtk-demo/gtk-demo.py | 39 +++++++++++++++++++++++----------------
+ 1 file changed, 23 insertions(+), 16 deletions(-)
+
+commit 6ffc999fbd4c9990fb5bde53ddd46d139b53245e
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Fri Aug 19 11:02:35 2011 +0200
+
+ [gtk-demo] drawingarea: fix labels
+
+ demos/gtk-demo/demos/drawingarea.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 9fd3986affe11cbc5a816adcccdc56d0592f3618
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Fri Aug 19 09:57:31 2011 +0200
+
+ [gtk-demo] fix imports
+
+ demos/gtk-demo/demos/Icon View/iconviewbasics.py | 6 ++++--
+ demos/gtk-demo/demos/appwindow.py | 9 ++++++---
+ demos/gtk-demo/gtk-demo.py | 8 ++++----
+ 3 files changed, 14 insertions(+), 9 deletions(-)
+
+commit 9f314babfdee3b82799e00ea003972b0bbe6a8d5
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Fri Aug 19 10:07:14 2011 +0200
+
+ [gtk-demo] fix shebang
+
+ demos/gtk-demo/gtk-demo.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 01142060ae7d71a8a1f7d3e9bbc6f52e65f01c8d
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Fri Aug 19 12:27:04 2011 +0200
+
+ Added support for __setitem__ to TreeModel and support for slices
+ to TreeModelRow
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=656891
+
+ gi/overrides/Gtk.py | 26 ++++++++++++++++++++--
+ tests/test_overrides.py | 57
+ +++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 81 insertions(+), 2 deletions(-)
+
+commit d6da96c65b2ed3cda238886990a624fbc31f6987
+Author: Olav Vitters <olav@vitters.nl>
+Date: Wed Aug 24 16:31:12 2011 +0200
+
+ Convert ACCEL_* constants into Gtk.AccelFlags.
+
+ pygi-convert.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 0841d41698302abb5d987849a5874252564ed428
+Author: Olav Vitters <olav@vitters.nl>
+Date: Wed Aug 24 16:22:17 2011 +0200
+
+ Convert TREE_VIEW_DROP_* constants into Gtk.TreeViewDropPosition
+
+ pygi-convert.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 37b0d0f9dc3d485829cae6e50da369fdea91a2d1
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Aug 18 14:06:32 2011 -0400
+
+ post commit version bump
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit e51efc50835a14e0418cc27cc928c52d1aa6a3cf
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Aug 18 14:02:30 2011 -0400
+
+ release 2.90.2
+
+ NEWS | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+commit 74c727b53fcf64f465ee77b5a1ea04a69ca90968
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Aug 18 13:50:51 2011 -0400
+
+ remove tests that were removed from gi
+
+ tests/test_gi.py | 11 -----------
+ 1 file changed, 11 deletions(-)
+
+commit 11ea24dd30d8eeca11c8433c6bd75b06e52ae1ef
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Aug 18 13:48:57 2011 -0400
+
+ don't calculate item_size using is_pointer
+
+ * is_pointer is poorly defined and cacluating item_size for
+ arrays causes a crash in the tests because of this
+ * disregaurd is_pointer when cacluating item sizes
+
+ gi/pygi-info.c | 8 ++------
+ 1 file changed, 2 insertions(+), 6 deletions(-)
+
+commit 493b4a21dd162d78cf572b548b58ba6a9ff22971
+Author: Timo Vanwynsberghe <timovwb@gmail.com>
+Date: Wed Jul 6 01:50:31 2011 +0200
+
+ Updated signal example to use GObject introspection
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=654162
+
+ examples/signal.py | 9 ++++-----
+ 1 file changed, 4 insertions(+), 5 deletions(-)
+
+commit 0332010e704e253380e993874eab9dd122e59a7e
+Author: Timo Vanwynsberghe <timovwb@gmail.com>
+Date: Wed Jul 6 01:54:50 2011 +0200
+
+ Updated properties example to use GObject introspection
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=654162
+
+ examples/properties.py | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+commit c39f4555ebd703651eca6f978ed9870655b737f0
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Fri Aug 12 22:55:02 2011 +0200
+
+ Add override for GLib.Variant.split_signature()
+
+ This is useful for e. g. iterating over method parameters which are
+ passed as a
+ single Variant. In particular we will need it for automatically
+ generating
+ introspection XML for exported DBus server objects.
+
+ gi/overrides/GLib.py | 50
+ +++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_overrides.py | 22 ++++++++++++++++++++++
+ 2 files changed, 72 insertions(+)
+
+commit 735f98d83c1c19df7457aa32a378e8c80cf2831f
+Author: Timo Vanwynsberghe <timovwb@gmail.com>
+Date: Mon Aug 15 18:58:31 2011 +0200
+
+ [pygi-convert.sh] Handle the import of pygtk and require Gtk 3.0
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=654001
+
+ pygi-convert.sh | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit d0a96a0a75f2bc969522abce2d326ef440cf143a
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date: Mon Aug 15 13:12:49 2011 +0200
+
+ Install pygobject.h again.
+
+ This is needed by libpeas.
+
+ gi/_gobject/Makefile.am | 5 ++++-
+ pygobject-3.0-uninstalled.pc.in | 4 ++--
+ pygobject-3.0.pc.in | 6 +++---
+ 3 files changed, 9 insertions(+), 6 deletions(-)
+
+commit 081dc2eb03b677eac9f08d3ad05deecc7c51554c
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Sun Aug 14 11:20:15 2011 -0400
+
+ update the doap file
+
+ pygobject.doap | 26 ++++++++++++++------------
+ 1 file changed, 14 insertions(+), 12 deletions(-)
+
+commit 762a36d2343bc39a502507d600fd1b9db9649dae
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Sun Aug 14 11:13:25 2011 -0400
+
+ prerelease bump
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit d3f85a61ec4b1a1d04838f73dc8d862258150048
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Sun Aug 14 10:13:37 2011 -0400
+
+ get things ready for release
+
+ NEWS | 194
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 194 insertions(+)
+
+commit ffd057649380d4249c1c52e1225e3646f3994bc6
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Sun Aug 14 05:26:18 2011 -0400
+
+ pass exta keywords to the Box constructor
+
+ gi/overrides/Gtk.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit cadbd4142bd0045368b5123d4b0a1876bdd5d798
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Sat Aug 13 11:03:07 2011 -0400
+
+ add (Tree|List)Store set method override
+
+ gi/overrides/Gtk.py | 50 ++++++++++++++++++++++++
+ tests/test_overrides.py | 102
+ ++++++++++++++++++++++++++++++++++++++++++++++--
+ 2 files changed, 149 insertions(+), 3 deletions(-)
+
+commit 9ee9b22bd95e44bd2eca26e7bf3b0a9a988700c5
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Sat Aug 13 09:19:29 2011 -0400
+
+ add test for object arrays
+
+ tests/test_everything.py | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+commit c9d9ffd0380878792cbdb13dec4e53be897e5fbc
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Sat Aug 13 08:46:18 2011 -0400
+
+ only support C pointer arrays for structs and objects
+
+ * There is no way to know if an array of structs or objects are
+ pointer arrays
+ or flat arrays. Since pointer arrays are the most useful and
+ prevelant
+ it has been decided to only support those arrays
+
+ gi/pygi-marshal-out.c | 2 +-
+ tests/test_gi.py | 8 --------
+ 2 files changed, 1 insertion(+), 9 deletions(-)
+
+commit b12379de1790b72d51883bf7b63c892639a892e7
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Sat Aug 13 06:31:52 2011 -0400
+
+ revert Gtk.Window override because it causes issues with subclasses
+
+ gi/overrides/Gtk.py | 9 ---------
+ 1 file changed, 9 deletions(-)
+
+commit 3e64a62d6d7f9e9d2820aad54187ef9c34710a1f
+Author: Jonathan Matthew <jonathan@d14n.org>
+Date: Thu Apr 7 21:05:32 2011 +1000
+
+ take GIL in _pygi_invoke_closure_free (bug #647016)
+
+ gi/pygi-closure.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit f8de9b8615f5dc30f492781d792aef5fc1e9ab73
+Author: Johan Dahlin <jdahlin@litl.com>
+Date: Mon Jun 27 00:41:24 2011 -0300
+
+ Add a default parameter to GtkTreeModel.filter_new
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=653462
+
+ gi/overrides/Gtk.py | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit 583d0b3c6b53712128d7c2d5f075000a2a76ae5f
+Author: Johan Dahlin <jdahlin@litl.com>
+Date: Mon Jun 27 00:40:12 2011 -0300
+
+ Add vbox/action_area properties
+
+ Accessing vbox/action_area directly creates segmentation fault,
+ avoid that by mapping the fields to their getters for PyGTK
+ API compatibility
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=653462
+
+ gi/overrides/Gtk.py | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit 017fdfc1dd06259006719e02ffa48883cee01ffd
+Author: Johan Dahlin <jdahlin@litl.com>
+Date: Mon Jun 27 00:39:41 2011 -0300
+
+ Add a couple of constructors
+
+ This is for PyGTK compatibility, so that gtk.HBox(True, 2) etc
+ works.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=653462
+
+ gi/overrides/Gtk.py | 40 ++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 40 insertions(+)
+
+commit af8bc9d5cdba48a7ee728ccb7ea9039df3ecceba
+Author: Johan Dahlin <jdahlin@litl.com>
+Date: Mon Jun 27 00:38:30 2011 -0300
+
+ Do not always pass in user_data to callbacks.
+
+ This keeps API compatibility with PyGTK and avoids sending
+ in user_data if it's None.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=653462
+
+ gi/overrides/Gtk.py | 15 ++++++++++++---
+ 1 file changed, 12 insertions(+), 3 deletions(-)
+
+commit 7914d814350af1a18bdeda64f049c8e9a68d1d18
+Author: Johan Dahlin <jdahlin@litl.com>
+Date: Mon Jun 27 00:38:20 2011 -0300
+
+ Add a default detail value for Widget.render_icon
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=653462
+
+ gi/overrides/Gtk.py | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit 5b1c875269b7979caae97e84919a690a34d92f29
+Author: Johan Dahlin <jdahlin@litl.com>
+Date: Mon Jun 27 00:36:20 2011 -0300
+
+ Add an override for Gdk.color_parse()
+
+ Change Gdk.color_parse() to not return a tuple, instead just
+ return the created color or None if it wasn't possible to parse
+ the name into a color.
+
+ This keeps compatibility with PyGTK but breaks the current API.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=653462
+
+ gi/overrides/Gdk.py | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+commit 187a2932bbf1e724f759ff3ed3392fc7341c6aa8
+Author: Laszlo Pandy <lpandy@src.gnome.org>
+Date: Mon Aug 8 12:06:18 2011 +0200
+
+ Support function calling with keyword arguments in invoke.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=625596
+
+ gi/pygi-cache.c | 39 ++++++++++++
+ gi/pygi-cache.h | 4 ++
+ gi/pygi-invoke.c | 162
+ +++++++++++++++++++++++++++++++++++++++++++++--
+ gi/types.py | 12 ++--
+ tests/test_everything.py | 2 +-
+ tests/test_gi.py | 58 +++++++++++++++++
+ 6 files changed, 265 insertions(+), 12 deletions(-)
+
+commit e5df32ffbf37481dbb6a70c4d4e7b7b9778c5549
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Sat Aug 13 04:13:28 2011 -0400
+
+ remove references to deprecated GI_INFO_TYPE_ERROR_DOMAIN
+
+ gi/pygi-info.c | 5 -----
+ 1 file changed, 5 deletions(-)
+
+commit 745001178fc72be5626c7211366d694f41162987
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Thu Aug 11 15:11:42 2011 +0200
+
+ Fix gobject vs. gi.repository warning
+
+ Check the warning earlier and fix the operator, so that it actually
+ works. Also
+ update the warning to explain how to fix the problem.
+
+ gi/_gobject/__init__.py | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit 25d2d05cba05414cd4551e0e06f6286a9b97a509
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Jul 22 15:46:31 2011 -0400
+
+ make GObject and GLib able to take overrides
+
+ * derive directly from DynamicModule instead of InterfaceModule
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=642048
+
+ gi/importer.py | 11 +++---
+ gi/module.py | 118
+ ++++++++++++++++++++++++++++-----------------------------
+ 2 files changed, 64 insertions(+), 65 deletions(-)
+
+commit 698b2284e29c0f699198cf6a22eeb0e399daba6e
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Jul 22 15:45:09 2011 -0400
+
+ avoid dependency issue by importing the internal gobject
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=642048
+
+ gi/__init__.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 7b068ebe59884ebd9aeb4425dc80cdff73a66fb1
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Jul 22 14:13:02 2011 -0400
+
+ fix tests to use the new GLib module
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=642048
+
+ tests/test_mainloop.py | 7 +++----
+ tests/test_option.py | 3 ++-
+ tests/test_source.py | 24 +++++++++++-------------
+ tests/test_subprocess.py | 12 +++++-------
+ tests/test_thread.py | 10 ++++------
+ tests/test_uris.py | 4 ++--
+ 6 files changed, 27 insertions(+), 33 deletions(-)
+
+commit 191ef79315f8a5641699536fde58da18e23ef904
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Jul 22 14:11:53 2011 -0400
+
+ add DynamicGLibModule which works like DynamicGObjectModule
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=642048
+
+ gi/importer.py | 7 +++++--
+ gi/module.py | 32 +++++++++++++++++++++++++++++---
+ 2 files changed, 34 insertions(+), 5 deletions(-)
+
+commit fbd4a8263260c187211799454c08b1e55e2cb998
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Jul 22 12:27:41 2011 -0400
+
+ refactor, add objects and types to the correct internal module
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=642048
+
+ gi/_glib/pygiochannel.c | 38 +++++++++++++++++++-------------------
+ gi/_glib/pygmaincontext.c | 2 +-
+ gi/_glib/pygmainloop.c | 4 ++--
+ gi/_glib/pygoptioncontext.c | 4 ++--
+ gi/_glib/pygoptiongroup.c | 4 ++--
+ gi/_glib/pygsource.c | 14 +++++++-------
+ gi/_glib/pygspawn.c | 14 +++++++-------
+ 7 files changed, 40 insertions(+), 40 deletions(-)
+
+commit 7431b49a161df9178c55b814d3adff992ac2d722
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Jul 22 12:26:32 2011 -0400
+
+ rename the pyglib shared library so we don't load the old one
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=642048
+
+ gi/Makefile.am | 2 +-
+ gi/_glib/Makefile.am | 10 +++++-----
+ gi/_gobject/Makefile.am | 2 +-
+ 3 files changed, 7 insertions(+), 7 deletions(-)
+
+commit b8700451acd4a19b59b64fc8641fca748d2189e2
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Jul 22 11:20:09 2011 -0400
+
+ refactor tests to only use PyGObject 3 syntax
+
+ * for PyGObject 3 we want to discourage the use of legacy
+ interfaces
+ * Using interfaces like from gi.repository import GObject makes
+ sure that the internal _gobject module is loaded and not
+ PyGObject 2's gobject module which would cause the application
+ to not work correctly
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=642048
+
+ tests/runtests-windows.py | 4 +-
+ tests/test_gdbus.py | 12 ++---
+ tests/test_gi.py | 4 +-
+ tests/test_gobject.py | 31 ++++++------
+ tests/test_interface.py | 16 +++---
+ tests/test_mainloop.py | 3 +-
+ tests/test_overrides.py | 8 +--
+ tests/test_properties.py | 124
+ +++++++++++++++++++++++-----------------------
+ tests/test_signal.py | 98 ++++++++++++++++++------------------
+ tests/test_source.py | 5 +-
+ tests/test_subprocess.py | 3 +-
+ tests/test_thread.py | 5 +-
+ tests/test_unknown.py | 8 +--
+ tests/testhelpermodule.c | 2 +-
+ tests/testmodule.py | 10 ++--
+ 15 files changed, 169 insertions(+), 164 deletions(-)
+
+commit c980dae21468fe073cc8782608148c346bb90ad7
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Jul 22 11:16:00 2011 -0400
+
+ refactor the internal _glib module to import correct modules
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=642048
+
+ gi/_glib/__init__.py | 3 ++-
+ gi/_glib/glibmodule.c | 10 +++++-----
+ gi/_glib/option.py | 4 ++--
+ gi/_glib/pyglib.c | 18 +++++++++---------
+ 4 files changed, 18 insertions(+), 17 deletions(-)
+
+commit 65ac35cca8d24f4c133991e1c6ac02f49416a9a4
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Jul 22 11:10:46 2011 -0400
+
+ refactor to use the new internal _glib and _gobject modules
+
+ * use relative imports instead of aboslute
+ * fix the C imports to import the internal _gobject libs
+ * add a check to see if the PyGObject 2 gobject module
+ was already imported
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=642048
+
+ gi/_gobject/__init__.py | 20 +++++++++++++-------
+ gi/_gobject/constants.py | 3 +--
+ gi/_gobject/gobjectmodule.c | 2 +-
+ gi/_gobject/propertyhelper.py | 11 +++++------
+ gi/_gobject/pygobject.c | 16 ++++++++--------
+ gi/_gobject/pygobject.h | 2 +-
+ 6 files changed, 29 insertions(+), 25 deletions(-)
+
+commit 59ed1289f76bc287443b3974710ea0da3e2cc8cc
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Jul 22 11:07:10 2011 -0400
+
+ refactor gi module to import and use internal _gobject module
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=642048
+
+ gi/importer.py | 2 --
+ gi/module.py | 31 ++++++++++++++++---------------
+ gi/overrides/Gtk.py | 2 +-
+ gi/overrides/__init__.py | 6 +++---
+ gi/pygobject-external.h | 2 +-
+ gi/types.py | 12 ++++++------
+ 6 files changed, 27 insertions(+), 28 deletions(-)
+
+commit 6b9d738d78c6ac45d49f00402c89356887555069
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Jul 22 11:02:49 2011 -0400
+
+ move the static bits internal to gi and refactor build files
+
+ * the glib module now becomes the gi._glib module
+ * the gobject module now becomes the gi._gobject module
+ * we do this so we can install in parallel with PyGObject 2
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=642048
+
+ Makefile.am | 2 +-
+ configure.ac | 6 +-
+ gi/Makefile.am | 8 +-
+ gi/_glib/Makefile.am | 58 +
+ gi/_glib/__init__.py | 25 +
+ gi/_glib/glibmodule.c | 969 ++++++++++++++
+ gi/_glib/option.py | 358 ++++++
+ gi/_glib/pygiochannel.c | 764 ++++++++++++
+ gi/_glib/pygiochannel.h | 29 +
+ gi/_glib/pyglib-private.h | 49 +
+ gi/_glib/pyglib-python-compat.h | 245 ++++
+ gi/_glib/pyglib.c | 633 ++++++++++
+ gi/_glib/pyglib.h | 83 ++
+ gi/_glib/pygmaincontext.c | 126 ++
+ gi/_glib/pygmaincontext.h | 40 +
+ gi/_glib/pygmainloop.c | 360 ++++++
+ gi/_glib/pygmainloop.h | 36 +
+ gi/_glib/pygoptioncontext.c | 337 +++++
+ gi/_glib/pygoptioncontext.h | 39 +
+ gi/_glib/pygoptiongroup.c | 298 +++++
+ gi/_glib/pygoptiongroup.h | 42 +
+ gi/_glib/pygsource.c | 725 +++++++++++
+ gi/_glib/pygsource.h | 39 +
+ gi/_glib/pygspawn.c | 264 ++++
+ gi/_glib/pygspawn.h | 32 +
+ gi/_gobject/Makefile.am | 71 ++
+ gi/_gobject/__init__.py | 117 ++
+ gi/_gobject/constants.py | 83 ++
+ gi/_gobject/ffi-marshaller.c | 194 +++
+ gi/_gobject/ffi-marshaller.h | 31 +
+ gi/_gobject/gobjectmodule.c | 2638
+ +++++++++++++++++++++++++++++++++++++++
+ gi/_gobject/propertyhelper.py | 312 +++++
+ gi/_gobject/pygboxed.c | 234 ++++
+ gi/_gobject/pygboxed.h | 27 +
+ gi/_gobject/pygenum.c | 366 ++++++
+ gi/_gobject/pygenum.h | 27 +
+ gi/_gobject/pygflags.c | 485 +++++++
+ gi/_gobject/pygflags.h | 27 +
+ gi/_gobject/pyginterface.c | 122 ++
+ gi/_gobject/pyginterface.h | 40 +
+ gi/_gobject/pygobject-private.h | 241 ++++
+ gi/_gobject/pygobject.c | 2397
+ +++++++++++++++++++++++++++++++++++
+ gi/_gobject/pygobject.h | 667 ++++++++++
+ gi/_gobject/pygparamspec.c | 404 ++++++
+ gi/_gobject/pygparamspec.h | 31 +
+ gi/_gobject/pygpointer.c | 198 +++
+ gi/_gobject/pygpointer.h | 27 +
+ gi/_gobject/pygtype.c | 1844 +++++++++++++++++++++++++++
+ gi/_gobject/pygtype.h | 28 +
+ glib/Makefile.am | 61 -
+ glib/__init__.py | 25 -
+ glib/glibmodule.c | 969 --------------
+ glib/option.py | 358 ------
+ glib/pygiochannel.c | 764 ------------
+ glib/pygiochannel.h | 29 -
+ glib/pyglib-private.h | 49 -
+ glib/pyglib-python-compat.h | 245 ----
+ glib/pyglib.c | 633 ----------
+ glib/pyglib.h | 83 --
+ glib/pygmaincontext.c | 126 --
+ glib/pygmaincontext.h | 40 -
+ glib/pygmainloop.c | 360 ------
+ glib/pygmainloop.h | 36 -
+ glib/pygoptioncontext.c | 337 -----
+ glib/pygoptioncontext.h | 39 -
+ glib/pygoptiongroup.c | 298 -----
+ glib/pygoptiongroup.h | 42 -
+ glib/pygsource.c | 725 -----------
+ glib/pygsource.h | 39 -
+ glib/pygspawn.c | 264 ----
+ glib/pygspawn.h | 32 -
+ gobject/Makefile.am | 73 --
+ gobject/__init__.py | 117 --
+ gobject/constants.py | 83 --
+ gobject/ffi-marshaller.c | 194 ---
+ gobject/ffi-marshaller.h | 31 -
+ gobject/gobjectmodule.c | 2638
+ ---------------------------------------
+ gobject/propertyhelper.py | 312 -----
+ gobject/pygboxed.c | 234 ----
+ gobject/pygboxed.h | 27 -
+ gobject/pygenum.c | 366 ------
+ gobject/pygenum.h | 27 -
+ gobject/pygflags.c | 485 -------
+ gobject/pygflags.h | 27 -
+ gobject/pyginterface.c | 122 --
+ gobject/pyginterface.h | 40 -
+ gobject/pygobject-private.h | 241 ----
+ gobject/pygobject.c | 2397
+ -----------------------------------
+ gobject/pygobject.h | 667 ----------
+ gobject/pygparamspec.c | 404 ------
+ gobject/pygparamspec.h | 31 -
+ gobject/pygpointer.c | 198 ---
+ gobject/pygpointer.h | 27 -
+ gobject/pygtype.c | 1844 ---------------------------
+ gobject/pygtype.h | 28 -
+ tests/Makefile.am | 2 +-
+ 96 files changed, 16172 insertions(+), 16175 deletions(-)
+
+commit f0d2ddcf7e61c36f79a9adf8ccc53bf3db9349d3
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Jul 18 18:46:31 2011 -0400
+
+ remove pygtk.py
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=642048
+
+ Makefile.am | 5 ----
+ pygtk.py | 95
+ -------------------------------------------------------------
+ 2 files changed, 100 deletions(-)
+
+commit 75e9f7d80d9224c05e6063b88479f1baee48c489
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Jul 18 18:41:41 2011 -0400
+
+ introspection is no longer optional
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=642048
+
+ Makefile.am | 8 +-------
+ configure.ac | 43 +++++++++++++++++--------------------------
+ gi/pygi.h | 37 -------------------------------------
+ gobject/Makefile.am | 5 +----
+ tests/Makefile.am | 7 +------
+ 5 files changed, 20 insertions(+), 80 deletions(-)
+
+commit d862168d6a82edd59547d39f5b0ab8279b1e511c
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Jul 18 18:28:50 2011 -0400
+
+ up platform version to 3.0
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=642048
+
+ Makefile.am | 2 +-
+ configure.ac | 4 ++--
+ pygobject-2.0-uninstalled.pc.in | 18 ------------------
+ pygobject-2.0.pc.in | 22 ----------------------
+ pygobject-3.0-uninstalled.pc.in | 18 ++++++++++++++++++
+ pygobject-3.0.pc.in | 22 ++++++++++++++++++++++
+ 6 files changed, 43 insertions(+), 43 deletions(-)
+
+commit 5189b360ccddbbaee267ce857968fbf1aafdd07a
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Thu Aug 11 09:53:15 2011 +0200
+
+ [gi] Handle GVariants from callback return values
+
+ Callbacks still use GIArgument, add missing GVariant support for
+ return types.
+
+ gi/pygi-argument.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+commit 18a240cc492d2e5ebe2709a0d7155e27c8ff9e63
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Wed Aug 10 14:11:10 2011 +0200
+
+ Handle GVariants for callback arguments
+
+ Callbacks still use GIArgument, add missing GVariant support. This
+ is the
+ equivalent of what commit 9d5604220bd56 did for pygi_marshall_*().
+
+ gi/pygi-argument.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+commit aa820d6ce2fee83e61e3e9de7c6b7d2452e2847d
+Author: Laszlo Pandy <lpandy@src.gnome.org>
+Date: Mon Aug 8 01:58:10 2011 +0200
+
+ [gi] Fix crash: check return value of
+ _invoke_state_init_from_callable_cache() before continuing.
+
+ gi/pygi-invoke.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+commit eaad9f3c71cedfe28ff2d2bb05ea6c64e323715f
+Author: Laszlo Pandy <lpandy@src.gnome.org>
+Date: Fri Aug 5 21:03:33 2011 +0200
+
+ [gi] Pass gtype as first parameter to vfuncs (instead of using
+ kwargs).
+
+ gi/pygi-invoke.c | 32 ++++++++++++++++++--------------
+ gi/types.py | 2 +-
+ 2 files changed, 19 insertions(+), 15 deletions(-)
+
+commit 76edfd0d5776f61c92c84fd9fb8dcc246c580e93
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Jul 18 18:21:51 2011 -0400
+
+ remove codegen
+
+ Makefile.am | 2 +-
+ codegen/Makefile.am | 33 -
+ codegen/README.defs | 351 --------
+ codegen/__init__.py | 16 -
+ codegen/argtypes.py | 1043 -----------------------
+ codegen/code-coverage.py | 44 -
+ codegen/codegen.py | 1722
+ --------------------------------------
+ codegen/createdefs.py | 17 -
+ codegen/definitions.py | 575 -------------
+ codegen/defsconvert.py | 132 ---
+ codegen/defsgen.py | 737 ----------------
+ codegen/defsparser.py | 153 ----
+ codegen/docextract.py | 461 ----------
+ codegen/docextract_to_xml.py | 142 ----
+ codegen/docgen.py | 766 -----------------
+ codegen/h2def.py | 631 --------------
+ codegen/mergedefs.py | 26 -
+ codegen/missingdefs.py | 17 -
+ codegen/mkskel.py | 89 --
+ codegen/override.py | 285 -------
+ codegen/pygobject-codegen-2.0.in | 11 -
+ codegen/reversewrapper.py | 912 --------------------
+ codegen/scanvirtuals.py | 54 --
+ codegen/scmexpr.py | 143 ----
+ configure.ac | 5 -
+ pygobject-2.0-uninstalled.pc.in | 1 -
+ pygobject-2.0.pc.in | 1 -
+ 27 files changed, 1 insertion(+), 8368 deletions(-)
+
+commit bf284c7c47c3e52ab4d8700327a170903e9ebad2
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Jul 18 11:04:58 2011 -0400
+
+ remove some left over ifdefs to complete merge of the invoke-rewrite
+ branch
+
+ gi/pygi-cache.h | 2 --
+ gi/pygi-info.c | 2 --
+ gi/pygi-private.h | 5 +----
+ gi/pygi.h | 2 --
+ 4 files changed, 1 insertion(+), 10 deletions(-)
+
+commit 8c653ec3033fab47c4bb4071b5732a349357141f
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Jul 18 10:59:45 2011 -0400
+
+ rename pygi-invoke-ng to pygi-invoke
+
+ gi/Makefile.am | 3 +-
+ gi/pygi-invoke-ng.c | 464
+ ----------------------------------------------------
+ gi/pygi-invoke.c | 464
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 466 insertions(+), 465 deletions(-)
+
+commit 62d59fa2c2b31d7a3cac8996d58234d4b13bb19f
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Jul 18 10:56:36 2011 -0400
+
+ make invoke-ng the only invoker
+
+ configure.ac | 11 -
+ gi/Makefile.am | 10 +-
+ gi/pygi-invoke.c | 1030
+ ------------------------------------------------------
+ 3 files changed, 1 insertion(+), 1050 deletions(-)
+
+commit 2937cfe5bb7122dd3783c7919294d6a34a3dfc05
+Merge: 519e556 917ea2d
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Jul 18 10:45:18 2011 -0400
+
+ Merge branch 'master' into invoke-rewrite
+
+commit 519e556dc1e5874e1668bad93043fb9258c7ee79
+Merge: bab7e88 38cca3c
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Jul 18 10:37:20 2011 -0400
+
+ Merge branch 'master' into invoke-rewrite
+
+commit bab7e88251bffcd360186c6dedc26be8eb077084
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Jul 18 10:35:10 2011 -0400
+
+ split the marshalling routines into two source files
+
+ * update copy and paste copyright info to list the correct owner
+
+ gi/Makefile.am | 6 +-
+ gi/pygi-cache.c | 3 +-
+ gi/pygi-marshal-in.c | 1412 ++++++++++++++++++++++++++++++++
+ gi/pygi-marshal-in.h | 186 +++++
+ gi/pygi-marshal-out.c | 767 ++++++++++++++++++
+ gi/pygi-marshal-out.h | 144 ++++
+ gi/pygi-marshal.c | 2145
+ -------------------------------------------------
+ gi/pygi-marshal.h | 303 -------
+ 8 files changed, 2515 insertions(+), 2451 deletions(-)
+
+commit 917ea2dfa2d097e563233145003a66b3e4423287
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Thu Jul 14 11:21:10 2011 +0200
+
+ Ship tests/te_ST@nouppera in release tarballs for tests to succeed
+
+ tests/Makefile.am | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit e024e832ab9c82d3e299cc6e1cb427de44f2d16e
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jul 13 15:43:02 2011 -0400
+
+ [invoke] break out caller_allocates allocating into its own function
+
+ gi/pygi-invoke-ng.c | 78
+ +++++++++++++++++++++++++++++++++--------------------
+ 1 file changed, 49 insertions(+), 29 deletions(-)
+
+commit fc8b8ce768ac780f7ed9edc63b70dd35194153c0
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jul 13 15:42:26 2011 -0400
+
+ [invoke] missed a bit when removing constructor_class usage
+
+ gi/pygi-invoke-ng.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit c94bcf4ae7e36f90c356c89712b00609f9f849bd
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jul 13 15:16:17 2011 -0400
+
+ [invoke] don't hold on to the constructor class, just add a TODO
+
+ gi/pygi-invoke-ng.c | 11 +++++------
+ gi/pygi-invoke-state-struct.h | 1 -
+ 2 files changed, 5 insertions(+), 7 deletions(-)
+
+commit c11d3195f324ea41e86e3da7ff99b55425c2faec
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Wed Jul 13 10:40:25 2011 +0200
+
+ [gi] Port test_properties from static gio to GI Gio
+
+ As we ripped out the static gio bindings a while ago, this test case
+ was using
+ the system installed gio bindings with Python 2, and now fails
+ completely with
+ Python 3. Rewrite it to use gi.repository.Gio.
+
+ tests/test_properties.py | 38 +++++++++++++++++++-------------------
+ 1 file changed, 19 insertions(+), 19 deletions(-)
+
+commit 8f89ff24fcac627ce15ca93038711fded1a7c5ed
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Wed Jul 13 08:42:22 2011 +0200
+
+ [python3] Fix maketrans import
+
+ Python3 moved the maketrans() function from the string module to a
+ str method.
+ This unbreaks gi/module.py for Python 3 again.
+
+ gi/module.py | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+commit 20aea4b052126fa0bface3e6e0dccfd77f9505b1
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Jul 8 14:39:22 2011 -0400
+
+ [caching] remove all inline compiler flags
+
+ gi/pygi-cache.c | 96
+ ++++++++++++++++++++++++++++-----------------------------
+ 1 file changed, 48 insertions(+), 48 deletions(-)
+
+commit bf7bb79b66ad406063fb443e7452d830c55986ef
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Jul 8 14:35:20 2011 -0400
+
+ [caching] refactor function names to be less confusing
+
+ gi/pygi-cache.c | 307
+ +++++++++++++++++++++++++++-----------------------------
+ 1 file changed, 150 insertions(+), 157 deletions(-)
+
+commit c167a9345b01c070bd5a84b4a4b3a53baf9e217d
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Jul 8 11:24:09 2011 -0400
+
+ [overrides] deprecate the use of type keyword MessageDialog
+ constructor
+
+ * pygtk used type to determine the "type" of message dialog to
+ display but we
+ use the proper property name "message_type" since we should not be
+ overriding a reserved word
+ * to keep compat with pygtk we check the kwds hash for the key
+ 'type' and
+ assign it to message_type while throwing a deprecation warning
+ * also add a deprication warning when trying to use the depricated
+ NO_SEPARATOR
+ flag
+
+ gi/overrides/Gtk.py | 13 ++++++++-----
+ 1 file changed, 8 insertions(+), 5 deletions(-)
+
+commit 367e4ededd4a45125157050bcc9e4e685fd4a82d
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Fri Jul 8 10:15:53 2011 +0200
+
+ gdbus tests: Fix hang if test case fails
+
+ In the TestGDBusClient.test_native_calls_async() test case, the main
+ loop was
+ never quit when the call failed.
+
+ tests/test_gdbus.py | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+commit 11b578400cbf9f7c270b662a5e8953ccd466e5ef
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Jul 7 19:30:11 2011 -0400
+
+ use an enum instead of booleans to denote function type
+
+ gi/pygi-cache.c | 85
+ ++++++++++++++++++++++++++++++-----------------------
+ gi/pygi-cache.h | 18 +++++++++---
+ gi/pygi-invoke-ng.c | 8 ++---
+ 3 files changed, 67 insertions(+), 44 deletions(-)
+
+commit 10e31005baec26f61c0f8fca2b5c0337b0be6c70
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Jul 7 15:18:03 2011 -0400
+
+ rename aux arguments to child arguments to make their purpose clearer
+
+ gi/pygi-cache.c | 64
+ ++++++++++++++++++++++++++---------------------------
+ gi/pygi-cache.h | 29 ++++++++++++++++--------
+ gi/pygi-invoke-ng.c | 10 ++++-----
+ gi/pygi-marshal.c | 12 +++++-----
+ 4 files changed, 63 insertions(+), 52 deletions(-)
+
+commit b4ad91c40f713ebdc278ce40b011e4adf9ddbbd7
+Author: Timo Vanwynsberghe <timovwb@gmail.com>
+Date: Thu Jul 7 10:59:08 2011 +0200
+
+ Fixed the cairo example
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=653844
+
+ examples/cairo-demo.py | 6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+commit a606bab1ddc605167f2e9dc7c46c8f929fdce23b
+Author: Adam Dingle <adam@yorba.org>
+Date: Tue Jul 5 14:28:20 2011 -0700
+
+ Add override binding for Gtk.ListStore.prepend().
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=654056
+
+ gi/overrides/Gtk.py | 8 ++++++++
+ tests/test_overrides.py | 13 ++++++++++++-
+ 2 files changed, 20 insertions(+), 1 deletion(-)
+
+commit fc5c869486c7f6929e285ea7a86623ec41ecd9bd
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Thu Jul 7 13:39:19 2011 +0200
+
+ Fix crash in Gtk.TextIter overrides
+
+ With commit 17cd0fb3 Gtk.TextIter.{forward,backward}_search()
+ returns undefined
+ pointers when the search was unsuccessful. Actually check the
+ "success" return
+ value; if it is False return None, just like PyGTK used to.
+
+ Thanks to Michael Vogt for discovering this and writing the test case!
+
+ Test case:
+
+ -------------- 8< -----------------
+ from gi.repository import Gtk
+
+ win = Gtk.Window.new(Gtk.WindowType.TOPLEVEL)
+ textview = Gtk.TextView()
+ buffer = textview.get_buffer()
+ buffer.set_text("hello world")
+ win.add(textview)
+
+ win.show_all()
+
+ iter = buffer.get_start_iter()
+ end = buffer.get_end_iter()
+ ret = iter.forward_search("foo",
+ Gtk.TextSearchFlags.VISIBLE_ONLY,
+ end)
+ print "this is my return value"
+ print ret
+ print "now I crash"
+ print ret[0].get_offset()
+
+ Gtk.main()
+ -------------- 8< -----------------
+
+ gi/overrides/Gtk.py | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+commit 5c04fc5b2ca7e262c052426d5863d69d0c4a24da
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Jul 5 15:57:23 2011 -0400
+
+ use gssize instead of int for arg indexes
+
+ gi/pygi-cache.c | 24 ++++++++++++------------
+ gi/pygi-cache.h | 6 +++---
+ gi/pygi-invoke-ng.c | 6 +++---
+ gi/pygi-marshal-cleanup.c | 6 +++---
+ 4 files changed, 21 insertions(+), 21 deletions(-)
+
+commit ecc09749c34cd4eabf47cc722d768b042dc0be9f
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Jul 5 14:17:30 2011 -0400
+
+ [cache] remove refrence to default value as it is not implemented yet
+
+ gi/pygi-cache.h | 1 -
+ 1 file changed, 1 deletion(-)
+
+commit 433e0fb259047d8c81e5949a31abb5e0feefd27b
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Thu May 12 18:53:06 2011 +0200
+
+ Handle arguments that are flags correctly
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=647581
+
+ gi/pygi-argument.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 38cca3c14e79fbc383e3fc65a120bee03714b99f
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Jul 1 05:19:15 2011 -0400
+
+ correctly initialize the _gi_cairo_functions array to be zero filled
+
+ gi/pygi-foreign-cairo.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 9ae43fdbcc547eb1e3c61bf9545da40555b2e2c6
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Jul 1 05:19:15 2011 -0400
+
+ correctly initialize the _gi_cairo_functions array to be zero filled
+
+ gi/pygi-foreign-cairo.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit d3ee40b36b1718e6fb4544dbe07e291138ea1eb9
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jun 29 18:14:40 2011 -0400
+
+ pass in the address of the gerror, not the gerror itself
+
+ gi/pygi-argument.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 49dc98eb9339ea64355cd752ca000c79da56f3a2
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jun 29 18:01:44 2011 -0400
+
+ [gi] handle marshalling gerrors arguments for signals
+
+ gi/pygi-argument.c | 18 ++++++++++++++++--
+ 1 file changed, 16 insertions(+), 2 deletions(-)
+
+commit db9419fcef628e9ffee10591156007ea9c0bc1f0
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jun 29 12:12:29 2011 -0400
+
+ [gi-invoke-ng] fix NULL check to check before we access the cache
+ struct
+
+ gi/pygi-cache.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 9027e1a20fd06df5c26edcec1893ef0814ec938a
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Jun 28 18:21:55 2011 -0400
+
+ [gi-tests] add test for PyGObject->PyObject TreeModel storage
+
+ * make sure we can store a custom GObject as a PyObject inside of
+ a TreeModel
+
+ tests/test_overrides.py | 26 +++++++++++++++-----------
+ 1 file changed, 15 insertions(+), 11 deletions(-)
+
+commit b6842e4b2a28733e143d4022864041ca82e91f7a
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Jun 28 18:13:38 2011 -0400
+
+ [gtk-overrides] special case TreeModel columns of PYGOBJECT types
+
+ * box the PYGOBJECT in a GValue so we can store PyGObjects in a
+ TreeModel row
+
+ gi/overrides/Gtk.py | 7 ++++---
+ gobject/pygtype.c | 7 ++++---
+ 2 files changed, 8 insertions(+), 6 deletions(-)
+
+commit 7fc9d45860210fd9d333fd3769c6cf93a6a20eb6
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Jun 28 17:32:29 2011 -0400
+
+ [gi-invoke-ng] copy structs when transfer is full for array
+
+ gi/pygi-marshal.c | 21 ++++++++++++++++++---
+ 1 file changed, 18 insertions(+), 3 deletions(-)
+
+commit 8d60c0bc7b327aa757a8727f1146f02cc0b78af8
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Jun 28 13:54:48 2011 -0400
+
+ [gtk-override] print warning if user imports Gtk 2.0
+
+ * this is needed because people file bugs not realizing they are
+ importing 2.0
+ which is not supported
+
+ gi/overrides/Gtk.py | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+commit 7c589c0c1de1a786e00685afd5292b6fb1f93ed3
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Jun 28 13:08:49 2011 -0400
+
+ [gtk-overrides] allow the message_type keyword to be used for
+ MessageDialogs
+
+ * for pygtk compat we use the type keyword for message type but
+ we prefer
+ the use of message_type because it is more descriptive and does
+ not clash
+ with a python reserved word
+ * if you passed message_type into a MessageDialog constructor you
+ would get
+ an error because we also convert type to message_type when
+ calling the
+ parent constructor
+ * this patch looks to see if message_type was passed in as a
+ keyword and
+ assigns it to type while removing message_type from the keywords
+ dict
+ to avoid name clashing
+
+ gi/overrides/Gtk.py | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+commit 2aa12267bee91aa696633a0cea2a0accae09250a
+Author: Johan Dahlin <jdahlin@litl.com>
+Date: Mon Jun 27 10:56:20 2011 -0300
+
+ Add support for enums in gobject.property
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=653488
+
+ gobject/propertyhelper.py | 23 ++++++++++++++++-------
+ tests/test_properties.py | 40 ++++++++++++++++++++++++++++++++++++----
+ 2 files changed, 52 insertions(+), 11 deletions(-)
+
+commit dc62e67b447ef526a6f2d1aa8648ad101d95024b
+Author: Johan Dahlin <jdahlin@litl.com>
+Date: Mon Jun 27 10:56:20 2011 -0300
+
+ Add support for enums in gobject.property
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=653488
+
+ gobject/propertyhelper.py | 23 ++++++++++++++++-------
+ tests/test_properties.py | 40 ++++++++++++++++++++++++++++++++++++----
+ 2 files changed, 52 insertions(+), 11 deletions(-)
+
+commit 50cfccb5801c1b9a0a42ffe2826cd245f21fd88d
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Jun 24 14:17:24 2011 -0400
+
+ [gi-invoke-ng] use g_slice for allocating GValues that are caller
+ allocated
+
+ gi/pygi-invoke-ng.c | 2 ++
+ gi/pygi-marshal-cleanup.c | 2 ++
+ 2 files changed, 4 insertions(+)
+
+commit eff65cd2ce490296865441c3c78b7846f380459c
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Jun 24 11:49:05 2011 -0400
+
+ [gi-invoke-ng] Convert Overflow errors to ValueErrors when marshalling
+ integers
+
+ gi/pygi-marshal.c | 56
+ +++++++++++++++++++++++++++++++++++++++++++------------
+ 1 file changed, 44 insertions(+), 12 deletions(-)
+
+commit 05ed688d54e3ff04e961b60d0b5d3ed0b97c771d
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jun 22 12:26:39 2011 -0400
+
+ [gi-invoke-ng] only cache caller allocates for interfaces as some
+ API are broken
+
+ gi/pygi-cache.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+commit 4fd957a5de364c0588168dee15e1e61d4f12e173
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Jun 17 17:07:56 2011 -0400
+
+ [gi-invoke-ng] handle in pointer array marshalling
+
+ gi/pygi-marshal.c | 28 ++++++++++++++++++++++------
+ 1 file changed, 22 insertions(+), 6 deletions(-)
+
+commit df3911ad2ce83af9bf9679ed1b221847b23ba2de
+Author: Alex Eftimie <alex@eftimie.ro>
+Date: Fri Jun 10 08:44:04 2011 +0300
+
+ Adding GPtrArray tests
+
+ tests/test_gi.py | 43 ++++++++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 42 insertions(+), 1 deletion(-)
+
+commit e32c2be53175014399d89e1e85c9afc6e53c94be
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Jun 17 11:32:28 2011 -0400
+
+ [gi-invoke-ng] fix array element offset calculations
+
+ * use pointer arithmetic to calculate based on element size instead of
+ relying on the size of GIArgument
+ * special case GPtrArrays
+
+ gi/pygi-marshal.c | 27 +++++++++------------------
+ 1 file changed, 9 insertions(+), 18 deletions(-)
+
+commit 6e8dc28cb261cafbfed40fc0797a0dd5f91f497b
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jun 15 12:46:03 2011 -0400
+
+ [gi] don't clean up arguments that weren't yet processed during in
+ arg failure
+
+ gi/pygi-marshal-cleanup.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit af7c93ea98b7f492eef265e58c8b3c878805524f
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jun 15 12:06:47 2011 -0400
+
+ [gi-overrides] use new instead of init when constructing a
+ GLib.VariantBuilder
+
+ * init is now skipped in the gir
+
+ gi/overrides/GLib.py | 18 ++++++++----------
+ tests/test_overrides.py | 6 ++----
+ 2 files changed, 10 insertions(+), 14 deletions(-)
+
+commit c6112307f29f9a850e6e9efa5f55d5d4a363c6b0
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jun 15 11:42:45 2011 -0400
+
+ [gi-invoke-ng] actual code to import overrides
+
+ gi/pygi-cache.c | 7 +------
+ 1 file changed, 1 insertion(+), 6 deletions(-)
+
+commit 902575d857beffb14e56821ea8a52f705385f6bb
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jun 15 11:25:10 2011 -0400
+
+ [gi-invoke-ng] import pytypes so we get overrides
+
+ gi/pygi-marshal.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+commit 9d5604220bd56ae2708e9b74122c14208e0a30b4
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Jun 14 16:13:37 2011 -0400
+
+ [gi-invoke-ng] handle gvariants now that they are not foreign
+
+ gi/pygi-marshal.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+commit c1f5651062687e800a52b5d8d16c88c0acde2934
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Jun 14 16:12:43 2011 -0400
+
+ [gi-invoke-ng] do not try to clean up NULL arguments
+
+ gi/pygi-marshal-cleanup.c | 24 ++++++++++++++++--------
+ 1 file changed, 16 insertions(+), 8 deletions(-)
+
+commit fbf5382fbc1aed49ed491d2255d616a1643a45fc
+Merge: 499b68d 1491f62
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Jun 13 17:28:23 2011 -0400
+
+ Merge branch 'master' into invoke-rewrite
+
+commit 499b68d6c9040cffc6e43dc87789d68446564a92
+Merge: 4c9bced 426c710
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Jun 13 17:26:37 2011 -0400
+
+ Merge branch 'master' into invoke-rewrite
+
+commit 1491f6225b9906bd369b5a42e6369ab6884736b7
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date: Fri Jun 10 14:01:32 2011 +0200
+
+ closure: avoid double free crash
+
+ gi/pygi-closure.c | 12 ++++--------
+ 1 file changed, 4 insertions(+), 8 deletions(-)
+
+commit 929f4236f2b8601e7960a4a7b0a860d976ad83c6
+Author: Jason Siefken <siefkenj@gmail.com>
+Date: Fri Jun 3 23:11:17 2011 -0700
+
+ Added __eq__ method for Gdk.Color and Gdk.RGBA
+
+ Call Gdk.Color.equal and Gdk.RGBA.equal when
+ == equality testing is used.
+
+ gi/overrides/Gdk.py | 6 ++++++
+ tests/test_overrides.py | 4 ++++
+ 2 files changed, 10 insertions(+)
+
+commit dff5961ba229c7c34bd7b0a18a446b56bbe39e3a
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date: Wed Jun 8 19:13:48 2011 +0200
+
+ closure: Check the out arg is not null. Fixes bug #651812
+
+ gi/pygi-closure.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit d7d178206bfbb0858556fcfd6c9ca8eefda3fdf5
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Wed Jun 8 09:47:20 2011 +0200
+
+ Use constants instead of literals
+
+ tests/test_overrides.py | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit fe386a0ad548a23e30e9cb947bfa2198fb48ef29
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Mon Jun 6 19:07:22 2011 +0200
+
+ GVariant has now a GType, take that into account
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=647509
+
+ gi/pygi-argument.c | 8 ++++----
+ gi/pygi-invoke.c | 20 +++++++++++++-------
+ 2 files changed, 17 insertions(+), 11 deletions(-)
+
+commit bd7b8d96a7420522c1fdc127ef8cfb7d6e8a1b31
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Mon Jun 6 19:05:07 2011 +0200
+
+ GVariantType is a boxed struct
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=647509
+
+ gi/gimodule.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 2d73012e5dbcc45a5782a6c119dfb272c14b5a61
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Mon Jun 6 17:38:21 2011 +0200
+
+ Use _gi.Struct to wrap fundamentals
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=647509
+
+ gi/module.py | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+commit d82e6c8d1d9f2fc48fdcc15b7d2a97e4f24cf3bf
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Mon Jun 6 17:24:28 2011 +0200
+
+ Merge gi/HACKING into /HACKING
+
+ HACKING | 16 ++++++++++++++++
+ gi/HACKING | 26 --------------------------
+ 2 files changed, 16 insertions(+), 26 deletions(-)
+
+commit 92aca4416a7930e5870b8d1a4016bae8140462ee
+Author: Daniel Drake <dsd@laptop.org>
+Date: Fri Jun 3 16:59:15 2011 +0100
+
+ Fix GC-related crash during PyGObject deallocation
+
+ Python-2.7.1's GC source has the following comment:
+
+ /* Python's cyclic gc should never see an incoming refcount
+ * of 0: if something decref'ed to 0, it should have been
+ * deallocated immediately at that time.
+ * Possible cause (if the assert triggers): a tp_dealloc
+ * routine left a gc-aware object tracked during its teardown
+ * phase, and did something-- or allowed something to
+ happen --
+ * that called back into Python. gc can trigger then, and may
+ * see the still-tracked dying object. Before this assert
+ * was added, such mistakes went on to allow gc to try to
+ * delete the object again. In a debug build, that caused
+ * a mysterious segfault, when _Py_ForgetReference tried
+ * to remove the object from the doubly-linked list of all
+ * objects a second time. In a release build, an actual
+ * double deallocation occurred, which leads to corruption
+ * of the allocator's internal bookkeeping pointers. That's
+ * so serious that maybe this should be a release-build
+ * check instead of an assert?
+ */
+
+ As shown in a backtrace at
+ https://bugzilla.redhat.com/show_bug.cgi?id=640972 , pygobject
+ is making
+ this exact mistake. Before untracking its object, pygobject_dealloc
+ calls PyObject_ClearWeakRefs() which can call back into python, create
+ new allocations, and trigger the GC.
+
+ This is causing Sugar (based on pygobject2 + pygtk2 static bindings)
+ to
+ crash on a regular basis while interacting with widgets or launching
+ applications.
+
+ Fix this by untracking the object early. Also fix the same issue
+ spotted
+ in the GSource wrapper.
+
+ Thanks to Bernie Innocenti for initial diagnosis.
+
+ glib/pygsource.c | 6 ++++--
+ gobject/pygobject.c | 8 +++++++-
+ 2 files changed, 11 insertions(+), 3 deletions(-)
+
+commit 4c9bcedb4e11ad66a4b86174e2425c7afcafc473
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue May 31 16:59:41 2011 -0400
+
+ [gi-invoke-ng] enable invoke-ng by default
+
+ configure.ac | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit 2e4cfb85a55ff205e263591d573ee5ecf0ffff3e
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue May 31 16:37:21 2011 -0400
+
+ [gi-invoke-ng] add code to clean up when input values fail to marshal
+
+ gi/pygi-marshal-cleanup.c | 30 +++++++++++++++++++++++++-----
+ 1 file changed, 25 insertions(+), 5 deletions(-)
+
+commit 508b1b6ca1b143f1e123a3ddb83e8ce146758dfc
+Author: John (J5) Palmieri <johnp@redhat.com>
+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 ++++++--
+ 3 files changed, 74 insertions(+), 2 deletions(-)
+
+commit 1954c75b94a74259b4e5d28f5ff8d76aa4610832
+Author: John (J5) Palmieri <johnp@redhat.com>
+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 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit b626c46b4a95602c7bf1278c2a39aacb7f5027d9
+Author: John (J5) Palmieri <johnp@redhat.com>
+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 +++++
+ 3 files changed, 96 insertions(+), 4 deletions(-)
+
+commit 2e542c327cd52c1f77af28905557dd25c64175d8
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu May 26 16:10:13 2011 -0400
+
+ indentation fix
+
+ gi/pygi-marshal.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit 601aec11c49e821fe97dd30a2187fe3c75844712
+Author: John (J5) Palmieri <johnp@redhat.com>
+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 +++++++++++++++++++++++++++++++------
+ 3 files changed, 56 insertions(+), 7 deletions(-)
+
+commit e9ad4428b769f8c9ace1cdc973c684de84fb1a5e
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu May 26 13:22:38 2011 -0400
+
+ [gi-invoke-ng] do not allocate null terminator for garray
+
+ * We are simply setting our own array so we don't want any allocate
+ null byte
+
+ gi/pygi-marshal.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit a986b2b8e5ee37f2a330f5aabc85c73ebb0de508
+Author: John (J5) Palmieri <johnp@redhat.com>
+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 +++++++--
+ 4 files changed, 91 insertions(+), 5 deletions(-)
+
+commit 990c60805c8ef718eb29e2e1b24f057552c6159e
+Author: John (J5) Palmieri <johnp@redhat.com>
+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 --------------
+ 2 files changed, 1 insertion(+), 20 deletions(-)
+
+commit dbbcf4a0e76fb572d85843ee31c3798df5cd5cc5
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon May 23 16:59:57 2011 -0400
+
+ [gi-invoke-ng] revamp cleanup framework to be orthogonal to cache
+ setup
+
+ * cleanup now has symmetry with setup so there are now in and out
+ cleanups
+ for each type that needs to be cleaned up
+ * no longer use state machine but instead call different cleanup
+ functions at
+ different stages of invoke, making it easier to understand what
+ happens at
+ each stage
+
+ gi/pygi-cache.c | 19 ++-
+ gi/pygi-cache.h | 7 +-
+ gi/pygi-invoke-ng.c | 10 +-
+ gi/pygi-invoke-state-struct.h | 2 +
+ gi/pygi-marshal-cleanup.c | 301
+ +++++++++++++++++-------------------------
+ gi/pygi-marshal-cleanup.h | 45 ++++---
+ gi/pygi-marshal.c | 15 +--
+ 7 files changed, 174 insertions(+), 225 deletions(-)
+
+commit 198714dc4585f7463f38929f1ca4e4b60a27dadb
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu May 12 17:29:20 2011 -0400
+
+ [gi-invoke-ng] stub out a cleaner way of cleaning up after ourselves
+
+ * The state machine concept of cleaning up was getting a bit messy.
+ It was like we took a big bowl of spaghetti code and dumped it.
+ * Now we call specific cleanup functions at the point of failure (or
+ successful completion of a marshalling stage)
+
+ 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
+Author: José Alburquerque <jaalburqu@svn.gnome.org>
+Date: Thu May 12 11:53:40 2011 -0400
+
+ Doc Extractor: Correct the logic of the --no-since option.
+
+ * codegen/docextract.py (process_final_sections): If the
+ --no-since
+ option has been specified and a "Since:" is encountered during the
+ processing of the final sections, simply don't append the
+ "Since: ..."
+ instead of reading the next line. This preserves the logical
+ flow of
+ processing.
+
+ codegen/docextract.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 303d8e8ab9e60cb554de7fc0e8592cd9b2c50843
+Author: José Alburquerque <jaalburqu@svn.gnome.org>
+Date: Mon May 9 17:32:09 2011 -0400
+
+ Doc Extractor: Add a --no-since option.
+
+ * codegen/docextract.py:
+ * codegen/docextract_to_xml.py: Modified so that if a --no-since
+ option is specified at the command line, the "Since: ..." portion
+ of
+ the gtkdoc function block is omitted. This is useful for C++
+ modules
+ such as gstreamermm where this information would not be useful
+ as long
+ as the C API is still unstable.
+
+ codegen/docextract.py | 15 ++++++++++++++-
+ codegen/docextract_to_xml.py | 9 ++++++---
+ 2 files changed, 20 insertions(+), 4 deletions(-)
+
+commit 4f615c6e300d6f2d7551b640efa301060206ab58
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu May 5 14:04:34 2011 -0400
+
+ [gi-invoke-ng] tweek cleanup routines
+
+ gi/pygi-cache.c | 5 +++
+ gi/pygi-marshal-cleanup.c | 87
+ +++++++++++++++++++++++++++++++++++------------
+ gi/pygi-marshal-cleanup.h | 6 ++--
+ gi/pygi-marshal.c | 11 ++----
+ 4 files changed, 76 insertions(+), 33 deletions(-)
+
+commit 63c7f17c224821cb7136d06e8ef87eab7291848d
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Mon May 2 15:49:52 2011 +0200
+
+ Fix symbol names to be locale independent
+
+ We currently use upper() to present enum values, which are usually
+ defined in
+ lower case in the typelib, in upper cases. However, upper() is locale
+ dependent, so that e. g. in tr_TR.UTF-8, "invalid" becomes "iNVALiD"
+ because Turkish has some extra variants of "i".
+
+ Use a local ASCII-only translate() call instead to avoid this. Thanks
+ to Nils
+ Philippsen for the idea!
+
+ This also adds a test locale "te_ST@nouppera" which defines
+ toupper('a') == 'a'.
+ Run the Enum tests under this locale to reproduce the bug and verify
+ the fix.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=649165
+
+ gi/module.py | 9 ++++++++-
+ tests/te_ST@nouppera | 50
+ ++++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_gi.py | 30 ++++++++++++++++++++++++++++++
+ 3 files changed, 88 insertions(+), 1 deletion(-)
+
+commit b5e150da76c3d4de1a75f58d03c3a761e9005a63
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Wed May 4 08:35:27 2011 +0200
+
+ [gi] pygi-convert.sh: Convert gtk.gdk.CROSSHAIR
+
+ pygi-convert.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit fcc5ea201ab25da6db94ea8a37364a1d3c4d7c65
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Apr 29 17:41:08 2011 -0400
+
+ [gi-invoke-ng] handle filename cleanup with the utf8 cleanup function
+
+ gi/pygi-cache.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit dbe8c4fabc8ac19415a3be0e854d3a54c2317e0b
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Apr 29 17:40:13 2011 -0400
+
+ [gi-invoke-ng] handle caller allocates cleanup
+
+ gi/pygi-invoke-ng.c | 5 ++-
+ gi/pygi-marshal-cleanup.c | 104
+ ++++++++++++++++++++++++++++++++++++----------
+ gi/pygi-marshal-cleanup.h | 7 ++--
+ 3 files changed, 90 insertions(+), 26 deletions(-)
+
+commit cdbf57f3b1f041a06cf545a5557424f701ed1ec7
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Apr 28 19:16:02 2011 -0400
+
+ [gi-invoke-ng] refactor the cleanup code and add utf8 cleanup as
+ initial test
+
+ gi/pygi-cache.c | 15 ++-----------
+ gi/pygi-invoke-ng.c | 8 +++----
+ gi/pygi-invoke-state-struct.h | 2 ++
+ gi/pygi-marshal-cleanup.c | 51
+ ++++++++++++++++++++++++++++++++++++++++++-
+ gi/pygi-marshal-cleanup.h | 3 +++
+ 5 files changed, 60 insertions(+), 19 deletions(-)
+
+commit d1f1f4ccc55f9ecab73b7c0ee78762c4039b2c79
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Apr 27 15:47:19 2011 -0400
+
+ use PyCapsule when importing pycairo/require pycairo 1.10.0 for
+ python3 builds
+
+ * PyCObject is deprecated and pycairo 1.10.0 is first release to
+ fix this issue
+
+ configure.ac | 15 +++++++++++----
+ gi/pygi-foreign-cairo.c | 2 +-
+ 2 files changed, 12 insertions(+), 5 deletions(-)
+
+commit 83b7823a510b0b391560c6deaf9d15d8303c7b14
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date: Thu Apr 21 16:52:20 2011 +0200
+
+ [python3] fix build. PYcairo_IMPORT doesn't exists anymore
+
+ gi/pygi-foreign-cairo.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+commit 3e933784df423757e591d703614cb700adb0bbe0
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Mon Apr 18 18:36:25 2011 +0200
+
+ Updated DOAP file
+
+ pygobject.doap | 15 +++++++++++++++
+ 1 file changed, 15 insertions(+)
+
+commit 399d06b4b20685eb38acfd7e43226e06737ab7d2
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Sat Apr 16 16:02:05 2011 +0200
+
+ [gi] Don't create variant twice
+
+ gi/overrides/GLib.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 8d8a84ea23d28d25851c5870f261c020d762cef4
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Fri Apr 15 16:14:43 2011 +0200
+
+ pygi-convert.sh: Make sure the uppercase GObject module is imported
+ instead of the lowercase
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=647736
+
+ pygi-convert.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 3b51d6426d0f59b2dd7e0dcdcded4bed43d6b9d8
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Fri Apr 15 15:58:53 2011 +0200
+
+ [gi] Removed hack to avoid using GLib.Variant.new_variant.
+
+ The bug in the annotations of GLib is fixed now.
+ https://bugzilla.gnome.org/show_bug.cgi?id=639952
+ https://bugzilla.gnome.org/show_bug.cgi?id=647796
+
+ gi/overrides/GLib.py | 14 +-------------
+ 1 file changed, 1 insertion(+), 13 deletions(-)
+
+commit bb4dce14ba666969815d4e56adbc38f0ac4f7ff7
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Fri Apr 15 15:58:31 2011 +0200
+
+ [gi] Added additional test case for GVariant handling
+
+ tests/test_overrides.py | 15 +++++++++++++++
+ 1 file changed, 15 insertions(+)
+
+commit 138df2778543409752e229a09828a805f68a420d
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Mon Apr 11 18:34:31 2011 +0200
+
+ [gi] Added support for GVariant arguments
+
+ This is required in order for the "g-signal" signal of GDBusProxy
+ to work properly and thus to properly receive DBus signals with any
+ type of argument.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=647477
+
+ gi/pygi-argument.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 985f239d891c7697d76ccecb797b189669ae6ee1
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Mar 22 18:46:28 2011 -0400
+
+ fix static ABI for setting string gvalues from python objects
+
+ * the static bindings used to be able to set a string gvalue to
+ any python
+ object that implemented __str__, for instance when setting a
+ treemodel column
+ * this restores that code while still keeping unicode and python 3
+ compatability
+
+ gobject/pygtype.c | 28 +++++++++++++++++++---------
+ tests/test_properties.py | 8 ++++++++
+ 2 files changed, 27 insertions(+), 9 deletions(-)
+
+commit 58cfc3cd1152b4448b56a6ff597f954d8450b83e
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Tue Mar 22 20:47:51 2011 +0100
+
+ dsextras.py: ensure eol characters are preserved when writing template
+ files (so \n does not become \r\n)
+
+ dsextras.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 629d267478982c426ba61a639d5c9603fed856e6
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Tue Mar 22 11:35:44 2011 +0100
+
+ dsextras.py: remove \r as wel as \n character
+
+ dsextras.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 426c7109d4c0dbf0d56cc075f97f33b3451f79a8
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Apr 27 15:47:19 2011 -0400
+
+ use PyCapsule when importing pycairo/require pycairo 1.10.0 for
+ python3 builds
+
+ * PyCObject is deprecated and pycairo 1.10.0 is first release to
+ fix this issue
+
+ configure.ac | 15 +++++++++++----
+ gi/pygi-foreign-cairo.c | 2 +-
+ 2 files changed, 12 insertions(+), 5 deletions(-)
+
+commit 4e5833d0c2fe548617e5ea510f05920fd0caf73b
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date: Thu Apr 21 16:52:20 2011 +0200
+
+ [python3] fix build. PYcairo_IMPORT doesn't exists anymore
+
+ gi/pygi-foreign-cairo.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+commit 91ec337359720839862d3f5a8a0ea98f760a0752
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Mon Apr 18 18:36:25 2011 +0200
+
+ Updated DOAP file
+
+ pygobject.doap | 15 +++++++++++++++
+ 1 file changed, 15 insertions(+)
+
+commit 05c766044c83340c44564d0097514bfc1d1d9df7
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Sat Apr 16 16:02:05 2011 +0200
+
+ [gi] Don't create variant twice
+
+ gi/overrides/GLib.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit eb8f212e3687af30407cf01fcdfbf530257bcddb
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Fri Apr 15 16:14:43 2011 +0200
+
+ pygi-convert.sh: Make sure the uppercase GObject module is imported
+ instead of the lowercase
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=647736
+
+ pygi-convert.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit af31729573de24161ee90563e5738187c749783c
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Fri Apr 15 15:58:53 2011 +0200
+
+ [gi] Removed hack to avoid using GLib.Variant.new_variant.
+
+ The bug in the annotations of GLib is fixed now.
+ https://bugzilla.gnome.org/show_bug.cgi?id=639952
+ https://bugzilla.gnome.org/show_bug.cgi?id=647796
+
+ gi/overrides/GLib.py | 14 +-------------
+ 1 file changed, 1 insertion(+), 13 deletions(-)
+
+commit 070f6688be4afb926656038dcceac4c8b8ed97c7
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Fri Apr 15 15:58:31 2011 +0200
+
+ [gi] Added additional test case for GVariant handling
+
+ tests/test_overrides.py | 15 +++++++++++++++
+ 1 file changed, 15 insertions(+)
+
+commit 65aa040e86d94ee6bb227a2bce09668b60208027
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Apr 12 14:51:35 2011 -0400
+
+ [gi-invoke-ng] fix prototype
+
+ gi/pygi-cache.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 12aa4e6376366ca9d758434f6544c9c70a1e5df8
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Apr 12 14:48:16 2011 -0400
+
+ [gi-invoke-ng] create new framework for cleaning up args
+
+ * we now have a state machine so we know what point in the marshalling
+ process
+ we are and which args need to be cleaned up
+ * call the cleanup functions after invoking the gi callable, after
+ marshalling
+ the out parameters and at any time an error occures
+
+ gi/Makefile.am | 4 ++-
+ gi/pygi-cache.c | 25 +++++++------
+ gi/pygi-cache.h | 5 ++-
+ gi/pygi-invoke-ng.c | 34 ++++++++++++++----
+ gi/pygi-invoke-state-struct.h | 13 +++++++
+ gi/pygi-marshal-cleanup.c | 81
+ +++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-marshal-cleanup.h | 43 +++++++++++++++++++++++
+ gi/pygi-marshal.c | 1 +
+ 8 files changed, 187 insertions(+), 19 deletions(-)
+
+commit 0463295cd046bd6382ad9dc71ea1518858d63c5f
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Mon Apr 11 18:34:31 2011 +0200
+
+ [gi] Added support for GVariant arguments
+
+ This is required in order for the "g-signal" signal of GDBusProxy
+ to work properly and thus to properly receive DBus signals with any
+ type of argument.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=647477
+
+ gi/pygi-argument.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 1d64c3d3db2ec17b9a48df55271f712db6c07060
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Mar 30 16:40:31 2011 -0400
+
+ [gi-invoke-ng] fix marshal header that is no longer part of
+ pygi-arguments.h
+
+ gi/pygi-marshal.h | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit 3580cd1c7222022ebeef3476f9e609c8045f12a3
+Author: John (J5) Palmieri <johnp@redhat.com>
+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
+ ++++++++++++++++++++++++++--------------------------
+ 3 files changed, 566 insertions(+), 564 deletions(-)
+
+commit 81662fcd09f112bfffcdc5b7f01a5537b84cd9d4
+Author: John (J5) Palmieri <johnp@redhat.com>
+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 -
+ 1 file changed, 1 deletion(-)
+
+commit a456fc0adc1f8a0754bf59cde8924f905bfc7dc1
+Author: John (J5) Palmieri <johnp@redhat.com>
+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 +++++++++++++++++-
+ 1 file changed, 17 insertions(+), 1 deletion(-)
+
+commit e8c8c37e5587dc7ff62519df336988a12e6f5d0a
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Mar 29 15:21:41 2011 -0400
+
+ [gi-invoke-ng] fix aux value caching
+
+ gi/pygi-cache.c | 15 ++++++++++-----
+ 1 file changed, 10 insertions(+), 5 deletions(-)
+
+commit 4e4c1847c713a4eb4ab34d04488e94dac24d9167
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Mar 28 20:25:46 2011 -0400
+
+ [gi-invoke-ng] backport handling flags with no gtype
+
+ gi/pygi-marshal.c | 25 ++++++++++++++++++++++++-
+ 1 file changed, 24 insertions(+), 1 deletion(-)
+
+commit fd76423e655b3711e1ffbf9b61ea4e2c94040234
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Mar 28 18:32:00 2011 -0400
+
+ [gi-invoke-ng] backport raw gvalue handling
+
+ gi/pygi-marshal.c | 23 ++++++++++++++++++-----
+ 1 file changed, 18 insertions(+), 5 deletions(-)
+
+commit 507b5051c83f70ceae79e0fa693c86e5cbb9f442
+Author: John (J5) Palmieri <johnp@redhat.com>
+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 ++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 39 insertions(+), 1 deletion(-)
+
+commit 726a27c0e74ace3ff23d9cc4d393ae53e57f1fac
+Author: John (J5) Palmieri <johnp@redhat.com>
+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 +-
+ 7 files changed, 362 insertions(+), 385 deletions(-)
+
+commit 3d5d9ff5c18a850650992bdd52e8e4c722b23396
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Mar 28 15:01:12 2011 -0400
+
+ [gi-invoke-rewrite] backport glib error handling
+
+ gi/pygi-invoke-ng.c | 14 ++++++--------
+ 1 file changed, 6 insertions(+), 8 deletions(-)
+
+commit 37b14b28a5f2aec16ac7f321efbf07e1403e9531
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Mar 25 18:48:42 2011 -0400
+
+ [gi-invoke-ng] backport closure passing from invoke
+
+ gi/pygi-marshal.c | 13 ++++++++++---
+ 1 file changed, 10 insertions(+), 3 deletions(-)
+
+commit cf7f97eabc9c49773c2916929b8c43ef453d0652
+Author: John (J5) Palmieri <johnp@redhat.com>
+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 ++
+ 4 files changed, 55 insertions(+), 14 deletions(-)
+
+commit af2ce400fcf771ee6c9bc01aecfb59467be5a0ce
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Mar 25 18:39:06 2011 -0400
+
+ [gi-invoke-ng] handle foreign types correctly
+
+ gi/pygi-cache.c | 22 ++++++----------------
+ gi/pygi-marshal.c | 3 +++
+ 2 files changed, 9 insertions(+), 16 deletions(-)
+
+commit 482553ae5d863ca523be3bd1eededa5d02a4f87e
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Mar 25 13:14:01 2011 -0400
+
+ [gi] remove the class parameter from the argument list of constructors
+
+ * constructors pass in their class to be constructed. Since we
+ use GI
+ and g_object_new to do the construction we ignore this for now but
+ keep it around in the state for future use.
+
+ gi/pygi-invoke-ng.c | 46
+ +++++++++++++++++++++++++++++++++++++------
+ gi/pygi-invoke-state-struct.h | 1 +
+ 2 files changed, 41 insertions(+), 6 deletions(-)
+
+commit 0534eb0e843cdf09611143da184052f7e549e4dc
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Mar 22 18:46:28 2011 -0400
+
+ fix static ABI for setting string gvalues from python objects
+
+ * the static bindings used to be able to set a string gvalue to
+ any python
+ object that implemented __str__, for instance when setting a
+ treemodel column
+ * this restores that code while still keeping unicode and python 3
+ compatability
+
+ gobject/pygtype.c | 28 +++++++++++++++++++---------
+ tests/test_properties.py | 8 ++++++++
+ 2 files changed, 27 insertions(+), 9 deletions(-)
+
+commit 5f0e130026a663a57ed1317e0fa0e1f78f9e6e0a
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Tue Mar 22 20:47:51 2011 +0100
+
+ dsextras.py: ensure eol characters are preserved when writing template
+ files (so \n does not become \r\n)
+
+ dsextras.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 62a6274105003ef386ddfe9ef38e8afa8c43d124
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Tue Mar 22 11:35:44 2011 +0100
+
+ dsextras.py: remove \r as wel as \n character
+
+ dsextras.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 86c436978c933f6ebe17627abe98325ce66f6baa
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Mar 22 16:13:58 2011 -0400
+
+ [gi] make new invoke-ng codepath compile correctly
+
+ configure.ac | 4 +
+ gi/Makefile.am | 5 +-
+ gi/pygi-cache.c | 2 +-
+ gi/pygi-invoke-ng.c | 841 ----------------------
+ gi/pygi-marshal.c | 1962
+ +--------------------------------------------------
+ gi/pygi-private.h | 4 +-
+ 6 files changed, 9 insertions(+), 2809 deletions(-)
+
+commit 35619fec43f4df85edf5456f3fc9733b16f2ba90
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Mar 22 15:40:02 2011 -0400
+
+ [gi] conditionalize invoke code paths
+
+ configure.ac | 7 +++++++
+ gi/Makefile.am | 20 +++++++++++++++-----
+ gi/pygi-cache.h | 2 ++
+ gi/pygi-info.c | 4 +++-
+ gi/pygi-private.h | 9 +++++++--
+ gi/pygi.h | 4 +++-
+ 6 files changed, 37 insertions(+), 9 deletions(-)
+
+commit 83c51bd2bb6ca24ce610c04cff1527bcd2689d90
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Mar 22 15:37:24 2011 -0400
+
+ [gi] revert back to the type.py from master
+
+ gi/types.py | 21 +++++++++++++++------
+ 1 file changed, 15 insertions(+), 6 deletions(-)
+
+commit cb30d00d1c92e73d9bfb08cc7b600a5aa70f2fc0
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Mar 22 14:46:29 2011 -0400
+
+ [gi] revert pygi-argument.h and move the invoke-ng code to
+ pygi-marshal.h
+
+ gi/pygi-argument.h | 268 +-----------------------------------------
+ gi/pygi-marshal.h | 336
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 337 insertions(+), 267 deletions(-)
+
+commit 17cb714cfdaf45b6d7dd627b0189bd24e6578f74
+Merge: 7332a1b 01596a9
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Mar 22 13:34:36 2011 -0400
+
+ Merge branch 'master' into invoke-rewrite
+
+ Conflicts:
+ gi/Makefile.am
+ gi/pygi-argument.c
+ gi/pygi-foreign-cairo.c
+ gi/pygi-foreign-gvariant.c
+ gi/pygi-foreign-gvariant.h
+ gi/pygi-foreign.c
+ gi/pygi-foreign.h
+ gi/pygi-private.h
+ gi/pygi.h
+
+commit 01596a9b7cc0ceef3904da5b96939140ee0732fd
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Mar 22 13:20:54 2011 -0400
+
+ [gi] foreign types now take interface infos instead of type infos
+
+ * this is a prep for the invoke-rewrite branch
+ * when marshalling foreign structs we may not have the type info but
+ we will always have the interface info to pass
+ * this simplifies the code because we were simply converting the
+ type info back to an interface info anyway so there is less
+ refcounting to keep track of
+ * also fixes a bug where we were leaking PyNone ref counts
+
+ gi/pygi-argument.c | 4 ++--
+ gi/pygi-foreign-cairo.c | 16 ++++++++--------
+ gi/pygi-foreign-gvariant.c | 12 ++++++------
+ gi/pygi-foreign.c | 32 +++++++++++++-------------------
+ gi/pygi-foreign.h | 8 ++++----
+ gi/pygi-invoke.c | 6 +++---
+ gi/pygi.h | 12 ++++++------
+ 7 files changed, 42 insertions(+), 48 deletions(-)
+
+commit fbabc1fdafa1dcbd1f6aaea7b821bd1c64a546ab
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Tue Mar 22 15:04:01 2011 +0100
+
+ Fix GSchema tests for separate build tree
+
+ When using a separate build tree, the compiled GSettings schema will
+ be in the
+ build tree, but as the test scripts are only in the source tree they
+ won't find
+ the compiled schema. Pass the build dir as environment variable and
+ prefer it
+ over test_overrides.py's directory.
+
+ tests/Makefile.am | 3 ++-
+ tests/test_overrides.py | 4 +++-
+ 2 files changed, 5 insertions(+), 2 deletions(-)
+
+commit 7332a1b99775519fdc5500cab6628b713e946a8c
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Mar 21 19:03:29 2011 -0400
+
+ [gi] start of merge from master
+
+ * move some of the modified files that will cause merge conflicts
+ to their
+ own, nonconflicting files
+ * copy the old files out of master
+
+ gi/pygi-argument.c | 2101 +++------------------------
+ gi/pygi-invoke-ng.c | 1179 ++++++++++++++++
+ gi/pygi-invoke.c | 421 ++----
+ gi/pygi-marshal.c | 3916
+ +++++++++++++++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 5389 insertions(+), 2228 deletions(-)
+
+commit 62b49dae97441953452d097cb1751df14302547a
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Mar 16 17:34:18 2011 -0400
+
+ [gi] marshal raw closures
+
+ * before we were able to marshal python callables into methods
+ that took
+ GClosures but we had no way to take a GClosure returned from one
+ method and pass it to another - this enables that usecase
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=644757
+
+ gi/pygi-argument.c | 17 ++++++++++-------
+ tests/test_gi.py | 4 ++++
+ 2 files changed, 14 insertions(+), 7 deletions(-)
+
+commit 1e70957c5470a0f4bceba38ca66a4e4274fdc8d8
+Author: John Stowers <john.stowers@gmail.com>
+Date: Sun Mar 6 23:41:01 2011 +1300
+
+ pygi-convert.sh add GObject.xxx and webkit
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=644347
+
+ pygi-convert.sh | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+commit 2292673c96e7973a0732ca15bbd5b0bf7a9c7dcf
+Author: John Stowers <john.stowers@gmail.com>
+Date: Sun Mar 6 23:41:30 2011 +1300
+
+ pygi-convert.sh remove gobject tests, GObject works now
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=644347
+
+ pygi-convert.sh | 28 ----------------------------
+ 1 file changed, 28 deletions(-)
+
+commit d26e5cc45f277f6b7edb32aa416520bb53bff9c2
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Mar 11 14:09:02 2011 -0500
+
+ [gi-demos] add pickers demo
+
+ demos/gtk-demo/demos/pickers.py | 74
+ +++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 74 insertions(+)
+
+commit b8d926a458ed7d7e92719e41b5bc1c36f68882b3
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Mar 10 18:12:50 2011 -0500
+
+ [gi-demos] add menu demo
+
+ demos/gtk-demo/demos/menus.py | 122
+ ++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 122 insertions(+)
+
+commit 9baec8ed1c5d99c1677a75eaa1d38912f41f0b2d
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Mar 9 13:02:50 2011 -0500
+
+ [gi-overrides] fix exception block so it works in Python 2.5
+
+ gi/overrides/Gio.py | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+commit 5ac534ac3ceee3cc19fe2297e3cd009817ed726f
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Mon Mar 21 13:19:58 2011 +0100
+
+ Revert "Deduce PYTHON_LIBS in addition to PYTHON_INCLUDES"
+
+ This reverts commit fc7d7f7f153d57ff3866b7bfd5e6479d702cc4d9.
+
+ This introduces additional libpython dependencies, which breaks
+ distributions
+ which support multiple Python versions, and also causes the python
+ interpreter
+ to be in memory twice in some cases.
+
+ 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 +-
+ 4 files changed, 5 insertions(+), 10 deletions(-)
+
+commit cd01f8ce1373f28b1427dd847bef44f747f1e6b3
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Fri Mar 18 17:06:08 2011 +0100
+
+ setup.py: fix user_access_control option
+
+ setup.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 2da60baec4f43c41f43527cbfde4e21e0eea728c
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Wed Mar 16 10:22:35 2011 +0100
+
+ [gi] Respect the MessageType for Gtk.MessageDialog
+
+ Don't just ignore the type argument, actually pass it on. Thanks
+ to Tualatrix
+ Chou for spotting this!
+
+ gi/overrides/Gtk.py | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 029a79d1af1e0998aa6bc88ce1c1f48ce0ccd2a0
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Tue Mar 15 10:22:39 2011 +0100
+
+ [gi] Do not require signature for D-BUS methods without arguments
+
+ Calling methods on DBusProxy objects usually requires specifying
+ the signature
+ as first argument. However, if the D-BUS method does not take any
+ arguments,
+ specifying the empty '()' signature does not give any additional
+ information,
+ so allow the caller to just call the proxy method without any
+ arguments.
+
+ Also ensure that passing a non-string signature raises a
+ comprehensible
+ exception, instead of crashing deep in the GVariant leaf constructor.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=644260
+
+ gi/overrides/Gio.py | 16 +++++++++++++++-
+ tests/test_gdbus.py | 13 +++++++++++++
+ 2 files changed, 28 insertions(+), 1 deletion(-)
+
+commit 5bf66ce79267b25bcc80251f9170498fa1d765f6
+Author: John Stowers <john.stowers@gmail.com>
+Date: Sun Mar 6 23:05:33 2011 +1300
+
+ [gi-overrides] TreeViewColumn.set_cell_data_func func_data can be None
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=644343
+
+ gi/overrides/Gtk.py | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 8e4f86e17a1de533a93b0748fd8de3cbfa70ba62
+Author: John Stowers <john.stowers@gmail.com>
+Date: Sun Mar 6 17:48:04 2011 +1300
+
+ [gi-demos] dont try and run demos that represent directories
+
+ demos/gtk-demo/gtk-demo.py | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit 097e5efab29d3d2d91d0b9fc75bf00219e9b7810
+Author: John (J5) Palmieri <johnp@redhat.com>
+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 ++--
+ 4 files changed, 11 insertions(+), 5 deletions(-)
+
+commit fd5d5ef3abc947d3c6066eea6378514f87b7f0ce
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Feb 22 15:07:40 2011 -0500
+
+ [gi-demos] add liststore demo
+
+ demos/gtk-demo/demos/Tree View/__init__.py | 0
+ demos/gtk-demo/demos/Tree View/liststore.py | 205
+ ++++++++++++++++++++++++++++
+ 2 files changed, 205 insertions(+)
+
+commit 09de5cf99474fc8a34b5f4a61cede1fb47353ebb
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Mar 7 18:08:40 2011 -0500
+
+ [gi-demos] catch the correct error class
+
+ demos/gtk-demo/demos/images.py | 11 ++++++-----
+ 1 file changed, 6 insertions(+), 5 deletions(-)
+
+commit 7284d2d4622978fc9ddfd00f2714b3a572b7ab56
+Author: Steve Frécinaux <code@istique.net>
+Date: Sun Mar 6 21:18:36 2011 +0100
+
+ Do not leak python references when using the gobject.property()
+ helper.
+
+ Since this helper was storing plain references in a long-lived
+ dict, the
+ refcount for the instances would never drop to zero, and so they would
+ never get finalized.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=644039
+
+ gobject/propertyhelper.py | 5 ++---
+ tests/test_properties.py | 23 +++++++++++++++++++++++
+ 2 files changed, 25 insertions(+), 3 deletions(-)
+
+commit 618dbb0ee15b47e5e7cb16a34ffce0937d7fa26d
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Mar 4 12:25:49 2011 -0500
+
+ handle uchar as bytes, not strings in python 3
+
+ * This worked in Python2 because bytes and strings are equivilant
+ and the macro
+ PYGLIB_PyString_FromStringAndSize evaluated to a PyString
+ * In Python 3 PYGLIB_PyString_FromStringAndSize evaluates to
+ a PyUnicode
+ * PYGLIB_PyBytes_FromStringAndSize evaluates to a PyString in Python 2
+ and a PyBytes object in Python 3
+
+ gobject/pygtype.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 7e9483ff75b7a63ddda0fa9a9847f9f22ad71240
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Mar 4 12:24:35 2011 -0500
+
+ [gi-overrides] handle unichar gvalues when setting treemodels
+
+ gi/overrides/Gtk.py | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+commit 6367bffa006e94dc667d7008fccad8d47d8d3646
+Author: John (J5) Palmieri <johnp@redhat.com>
+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 ++++----
+ 2 files changed, 9 insertions(+), 5 deletions(-)
+
+commit 83b0f8a37d5f3236780d87a1ca466c5e44ae2bc0
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Mar 4 11:10:16 2011 -0500
+
+ check for the py3 _thread module in configure.ac if thread is
+ not found
+
+ configure.ac | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+commit 4645af87d3c587f535404867dab56608719e5c7b
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Mar 4 00:39:23 2011 -0500
+
+ [gi-demos] add iconview demo
+
+ demos/gtk-demo/demos/Icon View/iconviewbasics.py | 212
+ +++++++++++++++++++++++
+ 1 file changed, 212 insertions(+)
+
+commit 761dcb516a04f7a89b3c7d68e88fff23055e2a80
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Mar 3 18:39:16 2011 -0500
+
+ [gi] wrap the keyword argument in a dict so we don't break Python 2.5
+
+ * python < 2.6 does not allow sending in keyword litterals after
+ sending in
+ *args. You can only send in **kwds.
+
+ gi/types.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit f9604e90af12a1b9dbe7d7f311308e87cd0ed7dd
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Mar 3 18:30:40 2011 -0500
+
+ [gi-demos] add the combobox with string ids section to the demos
+
+ demos/gtk-demo/demos/combobox.py | 49
+ +++++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 48 insertions(+), 1 deletion(-)
+
+commit b70f4daf071cf77a4561b57f5521eb928f66d1ce
+Author: John (J5) Palmieri <johnp@redhat.com>
+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 ++++++++++
+ 2 files changed, 28 insertions(+)
+
+commit ee2b63f60f350332ed21927721ed9ddff3a8034e
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Mar 3 16:10:17 2011 -0500
+
+ [gi-demos] fix up search-entry to reflect annotations fixed in Gtk+
+ master
+
+ demos/gtk-demo/demos/Entry/search_entry.py | 23 +++++++++--------------
+ 1 file changed, 9 insertions(+), 14 deletions(-)
+
+commit cd046e4c355706ead5f512b810a2a48317f8c32e
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Mar 2 18:13:43 2011 -0500
+
+ [gi-demos] add search entry demo
+
+ demos/gtk-demo/demos/Entry/search_entry.py | 257
+ +++++++++++++++++++++++++++++
+ 1 file changed, 257 insertions(+)
+
+commit d5ddaa92e6349c2f52b67317326060973cb69661
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Mar 2 15:37:27 2011 -0500
+
+ [gi] wrap map in a list for Python 3 compat
+
+ gi/types.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 3e5ab72a2e1fa2d8c4c2864137c6251f264ff4af
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Mar 1 14:52:00 2011 -0500
+
+ [gi-demos] fix up the validation combobox
+
+ demos/gtk-demo/demos/combobox.py | 21 +++++++++++++++------
+ 1 file changed, 15 insertions(+), 6 deletions(-)
+
+commit 08af5f99f0838b3584f6a3b210d0a0304811e8ff
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Mar 1 12:31:35 2011 -0500
+
+ add overridesdir variable in the .pc file for 3rd party overrides
+
+ pygobject-2.0.pc.in | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 4a6b14a92a687a2311516b2c16c355216b5270a7
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Fri Feb 11 17:14:11 2011 +0100
+
+ setup.py: Set bdist_wininst user-access-control property
+
+ setup.py | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit ad3ab659b83cb985730e19a83651da319d4bcb9c
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Wed Mar 2 16:29:00 2011 +0100
+
+ Fix uninitialized variable in gi.require_version()
+
+ gi/__init__.py | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit 6e7606ee8830f6f51b777f41f6df2f6ea1784e89
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Tue Mar 1 23:26:07 2011 +0100
+
+ Run tests with LC_MESSAGES="C"
+
+ Some tests, such as tests/test_gdbus.py check parts of error messages
+ or other
+ visible strings. Ensure that these do not get translated in the
+ test suite.
+
+ tests/runtests.py | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 0461e05174637ae02f34029b85ba217d5ae48c53
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Feb 28 18:21:43 2011 -0500
+
+ [gi-overrides] override Gtk.stock_lookup to not return success
+
+ demos/gtk-demo/demos/combobox.py | 2 +-
+ gi/overrides/Gtk.py | 9 +++++++++
+ 2 files changed, 10 insertions(+), 1 deletion(-)
+
+commit 40decf3501823004a6e4d3acbbf204c4d4d0a7ec
+Author: John (J5) Palmieri <johnp@redhat.com>
+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 ++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 50 insertions(+)
+
+commit c2d5122b8e3cf51ec52418f90f1788895b842b6a
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Feb 28 14:08:05 2011 -0500
+
+ [gi-tests] use Gdk.test_simulate_button instead of emitting event
+ ourselves
+
+ * this function is available specifically so we can test events so
+ use this
+ instead of creating our own button press event
+
+ tests/test_overrides.py | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+commit 1be1a2ea2787dffeb71ab4a38233fb71e761bd21
+Author: Laszlo Pandy <lpandy@src.gnome.org>
+Date: Thu Feb 24 19:30:32 2011 +0100
+
+ [gi-tests] tests for EventButton override.
+
+ * John (J5) Palmieri - fixed up original patch so that we actually
+ emit the event instead of just creating a Gdk.ButtonEvent object
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=642554
+
+ tests/test_overrides.py | 21 +++++++++++++++++++++
+ 1 file changed, 21 insertions(+)
+
+commit 99044a4860dd65c97f52b41b7cd3f216f4a97cd4
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Feb 23 18:43:27 2011 -0500
+
+ [gi-overrides] Add event methods to all event union members
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=642554
+
+ gi/overrides/Gdk.py | 70
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 70 insertions(+)
+
+commit 6e30c69d38fd382414eb820097c297a80be547ac
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Feb 23 14:14:16 2011 -0500
+
+ [gi] check to see if object is a member of a union when validating
+ paramaters
+
+ * union members are not subclasses of the union they belong to so
+ if an
+ inteface requires you pass a union but you pass one of its members
+ there will be a type error
+ * this patch checks to see if the type you are passing is a member
+ of the
+ union and passes the checks if it is
+ * this works in python 3 but in python 2 methods do their own
+ isinstance
+ check on the instance parameter (e.g. self) so we need to figure
+ out how to override that for union methods
+ (e.g. Gdk.Event.get_state)
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=642554
+
+ gi/pygi-argument.c | 38 ++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 38 insertions(+)
+
+commit 525f21d1365c24488b768955362085bf82512dee
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Wed Feb 16 09:44:12 2011 +0100
+
+ Skip interfaces when checking for conflicts in the MRO
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=642437
+
+ gi/types.py | 40 ++++++++++++++++++++++++++++++++++++++++
+ gobject/gobjectmodule.c | 9 +++++++--
+ tests/test_gi.py | 16 ++++++++++++++++
+ 3 files changed, 63 insertions(+), 2 deletions(-)
+
+commit da212024772a7a0c32f04f3589bfb24d2eb5706f
+Author: Laszlo Pandy <lpandy@src.gnome.org>
+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 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 2ce6b58c7427cf67ba4f55731ba0a4c04703e495
+Author: Laszlo Pandy <lpandy@src.gnome.org>
+Date: Wed Feb 23 12:05:03 2011 +0100
+
+ Test case with John's fix for crash with C arrays and a GError is set.
+
+ I have added a test case, and made a few fixes to John's patch,
+ but the
+ solution is the same his.
+
+ Workaround a bug when freeing C array types
+
+ * This is a hack and there is really no way around it without
+ ripping out
+ the current array handling code which spans between pygi-invoke.c
+ and
+ pygi-argument.c and completely rewriting it.
+ * The is no time before our stable release
+ * This patch trades a segfault for a leak in the very unusual
+ case where
+ an error occures inside an interface that takes one or more C
+ arrays. Since
+ we wrap C arrays in GArrays internally but have to unwrap them
+ to send them
+ to the introspected C function, there is a period of time where
+ an error
+ can occure with the C array in an unknown state (some being true
+ C arrays
+ and others still wrapped in a GArray)
+ * This patch adds a c_arrays_are_wrapped state to signal that it
+ is safe to
+ free them. However since c_arrays_are_wrapped can only track
+ arrays
+ as a group, not individually, if it is set to FALSE we can
+ not assume
+ that every array is a pure C array, so instead we will simply
+ leak them
+ to avoid incorrectly freeing one and causing a segfault.
+ * This issue is fixed in the invoke rewrite branch as it treats
+ C arrays and
+ GArrays separately, however that branch is not yet ready to be
+ merged and
+ won't be until the next release.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=642708
+
+ gi/pygi-invoke.c | 54
+ ++++++++++++++++++++++++++++++++++++++++++++++++++----
+ tests/test_gi.py | 9 +++++++++
+ 2 files changed, 59 insertions(+), 4 deletions(-)
+
+commit 702a89beca92cab6b0142829b20281b9245f28b8
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Feb 23 15:11:59 2011 -0500
+
+ [gi-overrides] fix setting rows in treeview to accept None as a value
+
+ * as done in PyGTK None indicates the column should not be set
+
+ gi/overrides/Gtk.py | 3 +++
+ tests/test_overrides.py | 18 +++++++++++++-----
+ 2 files changed, 16 insertions(+), 5 deletions(-)
+
+commit 498f0d9c903131aca5efe27ffaad7620e40f72ea
+Author: Laszlo Pandy <lpandy@src.gnome.org>
+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 ++++++++++++++++++++++++++++++++++++
+ 2 files changed, 54 insertions(+), 4 deletions(-)
+
+commit 824aeb7fab17d6590e5babf2d1f64298f2d0e16b
+Author: Laszlo Pandy <lpandy@src.gnome.org>
+Date: Wed Feb 23 11:40:55 2011 +0100
+
+ Fix flags with multiple names for the same value.
+
+ Flags constructs a dict __flags_values__ and uses it to cache
+ instances. However some flags in Glib such as G_IO_FLAG_MASK and
+ G_IO_FLAG_GET_MASK are aliases for the same int value, and will
+ override each other's place in the dictionary.
+
+ The dict length check is not necessary. It only reduces the number
+ of duplicate instances we keep, because if an instance is not
+ found in the dict, a new one is created anyway.
+
+ gobject/pygflags.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 3afbebeee486e14fd3f48552368903eb78f6b10c
+Author: Laszlo Pandy <lpandy@src.gnome.org>
+Date: Tue Feb 22 21:37:33 2011 +0100
+
+ Don't force loading of DynamicModule until set in sys.modules
+
+ This fixes Tomeu's previous commit, which removed lazy loading.
+ Forcing the loading of a module before it is installed in sys.modules
+ prevents some overrides from being registered (namely Gtk.main_quit).
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=642305
+
+ gi/importer.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 2a9cbfb435b47dc646e2c6ffe630464b560229a6
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Feb 21 17:20:57 2011 -0500
+
+ use GValue support to marshal GtkTreeModel values correctly
+
+ * needs patch from https://bugzilla.gnome.org/show_bug.cgi?id=642914
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=642921
+
+ gi/overrides/Gtk.py | 37 ++++++++++++++++++---
+ tests/test_overrides.py | 87
+ +++++++++++++++++++++++++++++++++++++++++--------
+ 2 files changed, 107 insertions(+), 17 deletions(-)
+
+commit 9e4ce7dc0f03ea407654c4af028122f57cbc4c5e
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Feb 21 16:14:20 2011 -0500
+
+ [gi] pass raw GValues instead of trying to marshal them
+
+ * Right now GValues are transparent to the user but this leave us no
+ way to describe fundimental types other than those supported
+ directly
+ by python (e.g. int, str, etc)
+ * If an interface is expecting a uint or other GValue type a user
+ can now use
+ the raw GValue interfaces and expect paramaters that take
+ GValues to
+ marshal them correctly e.g.:
+ value = GObject.Value()
+ value.int(GObject.TYPE_UINT)
+ value.set_uint(1234)
+ * The objective here is to not for users to use this API but for
+ overrides
+ to be able to utilize them. For instance in the TreeModel API
+ we can
+ get the expected type for a column and them create a GValue with
+ the correct
+ type so that he underlying python object is marshalled correctly.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=642914
+
+ gi/pygi-argument.c | 24 ++++++++++++++++++------
+ tests/test_gi.py | 9 ++++++++-
+ 2 files changed, 26 insertions(+), 7 deletions(-)
+
+commit b458f6f3424a04f6ceece09d443009372d70544c
+Author: John (J5) Palmieri <johnp@redhat.com>
+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/__init__.py | 0
+ demos/gtk-demo/demos/Icon View/iconviewedit.py | 101
+ +++++++++++++++++++++++++
+ 2 files changed, 101 insertions(+)
+
+commit 7b47289e25d1dd57ce15556ccfbb3ede1c4bfe8b
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Sat Feb 19 17:26:42 2011 -0500
+
+ [gi-demos] add info bars demo
+
+ demos/gtk-demo/demos/infobars.py | 99
+ ++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 99 insertions(+)
+
+commit 76758efb6579752237a0dc4d56cf9518de6c6e55
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Wed Feb 16 11:53:18 2011 +0100
+
+ Load typelibs at import time, add gi.require_version()
+
+ also adds Repository.get_loaded_namespaces()
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=642305
+
+ gi/__init__.py | 29 ++++++++++++++++++++++++++++-
+ gi/importer.py | 1 +
+ gi/module.py | 21 ++++-----------------
+ gi/pygi-repository.c | 23 +++++++++++++++++++++++
+ 4 files changed, 56 insertions(+), 18 deletions(-)
+
+commit 96f7d1aed732db09a74cd463ed894b7347dbcb15
+Author: Laszlo Pandy <lpandy@src.gnome.org>
+Date: Sat Feb 19 23:11:25 2011 +0100
+
+ [gi] Register GType for non-GType enums and flags at runtime.
+
+ Note: rebuild of gobject-introspection is required for new tests.
+
+ Previously non-GType enums used a separate type implemented in
+ Python, and non-GType flags had no implementation at all. This
+ removes the separate type for enums, and registers a new GType at
+ runtime if there isn't one.
+
+ This allows non-GType enums and flags to use the same Python type
+ as GType enums and flags. This removes duplication of code, and
+ make both kinds behave identically.
+
+ 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 ++++++++++++++++
+ 6 files changed, 191 insertions(+), 29 deletions(-)
+
+commit 63a60bcc20e724f96ea8d565ee0cf13a228b72b9
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Tue Feb 8 15:38:21 2011 +0100
+
+ [gi] Add Pythonic gdbus method invocation
+
+ Provide a wrapper for Gio.DBusProxy for calling D-Bus methods like
+ on a normal
+ Python object. This will handle the Python object <-> GVariant
+ conversion, and
+ optional keyword arguments for flags, timeout, and a result handler
+ for
+ asynchronous calls.
+
+ Require specifying the input argument signature as the first argument
+ of each
+ method call. This ensures that the types of e. g. integers are
+ always correct,
+ and avoids having to do expensive D-Bus introspection for each call.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=640181
+
+ gi/overrides/Gio.py | 99
+ ++++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_gdbus.py | 102
+ ++++++++++++++++++++++++++++++++++++++++++++++++++--
+ 2 files changed, 199 insertions(+), 2 deletions(-)
+
+commit ed5cdbb6f52bdbd13521a814516b15687955d6f7
+Author: Laszlo Pandy <lpandy@src.gnome.org>
+Date: Fri Feb 18 22:48:59 2011 +0100
+
+ Skip GError out parameters in Python closure.
+
+ Python code should have never have to explicitely return a GError.
+ Once we are able to marshal exceptions the Python code should
+ throw an exception instead. Until then, set GError to NULL, and
+ don't complain if a Python function doesn't return an arg for it.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=642715
+
+ gi/pygi-closure.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+commit 5a5ee3877e22939a697772a7f0630ef8cae3d52f
+Author: Laszlo Pandy <lpandy@src.gnome.org>
+Date: Fri Feb 18 10:15:59 2011 +0100
+
+ Fix runtests.py to work with Python3 (print function syntax error).
+
+ tests/runtests.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit ad5d3fccff9433e2dadac89d731dac5cafb0eac3
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Feb 17 19:46:49 2011 -0500
+
+ [gi-demos] added rotate text demo
+
+ * needs some Pango Attr fixes to be 100% done, See FIXME
+
+ demos/gtk-demo/demos/rotatedtext.py | 196
+ ++++++++++++++++++++++++++++++++++++
+ 1 file changed, 196 insertions(+)
+
+commit 9ac11c3c3b1c0399c85ece57c0983ed60d419d7a
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Feb 17 17:25:00 2011 -0500
+
+ [gi-demos] add images demo
+
+ * needs annotation fix from GdkPixbuf for ImageLoader to work
+
+ demos/gtk-demo/demos/images.py | 311
+ +++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 311 insertions(+)
+
+commit 13b06170b89b3468e6255be32af4833ffc675c9d
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Feb 17 14:48:24 2011 -0500
+
+ [gi-demos] add pixbuf demo
+
+ demos/gtk-demo/demos/pixbuf.py | 183
+ +++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 183 insertions(+)
+
+commit 7abcfd5b4db99bb0f50c5a47d346a2de3836f994
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Feb 17 14:47:12 2011 -0500
+
+ [gi-demos] remove fixmes from print demo, fixed in pango
+
+ demos/gtk-demo/demos/printing.py | 10 +++-------
+ 1 file changed, 3 insertions(+), 7 deletions(-)
+
+commit 9b13f49356da7d71c69b82da2a59d92f456a6913
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Feb 16 19:39:30 2011 -0500
+
+ [gi-demos] add printing demo
+
+ * needs some annotations for pango before it is 100% useful
+
+ demos/gtk-demo/demos/printing.py | 177
+ +++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 177 insertions(+)
+
+commit 6025b62ee662af347e48b6752e6d5be74b4a8215
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Feb 16 17:52:38 2011 -0500
+
+ [gi-overrides] add cursor overrides
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=635947
+
+ gi/overrides/Gdk.py | 41 +++++++++++++++++++++++++++++++++++++++++
+ tests/test_overrides.py | 23 +++++++++++++++++++++++
+ 2 files changed, 64 insertions(+)
+
+commit 03c0aa498470037ef2aa6a8233198ff521f8d42f
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Feb 16 16:18:24 2011 -0500
+
+ [gi-demos] add the links demo
+
+ demos/gtk-demo/demos/links.py | 74
+ +++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 74 insertions(+)
+
+commit 79ecddf8d54b3f4f8b5ef05d302675152622c832
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Feb 16 15:48:40 2011 -0500
+
+ [gi-demos] add expander demo
+
+ demos/gtk-demo/demos/expander.py | 60
+ ++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 60 insertions(+)
+
+commit 76cdb13ab872f91f8384d26b0f2932087a746117
+Author: John (J5) Palmieri <johnp@redhat.com>
+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 ++++++++
+ 2 files changed, 10 insertions(+), 4 deletions(-)
+
+commit 6ef83c049735689c42f085ca9d7b8e1f251c410f
+Author: Laszlo Pandy <lpandy@src.gnome.org>
+Date: Tue Feb 15 20:07:42 2011 +0100
+
+ [tests] Separate processes for GI and static binding tests.
+
+ Importing and using both static gobject bindings and
+ introspection GObject bindings in the same process can cause
+ conflicts with types which otherwise wouldn't be there.
+
+ This patch changes "make check" to call runtests.py twice -- once
+ for each set of tests.
+
+ In the case of a test failure, runtests.py now sets the exit code
+ 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 +++-
+ 2 files changed, 14 insertions(+), 9 deletions(-)
+
+commit e0896b45f60f37097ec521f1bc38778383b78dd8
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Feb 15 14:47:10 2011 -0500
+
+ [gi-demos] add dialogs demo
+
+ demos/gtk-demo/demos/dialogs.py | 153
+ ++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 153 insertions(+)
+
+commit 2dea743e82f6b18697950c34f116b2d0f1d6b1dd
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Feb 15 14:46:41 2011 -0500
+
+ [gi-overrides] fix typo in GtkTable constructor
+
+ gi/overrides/Gtk.py | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit 9c277e1782c5a9d672d91fabf5289c5415891682
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Feb 15 13:26:38 2011 -0500
+
+ [gi-demos] keep popup menu from destroying itself by holding a ref
+ in app class
+
+ demos/gtk-demo/demos/clipboard.py | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit 18800c4db0e1faea38fd84f635d26a7ded5d10de
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Feb 15 13:25:13 2011 -0500
+
+ [gi-overrides] add a Gtk.Menu override for the popup method
+
+ gi/overrides/Gtk.py | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+commit ad93386ba9f73ef4c3826544b3868cf03c01225e
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Feb 15 13:24:33 2011 -0500
+
+ [gi-demos] fix the about dialog in appwindow demo
+
+ demos/gtk-demo/demos/appwindow.py | 22 +++++++++-------------
+ 1 file changed, 9 insertions(+), 13 deletions(-)
+
+commit d0c45c80974f05b6adfd3bb01d785be268a53a98
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Feb 15 11:21:13 2011 -0500
+
+ [gi-demos] fix clipboard demo so DnD works
+
+ * menu popups don't work because the API takes a callback without
+ a destroy
+ notify
+
+ demos/gtk-demo/demos/clipboard.py | 20 ++++++++++----------
+ 1 file changed, 10 insertions(+), 10 deletions(-)
+
+commit 02d0327508234ab2e3b7dc6de506d70e6fcaaa17
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Feb 15 10:18:53 2011 -0500
+
+ [gi-demos] fix clipboard demo to reflect new API
+
+ demos/gtk-demo/demos/clipboard.py | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit aa006cad6990eff0cbb68fa9550e428f2bc96473
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Feb 14 18:17:20 2011 -0500
+
+ [gi-demo] Fix color dialog demo to run with new draw, style and
+ color apis
+
+ demos/gtk-demo/demos/colorselector.py | 44
+ ++++++++++++++---------------------
+ 1 file changed, 17 insertions(+), 27 deletions(-)
+
+commit f94a96c53e9432ac085bd05acee7ebdd2803fbad
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Feb 14 17:58:25 2011 -0500
+
+ [gi-demos] fix most of the combobox app
+
+ * Still having some issues with filtering the ComboBoxText widget
+
+ demos/gtk-demo/demos/combobox.py | 17 ++++++++---------
+ 1 file changed, 8 insertions(+), 9 deletions(-)
+
+commit 3606eb20ad1651af621bf1aa429ec102082565eb
+Author: Laszlo Pandy <lpandy@src.gnome.org>
+Date: Mon Feb 14 19:36:27 2011 +0100
+
+ Use PyGI type conversion (to fix foreign types) for signal callbacks.
+
+ First attempt at patch to fix foreign types in signal callbacks.
+ Tests are not implemented yet.
+
+ 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 ++++-
+ 9 files changed, 436 insertions(+), 4 deletions(-)
+
+commit 2e39d5e8f96be2253acb2f34a0d0b5b9c9adb8ff
+Author: John (J5) Palmieri <johnp@redhat.com>
+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
+ +++++++++++++-----------------------
+ 1 file changed, 50 insertions(+), 94 deletions(-)
+
+commit 8385afbbc5df295d9b7cd3b5d19c90faa1f7ea8e
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Feb 14 16:43:35 2011 -0500
+
+ [gi-overrides] for Gtk 3 alias Gdk.Rectangle to cairo.RectangleInt
+
+ * note this is the introspected gobject-cairo boxed type not the
+ static cairo
+ bindings
+ * we alias this so people do not get confused
+
+ gi/overrides/Gdk.py | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+commit d491c369e049ab726f09002af0462391d5c2f3ec
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Feb 14 15:07:11 2011 -0500
+
+ [gi-overrides] let user set the proper property names in Gtk.Table
+
+ * the old override added a columns and rows parameters to the Table
+ constuctor
+ to be in sync with PyGtk.
+ * The GTK properties are n_columns and n_rows
+ * support both
+
+ gi/overrides/Gtk.py | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+commit 95bc2b2b025d659725d701c3b759c0c4d9681a36
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Feb 14 15:06:38 2011 -0500
+
+ [gi-demos] get appwindow demo working again
+
+ demos/gtk-demo/demos/appwindow.py | 24 ++++--------------------
+ 1 file changed, 4 insertions(+), 20 deletions(-)
+
+commit 015185f502c498c21cb108d3bb288c5b6dbf202f
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Feb 14 15:05:44 2011 -0500
+
+ [gi-demos] fixed use of tree_iter_get
+
+ demos/gtk-demo/gtk-demo.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 0c20977e4598e5447dd07c069e91226efacb1160
+Author: Simon van der Linden <svdlinden@gnome.org>
+Date: Fri Feb 11 22:02:03 2011 +0100
+
+ Remove last GIO-related bits
+
+ 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 +-
+ 6 files changed, 3 insertions(+), 117 deletions(-)
+
+commit e4ebbd7de5570af1abf41bdf9469d4ce3edd48cb
+Author: Simon van der Linden <svdlinden@gnome.org>
+Date: Fri Feb 11 18:38:27 2011 +0100
+
+ Remove GIO documentation
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=638899
+
+ docs/Makefile.am | 82 +-
+ docs/reference/pygio-appinfo.xml | 894 -----
+ docs/reference/pygio-applaunchcontext.xml | 194 --
+ docs/reference/pygio-asyncresult.xml | 117 -
+ docs/reference/pygio-bufferedinputstream.xml | 461 ---
+ docs/reference/pygio-bufferedoutputstream.xml | 275 --
+ docs/reference/pygio-cancellable.xml | 290 --
+ docs/reference/pygio-classes.xml | 47 -
+ docs/reference/pygio-constants.xml | 1540 ---------
+ docs/reference/pygio-datainputstream.xml | 799 -----
+ docs/reference/pygio-dataoutputstream.xml | 504 ---
+ docs/reference/pygio-drive.xml | 546 ---
+ docs/reference/pygio-emblem.xml | 232 --
+ docs/reference/pygio-emblemedicon.xml | 160 -
+ docs/reference/pygio-file.xml | 4534
+ -------------------------
+ docs/reference/pygio-fileattributeinfo.xml | 73 -
+ docs/reference/pygio-fileenumerator.xml | 488 ---
+ docs/reference/pygio-fileicon.xml | 109 -
+ docs/reference/pygio-fileinfo.xml | 346 --
+ docs/reference/pygio-fileinputstream.xml | 214 --
+ docs/reference/pygio-filemonitor.xml | 128 -
+ docs/reference/pygio-fileoutputstream.xml | 257 --
+ docs/reference/pygio-filterinputstream.xml | 152 -
+ docs/reference/pygio-filteroutputstream.xml | 152 -
+ docs/reference/pygio-functions.xml | 395 ---
+ docs/reference/pygio-icon.xml | 217 --
+ docs/reference/pygio-inputstream.xml | 730 ----
+ docs/reference/pygio-loadableicon.xml | 198 --
+ docs/reference/pygio-memoryinputstream.xml | 151 -
+ docs/reference/pygio-memoryoutputstream.xml | 175 -
+ docs/reference/pygio-mount.xml | 962 ------
+ docs/reference/pygio-mountoperation.xml | 726 ----
+ docs/reference/pygio-outputstream.xml | 140 -
+ docs/reference/pygio-seekable.xml | 231 --
+ docs/reference/pygio-simpleasyncresult.xml | 317 --
+ docs/reference/pygio-themedicon.xml | 204 --
+ docs/reference/pygio-unixinputstream.xml | 202 --
+ docs/reference/pygio-unixoutputstream.xml | 202 --
+ docs/reference/pygio-volume.xml | 718 ----
+ docs/reference/pygio-volumemonitor.xml | 844 -----
+ docs/reference/pygiounix-classes.xml | 13 -
+ docs/reference/pygobject-ref.xml | 2 -
+ 42 files changed, 1 insertion(+), 19020 deletions(-)
+
+commit abdebc7f6515f9658812c0355d8ad0892e5371e4
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Feb 11 11:05:04 2011 -0500
+
+ bump version to reflect the master branch moving towards pygobject 3.0
+
+ * added NEWS file from branch pygobject-2-28
+ * bump to 2.90.1
+ * this branch will drop support for the static binding
+ * use the pygobject-2-28 branch for static binding fixes
+
+ NEWS | 289
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ configure.ac | 4 +-
+ 2 files changed, 291 insertions(+), 2 deletions(-)
+
+commit 16140237aa45b4f188923da9f95b9d2af971011b
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Feb 10 16:46:08 2011 -0500
+
+ fix build to correctly use python-config
+
+ autogen.sh | 3 +++
+ configure.ac | 6 ------
+ m4/python.m4 | 9 +++++----
+ tests/runtests.py | 1 +
+ 4 files changed, 9 insertions(+), 10 deletions(-)
+
+commit c2079f415638ef892b1e51f25eaafa3e1621667f
+Author: Simon van der Linden <svdlinden@gnome.org>
+Date: Thu Feb 10 22:26:00 2011 +0100
+
+ Add missing libraries to link against
+
+ glib/Makefile.am | 2 +-
+ gobject/Makefile.am | 1 +
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+
+commit 3cca62a9e7afd3d3d302c66f4fafe253f7743d4e
+Author: Steve Frécinaux <code@istique.net>
+Date: Wed Jan 19 15:00:56 2011 +0100
+
+ Make runtests.py able to run command-line provided test files
+
+ With this patch we are now able to run ./runtests.py <somefile>, which
+ is more friendly than defining an environment variable to run some
+ specific tests.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=639948
+
+ tests/runtests.py | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+commit 14c4cf8e6edae893538680964380d543bde4a14d
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Wed Feb 9 11:34:59 2011 +0100
+
+ Run test suite under dbus-launch
+
+ When available, run the test suite in dbus-launch, so that the
+ GDBus tests
+ succeed even when building this in an environment without a running
+ session
+ D-BUS (such as distribution package builds).
+
+ tests/Makefile.am | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit 0858f550e2b6f75e3f583f963f5952f5ddae4e0e
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Tue Feb 8 15:46:36 2011 +0100
+
+ Fix test_gdbus.py to be Python3 friendly
+
+ - TestCase.assert_() has been deprecated by assertTrue().
+ - Exceptions don't have a message attribute any more, use str(e)
+
+ tests/test_gdbus.py | 34 +++++++++++++++-------------------
+ 1 file changed, 15 insertions(+), 19 deletions(-)
+
+commit b7f32e4cca0cef201489b55653f96ac64a8f9ab9
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Sat Jan 29 12:20:50 2011 +0100
+
+ [gi] Provide comfortable GSettings API
+
+ Make Gio.Settings behave like a dictionary, with transparent
+ conversion from/to
+ GVariants. Also provide a more comfortable constructor.
+
+ 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
+ ++++++++++++++++++++++++++++++++--------
+ 3 files changed, 122 insertions(+), 14 deletions(-)
+
+commit 8dad0eaed60a9de26e9a729a48a1f6bc74be486e
+Author: Laszlo Pandy <lpandy@src.gnome.org>
+Date: Fri Feb 4 16:36:07 2011 +0100
+
+ Fix vfunc search bug when using GInterfaces and a do_* method.
+
+ If a class inherits from a GInterface, as well as implements a do_*
+ method (which is not in a super class), all the base interfaces
+ will be searched for an __info__ attribute. GInterface doesn't
+ have one, causing an error on class creation.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=641493
+
+ gi/types.py | 4 +++-
+ tests/test_gi.py | 8 ++++++++
+ 2 files changed, 11 insertions(+), 1 deletion(-)
+
+commit 2660be1f227be7a53092483bc9d8ead1bd1fb266
+Author: Laszlo Pandy <lpandy@src.gnome.org>
+Date: Thu Feb 3 15:31:42 2011 +0100
+
+ [GI] Add tests for Gtk.Widget.drag_* methods.
+
+ Previously all the drag_* methods were accessible as Gtk.drag_*.
+ Now that the (method) attribute has been included for these
+ methods in Gtk+, this test checks that they are included as class
+ methods when using pygobject introspection.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=639945
+
+ tests/test_overrides.py | 40 ++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 40 insertions(+)
+
+commit d57500537014b3da624be33b40401ba289fa22b8
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Feb 3 09:02:16 2011 -0500
+
+ [gi] make caller allocates work again
+
+ gi/pygi-cache.c | 18 +++---------------
+ gi/pygi-invoke.c | 37 ++++++++++++++++++++++++++++++++++---
+ 2 files changed, 37 insertions(+), 18 deletions(-)
+
+commit 99d6e6c8d806e6f9e48c3c2380024fb3511d110a
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Feb 2 19:27:40 2011 -0500
+
+ [gi] fix container object reffing
+
+ gi/pygi-argument.c | 7 +++----
+ gi/pygi-cache.c | 12 ++++--------
+ 2 files changed, 7 insertions(+), 12 deletions(-)
+
+commit 09acaff29dfaabc77477cffca2c7137f68991e7f
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date: Wed Feb 2 21:00:48 2011 +0100
+
+ [python 3] use the right syntaxis to raise exceptions
+
+ codegen/argtypes.py | 8 ++++----
+ codegen/definitions.py | 14 +++++++-------
+ gi/overrides/Gtk.py | 2 +-
+ 3 files changed, 12 insertions(+), 12 deletions(-)
+
+commit 36094e5982d3e05d5662843b6d401f0974f5235f
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date: Wed Feb 2 20:50:12 2011 +0100
+
+ [gi] return PYGLIB_MODULE_ERROR_RETURN on error and use pygobject_init
+
+ tests/testhelpermodule.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit c913c1789296310c2cf27554ce719d7f6e9c94cd
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date: Wed Feb 2 20:37:21 2011 +0100
+
+ [gi] return PYGLIB_MODULE_ERROR_RETURN on error
+
+ This is to avoid some warnings when building with python 3
+
+ gi/gimodule.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 7bc4122897d9d05172a2bd5b56bded87e2afaec4
+Author: Steve Frécinaux <code@istique.net>
+Date: Sat Jan 29 00:16:50 2011 +0100
+
+ Fix wrong refcount when calling introspected widget constructors
+
+ Introspected widget constructors, like Gtk.Button.new(), can return
+ objects with a floating reference, which was then reffed by pygobject,
+ resulting in two references, despite the object is not owned by
+ anyone.
+
+ This patch uses ref_sink() when pygobject takes its own reference, to
+ avoid adding that extra reference. Hence we now claim ownership on
+ objects returned by constructors with transfer=none (which is the case
+ for nearly all the widget constructors, despite the floating ref).
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=640868
+
+ gobject/pygobject.c | 4 +++-
+ tests/test_everything.py | 9 ++++++++-
+ 2 files changed, 11 insertions(+), 2 deletions(-)
+
+commit afeaaa126f7cd6556fb855ecd0facc174c0f946c
+Author: Simon Schampijer <simon@laptop.org>
+Date: Wed Jan 19 16:19:46 2011 +0100
+
+ Gdk.Window: Map the standard constructor to the *new* constructor
+
+ Gdk.Window had to be made abstract
+ (see c4a36d875235e0bf1e52dbf2fa14d08bfc8bd4ec in gtk),
+ this override allows using the standard constructor
+
+ This commit adds as well a testcase.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=639936
+
+ gi/overrides/Gdk.py | 6 ++++++
+ tests/test_overrides.py | 8 ++++++++
+ 2 files changed, 14 insertions(+)
+
+commit 4a67f45880433905de33632fe0c32a13b44c0b33
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Jan 31 16:51:37 2011 -0500
+
+ [gi] handle hash being NULL
+
+ gi/pygi-argument.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+commit 2fbfe410f4b4394a2018ada0e538585c1bec23ae
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Jan 31 16:50:52 2011 -0500
+
+ [gi] handle the situation where an aux arg comes before its parent
+
+ gi/pygi-cache.c | 70
+ ++++++++++++++++++++++++++++++++++++++++----------------
+ gi/pygi-invoke.c | 2 +-
+ 2 files changed, 51 insertions(+), 21 deletions(-)
+
+commit 858669f92c9907dd70b4966d6a8521ed122225be
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Mon Jan 31 17:38:52 2011 +0100
+
+ Ship tests/org.gnome.test.gschema.xml in dist tarballs
+
+ tests/Makefile.am | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit 77d76df59606e470808085e977fb199cc76e8251
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Sun Jan 30 18:21:24 2011 -0500
+
+ [gi] allow caching and marshalling of ghash out
+
+ gi/pygi-argument.c | 155
+ +++++++++++++++++++++++++++++++++++++++++++++++++----
+ gi/pygi-cache.c | 27 ++++++----
+ 2 files changed, 162 insertions(+), 20 deletions(-)
+
+commit bd66af67f248a3ca90d2fa2626605263c2392e16
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Sun Jan 30 17:06:44 2011 -0500
+
+ [gi] whitespace fixes
+
+ gi/pygi-cache.c | 60
+ ++++++++++++++++++++++++++++-----------------------------
+ 1 file changed, 30 insertions(+), 30 deletions(-)
+
+commit 1cdbd4be9b015f792c2c02afa5ac7e24edbdae86
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Sun Jan 30 17:04:13 2011 -0500
+
+ [gi] added ugly aux arg counters
+
+ * we need to simplify the ffi invoke so we can simply reference args
+ at their position in the C parameter list
+ * this works for now but is fragile if new aux values are added in
+ the future
+
+ gi/pygi-argument.c | 12 ++++++++--
+ gi/pygi-cache.c | 66
+ +++++++++++++++++++++++++++++++++++++-----------------
+ gi/pygi-cache.h | 2 ++
+ gi/pygi-invoke.c | 12 +++++++---
+ 4 files changed, 66 insertions(+), 26 deletions(-)
+
+commit c51447f4efde2ce4caf39c1ffac905ec428d1d64
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Sun Jan 30 11:30:54 2011 -0500
+
+ [gi] make inout marshalling work
+
+ * refactor cache generation so we can create caches and then fill
+ in their
+ values based on if they are in, out or inout
+ * in invoke we order the pointers based on their direction
+
+ gi/pygi-cache.c | 1445
+ ++++++++++++++++++++++++++----------------------------
+ gi/pygi-invoke.c | 19 +-
+ 2 files changed, 711 insertions(+), 753 deletions(-)
+
+commit 2b185362de45f46ce0f0b8816499aef06ab1ad1e
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Sat Jan 29 13:49:36 2011 -0500
+
+ [gi] marshal arrays out
+
+ gi/pygi-argument.c | 101
+ +++++++++++++++++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 99 insertions(+), 2 deletions(-)
+
+commit e62e7062d5cfd782eac64852f681c63e2776b8d4
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Sat Jan 29 13:48:23 2011 -0500
+
+ [gi] fix sequence caching to support out
+
+ gi/pygi-cache.c | 111
+ ++++++++++++++++++++++++++++++++++++++++++++------------
+ 1 file changed, 87 insertions(+), 24 deletions(-)
+
+commit 69207910209ebfe450df616aeb8fa4cc2e7eccf3
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Fri Jan 28 17:14:19 2011 +0100
+
+ [gi] Add GSettings tests
+
+ Ryan Lortie proposed an override for more convenient GSettings access,
+ 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 +++++++++++++++++++++++++++++++
+ 3 files changed, 52 insertions(+), 2 deletions(-)
+
+commit 488478a83640d50baee963337fcc870fec76b784
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Fri Jan 28 07:20:26 2011 +0100
+
+ [gi] Provide GtkTextBuffer.insert_with_tags_by_name()
+
+ Provide an actual insert_with_tags_by_name() instead of overloading
+ insert_with_tags() to handle both types. This keeps the overrides
+ consistent
+ with the actual GTK API.
+
+ gi/overrides/Gtk.py | 19 ++++++++++++++-----
+ tests/test_overrides.py | 4 ++--
+ 2 files changed, 16 insertions(+), 7 deletions(-)
+
+commit dace1a553793fb7fb054b60760f02c9e5cf00b38
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Thu Jan 27 13:37:18 2011 +0100
+
+ [gi] Support tag names in GtkTextBuffer.insert_with_tags()
+
+ Neither insert_with_tags() nor insert_with_tags_by_name() are
+ introspectable
+ due to using varargs. As both are useful, support both cases in
+ the override.
+
+ gi/overrides/Gtk.py | 5 +++++
+ tests/test_overrides.py | 9 +++++++++
+ 2 files changed, 14 insertions(+)
+
+commit 91d34124b2a5128e93e13c7fee8693d5edc4e9bb
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date: Thu Jan 27 12:23:18 2011 +0100
+
+ Add MAINTAINERCLEANFILES
+
+ This var behaves like .gitignore and allows us to skip some specific
+ files.
+
+ Makefile.am | 27 +++++++++++++++++++++++++++
+ 1 file changed, 27 insertions(+)
+
+commit 8a98d26981ce68809a21c64cac4962e58c927905
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date: Thu Jan 27 12:15:30 2011 +0100
+
+ Remove .gitignore files and use git.mk
+
+ git.mk is a script maintained in pango. From time to time we must
+ check if it was updated and update it here.
+
+ .gitignore | 46 -----------
+ Makefile.am | 2 +
+ codegen/.gitignore | 2 -
+ codegen/Makefile.am | 2 +
+ docs/.gitignore | 7 --
+ docs/Makefile.am | 2 +
+ examples/Makefile.am | 2 +
+ gi/.gitignore | 40 ----------
+ gi/Makefile.am | 2 +
+ gi/overrides/Makefile.am | 2 +
+ gi/repository/Makefile.am | 2 +
+ gi/tests/Makefile.am | 2 +
+ git.mk | 200
+ ++++++++++++++++++++++++++++++++++++++++++++++
+ glib/Makefile.am | 2 +
+ gobject/.gitignore | 3 -
+ gobject/Makefile.am | 2 +
+ tests/.gitignore | 2 -
+ tests/Makefile.am | 2 +
+ 18 files changed, 222 insertions(+), 100 deletions(-)
+
+commit 331c42b63bc60a3b906fa21e1c0a7c1b9428f347
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Thu Jan 27 12:04:19 2011 +0100
+
+ pygi-convert.sh: Convert Pango.TabAlign.*
+
+ pygi-convert.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit be1a2959fa0a3d8682e0e8aef389d73dacab0689
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Thu Jan 27 12:02:39 2011 +0100
+
+ pygi-convert.sh: Drop window -> get_window() conversion
+
+ It is doing more harm than good for projects which use things like
+ self.window.
+
+ pygi-convert.sh | 1 -
+ 1 file changed, 1 deletion(-)
+
+commit dd7deb4b658c56857c26b1a278a3d688f2ea6a2a
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Thu Jan 27 11:58:26 2011 +0100
+
+ pygi-convert.sh: Don't convert self.window assignments
+
+ pygi-convert.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 975341a26772966d4afc87a88a6a566d61237fa0
+Author: Steve Frécinaux <code@istique.net>
+Date: Fri Jan 21 18:41:54 2011 +0100
+
+ Fix leaked python reference in python-defined subclasses
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=640184
+
+ gobject/gobjectmodule.c | 1 +
+ tests/test_gobject.py | 4 ++++
+ 2 files changed, 5 insertions(+)
+
+commit a59e2d58bdb3f31a4f415dbe14b7d9988ac28ce3
+Author: Steve Frécinaux <code@istique.net>
+Date: Fri Jan 21 15:54:43 2011 +0100
+
+ Add some tests for the number of python refs held at creation time
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=640184
+
+ tests/test_gobject.py | 21 +++++++++++++++++++++
+ 1 file changed, 21 insertions(+)
+
+commit 7d70105eb324ea4b6a58c2d3fb3f2dda36e7ab33
+Author: Steve Frécinaux <code@istique.net>
+Date: Fri Jan 21 17:24:49 2011 +0100
+
+ Factor out parameter marshalling from construction functions.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=640197
+
+ gobject/gobjectmodule.c | 35 ++--------------------
+ gobject/pygobject-private.h | 5 ++++
+ gobject/pygobject.c | 71
+ +++++++++++++++++++++++++++------------------
+ 3 files changed, 50 insertions(+), 61 deletions(-)
+
+commit a3e0cfe8924887ecd1e07cedd2cfb999c853ac62
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jan 26 15:34:24 2011 -0500
+
+ [gi] in python 3 an array of uint8 can be bytes but not string
+
+ tests/test_gi.py | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+commit 843553ea958eddec185bb660851a310dc050a14b
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jan 26 15:30:06 2011 -0500
+
+ [gi] fix Gio.FileEnumerator to reflect the Python 3 iter protocol
+
+ gi/overrides/Gio.py | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+commit 6ff357839feb39930a5f3175de3d0ed35f24d3f4
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jan 26 15:17:03 2011 -0500
+
+ [gi] python 3 fixes
+
+ Patches need to work in Python 3 - here are some of the issues I
+ fixed up.
+ Patch submitters should keep this in mind. When I note to only
+ use something
+ in tests it means that there is a compat module that is only available
+ to the
+ tests. Actuall code should either add the workaround to the top
+ of their
+ module or try not to have a distinction between things such as
+ unicode and
+ longs which no longer exist in Python 3
+
+ * use range instead of xrange - loss of performance in Python 2 but
+ Python 3 i
+ treats range similarly to python 2's xrange
+ * use dict.items() instead of dict.iteritems() - same as the xrange
+ issue
+ * callable does not exist in 3.x, use hasattr(obj, '__call__') or
+
+ if sys.version_info > (3, 0):
+ def callable(obj):
+ return hasattr(obj, '__call__')
+
+ * using unicode in tests is tricky, you can't use u'' even in
+ a versioned
+ conditional as python3's parser chokes on it. Do this in tests
+ (and only i
+ in tests):
+
+ from compathelper import _unicode
+ unicode_string = _unicode('this is a unicode string')
+
+ * exception caching changed in 2.7, instead of except Exception,
+ e we now use
+ except Exception as e. Do this to be compatible with older
+ versions:
+
+ except Exception:
+ etype, e = sys.exc_info()[:2]
+
+ * Unbound methods with an im_func attribute no longer exits in 3.x.
+ Unbound methods are now just functions so class.method in 3.x is
+ equivalent to class.method.im_func in 2.x. If you have to go this
+ low level do this:
+
+ func = class1.method
+ if sys.version_info < (3,0):
+ func = func.im_func
+
+ * all numbers are long in 3.x so 42L is invalid in 3.x. In tests (and
+ only in tests) do this:
+
+ from compathelper import _long
+ l = _long(42)
+
+ gi/overrides/GLib.py | 16 ++++++++--------
+ gi/types.py | 5 ++++-
+ tests/compathelper.py | 19 +++++++++++++++++++
+ tests/test_gdbus.py | 12 ++++++++----
+ tests/test_gi.py | 19 ++++++++++++-------
+ tests/test_overrides.py | 8 +++++---
+ 6 files changed, 56 insertions(+), 23 deletions(-)
+
+commit 832d662b9f90f5762bbf28b3cca73f947c1f83ce
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jan 26 14:00:08 2011 -0500
+
+ [gi] fix try/except blocks using depricated raise format
+
+ gi/overrides/GLib.py | 4 ++--
+ gi/overrides/Gdk.py | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+commit d3e30e240fed6ef1dd40fd29fd13dc2effc6c7b1
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Wed Jan 26 19:03:48 2011 +0100
+
+ [gi] Add docstring to GLib.Variant constructor
+
+ gi/overrides/GLib.py | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+commit 963cd52fec26f7a4fb34414f8ac6662932ede322
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Wed Jan 26 18:45:38 2011 +0100
+
+ [gi] update gdbus test cases for previous GVariant change
+
+ tests/test_gdbus.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 27e3a6276ff5f2cdc03ddf69ee80d44c3bf2c094
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Wed Jan 26 18:39:17 2011 +0100
+
+ [gi] Accept only a single object in GLib.Variant constructor
+
+ We previously allowed flat arguments for tuple signatures, e. g.
+
+ GLib.Variant('(ii)', 1, 2)
+
+ However, that's not how GVariant is supposed to work. Remove the
+ special case
+ to handle flat argument lists, and only accept a single value, i. e.
+
+ GLib.Variant('(ii)', (1, 2))
+
+ Note that this breaks the current API, but as it is not used widely
+ yet, let's
+ better fix it now.
+
+ Thanks to Ryan Lortie for pointing this out!
+
+ gi/overrides/GLib.py | 25 ++++++++++---------------
+ tests/test_overrides.py | 32 +++++++++++++-------------------
+ 2 files changed, 23 insertions(+), 34 deletions(-)
+
+commit b15e8e2c0c933d0f827a70280faf875ac383d81b
+Author: Laszlo Pandy <lpandy@src.gnome.org>
+Date: Wed Jan 26 00:40:49 2011 +0100
+
+ Speed up _setup_native_vfuncs()
+
+ This changes _setup_native_vfuncs() to only install native
+ vfunc wrappers from the current class on the current class.
+ Native vfuncs will not be propogated up or down the class
+ hierarchy as this is unnecessary and wastes CPU and memory.
+
+ Since the normal process in python to retrieve a method or
+ attribute recurses to the base classes if an attribute is not
+ found in the subclass, there is no need to setup all base class
+ virtual functions on a subclass.
+
+ This patch removes the recursion in _setup_native_vfuncs()
+ and lets Python find them in the base classes like a normal
+ Python class would work. This significantly increases the speed
+ of any class which is or inherits from a C class which includes
+ virtual methods.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=640629
+
+ gi/types.py | 26 +++++++++++++-------------
+ tests/test_gi.py | 13 +++++++++++++
+ 2 files changed, 26 insertions(+), 13 deletions(-)
+
+commit 569d42ac2f50fb706ef289ff631db743483f40ee
+Author: Laszlo Pandy <lpandy@src.gnome.org>
+Date: Thu Jan 20 16:26:18 2011 +0100
+
+ Speed up class creation: rewrite _setup_vfuncs() to be much more
+ efficient.
+
+ This patch rewrites the _setup_vfuncs() method to remove recursion and
+ make the running time linear in the number of virtual functions to
+ hook up
+ (ie. methods starting with "do_") instead of linear in the number of
+ virtual functions in the base class which could possibly be
+ overridden.
+
+ Since most classes do not override all of the virtual functions in the
+ base class (and many override none), this runs much faster.
+
+ It is possible to not recurse on all base classes because
+ non-interface
+ base classes will have the virtual function installed as an attribute.
+ Thus getattr() can be called, which recurses to the base classes much
+ faster than a custom implementation in Python. If the method cannot be
+ found with getattr(), all interface bases classes are searched
+ manually.
+
+ The function is_function_in_classes() has been deleted. Because of the
+ above changes, it is not used anymore.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=640073
+
+ gi/types.py | 104
+ ++++++++++++++++++++++++++++++++++---------------------
+ tests/test_gi.py | 13 +++++++
+ 2 files changed, 77 insertions(+), 40 deletions(-)
+
+commit 8f4e6536f3c2edf38a45632d1c23eb7c6681c3be
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Mon Jan 24 19:23:19 2011 +0100
+
+ pygi-convert.sh: Convert gtk.UI_MANAGER_*
+
+ pygi-convert.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 1f473b5164407a178203eb8cc7f3c786e0d0e5c2
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Fri Jan 21 18:41:54 2011 +0100
+
+ pygi-convert.sh: Convert gdk.GRAB_*
+
+ pygi-convert.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit f5d0b7b9d189f65503c0bf66d8bda4186ca3223a
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date: Fri Jan 21 16:45:07 2011 +0100
+
+ [gi] set the gtype GValue correctly
+
+ gi/pygi-property.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit ce521011d7f6d7f082aaea76fa05c5af9f6e93f5
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date: Fri Jan 21 16:20:23 2011 +0100
+
+ [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 +-
+ 5 files changed, 9 insertions(+), 9 deletions(-)
+
+commit 9f101baaa63a75acf62f955cfc4b311ff0dd5464
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Jan 21 09:23:54 2011 -0500
+
+ [gi] marshal out flags and enum
+
+ gi/pygi-argument.c | 14 +++++++++-----
+ gi/pygi-cache.c | 24 ++++++++++++------------
+ 2 files changed, 21 insertions(+), 17 deletions(-)
+
+commit 4c93bdeae76830aa4029dfc86e32e6f277d5271d
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Jan 21 08:18:37 2011 -0500
+
+ [gi] marshal unions
+
+ gi/pygi-cache.c | 27 +++++++++++++--------------
+ 1 file changed, 13 insertions(+), 14 deletions(-)
+
+commit a060287d1a6d190acb9d344f08fd5662e3296da5
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Fri Jan 21 11:00:27 2011 +0100
+
+ [gi] Add test cases for GDBus client operations
+
+ tests/Makefile.am | 1 +
+ tests/test_gdbus.py | 94
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 95 insertions(+)
+
+commit e7699d9af41f8c374326b8a4ec0939ef1426e386
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Jan 21 04:28:15 2011 -0500
+
+ [gi] error out if the constructor returns NULL
+
+ gi/pygi-invoke.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+commit 58ff2b2c38c1004861083ca88633be76767229f0
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Jan 21 04:26:45 2011 -0500
+
+ [gi] throw error for caller allocates until we can write code to
+ support it
+
+ gi/pygi-cache.c | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+commit 5eb779439daa8bf1e86df689377dc10ef1430eab
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Jan 21 04:26:11 2011 -0500
+
+ [gi] support struct out
+
+ gi/pygi-argument.c | 30 ++++++++++++++++++++++++++----
+ gi/pygi-cache.c | 15 ++-------------
+ 2 files changed, 28 insertions(+), 17 deletions(-)
+
+commit 3133dc595adf44279397d30712c0f8595f0e1acc
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Jan 21 04:22:06 2011 -0500
+
+ [gi] move to using type_info and interface_info instead of arg_info
+
+ * only arguments have arg_infos, not return types and instances so
+ type_info is much better to pass. In fact most API that took an
+ arg_info simply converted it to a type_info
+ * In the case of instances for methods we don't even have a type_info.
+ Since all instances are interfaces, we also attach the
+ interface_info
+ to the interface cache
+
+ gi/pygi-argument.c | 20 ++++----------------
+ gi/pygi-cache.c | 43
+ ++++++++++++++++++++++++++++++++-----------
+ gi/pygi-cache.h | 4 +++-
+ gi/pygi-foreign-cairo.c | 24 ++++++++++++------------
+ gi/pygi-foreign-gvariant.c | 11 +++++------
+ gi/pygi-foreign-gvariant.h | 10 +++++-----
+ gi/pygi-foreign.c | 21 +++++++++------------
+ gi/pygi-foreign.h | 6 +++---
+ gi/pygi.h | 8 ++++----
+ 9 files changed, 77 insertions(+), 70 deletions(-)
+
+commit e97e28048efb966ecc1a03277d36cbaa81b8db7d
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Fri Jan 21 09:54:14 2011 +0100
+
+ [gi] Add Variant construction/unpack support for boxed Variants
+
+ Construction uses a GVariantBuilder for now, as the new_variant()
+ constructor
+ currently does not work (see
+ https://bugzilla.gnome.org/show_bug.cgi?id=639952)
+
+ gi/overrides/GLib.py | 18 +++++++++++++++++-
+ tests/test_overrides.py | 26 ++++++++++++++++++++++++++
+ 2 files changed, 43 insertions(+), 1 deletion(-)
+
+commit 71dd03261fc06b8180c14cd31b54d8e4b200be3a
+Merge: bc29600 bd002c7
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Fri Jan 21 09:33:16 2011 +0100
+
+ Merge branch 'windows-setup-fixes'
+
+commit bc29600a2a04c972ceab7ef8d3292e8633977591
+Author: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
+Date: Thu Jan 20 19:48:23 2011 +0100
+
+ pygi-convert.sh: GdkPixbuf methods
+
+ GNOME bug #639880
+
+ pygi-convert.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit d1b0fa501cc431baa530d96fb50f4c35590890ac
+Author: Thomas Hindoe Paaboel Andersen <phomes@gmail.com>
+Date: Thu Jan 20 19:45:01 2011 +0100
+
+ pygi-convert.sh: Gdk.COLORSPACE_RGB
+
+ GNOME bug #639880
+
+ pygi-convert.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 6d8ff4d5bdda5480089543869535cc3ee83da2f5
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Wed Jan 19 11:41:11 2011 +0100
+
+ [gi] Support nested objects and empty sequences in GLib.Variant
+ building
+
+ The GVariant constructor (in the overrides) previously did not
+ support empty
+ arrays/dictionaries or nested structures. Rewrite the VariantCreator
+ class to
+ be fully recursive and determine the element types of
+ arrays/dictionaries.
+
+ This now also allows you to use actual tuples as input values for
+ GVariant
+ tuple types. Taking values from the flat argument list is still
+ supported for
+ convenience, though.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=639939
+
+ gi/overrides/GLib.py | 229
+ ++++++++++++++++++++++++++----------------------
+ tests/test_overrides.py | 159 +++++++++++++++++++++++++++++++--
+ 2 files changed, 273 insertions(+), 115 deletions(-)
+
+commit ac095f5435f106e175fa3297cb273e63c85d2809
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Thu Jan 20 15:55:45 2011 +0100
+
+ Uncomment test_gi.TestInterfaceClash
+
+ tests/test_gi.py | 22 +++++++++++-----------
+ 1 file changed, 11 insertions(+), 11 deletions(-)
+
+commit 1239f3709ba257c404dda72b7067b77b19c240fa
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Jan 20 09:05:02 2011 -0500
+
+ [gi] add support for enum and flags
+
+ gi/pygi-argument.c | 121
+ +++++++++++++++++++++++++++++++++++++++++------------
+ gi/pygi-cache.c | 30 ++++++-------
+ 2 files changed, 111 insertions(+), 40 deletions(-)
+
+commit f0a0b6c2eda89622de2b1e5ebb6a48103ad72a42
+Author: Steve Frécinaux <code@istique.net>
+Date: Thu Jan 20 14:14:15 2011 +0100
+
+ Fix reference leaks for GInitiallyUnowned objects
+
+ References were leaked for GInitiallyUnowned objects which got their
+ wrappers created several times, because someone else holds reference
+ on it and it got out of python scope at some point.
+
+ 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 ++++++++++++++++++++++++++++++++++++++
+ 6 files changed, 179 insertions(+), 7 deletions(-)
+
+commit cae2cf3d4fb049c94389bf8f84d7d97a544d7a3f
+Author: Steve Frécinaux <code@istique.net>
+Date: Wed Jan 19 16:57:57 2011 +0100
+
+ Add tests for refcount of a GObject owned by a library
+
+ When the object is constructed, its refcount is 2 because the library
+ refs it once. It should remain around until we ask the library to
+ release its reference.
+
+ 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 +++++++++++++++++++++++++++++++++++++++
+ 4 files changed, 163 insertions(+)
+
+commit b6737b91938d527872eff1d645a205cacf94e15d
+Author: Steve Frécinaux <code@istique.net>
+Date: Wed Jan 19 14:52:41 2011 +0100
+
+ Add a test to check for regular object reference count
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=639949
+
+ tests/test_gobject.py | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+commit 2b0f1ede820414ef1cfd6b37569fcb946d2031fc
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Thu Jan 20 14:15:52 2011 +0100
+
+ [gi] Update TreeView.enable_model_drag_{source,dest} to current GTK
+
+ GTK master now landed a lot of annotation fixes which also correctly
+ marks the
+ array length argument of
+ Gtk.TreeView.enable_model_drag_{source,dest}(). Thus
+ drop the explicit array length argument from the call in the override.
+
+ gi/overrides/Gtk.py | 2 --
+ 1 file changed, 2 deletions(-)
+
+commit b59edf4f0f7cab44033f9d704d476e10ee0d0c0a
+Author: Steve Frécinaux <code@istique.net>
+Date: Wed Jan 19 18:04:10 2011 +0100
+
+ Fix a typo in a private symbol name.
+
+ gobject/gobjectmodule.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 6447688e283a8fb22de3ab68cbc06e34ad23d198
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Thu Jan 20 11:49:08 2011 +0100
+
+ pygi-convert.sh: Convert glib.source_remove()
+
+ pygi-convert.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 84ee8de4bc00a8f901926cc6386d73c12dbd0b0b
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Thu Jan 20 11:42:34 2011 +0100
+
+ Fix typo in previous commit to actually convert glib.GError
+
+ pygi-convert.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit b238cb614338f46e6feb7935cca0a55c7a929418
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Thu Jan 20 11:40:14 2011 +0100
+
+ pygi-convert.sh: Move some glib bits which are better handled
+ by gobject
+
+ pygi-convert.sh | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit 21c09a7ee294b59abb3eca6f64f13bf5c8a2fa0e
+Author: Laszlo Pandy <lpandy@src.gnome.org>
+Date: Wed Jan 19 12:00:02 2011 +0100
+
+ Modify override for Gtk.Adjustment to allow position or keyword
+ arguments in __init__().
+
+ Previously passing no arguments was not working, because the default
+ value for each parameter was None, and GObject.__init__() refuses to
+ allow None for integer properties. This patch does not pass None up
+ to GObject.__init__. Instead it does not pass the parameter at all,
+ and uses the class's default values.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=639934
+
+ gi/overrides/Gtk.py | 14 ++++++++++++--
+ tests/test_overrides.py | 34 +++++++++++++++++++++++++++-------
+ 2 files changed, 39 insertions(+), 9 deletions(-)
+
+commit d465e25297ad6589ff2cd0c00e11e8bd8ffe3f78
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Wed Jan 19 22:52:51 2011 +0100
+
+ [gi] Fix small typo in previous commit
+
+ The GVariant signature of the self test had a trailing 'i'. The
+ current
+ GVariant builder doesn't mind, but the new implementation proposed
+ in bug
+ 639939 does.
+
+ tests/test_overrides.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 2b8e1d0531dcb8f57dc9f2fddf25970bee3daa90
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Wed Jan 19 20:18:19 2011 +0100
+
+ [gi] Add pythonic iterator and indexing for string GVariants
+
+ This extends commit b1a98083c to also work for strings.
+
+ gi/overrides/GLib.py | 8 +++++++-
+ tests/test_overrides.py | 13 +++++++++++++
+ 2 files changed, 20 insertions(+), 1 deletion(-)
+
+commit 8efd14c87b35072cdd039bf223f8ced8f51be9bb
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jan 19 14:08:03 2011 -0500
+
+ [gi] return NULL if out_marshaller fails
+
+ gi/pygi-invoke.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+commit 5b1db41d60204c8021f47f43b85dac126c389c8d
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jan 19 13:57:54 2011 -0500
+
+ [gi] fix some transfer issues and test case failures
+
+ gi/pygi-argument.c | 4 ++++
+ gi/pygi-cache.c | 11 ++++++++---
+ gi/pygi-invoke.c | 17 +++++++++--------
+ 3 files changed, 21 insertions(+), 11 deletions(-)
+
+commit 7c2f48bb6d67ec9a1ee5ac03a5aee34b54c6ebdd
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Wed Jan 19 18:09:23 2011 +0100
+
+ Construct structs using default API constructor
+
+ If the struct has something that looks like a default constructor,
+ use it instead of trying to directly allocate it, as it will fail
+ if the struct fields are not exposed.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=627444
+
+ gi/pygi-info.c | 37 +++++++++++++++++++++++++++++++++++++
+ gi/types.py | 7 +++++++
+ 2 files changed, 44 insertions(+)
+
+commit db7300e173388d9557dcd2333781bfaa6b021605
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Wed Jan 19 18:54:39 2011 +0100
+
+ pygi-convert.sh: Migrate Gdk.Cursor constructor, and some cursor names
+
+ pygi-convert.sh | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 4c1d4faddf1c9cb233c484da3eadd8e31c231f70
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Wed Jan 19 18:43:29 2011 +0100
+
+ pygi-convert.sh: Handle .window attributes
+
+ In general, convert them to .get_window(). For some of them, prefer
+ calling the
+ GtkWidget methods instead.
+
+ pygi-convert.sh | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+commit b1049b947d073fb569ba900a4d5c8519482d831e
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Wed Jan 19 17:35:09 2011 +0100
+
+ Also deal with foreign boxed structs
+
+ cairo.Context has been boxed and our tests started failing
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=639967
+
+ gi/pygi-argument.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 25b69ae257a12b6dc97ed3f2f7ea54b166ddbba1
+Author: Laszlo Pandy <lpandy@src.gnome.org>
+Date: Wed Jan 19 17:45:11 2011 +0100
+
+ [gi] Convert GErrors to GObject.GError exceptions, and throw them
+ upon returning from calling the C function.
+
+ This changes gi to make use of pyglib_error_check() which already
+ exists in pyglib.
+
+ The included tests make use of the other patch attached to this bug,
+ to check that the right exception is thrown from the new function
+ in GIMarshallingTests.
+ two Gtk C functions.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=639834
+
+ gi/Makefile.am | 3 ++-
+ gi/pygi-invoke.c | 12 +++---------
+ tests/test_gi.py | 10 ++++++++++
+ 3 files changed, 15 insertions(+), 10 deletions(-)
+
+commit 18b84767db1d66e3d6f09067ab19ffd4b82539ca
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jan 19 12:05:45 2011 -0500
+
+ [gi] fix out marshalling for a couple of int types
+
+ gi/pygi-argument.c | 2 +-
+ gi/pygi-cache.c | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit c5d7c730008275b2c585b2609fc2ff5e051cce47
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jan 19 11:59:09 2011 -0500
+
+ [gi] fixed range checking and type conversion with unsigned and
+ large numbers
+
+ gi/pygi-argument.c | 90
+ +++++++++++++++++++++++++++++++++++++++++++++---------
+ gi/pygi-cache.c | 2 +-
+ 2 files changed, 76 insertions(+), 16 deletions(-)
+
+commit e6fcafc6179e963cbae7774e7ee50415bde2c523
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Wed Jan 19 17:03:06 2011 +0100
+
+ pygi-convert.sh: Don't convert glib -> GLib for now
+
+ This currently leads to a load of crashes, MemoryErrors, etc, as
+ GLib is not
+ very well introspectable, due to the low-level operations that
+ it performs.
+
+ John Palmieri confirms that using the static "glib" binding is
+ preferred for
+ now, so disable the replacement rules.
+
+ pygi-convert.sh | 19 ++++++++++---------
+ 1 file changed, 10 insertions(+), 9 deletions(-)
+
+commit 167261d556eab0d2e448c7ed28eef540a024ba1d
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Wed Jan 19 16:47:08 2011 +0100
+
+ Link libregress.so to GIO_LIBS again
+
+ configure.ac | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+commit d143afa6da4f5b5f47be8df11fa41d7b47ab1794
+Author: Laszlo Pandy <lpandy@src.gnome.org>
+Date: Wed Jan 19 16:14:42 2011 +0100
+
+ Fix attributes 2BUTTON_PRESS and 3BUTTON_PRESS of Gdk.EventType.
+
+ This puts an underscore in front of 2BUTTON_PRESS and 3BUTTON_PRESS
+ because in Python attributes starting with a numeral causes a
+ syntax error.
+
+ gi/overrides/Gdk.py | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+commit 4f5d20966d4a8c649e5fae584039621edab178f3
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jan 19 10:02:40 2011 -0500
+
+ [gi] use correct format stings when setting errors
+
+ gi/pygi-argument.c | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+commit 7f08fd5c33ee5c9907f5becbe2f21fb7122d6e19
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jan 19 09:45:09 2011 -0500
+
+ [gi] allow marshalling strings as None
+
+ gi/pygi-argument.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+commit 093242a9e125998cd07bf66fc4b2880f532a2e4d
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jan 19 09:41:56 2011 -0500
+
+ [gi] make error messages more detailed
+
+ gi/pygi-argument.c | 2 +-
+ gi/pygi-cache.c | 18 +++++++++---------
+ 2 files changed, 10 insertions(+), 10 deletions(-)
+
+commit f0b17605ed2eb917b350654b070984beb553eae3
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jan 19 09:41:13 2011 -0500
+
+ [gi] allow marshalling None for hashes
+
+ gi/pygi-argument.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+commit 93f1b787ab8420300d1064c0237a0c2d8a2ac98f
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jan 19 09:40:37 2011 -0500
+
+ [gi] add marshalling to some out values
+
+ gi/pygi-argument.c | 50
+ +++++++++++++++++++++++++++++++++++++++++---------
+ 1 file changed, 41 insertions(+), 9 deletions(-)
+
+commit 614b6ca7f45c4acbee088fe74fecf279ed50cc0c
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Wed Jan 19 15:27:33 2011 +0100
+
+ [gi] Fixed typo in exception
+
+ gi/overrides/Gtk.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 5f16df31b5a5a9f45f702eee48c3a18899ea3f71
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jan 19 09:13:44 2011 -0500
+
+ [gi] fix marshalling structs
+
+ gi/pygi-argument.c | 47 +++++++++++++++++++++++++++++++++++------------
+ gi/pygi-foreign.c | 18 ++++++++++++------
+ gi/pygi-foreign.h | 8 ++++----
+ 3 files changed, 51 insertions(+), 22 deletions(-)
+
+commit b2189424f9dd6d3a4a5b9792f0d5843fc27657d1
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Wed Jan 19 15:12:25 2011 +0100
+
+ [gi] Enable handling of Gdk.EventType.2BUTTON_PRESS and 3BUTTON_PRESS
+
+ gi/overrides/Gdk.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 5eca5ff2c9509ec96158fe43b29f0fd951243efe
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Wed Jan 19 14:54:57 2011 +0100
+
+ Revert "Fix Pango FontDescription override"
+
+ According to
+ http://library.gnome.org/devel/pango/1.28/pango-Fonts.html#pango-font-description-new
+ the default constructor actually does take no arguments; we should
+ actually fix
+ the MemoryError. Add a test case for this.
+
+ Remove the FIXME though, as pango_font_description_from_string()
+ is not a
+ FontDescription constructor, but a static factory method.
+
+ Thanks to Paolo Borelli for pointing this out!
+
+ This reverts commit 8878c57676091c08e66bc6cbe735d898cb420582.
+
+ gi/overrides/Pango.py | 5 ++++-
+ tests/test_overrides.py | 5 +++++
+ 2 files changed, 9 insertions(+), 1 deletion(-)
+
+commit 9e7b95b3676a1b502662523a9bd4ebe40ccb4845
+Author: Tony Young <rofflwaffls@gmail.com>
+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 ++++++++++++++++++++
+ 3 files changed, 62 insertions(+)
+
+commit bca5834fc8fa342149e0eec7b396877a2abe6d33
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Fri Jan 7 12:10:37 2011 +0100
+
+ Remove gio static bindings
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=638899
+
+ Makefile.am | 2 +-
+ configure.ac | 25 -
+ gio/.gitignore | 3 -
+ gio/Makefile.am | 117 -
+ gio/__init__.py | 40 -
+ gio/gappinfo.override | 213 --
+ gio/gapplaunchcontext.override | 99 -
+ gio/gbufferedinputstream.override | 70 -
+ gio/gcancellable.override | 38 -
+ gio/gdatainputstream.override | 250 --
+ gio/gdrive.override | 347 --
+ gio/gfile.override | 2215 -----------
+ gio/gfileattribute.override | 153 -
+ gio/gfileenumerator.override | 184 -
+ gio/gfileinfo.override | 121 -
+ gio/gfileinputstream.override | 68 -
+ gio/gfileiostream.override | 68 -
+ gio/gfileoutputstream.override | 68 -
+ gio/gicon.override | 310 --
+ gio/ginputstream.override | 344 --
+ gio/gio-types.defs | 807 ----
+ gio/gio.defs | 7465
+ -------------------------------------
+ gio/gio.override | 409 --
+ gio/giomodule.c | 208 --
+ gio/giostream.override | 68 -
+ gio/gmemoryinputstream.override | 91 -
+ gio/gmemoryoutputstream.override | 45 -
+ gio/gmount.override | 454 ---
+ gio/goutputstream.override | 292 --
+ gio/gresolver.override | 312 --
+ gio/gsocket.override | 575 ---
+ gio/gvolume.override | 237 --
+ gio/gvolumemonitor.override | 94 -
+ gio/pygio-utils.c | 236 --
+ gio/pygio-utils.h | 49 -
+ gio/unix-types.defs | 55 -
+ gio/unix.defs | 475 ---
+ gio/unix.override | 62 -
+ gio/unixmodule.c | 52 -
+ tests/Makefile.am | 9 -
+ tests/runtests-windows.py | 3 -
+ tests/test_gcancellable.py | 15 -
+ tests/test_gicon.py | 112 -
+ tests/test_gio.py | 1138 ------
+ tests/test_gresolver.py | 68 -
+ tests/test_gsocket.py | 126 -
+ 46 files changed, 1 insertion(+), 18191 deletions(-)
+
+commit 6ab3d8d286573289cf8e41eee31eb806621f6f43
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jan 19 07:56:16 2011 -0500
+
+ [gi] switch from using (*arg). to arg-> when referencing union
+ memebers
+
+ gi/pygi-argument.c | 54
+ +++++++++++++++++++++++++++---------------------------
+ 1 file changed, 27 insertions(+), 27 deletions(-)
+
+commit 762ccb3d2620ea22023446b6ae79f3a111d8b56a
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jan 19 07:49:52 2011 -0500
+
+ [gi] return FALSE when setting errors in the marshaller
+
+ gi/pygi-argument.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit cbaba6357937cbed3ebd34d2db1cdd59d37df118
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jan 19 07:14:18 2011 -0500
+
+ [gi] do arg counting in new invoke
+
+ gi/pygi-cache.c | 2 ++
+ gi/pygi-cache.h | 14 ++++++++------
+ gi/pygi-invoke-state-struct.h | 2 +-
+ gi/pygi-invoke.c | 20 +++++++++++++++++++-
+ 4 files changed, 30 insertions(+), 8 deletions(-)
+
+commit f45033858bed70d7defec3f71f26aa5b3999d680
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jan 19 06:35:45 2011 -0500
+
+ [gi] set length for uint8 in arrays in new invoke marshaller
+
+ gi/pygi-argument.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 09f7ca7e2378e6679002677ac3f4802f4cc7d9d5
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date: Wed Jan 19 12:04:15 2011 +0100
+
+ [gi] set length when marshalling guint8 erases
+
+ gi/pygi-argument.c | 1 +
+ tests/test_gi.py | 4 ++++
+ 2 files changed, 5 insertions(+)
+
+commit 22eee43e50a150ace80694213fb87be9f0c72f51
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Wed Jan 19 10:27:47 2011 +0100
+
+ Convert Gdk.Pixbuf to GdkPixbuf.Pixbuf
+
+ pygi-convert.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit a4b210d69c832629894090b7154ae194209b0c60
+Author: Arnaud Charlet <charlet@adacore.com>
+Date: Tue Jan 18 18:31:29 2011 +0100
+
+ Disable calls to PyGILState_* when threads are disabled
+
+ Since threads may also be disabled in Python too, those symbols
+ may not
+ be resolved.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=374603
+
+ glib/pyglib.c | 12 ++++++++++++
+ gobject/pygobject-private.h | 6 ++++++
+ 2 files changed, 18 insertions(+)
+
+commit 329afb6fb1b3c325a6a9de2b6aca91c64d51dd9f
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Jan 18 12:31:57 2011 -0500
+
+ [gi] fix handling of garrays vs c arrays
+
+ gi/pygi-argument.c | 9 +++++++--
+ gi/pygi-cache.c | 2 ++
+ gi/pygi-cache.h | 1 +
+ 3 files changed, 10 insertions(+), 2 deletions(-)
+
+commit a000627ec3904b9414ce375aec8d144fc0c26248
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Tue Jan 18 18:29:50 2011 +0100
+
+ pygi-convert.sh: Do not comment out set_cell_data_func() calls;
+ these should be ported properly
+
+ pygi-convert.sh | 1 -
+ 1 file changed, 1 deletion(-)
+
+commit 99ff4610fb5ece2fc8d2f9eba13e661968adf3f0
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Tue Jan 18 18:26:01 2011 +0100
+
+ pygi-convert.sh: Fix match for adding missing imports
+
+ pygi-convert.sh | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit 3aa95011fad67df20370e92bf25236a34d7d08d3
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Tue Jan 18 18:09:30 2011 +0100
+
+ pygi-convert.sh: Fix Gtk.Label handling to be idempotent
+
+ As we are not replacing line by line, but the whole file at once,
+ this is a bit
+ hackish unfortunately. We can't use a match test or a lookahead/behind
+ assertion.
+
+ pygi-convert.sh | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+commit f66051380c0432bf142774542ade2144adcd455e
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Jan 18 11:44:27 2011 -0500
+
+ [gi] use correct union memeber when marshalling floats
+
+ gi/pygi-argument.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 36bc1c17e7d4189059337cc6a73c64edd819ec12
+Author: Laszlo Pandy <lpandy@src.gnome.org>
+Date: Tue Jan 18 17:29:52 2011 +0100
+
+ Remove trailing whitespace from gi/overrides/Gtk.py
+
+ gi/overrides/Gtk.py | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+commit 1006df1929a667716c25e74b35b8f14643358732
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Jan 18 11:24:06 2011 -0500
+
+ [gi] fix constructor invoking and add some support for interface
+ out values
+
+ * constructors are now simplified and are treated like normal
+ static methods
+ which happen to return an instance
+
+ gi/pygi-argument.c | 8 ++--
+ gi/pygi-cache.c | 132
+ +++++++++++++++++++++++++++++++++++++++++++++++++++--
+ gi/pygi-invoke.c | 9 ++--
+ gi/types.py | 21 +++------
+ 4 files changed, 142 insertions(+), 28 deletions(-)
+
+commit 8878c57676091c08e66bc6cbe735d898cb420582
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Tue Jan 18 16:47:10 2011 +0100
+
+ Fix Pango FontDescription override
+
+ Trying to call __new__() on a record crashes with a MemoryError,
+ so just call
+ the intended static factory method for a None argument as well
+ (which works
+ just fine now).
+
+ gi/overrides/Pango.py | 7 +------
+ 1 file changed, 1 insertion(+), 6 deletions(-)
+
+commit efbbe71634037fa100b17327389b883b259cca54
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Tue Jan 18 16:23:39 2011 +0100
+
+ tests: Respect existing $GI_TYPELIB_PATH
+
+ This allows us to run the test suite against local typelibs.
+
+ tests/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit c96ca383350e5b9b079d9a86464922314939c006
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Jan 18 07:16:40 2011 -0500
+
+ [gi] fix aux value offsets for methods and element size crashers
+
+ * if the callable is a method we need to add 1 to the aux index
+ for in values so we grab the right argument cache
+ * use _pygi_g_type_info_size instead of _pygi_g_type_tag_size to
+ support all types
+
+ gi/pygi-cache.c | 42 ++++++++++++++++++++++++------------------
+ 1 file changed, 24 insertions(+), 18 deletions(-)
+
+commit f56d85a7f39c2088bf9fd50b1b1e5b67c03104d3
+Merge: 84d6142 7d997b6
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Tue Jan 18 13:14:45 2011 +0100
+
+ Merge branch 'value'
+
+commit 7d997b6fe88343776c4d67a9f3437ba0c4122da0
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+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 +++++++++++-
+ 2 files changed, 29 insertions(+), 11 deletions(-)
+
+commit 84d6142c14a7ebfb7284d3db52e14d3393f93905
+Author: Steve Frécinaux <code@istique.net>
+Date: Mon Jan 17 18:57:58 2011 +0100
+
+ Always register a new GType when a GObject class is subclassed
+
+ This patch makes the GType <-> python mapping much more predictible,
+ and fixes the bug caused by overriding methods without specifying a
+ __gtype_name__ member in the subclass, and makes type_register useless
+ for real :-)
+
+ It is still possible to provide an explicit __gtype_name__ member
+ in the
+ subclass as it allows having a predictible GType name, which is handy
+ for some of our tests. There is also an explicit special case for
+ overrides because we obviously do not want to register new GTypes for
+ those ones as it would clearly defeat the purpose of overrides.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=543056
+
+ gobject/__init__.py | 6 +++---
+ tests/test_gi.py | 21 ++-------------------
+ 2 files changed, 5 insertions(+), 22 deletions(-)
+
+commit 30750ccef31e6c864628f418fc00e8c573d29a1b
+Author: Simon van der Linden <svdlinden@gnome.org>
+Date: Tue Jan 18 12:57:13 2011 +0100
+
+ Raise required versions of GLib and GObject-Introspection
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=612126
+
+ configure.ac | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 761e98d32729f5894f4c75a54c65ed11329dc9d5
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Tue Jan 18 12:52:32 2011 +0100
+
+ pygi-convert.sh: Handle keysyms
+
+ pygi-convert.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit d62cdfa38a675c1daf3bc12d5cd769434eea5dc8
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Tue Jan 18 12:14:09 2011 +0100
+
+ GLib overrides: Add test case for array variant building
+
+ tests/test_overrides.py | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+commit 69a78307f3762e3f54d28d98514cec7d31ff20db
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Tue Jan 18 10:21:03 2011 +0100
+
+ Remove cairo.RectangleInt from the foreign module
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=639824
+
+ gi/pygi-foreign-cairo.c | 96
+ -------------------------------------------------
+ 1 file changed, 96 deletions(-)
+
+commit 017680c9a5e163021628bf29543598861a3b600a
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Tue Jan 18 10:20:25 2011 +0100
+
+ Dont try to guess the transfer if its a boxed
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=639823
+
+ gi/pygi-invoke.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+commit 771ef76574690eb98926249f38661d741d1ebbb0
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date: Tue Jan 18 12:02:01 2011 +0100
+
+ The tags can be Empty not None.
+
+ gi/overrides/Gtk.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit b1a98083cdc50653e1d7bfb809bdf089f833df3d
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Tue Jan 18 12:01:28 2011 +0100
+
+ Add Pythonic iterators and indexing to GVariant
+
+ Add the usual set of iterators and index accessors to GLib.Variant
+ objects
+ which are containers.
+
+ Add corresponding test cases.
+
+ gi/overrides/GLib.py | 50 ++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_overrides.py | 55
+ +++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 105 insertions(+)
+
+commit ecb9f824c503c529d43e585b4cdb4c1c9ab14593
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Tue Jan 18 10:48:03 2011 +0100
+
+ Add GLib.Variant.unpack()
+
+ This method decomposes a GLib.Variant into a native Python object,
+ i. e. the
+ counterpart of _VariantCreator. This makes it a lot nicer for
+ application
+ developers to use e. g. return values from gdbus calls.
+
+ Add appropriate test case.
+
+ gi/overrides/GLib.py | 45
+ +++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_overrides.py | 33 ++++++++++++++++++++++++++++++++-
+ 2 files changed, 77 insertions(+), 1 deletion(-)
+
+commit 31c73dee34a52fd22b5ff3a23adce92cea5ddc3d
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date: Tue Jan 18 10:56:18 2011 +0100
+
+ Add override for gtk_text_buffer_insert_with_tags
+
+ gi/overrides/Gtk.py | 12 ++++++++++++
+ tests/test_overrides.py | 6 ++++++
+ 2 files changed, 18 insertions(+)
+
+commit fc7d7f7f153d57ff3866b7bfd5e6479d702cc4d9
+Author: Simon van der Linden <svdlinden@gnome.org>
+Date: Mon Jan 17 14:35:14 2011 +0100
+
+ Deduce PYTHON_LIBS in addition to PYTHON_INCLUDES
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=620215
+
+ gi/Makefile.am | 6 ++++--
+ gio/Makefile.am | 2 +-
+ glib/Makefile.am | 2 +-
+ m4/python.m4 | 7 +++++--
+ tests/Makefile.am | 2 +-
+ 5 files changed, 12 insertions(+), 7 deletions(-)
+
+commit bceec758b27e6c396d17a79424633b5dc9116f54
+Author: Simon van der Linden <svdlinden@gnome.org>
+Date: Mon Jan 17 14:20:55 2011 +0100
+
+ Kill JD_CHECK_PYTHON_HEADERS
+
+ Use AM_CHECK_PYTHON_HEADERS instead, which is identical.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=620215
+
+ configure.ac | 2 +-
+ m4/python.m4 | 31 +------------------------------
+ 2 files changed, 2 insertions(+), 31 deletions(-)
+
+commit e2dea065da94d17a915abe1ce4671b1dc48e02c0
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Mon Jan 17 19:09:27 2011 +0100
+
+ Revert "Override Gtk.Box.pack_start and pack_end to set default
+ values to be compliant with pygtk"
+
+ This reverts commit a8c727b9c4195d8085a45661683a18614ae84485.
+
+ Conflicts:
+
+ gi/overrides/Gtk.py
+
+ gi/overrides/Gtk.py | 10 ----------
+ 1 file changed, 10 deletions(-)
+
+commit 4fbae9629adc166627de05bb0946b71485343d69
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Mon Jan 17 19:08:23 2011 +0100
+
+ Revert "Override Gtk.CellLayout.pack_start and pack_end to add
+ default values to be compliant with pygtk"
+
+ This reverts commit 232841148f35684be83a2f47b5b18da4fb74f63a.
+
+ gi/overrides/Gtk.py | 13 ++-----------
+ 1 file changed, 2 insertions(+), 11 deletions(-)
+
+commit c054f0aca67952876b3519bb75ddc62c5517f7cb
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Mon Jan 17 19:08:06 2011 +0100
+
+ Revert "Override Gtk.TreeViewColumn.pack_start, pack_end and
+ set_cell_data_func to add default values to be compliant with pygtk"
+
+ This reverts commit ed7e7a8f22b1481acf78c0c2e4c489dbad72f599.
+
+ gi/overrides/Gtk.py | 9 ---------
+ 1 file changed, 9 deletions(-)
+
+commit 2d9534f347505573da46743b47318e08bf073aef
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Mon Jan 17 18:54:10 2011 +0100
+
+ pygi-convert.sh: Handle gtk.combo_box_new_text()
+
+ pygi-convert.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 0586a83212a9f9234fe00659ae744ab04e7ccc67
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Jan 17 12:31:03 2011 -0500
+
+ support callbacks
+
+ gi/pygi-argument.c | 68 ++++++++++++++++++++++++++++++++++++++++++++--
+ gi/pygi-cache.c | 80
+ +++++++++++++++++++++++++++++++++++++++++-------------
+ gi/pygi-cache.h | 13 +++++++--
+ gi/pygi-invoke.c | 2 +-
+ 4 files changed, 138 insertions(+), 25 deletions(-)
+
+commit 914d3a0a29680f4d3aa0e1f8afdd625b017b013a
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+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 ++++++
+ 1 file changed, 6 insertions(+)
+
+commit ed7e7a8f22b1481acf78c0c2e4c489dbad72f599
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+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 +++++++++
+ 1 file changed, 9 insertions(+)
+
+commit 232841148f35684be83a2f47b5b18da4fb74f63a
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+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 +++++++++++--
+ 1 file changed, 11 insertions(+), 2 deletions(-)
+
+commit 1dec12826753756fcadefc8ef8c756fc902c320b
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+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 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+commit a8c727b9c4195d8085a45661683a18614ae84485
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+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 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+commit 7cc8ac35bb0d8dbf7d66f014f8cd7ff070b3acb8
+Author: Steve Frécinaux <code@istique.net>
+Date: Wed Aug 4 00:30:05 2010 +0200
+
+ Handle GObject subclasses in the property helper.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=625982
+
+ gobject/propertyhelper.py | 26 +++++++++++++-------------
+ tests/test_properties.py | 9 +++++++++
+ 2 files changed, 22 insertions(+), 13 deletions(-)
+
+commit 7a0548dbfbdfe481f75315b6bc7824a9f1a8a87b
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Mon Jan 17 17:52:15 2011 +0100
+
+ Fix handling of unicode for GtkTreeModels
+
+ The code previously converted an unicode object into unicode, but
+ in Python 2.X
+ models actually have to specify 'str' (GTK expects a gchararray). So
+ encode to
+ UTF-8 instead to get what GTK expects.
+
+ Add corresponding test case.
+
+ gi/overrides/Gtk.py | 2 +-
+ tests/test_overrides.py | 12 +++++++++++-
+ 2 files changed, 12 insertions(+), 2 deletions(-)
+
+commit 09c21c79fb6063c8451f53d4588363d2be7239f4
+Author: Laszlo Pandy <lpandy@src.gnome.org>
+Date: Mon Jan 17 16:46:08 2011 +0100
+
+ In IntrospectionModule and DynamicModule classes, make all instance
+ attributes start with an underscore.
+
+ This changes IntrospectionModule.version to _version and
+ DynamicModule.introspection_module to _introspection_module.
+ This is done to mark the attributes as private, and also avoid name
+ collisions with attributes from the typelib.
+ 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 +-
+ 8 files changed, 24 insertions(+), 24 deletions(-)
+
+commit 2c70beca9e76e4dc253453c556e6985ce59a3dd9
+Author: Laszlo Pandy <lpandy@src.gnome.org>
+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 +++---
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+commit 6fbb6be5a5d0d9cd43e1504b8dda5aa75feb95ca
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Mon Jan 17 16:16:45 2011 +0100
+
+ pygi-convert.sh: Handle GdkPixbuf.InterpType
+
+ pygi-convert.sh | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 66a5784f4ab5de5b6d8d51eb4ce869fa26f6a601
+Author: Laszlo Pandy <laszlok2@gmail.com>
+Date: Mon Jan 17 15:43:34 2011 +0100
+
+ Fix wrapping of enums: Create new Python type for each non-gtype enum.
+
+ Previously non-gtype enums used the same class, which meant they
+ were all the same type.
+ This caused another problem that since they were all the same class,
+ attributes from different enums were available from each other.
+
+ A new test case is created to check for this bug. It requires a new
+ enum from the GIMarshallingTests (updating gobject-introspection
+ will be required).
+
+ gi/module.py | 2 +-
+ gi/types.py | 2 ++
+ tests/test_gi.py | 10 ++++++++++
+ 3 files changed, 13 insertions(+), 1 deletion(-)
+
+commit da50d5620a42046d4fc905bb28a0890d73533cb1
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Mon Dec 13 18:03:51 2010 +0100
+
+ Use g_vfunc_info_invoke for chaining up in vfuncs
+
+ 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 ++--
+ 5 files changed, 89 insertions(+), 23 deletions(-)
+
+commit 8ceef79c98a1c2e22ed8ab655ef1169f1763dd23
+Author: Simon van der Linden <svdlinden@gnome.org>
+Date: Fri Dec 31 18:38:04 2010 +0100
+
+ Move pyglib_{main_context, option_context, option_group}_new into
+ _PyGLib_API
+
+ _PyG{MainContext, OptionContext, and OptionGroup_Type} were not
+ be initialized
+ when used inside the glib module, since pyglib_init is not called.
+
+ pyglib.c is compiled as a stand-alone library loaded by the _glib
+ module that
+ declares the above-mentioned types. Hence, they cannot be accessed
+ by the
+ former. This patch moves the functions that need those symbols
+ into the
+ glib._glib module and exports them to the pyglib library through
+ _PyGLib_API.
+
+ 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 +-
+ 11 files changed, 86 insertions(+), 49 deletions(-)
+
+commit 17caffe4eeefeaf33a56ececbc6c7454f60b9d76
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Mon Jan 17 14:51:26 2011 +0100
+
+ pygi-convert.sh: Handle Gdk.DragAction
+
+ pygi-convert.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit aa390aa80f06ac83ec89e5c5ee143d21ace97917
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Mon Jan 17 14:46:58 2011 +0100
+
+ pygi-convert.sh: Generalize Gtk.Settings migration
+
+ There are other GSettings.get_* functions like get_for_screen().
+
+ pygi-convert.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 2e6d5bb49425e6087ca61765ecb72e7a760f2ab2
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Mon Jan 17 11:22:46 2011 +0100
+
+ pygi-convert.sh: Don't change the name of "glib" submodules
+
+ This particular affects dbus.mainloop.glib.*
+
+ pygi-convert.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 3887b030fc19d25e0cd7b4ed504f4ed23363c3d6
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Sun Jan 16 22:09:56 2011 +0100
+
+ Plug another memory leak
+
+ Do not leak interface info in (g|s)_et_property.
+
+ gi/pygi-property.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+commit a4950b4cbb3c7567a8586061bb361adb7d9afb98
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Sun Jan 16 21:43:30 2011 +0100
+
+ Plug a small memory leak.
+
+ Do not leak type_info in find_vfunc_info
+
+ gi/gimodule.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+commit d0cbcc45366d40702c69cef207d3c0f361260c02
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Sun Jan 16 12:16:31 2011 +0100
+
+ Override Table.attach() to behave like pygtk
+
+ It is fairly common and even gtk itself still has attach_defaults.
+
+ gi/overrides/Gtk.py | 3 +++
+ tests/test_overrides.py | 4 ++++
+ 2 files changed, 7 insertions(+)
+
+commit 6409d659326bf3cefdf6051379e8bc2031f16733
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Sat Jan 15 11:20:23 2011 -0600
+
+ pygi-convert.sh: Convert Pango.WrapMode
+
+ pygi-convert.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 6aaa6a38198e84a189ca1e8d26b1871d5b6bb711
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Sat Jan 15 11:17:09 2011 -0600
+
+ pygi-convert.sh: Don't change the name of "gtk" submodules
+
+ Some projects have local modules like "myproject.ui.gtk". Avoid
+ changing those,
+ just change module names which start with "gtk" or "gdk".
+
+ pygi-convert.sh | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 9be0f1f2dfb89150faf1827ef482feea03645149
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Jan 13 23:56:19 2011 -0500
+
+ [gi] implement aux arg handling for array lengths
+
+ gi/pygi-argument.c | 8 ++++++++
+ gi/pygi-cache.c | 36 ++++++++++++++++++++++++++++--------
+ gi/pygi-cache.h | 1 -
+ gi/pygi-invoke.c | 8 ++++++--
+ 4 files changed, 42 insertions(+), 11 deletions(-)
+
+commit cfca2f0a53a5c29f543875ca4cb83a2e18d3bc72
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Jan 13 21:07:25 2011 -0500
+
+ [gi] marshal in hashes
+
+ gi/pygi-argument.c | 93 ++++++++++++++++++++++++++++++++++++++--
+ gi/pygi-cache.c | 122
+ +++++++++++++++++++++++++++++++++++++----------------
+ 2 files changed, 176 insertions(+), 39 deletions(-)
+
+commit c36fbf4918c8557a8e274a12004a412da3b22b2c
+Author: Laszlo Pandy <git@laszlopandy.com>
+Date: Tue Jan 11 21:41:47 2011 +0100
+
+ Fix the __dir__() methods on DynamicModule and IntrospectionModule
+
+ Previously the __dir__() methods did not list all attributes.
+ A simple test case is included. It does not test to see if
+ every attribute is listed, it just tests a few of each kind:
+ - (wrapped) typelib attributes
+ - class attributes and methods
+ - instance attributes
+
+ A set() is used to avoid returning duplicate attributes.
+ The test case checks for this as well.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=639229
+
+ gi/module.py | 28 +++++++++++++++++++++-------
+ tests/test_everything.py | 18 ++++++++++++++++++
+ 2 files changed, 39 insertions(+), 7 deletions(-)
+
+commit 1679e6af3f212e4d4644e048dc3c6177ed3fac6b
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Thu Jan 13 00:02:20 2011 +0100
+
+ pygi-convert.sh: handle ReliefStyle
+
+ pygi-convert.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit e9166ba5d19f2b586f65a3b83a671a5afd486d8f
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jan 12 16:50:30 2011 -0500
+
+ [gi] support for GList and GSList in
+
+ gi/pygi-argument.c | 122
+ ++++++++++++++++++++++++++++++++++++++++++++++++++---
+ 1 file changed, 116 insertions(+), 6 deletions(-)
+
+commit 9baf3240fbac103823ad0feaaf1c82e46d276722
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jan 12 16:24:17 2011 -0500
+
+ [gi] handle allow_none for all args
+
+ gi/pygi-cache.c | 3 ++-
+ gi/pygi-cache.h | 1 +
+ gi/pygi-invoke.c | 7 +++++++
+ 3 files changed, 10 insertions(+), 1 deletion(-)
+
+commit d54d12c66226910952b0dc44c8d9514a7edaa6f2
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jan 12 16:23:02 2011 -0500
+
+ [gi] fix marshalling fixed arrays
+
+ * get the correct item_size and pass the GArray data not the GArray
+
+ gi/pygi-argument.c | 39 ++++++++++++++++++++++-----------------
+ gi/pygi-cache.c | 3 ++-
+ 2 files changed, 24 insertions(+), 18 deletions(-)
+
+commit 3b0eff80d2ee35e0417476f0a170b9e178e3d1ee
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Jan 11 17:20:43 2011 -0500
+
+ [gi] implement out arg handling
+
+ gi/pygi-argument.c | 43 ++++++++++---------------------------
+ gi/pygi-cache.c | 22 ++++++++++++++-----
+ gi/pygi-invoke-state-struct.h | 13 +++++++++++
+ gi/pygi-invoke.c | 50
+ +++++++++++++++++++++++++++++++++++++++++--
+ 4 files changed, 89 insertions(+), 39 deletions(-)
+
+commit bd002c72675d35b5e60ab773181e7c36c30d2625
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Tue Jan 11 22:21:18 2011 +0100
+
+ setup.py: fix the provides keyword argument
+
+ setup.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 59dac72d0fa8e1d68bbbc13d76c2747f1cb11857
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Tue Jan 11 22:19:18 2011 +0100
+
+ setup.py: use the same spaces-less format for all setup() parameters
+
+ setup.py | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit c5c149be171895d292852df364541f14f0ec423a
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Jan 11 15:39:09 2011 -0500
+
+ [gi] implemented return marshalling and started on out marshalling
+
+ gi/pygi-argument.c | 387
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++-
+ gi/pygi-argument.h | 117 ++++++++++++++++
+ gi/pygi-cache.c | 316 ++++++++++++++++++++++++++++++++++++++++++-
+ gi/pygi-cache.h | 8 +-
+ gi/pygi-invoke.c | 12 +-
+ 5 files changed, 829 insertions(+), 11 deletions(-)
+
+commit 4fcca8518774ab89607196dfc52037e3da30ac8a
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Jan 11 13:49:58 2011 -0500
+
+ [gi] flesh out interface in marshalling a bit more
+
+ gi/pygi-argument.c | 74
+ ++++++++++++++++++++++++++++++++++++++++----------
+ gi/pygi-cache.c | 79
+ ++++++++++++++++++++++++++++++++++++++++++------------
+ gi/pygi-cache.h | 1 +
+ 3 files changed, 123 insertions(+), 31 deletions(-)
+
+commit 4992dca9f5cea68d85eb2ed86105c9c6b8311d79
+Author: Laszlo Pandy <laszlok2@gmail.com>
+Date: Tue Jan 11 19:30:38 2011 +0100
+
+ Add a __repr__() method to DynamicModule.
+
+ This patch adds a __repr__() method to DynamicModule so that modules
+ provide a
+ meaningful string with the typelib path included:
+
+ >>> from gi.repository import Gtk
+ >>> Gtk
+ <gi.module.DynamicModule 'Gtk' from
+ '/home/laszlo/Dev/gnome-jh-install/lib64/girepository-1.0/Gtk-3.0.typelib'>
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=639232
+
+ gi/module.py | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+commit 2ffaec59e7349c145a0e2a5edba2ffb7d8628369
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Tue Jan 11 19:40:19 2011 +0100
+
+ Go back to using getattr() in DynamicModule.__getattr__
+
+ Breaks marshalling of some types
+
+ gi/module.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 52a298cc0f05ceec96457f17f9a801e9838fb757
+Author: Laszlo Pandy <laszlok2@gmail.com>
+Date: Tue Jan 11 19:26:50 2011 +0100
+
+ Change __dir__() to report all the attributes that __getattr__
+ supports
+
+ Change DynamicModule.__dir__() to return the local class members as
+ well as the
+ typelib attributes.
+
+ Change DynamicModule.__getattr__() to call
+ IntrospectionModule.__getattr__()
+ directly, so that it won't inadvertently return class attributes from
+ IntrospectionModule.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=639229
+
+ gi/module.py | 10 +++++++---
+ 1 file changed, 7 insertions(+), 3 deletions(-)
+
+commit 369a75ba5fb64ff7a7c95d21f8bfe359e639e9ff
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Jan 10 17:55:03 2011 -0500
+
+ [gi] add object and interface in marshalling
+
+ * also remove the PyGIArgCleanup sinature as GDestroyNotify works
+ just fine
+
+ gi/pygi-argument.c | 15 +++--
+ gi/pygi-cache.c | 182
+ ++++++++++++++++++++++++++++++++++++++++++++++++-----
+ gi/pygi-cache.h | 1 -
+ gi/pygi-invoke.c | 1 +
+ 4 files changed, 178 insertions(+), 21 deletions(-)
+
+commit 88531c58d0491a31dd319387237a03df5c9edc07
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Jan 10 15:33:56 2011 -0500
+
+ [gi] fix casting when marshaling a char to uint8
+
+ gi/pygi-argument.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 441da4a7346ca059630dbc820c5b46e4d0222f4b
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Jan 10 15:07:16 2011 -0500
+
+ [gi] hook up invoke to the cache
+
+ * We now can invoke with in values
+ * out, constructors and returns still don't work along with numerous
+ complex
+ in types
+
+ gi/Makefile.am | 1 +
+ gi/pygi-argument.c | 60 +++++++++--------
+ gi/pygi-argument.h | 60 ++++++++---------
+ gi/pygi-cache.h | 6 +-
+ gi/pygi-invoke-state-struct.h | 26 ++++++++
+ gi/pygi-invoke.c | 149
+ ++++++++++++++++++++++++++++++++----------
+ gi/pygi-invoke.h | 2 +-
+ gi/pygi-private.h | 1 +
+ 8 files changed, 208 insertions(+), 97 deletions(-)
+
+commit f32b1f494aa5d09b9b198f607722c819c6bbd808
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Sun Jan 9 19:37:55 2011 -0500
+
+ hooked up caching stage and fixed segfaults
+
+ * caching stage is hooked up but not used yet
+ * throws exceptions for everything that can not be cached yet
+
+ gi/pygi-cache.c | 59
+ +++++++++++++++++++++++++++++++++++++++++++-------------
+ gi/pygi-info.c | 3 +++
+ gi/pygi-invoke.c | 5 +++++
+ gi/pygi.h | 2 ++
+ 4 files changed, 56 insertions(+), 13 deletions(-)
+
+commit c2bf1d4d9cf2e9f8e313528fe717f6279dad5da1
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Sun Jan 9 18:05:31 2011 -0500
+
+ [gi] fix some function names
+
+ gi/pygi-cache.c | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+commit 2ec4230a5180f048c26c2e4234b2a098d42f030b
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Sun Jan 9 15:58:06 2011 -0500
+
+ [gi] refactor cache structs so they inherit from ArgCache
+
+ gi/pygi-argument.c | 122 +++++++++----------
+ gi/pygi-cache.c | 344
+ +++++++++++++++++++++++++++++------------------------
+ gi/pygi-cache.h | 50 ++++----
+ 3 files changed, 273 insertions(+), 243 deletions(-)
+
+commit f4cdf0c0321285da015686fcb7115bd91bfd5c7c
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Sat Jan 8 20:45:11 2011 -0500
+
+ [gi]fix cache compile error - now compiles but cache still not
+ hooked up
+
+ gi/Makefile.am | 2 +
+ gi/pygi-argument.c | 100 +++++++++++++++---------------
+ gi/pygi-argument.h | 174
+ ++++++++++++++++++++++++++++++++++++++++++++---------
+ gi/pygi-cache.c | 169
+ +++++++++++++++++++++++++--------------------------
+ gi/pygi-cache.h | 25 ++++----
+ 5 files changed, 293 insertions(+), 177 deletions(-)
+
+commit 5f8f3044dd8085b2e8ce0bf70e9d52f05abf909d
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Sat Jan 8 19:10:29 2011 -0500
+
+ add sequence caching and array marshalling w/ item marshalling
+
+ * simplify what we pass into the arg cache generators so we may
+ use them
+ for geneating marshalling caches for container items, not just
+ arguments
+
+ gi/pygi-argument.c | 76 ++++++++++++++++-
+ gi/pygi-cache.c | 242
+ ++++++++++++++++++++++-------------------------------
+ gi/pygi-cache.h | 4 +-
+ 3 files changed, 175 insertions(+), 147 deletions(-)
+
+commit 202a268db7f98f5a3c525c6e65ec4bff1917257e
+Author: Emilio Pozuelo Monfort <pochu27@gmail.com>
+Date: Sat Jan 8 02:19:52 2011 +0000
+
+ Bump the minimum gio dependency
+
+ Needed for G_TYPE_CONVERTER_FLAGS and others.
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit c3aa36151fdef9ed9884d93114786bbe86387983
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Fri Jan 7 12:58:11 2011 +0100
+
+ Add test for incorrect attributes in Gdk.Event
+
+ tests/test_overrides.py | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+commit 204b45c7e95eb50d9e3843127fb10e13b1b17fee
+Author: Simon van der Linden <svdlinden@gnome.org>
+Date: Sun Jan 2 19:25:55 2011 +0100
+
+ Don't call getattr again in gi.overrides.Gdk.Event.__getattr__
+
+ __getattr__ is only called when the attribute is not found through
+ the normal
+ mechanism, so getattr must not be called again in __getattr__
+ (which would
+ create an infinite loop).
+
+ Another possibility would be to implement __getattribute__ instead,
+ which is
+ called in place of the normal mechanism. In that case, calling
+ getattr would be
+ needed for normal attributes.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=638523
+
+ gi/overrides/Gdk.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 6cf298ca5565d0eb99824f050ff47407e50a5c01
+Author: Mike Gorse <mgorse@novell.com>
+Date: Fri Jan 7 09:08:31 2011 +0100
+
+ Release allocated array of arguments when handling closures
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=638847
+
+ gi/pygi-closure.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit 1be76d5e006efa24598ff7bf26153660dbe0a890
+Author: Mike Gorse <mgorse@novell.com>
+Date: Fri Jan 7 09:07:35 2011 +0100
+
+ Release GIValueInfo when checking an enum argument
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=638847
+
+ gi/pygi-argument.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 43849c51391fc9cd239697065c3d40fa02fb6783
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Jan 6 17:30:14 2011 -0500
+
+ whitespace fixes
+
+ gi/pygi-cache.c | 24 ++++++++++++------------
+ gi/pygi-cache.h | 42 +++++++++++++++++++++---------------------
+ 2 files changed, 33 insertions(+), 33 deletions(-)
+
+commit 8b5b3d2bbbbdf5d26c83e9a6fe67121cbd77ebe1
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Jan 6 17:29:00 2011 -0500
+
+ add marshalling for basic types and add more skeleton code
+
+ * still doesn't compile
+
+ gi/pygi-argument.c | 708
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-argument.h | 35 ++-
+ gi/pygi-cache.c | 82 +++++--
+ gi/pygi-cache.h | 41 +++-
+ 4 files changed, 832 insertions(+), 34 deletions(-)
+
+commit f554cf62848104d31518138ae85bc51acaafda67
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Jan 4 18:49:53 2011 -0500
+
+ first checkin of the new caching branch
+
+ * this does not compile and is not hooked up to the build system
+ * lays out the caching data structures and some skeleton functions
+
+ gi/pygi-cache.c | 480
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-cache.h | 104 ++++++++++++
+ 2 files changed, 584 insertions(+)
+
+commit 8d5a7857876669f56bb03bf618bcfdcc290721c0
+Author: Eitan Isaacson <eitan@monotonous.org>
+Date: Wed Dec 22 12:34:10 2010 -0800
+
+ Respect different type lengths when assigning out-argument pointers.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=637832
+
+ gi/pygi-closure.c | 66
+ ++++++++++++++++++++++++++++++++++++++++++++++---------
+ 1 file changed, 56 insertions(+), 10 deletions(-)
+
+commit f14976ffabec28f6cafe1e37dc81d207a947d4ca
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Tue Dec 28 18:34:25 2010 +0100
+
+ Fix stupid name clash
+
+ gi/module.py | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+commit 01b2a193d403beb861eab524300b4f1af63157ce
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Tue Dec 28 13:49:18 2010 +0100
+
+ Add /usr/share to XDG_DATA_DIRS when running the tests
+
+ tests/Makefile.am | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+commit efc186f692f9eac781cc47456be74a3da7f14dcd
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Tue Dec 28 13:25:34 2010 +0100
+
+ Comment out tests that require SRV lookups
+
+ tests/test_gresolver.py | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+commit d2462cc1ab51d76fb4625c47c3d34de1d5d0dee8
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Tue Dec 28 13:00:16 2010 +0100
+
+ Use suppresion file when running valgrind
+
+ tests/Makefile.am | 2 +-
+ tests/python.supp | 387
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 388 insertions(+), 1 deletion(-)
+
+commit 0ee58113ecbea72784c52de928c041fc8fc88984
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+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 ++-
+ 6 files changed, 17 insertions(+), 25 deletions(-)
+
+commit 78ea84cd91392400ebac5a361ef8793bfe928fd0
+Author: Jesse van den Kieboom <jesse.vandenkieboom@epfl.ch>
+Date: Sun Dec 19 23:10:57 2010 +0100
+
+ Allow comparing Gtk.TreePath to None
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=637615
+
+ gi/overrides/Gtk.py | 12 ++++++------
+ tests/test_overrides.py | 6 ++++++
+ 2 files changed, 12 insertions(+), 6 deletions(-)
+
+commit 046cc5915286e042d1040271a90676b77632409e
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Dec 16 15:41:10 2010 -0500
+
+ handle unicode objects in properties
+
+ * There are still some cavets in Python 2:
+ - properties are returned as String objects with the unicode
+ code points
+ - you must add # coding=utf-8 to the top of your python file
+ or python
+ will error out if it sees embeded unicode charaters (such as when
+ supporting python 3 and python 2 from the same source)
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=620579
+
+ gobject/pygtype.c | 35 ++++++++++++++++++++++++++---------
+ tests/test_properties.py | 16 ++++++++++++++++
+ 2 files changed, 42 insertions(+), 9 deletions(-)
+
+commit 7aa783d5cd674f34da318f826bd5f4a0e09d24cb
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+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 ++++++
+ 1 file changed, 6 insertions(+)
+
+commit cebf5f09a6c5018ced64f35e7747fc81b93b823e
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Tue Dec 14 12:29:01 2010 +0100
+
+ dsextras.py: be consistent in how distutils imports are done
+
+ dsextras.py | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 35e590d48c78f2e76c47c2b4eaf0f7e8d1ed5c93
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Tue Dec 14 12:25:07 2010 +0100
+
+ dsextras.py: add have_gcc() function
+
+ dsextras.py | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+commit 637c2c287cfb0e89365026531c651111f5593ac7
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Tue Dec 14 12:24:41 2010 +0100
+
+ dsextras.py: use distutils.spawn.find_executable for have_pkgconfig()
+
+ dsextras.py | 8 ++------
+ 1 file changed, 2 insertions(+), 6 deletions(-)
+
+commit 020d00bc0ce7b77006b4d4f42d63122d79bcbf89
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Tue Dec 14 12:22:54 2010 +0100
+
+ setup.py: fix another case of use True/False instead of 1/0
+
+ setup.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit b03cc9e0d66d8caea3cd6a63db198c43de9267e9
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Mon Dec 13 10:21:52 2010 +0100
+
+ pygi-convert.sh: improve GtkSourceView conversion
+
+ pygi-convert.sh | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+commit fbc12cd7c09a67de9e28b7b0b28de9dc0e0e3418
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Mon Dec 13 10:27:56 2010 +0100
+
+ pygi-convert.sh: Gtk.DialogFlags conversion
+
+ pygi-convert.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 73e933d2429aea4d14e15350a538da1c5c3f71eb
+Author: José Alburquerque <jaalburqu@svn.gnome.org>
+Date: Sun Dec 12 20:38:46 2010 -0500
+
+ Doc Extractor: Print the gtk-doc blocks sorted by function name.
+
+ * codegen/docextract_to_xml.py: Print the xml of the gtk-doc
+ block in
+ alphabetical order according to the identifier (function name)
+ so that
+ the generation of xml files in the C++ bindings is deterministic.
+ Thanks to Krzesimir Nowak for suggesting this in a gtksourceviewmm
+ recent commit.
+
+ codegen/docextract_to_xml.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit db7ffa75b007074cb6b33b547c6d8140da300a3e
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Mon Dec 13 00:17:26 2010 +0100
+
+ pygi-convert.sh: add more Gtk conversions and sort
+
+ pygi-convert.sh | 50 ++++++++++++++++++++++++++------------------------
+ 1 file changed, 26 insertions(+), 24 deletions(-)
+
+commit f4bfe73d0ccedf7f671d3acd6d9e262d5383b733
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Mon Dec 13 00:01:40 2010 +0100
+
+ pygi-convert.sh: convert Atk
+
+ pygi-convert.sh | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+commit e55ce3667eb1d352bf96f265bf018ffe8aea75f9
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Sun Dec 12 23:48:48 2010 +0100
+
+ pygi-convert.sh: convert a few more Gio types
+
+ pygi-convert.sh | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+commit acc9f84bc6e13d76c6516cefe393d4a4f868aa24
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Sun Dec 12 14:19:00 2010 +0100
+
+ pygi-convert.sh: more GLib conversion
+
+ pygi-convert.sh | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+commit c903390814bebdc62d530472f6f94feecc59b8b3
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Sun Dec 12 14:00:34 2010 +0100
+
+ pygi-convert.sh: remove two cases handled by overrides
+
+ pygi-convert.sh | 2 --
+ 1 file changed, 2 deletions(-)
+
+commit d33c987e505ec8ddffa2b8cb5526f05b9b5f62be
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Sun Dec 12 13:38:56 2010 +0100
+
+ Override Gtk.ScrolledWindow constructor
+
+ gi/overrides/Gtk.py | 7 +++++++
+ tests/test_overrides.py | 7 +++++++
+ 2 files changed, 14 insertions(+)
+
+commit 1c24bb089fcd69e3104ae72a0e7560a8c5a3f05b
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Sun Dec 12 12:32:39 2010 +0100
+
+ pygi-convert.sh: Fix 'find' syntax
+
+ pygi-convert.sh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit f0a1d6b6bb53d0fa2788d8b9027d737b0aef8dfc
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Sun Dec 12 12:29:38 2010 +0100
+
+ pygi-convert.sh: start handling Gio and GLib
+
+ pygi-convert.sh | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+commit 365bf3251af3498dc797a58cce071805451b49b1
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Sat Dec 11 23:05:31 2010 +0100
+
+ pygi-convert.sh: convert Gdk.ScrollDirection.
+
+ pygi-convert.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit bca603de0f217fb290189a0ea330f82961c46d5d
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Sat Dec 11 15:03:21 2010 +0100
+
+ Override Pango.Layout constructor.
+
+ I must take a Pango.Context argument. Unfortumately the context is
+ not a
+ gobject property so we need to jump through some oops.
+
+ gi/overrides/Pango.py | 13 +++++++++++++
+ tests/test_overrides.py | 6 ++++++
+ 2 files changed, 19 insertions(+)
+
+commit df233301802e3f7f9ce338cde015ca2a2fc648ab
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Sat Dec 11 14:18:53 2010 +0100
+
+ Remove Pango.FontDescription() conversion.
+
+ It is now properly handled by an override.
+
+ pygi-convert.sh | 1 -
+ 1 file changed, 1 deletion(-)
+
+commit d8abcc9463542af9cd43d71849d0ad4c183b570b
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Fri Dec 10 14:05:20 2010 +0100
+
+ Override GtkAction and GtkRadioAction constructors.
+
+ gi/overrides/Gtk.py | 20 +++++++++++++++++---
+ tests/test_overrides.py | 18 ++++++++++++++++++
+ 2 files changed, 35 insertions(+), 3 deletions(-)
+
+commit 7924b18a99a0680c04aca46be4b64a7aa507dfe5
+Author: Dmitrijs Ledkovs <dmitrij.ledkov@ubuntu.com>
+Date: Sat Dec 4 22:13:28 2010 +0000
+
+ Override Adjustment constructor to behave like pygtk
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=636486
+
+ gi/overrides/Gtk.py | 7 +++++++
+ tests/test_overrides.py | 9 +++++++++
+ 2 files changed, 16 insertions(+)
+
+commit e76352dd83c8706e68ad57d00d185da9afea99c4
+Author: John (J5) Palmieri <johnp@redhat.com>
+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 ++++++++
+ 2 files changed, 16 insertions(+)
+
+commit de682b2d36c362140ab7d43c0743b01ec0865a74
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Dec 8 16:39:27 2010 -0500
+
+ [gi] get rid of some debug prints and fix error messages
+
+ gi/overrides/Gtk.py | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+commit dbb16571803bf51f497768bf80944514f4290ee5
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Wed Dec 8 18:25:15 2010 +0100
+
+ Fix demo for override changes.
+
+ demos/gtk-demo/gtk-demo.py | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+commit 2adcd95762944a4e27123093d3c8d080e49be1ea
+Author: Paolo Borelli <pborelli@gnome.org>
+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 +++++++
+ 4 files changed, 49 insertions(+), 1 deletion(-)
+
+commit 769da968c9187414d0420412d8fb8c833d12042a
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Wed Dec 8 17:38:11 2010 +0100
+
+ Stop checking that all vfuncs are implemented
+
+ Because some methods are optionally implementable but g-i won't
+ tell us.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=619606
+
+ gi/gimodule.c | 4 +++-
+ gi/types.py | 12 ++----------
+ tests/test_gi.py | 10 ----------
+ 3 files changed, 5 insertions(+), 21 deletions(-)
+
+commit 167a01c46b3fa0b3c8339502c875d32bd2bca974
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Wed Dec 8 17:37:00 2010 +0100
+
+ Fix usage of TreeIter api that is now an override.
+
+ demos/gtk-demo/gtk-demo.py | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit d2cfd6e9250d40de7c715ac74e299deddf137683
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Wed Dec 8 17:34:54 2010 +0100
+
+ Fix Gtk.Label(label="Foo")
+
+ Use 'label' as an argument name instead of 'str', otherwise we may
+ end up up with two 'label' in the kwds dict. Besides 'str' is a
+ reserved keyword.
+
+ gi/overrides/Gtk.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit c0c684c9bb4e2bc08d7cb6ac246705e8a3b77656
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Wed Dec 8 14:16:39 2010 +0100
+
+ Fix typo when raising an exception
+
+ gi/types.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 88c9a3ad49d9fcf779c3523672d8bf4767910301
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Wed Dec 8 10:46:27 2010 +0100
+
+ pygi-convert.sh: Added more conversions
+
+ pygi-convert.sh | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+commit 4d8d96326b2cac91e6d75e6601b92e202d1918ff
+Author: Paolo Borelli <pborelli@gnome.org>
+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 ++++++
+ 2 files changed, 13 insertions(+)
+
+commit f4f7fb35af1b41598dc050f5df155a01c370a920
+Author: Dmitry Morozov <dmitry.a.morozov@yandex.ru>
+Date: Sat Dec 4 19:19:19 2010 +0600
+
+ Container should be iterable.
+
+ gi/overrides/Gtk.py | 9 +++++++++
+ tests/test_overrides.py | 6 +++++-
+ 2 files changed, 14 insertions(+), 1 deletion(-)
+
+commit d2ad05d6d8d53b941e0ad33fcb200f1245a2d308
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Tue Dec 7 14:13:00 2010 +0100
+
+ No need to import Gdk
+
+ gi/overrides/Gtk.py | 1 -
+ 1 file changed, 1 deletion(-)
+
+commit b6a40badf0b2b59e690ce818efb03c7c816b8a04
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Tue Dec 7 14:07:53 2010 +0100
+
+ Remove semicolumns
+
+ gi/overrides/Gtk.py | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+commit cdc9c26553bf47ea488676e7bdc5f8ab0a2c906b
+Author: John (J5) Palmieri <johnp@redhat.com>
+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 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit cede81ad65db017e95543d8d35715751aa202fed
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Sun Dec 5 13:31:20 2010 +0100
+
+ Fix cut&paste error in the Label override
+
+ gi/overrides/Gtk.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 607c59b74ebbc1e39cb4121c870b689e1888c106
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Sat Dec 4 16:03:27 2010 +0100
+
+ pygi-convert.sh: handle TextWindowType
+
+ pygi-convert.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit dfeabe0b68938e27da2e65903983b5113dc422f1
+Author: Paolo Borelli <pborelli@gnome.org>
+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 ++++
+ 2 files changed, 11 insertions(+)
+
+commit da4e045e5abbed2796cc4ed39df35a0dde2de31b
+Author: Paolo Borelli <pborelli@gnome.org>
+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 ++++++++++++
+ 2 files changed, 19 insertions(+)
+
+commit 81452c23ab1befa59ff375692e582791432796a5
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Sat Dec 4 12:59:43 2010 +0100
+
+ pygi-convert.sh: convert MovementStep
+
+ pygi-convert.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 4d097eea94258eda0c328711491fd456cbd6741b
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Sat Dec 4 11:57:02 2010 +0100
+
+ Update Gdk overrides to work with latest Gtk+ 3
+
+ For now added consitionals on version == 2.0, but maybe at some
+ point we
+ shuld just clean up the old stuff.
+
+ gi/overrides/Gdk.py | 22 ++++++++++++++++------
+ 1 file changed, 16 insertions(+), 6 deletions(-)
+
+commit cda317195566711d66190145b545e26ed7226172
+Author: Johan Dahlin <johan@gnome.org>
+Date: Thu Dec 2 23:47:40 2010 -0200
+
+ Gtk: add an override for Gtk.main_quit
+
+ Override gtk.main_quit so that it can be used as a callback
+ to signals, most importantly to the destroy signal of a widget:
+
+ widget.connect('destroy', gtk.main_quit)
+
+ This is compatible with what PyGTK does.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=636336
+
+ gi/overrides/Gtk.py | 5 ++++-
+ gi/overrides/__init__.py | 27 +++++++++++++++++++++++++--
+ 2 files changed, 29 insertions(+), 3 deletions(-)
+
+commit 82689cbf53d92b1b951a459fe3de0e1d3a91791a
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Dec 2 16:27:04 2010 -0500
+
+ [gi] handle subtypes when inserting into tree models
+
+ * Often modules will give back basic types wrapped in a subtype.
+ This is the case with D-Bus where you may want to keep some of the
+ metadata around. More often than not, the developer is just looking
+ to use the basetype.
+
+ * This override checks the column type and handles basic types such as
+ gchararrays, ints, longs, floats and doubles, converting them
+ to their
+ base types before sending them to the generic GI type marshaller.
+
+ * More types may need to be supported but these are the common
+ cases where
+ apps break.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=635172
+
+ gi/overrides/Gtk.py | 38 ++++++++++++++++++++++++++++++++++++--
+ tests/test_overrides.py | 8 +++++++-
+ 2 files changed, 43 insertions(+), 3 deletions(-)
+
+commit 677490e9402bad7b7c2a832345ef54f7f0c5fc7f
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Fri Dec 3 23:39:50 2010 +0100
+
+ Override TreeSelection.select_path and TreeView.scroll_to_cell
+
+ The "path" argument may also be a string or a tuple
+
+ gi/overrides/Gtk.py | 10 ++++++++++
+ tests/test_overrides.py | 29 +++++++++++++++++++++++++++++
+ 2 files changed, 39 insertions(+)
+
+commit dacfe618fa244445c979f1a5efa80c1f9a5a4ae9
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Fri Dec 3 23:29:00 2010 +0100
+
+ Override TreePath.__new__
+
+ Instead of having a private _tree_path_from_string it is cleaner to
+ 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 ++++++++++++++++++
+ 2 files changed, 33 insertions(+), 18 deletions(-)
+
+commit 7a8af9e220ee48aa28f6b025c5dae324b14fe128
+Author: Paolo Borelli <pborelli@gnome.org>
+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 +++++++++++
+ 2 files changed, 17 insertions(+)
+
+commit 94e8befc935d4a6c7f766e34195e10fc3fb3b93a
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Nov 30 16:57:05 2010 -0500
+
+ refactor Jonathan Matthew recurse vfunc patch so it applys and clean
+ up a bit
+
+ * this patch does the recursion using the previous patche's support
+ functions
+
+ gi/types.py | 55 +++++++++++++++++++++++++++++++++++++++++++++----------
+ 1 file changed, 45 insertions(+), 10 deletions(-)
+
+commit 9c5aee4f06f92457f9ae987656c0c469f76d0ee8
+Author: Jonathan Matthew <jonathan@d14n.org>
+Date: Thu Jul 22 23:19:51 2010 +1000
+
+ Recurse up through base classes when setting up vfuncs
+
+ * this patch adds the support methods to do the recursion
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=625033
+
+ gi/gimodule.c | 130
+ ++++++++++++++++++++++++++++++++++++++++---------------
+ tests/test_gi.py | 37 ++++++++++++++++
+ 2 files changed, 131 insertions(+), 36 deletions(-)
+
+commit 78358e1ab54d02317f397276adee03ecb2187588
+Author: John (J5) Palmieri <johnp@redhat.com>
+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
+ ++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 67 insertions(+)
+
+commit 792e679c06df4357843fd310c7953a931172fc99
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Nov 29 16:41:38 2010 -0500
+
+ moved dynamic and base modules outside of gtk-2.0 directory
+
+ * do not move header files yet as they are mostly used by static
+ bindings
+ * do not remove pygtk.pth and pygtk.py files yet - there is a debate
+ on moving
+ these back to pygtk but you might want to import gio static
+ bindings without
+ having to have pygtk installed
+ * I have not tested this with pygtk, committing it so we can find
+ 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 ---
+ 7 files changed, 5 insertions(+), 10 deletions(-)
+
+commit c587e1ace7429195ac6fd4db03d2f33e2af09838
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Nov 29 15:11:46 2010 -0500
+
+ add test for inout argument count
+
+ tests/test_gi.py | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 5de88b4bcffdafcf8c7c20033cdf95dc690199ce
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Nov 22 19:17:23 2010 -0500
+
+ [gi] add check for UNICHAR
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=623615
+
+ gi/pygi-argument.c | 27 ++++++++++++++++++++++++++-
+ tests/test_everything.py | 17 +++++++++++++++--
+ 2 files changed, 41 insertions(+), 3 deletions(-)
+
+commit f129b3db2c78d3cce3614993fdd1619fb9eb9c79
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Sun Nov 21 12:16:53 2010 +0100
+
+ Support gunichar
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=623615
+
+ gi/pygi-argument.c | 60
+ ++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-info.c | 5 ++++
+ tests/test_everything.py | 5 ++++
+ 3 files changed, 70 insertions(+)
+
+commit fd2c0288eb67823fca1265348a27a9f8f147ae50
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Sat Nov 27 23:01:42 2010 +0100
+
+ pygi-convert.sh: gtk.accel_map -> Gtk.AccelMap._
+
+ pygi-convert.sh | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 13d0ff1d9c129bb458e234b630ebe920b50e2e0f
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Sat Nov 27 22:34:13 2010 +0100
+
+ pygi-convert.sh: handle "from gtk import gdk"
+
+ pygi-convert.sh | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 63a97634031c3d159ad77fdaa1f6341d7656eb07
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Sat Nov 27 22:23:24 2010 +0100
+
+ pygi-convert.sh: add some Pango special cases
+
+ pygi-convert.sh | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit 57e42bf4230d1aa20a47e3b0df2e509602333892
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Sat Nov 27 19:51:38 2010 +0100
+
+ Override TextIter (begins|ends|toggles)_tag()
+
+ Make the tag argument optional.
+
+ gi/overrides/Gtk.py | 9 +++++++++
+ tests/test_overrides.py | 17 +++++++++++++++++
+ 2 files changed, 26 insertions(+)
+
+commit 828b698e47ee819a60d24a772a3cc51ff9cd6601
+Author: Paolo Borelli <pborelli@gnome.org>
+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 ++++++++++-
+ 2 files changed, 13 insertions(+), 1 deletion(-)
+
+commit bf55dc862755a57bb1b998702d284fc460e88a30
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Sat Nov 27 16:46:40 2010 +0100
+
+ Override TextBuffer.create_mark()
+
+ Override create_mark to make the left_gravity argument optional
+
+ gi/overrides/Gtk.py | 3 +++
+ tests/test_overrides.py | 3 +++
+ 2 files changed, 6 insertions(+)
+
+commit 94c0e2f71636d055bdebe3ec378f3d339eea66c9
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Sat Nov 27 16:10:33 2010 +0100
+
+ Fix TextBuffer.get_selection_bounds() override
+
+ Fix the override and add unit test
+
+ gi/overrides/Gtk.py | 8 +++++---
+ tests/test_overrides.py | 7 +++++++
+ 2 files changed, 12 insertions(+), 3 deletions(-)
+
+commit 0cd717e3926276540b9145e58a4a3368136b00de
+Author: John (J5) Palmieri <johnp@redhat.com>
+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 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 226777cdb70fc72d206664ffd8b6737f7239d23f
+Author: John (J5) Palmieri <johnp@redhat.com>
+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 ++
+ 2 files changed, 5 insertions(+)
+
+commit d0049fa9982d13b3553b05569fb0a227e48b6647
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Sun Nov 21 15:20:58 2010 +0100
+
+ Override UIManager.insert_action_group
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=635437
+
+ gi/overrides/Gtk.py | 3 +++
+ tests/test_overrides.py | 34 +++++++++++++++++++++-------------
+ 2 files changed, 24 insertions(+), 13 deletions(-)
+
+commit e1db544e46aeed984133896af34b671a6a5547df
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Sun Nov 21 23:03:25 2010 +0100
+
+ Override TreeModel.get() to return a tuple
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=635466
+
+ gi/overrides/Gtk.py | 15 +++++++++++++++
+ tests/test_overrides.py | 6 ++++++
+ 2 files changed, 21 insertions(+)
+
+commit a5e806ad8a8b279402ff7adb1c1cdc04f9f3da76
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Sun Nov 21 21:57:40 2010 +0100
+
+ Make TreeSelection.get_selected_rows compatible with PyGtk
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=635464
+
+ gi/overrides/Gtk.py | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+commit 1c537bc67107948c92b51ba6ba749747e84263e2
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Nov 22 15:04:00 2010 -0500
+
+ [gi] switch to using sequences/tuples when marshalling
+ cairo_rectangle_int_t
+
+ * Upstream pycairo didn't want to add a new wrapper for
+ cairo_rectangle_int_t
+ * this works around that issue by using 4 element squences instead
+ which
+ should be accepted by pycairo for any API that takes a rect
+
+ gi/pygi-foreign-cairo.c | 85
+ +++++++++++++++++++++++++++++++++++++------------
+ 1 file changed, 64 insertions(+), 21 deletions(-)
+
+commit 4cede8f12321bed6c3b71813a62c01b61853ba69
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Nov 19 16:46:53 2010 -0500
+
+ [gi] overrides for treeview Drag and Drop
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=627367
+
+ gi/overrides/Gdk.py | 7 +++++++
+ gi/overrides/Gtk.py | 25 +++++++++++++++++++++++++
+ 2 files changed, 32 insertions(+)
+
+commit 3fd51bb903724b752f72f49c7cb35652b819791d
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Nov 19 16:44:32 2010 -0500
+
+ [gi] when encountering guint8 arrays treat them as byte arrays
+
+ * In Python 2 this means returning a PyString object
+ * In Python 3 we return a PyBytes object
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=627367
+
+ gi/pygi-argument.c | 65
+ ++++++++++++++++++++++++++++++++++++++++++++----------
+ tests/test_gi.py | 6 +++--
+ 2 files changed, 57 insertions(+), 14 deletions(-)
+
+commit 7ddb0f7fd8b1b9e8f691c6d42a83cb16c6561d26
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Fri Nov 19 18:19:38 2010 +0100
+
+ pygi-convert.sh: Add pynotify -> Notify
+
+ pygi-convert.sh | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit bf03d4db03a7739ac16ddc4e614441557ede554d
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Fri Nov 19 09:08:07 2010 +0100
+
+ pygi-convert.sh: Remove sugar specifics, and allow command line
+ file list
+
+ This script is generally useful for converting pygtk2 projects,
+ not just for
+ sugar. Remove the sugar specific bits, since they will just cause
+ errors.
+
+ Also allow the user to specify the files to convert as command line
+ arguments. If not given, all *.py files will be processed.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=635244
+
+ pygi-convert.sh | 25 +++++--------------------
+ 1 file changed, 5 insertions(+), 20 deletions(-)
+
+commit 18f5d229d3a4b9520c1c456be2635c8e36015c12
+Author: Martin Pitt <martin.pitt@ubuntu.com>
+Date: Fri Nov 19 09:00:35 2010 +0100
+
+ pygi-convert.sh: Cover Message and Buttons types
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=635244
+
+ pygi-convert.sh | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit ef74273c2043944708515e59a654ebe4944b46ff
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Nov 18 13:54:48 2010 -0500
+
+ [gi] fix actiongroup test since actions are hashed
+
+ * when actions are listed they may not show up in the order they
+ were entered
+ since they reside in an unordered hash internally
+
+ tests/test_overrides.py | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+commit 2c25886bf6710568d0646f82dce4770faa44c40d
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Nov 17 14:38:09 2010 -0500
+
+ [gi] when converting to UTF-8 accept Python Unicode objects as input
+ (Python 2)
+
+ 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 +++
+ 3 files changed, 20 insertions(+), 2 deletions(-)
+
+commit 8c2d32c8205b971b4353e3d5d2ed1efa6ef0e06c
+Author: Damien Caliste <damien.caliste@cea.fr>
+Date: Fri Nov 12 10:20:32 2010 +0100
+
+ Correct a bug in the freeing of memory in pygi-invoke.c.
+
+ When a method with inout arguments is called from Python with
+ a wrong number of arguments, the system crashs because of an
+ assertion fail. This patch corrects this behaviour.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=634671
+
+ gi/pygi-invoke.c | 25 ++++++++++++++-----------
+ 1 file changed, 14 insertions(+), 11 deletions(-)
+
+commit d9bab3b185bb59bd29e3c3f6225f3636f58ec45e
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Nov 10 14:11:56 2010 -0500
+
+ update news for release
+
+ NEWS | 73
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 73 insertions(+)
+
+commit 1338a95339e21cc02b9df6d10166996c8b97a6bf
+Author: Jonathan Matthew <jonathan@d14n.org>
+Date: Tue Sep 28 13:44:13 2010 +1000
+
+ Implement richcompare for GIBaseInfo
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=625033
+
+ gi/pygi-info.c | 29 +++++++++++++++++++++++++++++
+ 1 file changed, 29 insertions(+)
+
+commit 9ce3edf69824935aeca9e676eaa9782786c22a97
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Nov 9 22:57:41 2010 -0500
+
+ [gi] add the rectangle_int_t forign cairo type
+
+ * the pycairo maintainer is not being responsive so you will need
+ the patch at
+ https://bugs.freedesktop.org/show_bug.cgi?id=31111
+ * added conditionals, if the api doesn't exist in PyCairo we will
+ compile
+ without the forign structs
+
+ gi/pygi-foreign-cairo.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+commit 68b8211d8b014cf26ca7e9ab751fb3f61f228290
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Oct 25 18:28:36 2010 -0400
+
+ add a foreign type for cairo_rectangle_int_t and allow it to be
+ caller-allocated
+
+ * this is needed because Gdk and Gtk switched from returning a
+ GdkRectangle
+ to a CairoRectangleInt structure
+ * the patch in https://bugs.freedesktop.org/show_bug.cgi?id=31111
+ is required
+ for pycairo (however there is currently no patch for python 2)
+ * added fix for foreign types to allow them to be caller allocated
+ * in order for a type to be caller allocated it must be able to take
+ a NULL
+ and create an empty struct in foreign_struct_from_arg and it must
+ be able
+ to handle GI_TRANFER_EVERYTHING in foreign_struct_to_arg.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=627545
+
+ gi/pygi-foreign-cairo.c | 57
+ +++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-invoke.c | 15 +++++++++++--
+ 2 files changed, 70 insertions(+), 2 deletions(-)
+
+commit ce8b948310220288e9eef904eef4ec8f4e24a376
+Author: John (J5) Palmieri <johnp@redhat.com>
+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 ++++++++++++
+ 2 files changed, 29 insertions(+)
+
+commit 87dbc716f26cefc0e9427c3d6e8befe8eabd3d1e
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Nov 9 21:12:54 2010 -0500
+
+ [gi] handle virtual invokers
+
+ * right now we check to see if there is an method with the same name
+ as the virtual method and assume that is the invoker
+ * some invokers are named different so we now ask the VFuncInfo if
+ the vfunc has an invoker
+ * this is still not completly correct, gi needs to support telling
+ us which vfuncs must be overridden.
+ * 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 +-
+ 2 files changed, 17 insertions(+), 1 deletion(-)
+
+commit 540e9f1f349ba3625e28b7673c92210eb8974098
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Nov 9 12:17:05 2010 -0500
+
+ add overrides for the insert* apis of list_store and tree_store
+
+ * add set_row to tree_model as convinience method for both list and
+ tree stores
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=634423
+
+ gi/overrides/Gtk.py | 80
+ ++++++++++++++++++++++++++++++++++++++-----------
+ tests/test_overrides.py | 53 +++++++++++++++++++++++++++++++-
+ 2 files changed, 114 insertions(+), 19 deletions(-)
+
+commit 0bcb58b9541d9ae52e1d96e6239e9dbe0698872a
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Nov 5 13:56:12 2010 -0400
+
+ fix dialogs overrides which were relying on broken inheritance
+ behavior
+
+ gi/overrides/Gtk.py | 14 ++++++++++++--
+ 1 file changed, 12 insertions(+), 2 deletions(-)
+
+commit 89c104d17d79d7b935cd76101cba19d49390f7be
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Nov 4 12:00:14 2010 -0400
+
+ Add a overrides registry so we can refrence overrides inside the
+ module
+
+ * Overrides have a reentrancy issue when doing inheritance. If an
+ override
+ inherits from another override down the stack it won't see the
+ override
+ because the module is not finished loading and will inherit from the
+ non-overriden object instead. This causes type errors later.
+ * By adding the overrides to a registry outside of the module we
+ can order
+ registration and make the override available as soon as the class
+ is parsed,
+ not when the whole module is parsed.
+
+ 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 ++++++++++++++++++++++++
+ 7 files changed, 84 insertions(+), 12 deletions(-)
+
+commit 878b8f630acd2146bee364054acd45cd33eea37a
+Merge: cdacaa9 e317838
+Author: John Stowers <john.stowers@gmail.com>
+Date: Fri Nov 5 11:40:22 2010 +1300
+
+ Merge remote branch 'dieterv/setup-fixes-for-merge'
+
+commit e317838178fba5f0590fb8bd323f49602d564b53
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Thu Nov 4 11:16:43 2010 +0100
+
+ setup.py: ease maintenance burden for tests installation
+
+ setup.py | 23 +++--------------------
+ 1 file changed, 3 insertions(+), 20 deletions(-)
+
+commit cdacaa9572893796e0f3aa3730d0191911cb29ee
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Nov 3 09:51:09 2010 -0400
+
+ fix inheritence issues in overrides
+
+ gi/overrides/Gtk.py | 79
+ +++++++++++++++++++++++++++--------------------------
+ 1 file changed, 40 insertions(+), 39 deletions(-)
+
+commit 3d5955767d81f45e796ab2af0707533375681774
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Wed Nov 3 09:38:56 2010 +0100
+
+ tests: add runtests-windows.py script
+
+ Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
+
+ tests/runtests-windows.py | 47
+ +++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 47 insertions(+)
+
+commit 8cb3f2e78161639c568110aad6a807dcf59f3ae8
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Wed Nov 3 09:35:52 2010 +0100
+
+ pygobject_postinstall.py: remove pygobject-2.0.pc treatment from
+ postinstall as pkg-config on windows figures out the correct prefix
+ at runtime
+
+ Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
+
+ pygobject_postinstall.py | 26 +++-----------------------
+ 1 file changed, 3 insertions(+), 23 deletions(-)
+
+commit 63167574df53eb481cc11b6a097b2bfe7d5747f5
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Wed Nov 3 09:34:38 2010 +0100
+
+ pygobject_postinstall.py: remove shortcut creation
+
+ Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
+
+ pygobject_postinstall.py | 35 +----------------------------------
+ 1 file changed, 1 insertion(+), 34 deletions(-)
+
+commit f7b12611f94fd8c27fb67a03746c10149ce6e0ef
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Wed Nov 3 09:31:14 2010 +0100
+
+ setup.py: formatting cleanup, makes things readable
+
+ Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
+
+ setup.py | 56 ++++++++++++++++++++++++++------------------------------
+ 1 file changed, 26 insertions(+), 30 deletions(-)
+
+commit a31b4196fbb4638a245430f2fdeafd7534b1d84d
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Wed Nov 3 09:28:36 2010 +0100
+
+ setup.py: build and install tests
+
+ Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
+
+ setup.py | 61
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 61 insertions(+)
+
+commit 7c3b0c20b83c05833d73c240690dce3daf43fde8
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Wed Nov 3 09:26:59 2010 +0100
+
+ setup.py: install documentation when available on build system
+
+ Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
+
+ setup.py | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit 78533d851ee1314686f18cfa793613a9cf7d6686
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Wed Nov 3 09:25:56 2010 +0100
+
+ setup.py: install pygobject-codegen script
+
+ Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
+
+ setup.py | 25 +++++++++++++++++++++++++
+ 1 file changed, 25 insertions(+)
+
+commit ad40688df533dda0b1f7be8ea37c542b8796a26b
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Wed Nov 3 09:24:45 2010 +0100
+
+ setup.py: install fixxref.py script
+
+ Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
+
+ setup.py | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit 21ddfc66e4e18c002a33154eb4ab81170ed71ecc
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Wed Nov 3 09:23:05 2010 +0100
+
+ setup.py: rearrange constants
+
+ Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
+
+ setup.py | 37 ++++++++++++++++++++-----------------
+ 1 file changed, 20 insertions(+), 17 deletions(-)
+
+commit 7d353d04892de67265bf693f591f37fd393de639
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Wed Nov 3 09:18:11 2010 +0100
+
+ setup.py: check python version and pkgconig availability before
+ anything else
+
+ Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
+
+ setup.py | 18 ++++++++++--------
+ 1 file changed, 10 insertions(+), 8 deletions(-)
+
+commit 286364ed39953e942e24d5911519bcac2f90975a
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Wed Nov 3 09:05:59 2010 +0100
+
+ setup.py: simplify sys.platform != 'win32' detection and error
+ reporting
+
+ Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
+
+ setup.py | 29 +++++++++--------------------
+ 1 file changed, 9 insertions(+), 20 deletions(-)
+
+commit 3f70f92904c123e6cc40929c0affd3f75d061828
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Wed Nov 3 09:02:30 2010 +0100
+
+ setup.py: rearrange imports
+
+ Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
+
+ setup.py | 31 ++++++++++++++++++++++---------
+ 1 file changed, 22 insertions(+), 9 deletions(-)
+
+commit 9aa54b65f729c0f3b0e96ab7ff797f87dad6a455
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Wed Nov 3 08:58:00 2010 +0100
+
+ README.win32: update build instructions
+
+ Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
+
+ README.win32 | 13 +++++--------
+ 1 file changed, 5 insertions(+), 8 deletions(-)
+
+commit 5a33105f690ba84b2e4bb15d73d3467e92fa06e0
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Wed Nov 3 07:59:18 2010 +0100
+
+ dsextras.py: formatting cleanup, makes things readable
+
+ Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
+
+ dsextras.py | 148
+ ++++++++++++++++++++++++++++++++++++++----------------------
+ 1 file changed, 93 insertions(+), 55 deletions(-)
+
+commit d03503d0412d173acb383926ab3c2d640dad3e3f
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Wed Nov 3 07:00:40 2010 +0100
+
+ dsextras.py: add ggc4 to MSVC compatible struct packing comment
+
+ Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
+
+ dsextras.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 8c62968e9f8467e24870b8c4f61112676eef4630
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Wed Nov 3 06:56:32 2010 +0100
+
+ dsextras.py: use the pkgc_ functions instead of repeating pgk-config
+ incantations all over the place
+
+ Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
+
+ dsextras.py | 15 ++++++---------
+ 1 file changed, 6 insertions(+), 9 deletions(-)
+
+commit b98277afc24886bbda400e0ad360992bffa77b7c
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Wed Nov 3 06:49:48 2010 +0100
+
+ dsextras.py: add pkgc_get_version and pkgc_get_defs_dir functions
+
+ Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
+
+ dsextras.py | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+commit a565558652ebc3fa49d7aea40d399b06bbe376c4
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Wed Nov 3 06:45:05 2010 +0100
+
+ dsextras.py: PEP8: Comparisons to singletons like None should always
+ be done with 'is' or 'is not', never the equality operators.
+
+ Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
+
+ dsextras.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 4b1ff0c7f9953f925d2178069263cca67ca7db02
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Wed Nov 3 06:44:21 2010 +0100
+
+ dsextras.py: use True/False instead of 1/0
+
+ Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
+
+ dsextras.py | 25 +++++++++++++------------
+ 1 file changed, 13 insertions(+), 12 deletions(-)
+
+commit 819a21cea831c3892040390e9446b78a91d1cbbe
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Wed Nov 3 06:28:04 2010 +0100
+
+ dsextras.py: rearrange imports
+
+ Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
+
+ dsextras.py | 58
+ +++++++++++++++++++++++++++++++---------------------------
+ 1 file changed, 31 insertions(+), 27 deletions(-)
+
+commit d20edbfdde2819f8d4fee8cb3170c126fcd31d5f
+Author: Dieter Verfaillie <dieterv@optionexplicit.be>
+Date: Wed Nov 3 06:16:21 2010 +0100
+
+ Add distutils generated build/dist directories and eclipse
+ configuration files to .gitignore
+
+ Signed-off-by: Dieter Verfaillie <dieterv@optionexplicit.be>
+
+ .gitignore | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+commit 268d6ed2b0b1d266c612da4453b6117d9e14437e
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Oct 28 15:32:28 2010 -0400
+
+ [gi] add tests for calling dir on a dynamic module
+
+ tests/test_gi.py | 24 ++++++++++++++++++++++++
+ 1 file changed, 24 insertions(+)
+
+commit f6386a6e0d225c83cdbe1add4c4d3ea51d3ec2f0
+Author: Deepankar Sharma <deepankar.sharma@gmail.com>
+Date: Wed Oct 27 18:28:11 2010 -0400
+
+ [gi] dir() now works for modules
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=625093
+
+ gi/module.py | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+commit 28ed01c34c503cfb4f14fe7af7912060ca70aba6
+Author: Simón Pena <spenap@gmail.com>
+Date: Mon Sep 20 23:10:14 2010 +0200
+
+ Don't check the inner type when comparing gpointers
+
+ When using pyg_pointer_richcompare to compare two objects,
+ don't check their inner types. As we can't compare their private
+ fields, nor get a proper compare function, we can consider them
+ gpointers and compare them that way.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=629552
+
+ gobject/pygpointer.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 1731f89e4b5a20c33976963e12a1f39a21d33fde
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Oct 28 14:21:12 2010 -0400
+
+ Release GIL when calling into C functions
+
+ Author: Daniel P. Berrange <dan@berrange.com>
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=629042
+
+ gi/pygi-invoke.c | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+commit 783e2e351ec7470bda6b441e51f387dd61543c4b
+Author: José Aliste <jaliste@src.gnome.org>
+Date: Fri Oct 15 14:30:10 2010 -0300
+
+ _gi.Repository : Implement missing info bindings.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=632185
+
+ gi/pygi-info.c | 91
+ +++++++++++++++++++++++++++++++++++++++++++++++++---------
+ gi/pygi-info.h | 7 +++++
+ 2 files changed, 84 insertions(+), 14 deletions(-)
+
+commit 2ca897273f52ae38f5e06e72c773a048e199eee5
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Oct 28 13:49:15 2010 -0400
+
+ include Python.h so that PY_VERSION_HEX gets defined
+
+ gi/pygi-foreign-cairo.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 8b28b1d713df33931e255600ab98feda37a8e02a
+Author: John (J5) Palmieri <johnp@redhat.com>
+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 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+commit 3c09710d2f68af9c16ce39fd25656147656a486a
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Sat Oct 23 14:24:24 2010 +0200
+
+ Override Gtk.Widget.translate_coordinates to not return success value
+
+ gi/overrides/Gtk.py | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+commit 9d4443b3de8c327d8645ddde0a7a6dc5b977d7b4
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+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 +++++
+ 1 file changed, 5 insertions(+)
+
+commit 6679d39ace06294e98f9d6fc911ed6fb27656010
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+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 +++++++++++++++
+ 1 file changed, 15 insertions(+)
+
+commit 80b1b266fa68a5c67106871502017166628f71e4
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+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 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+commit 17cd0fb3a2d2ca0c6109c41727ba0b8c42217cd5
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+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 +++++++++++++++
+ 1 file changed, 15 insertions(+)
+
+commit 95c86fa31da3d2fe84db0e2b5bc2a6dc896c9223
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+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 +++++
+ 1 file changed, 5 insertions(+)
+
+commit da6d87460b9392c29d025a7eed9249fb604204bc
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+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 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+commit 0ed2e8772bdc405b0d0c7e0b2803e0e141abcb6a
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Sat Oct 23 14:16:21 2010 +0200
+
+ Override Gtk.IMContext.get_surrounding to not return success value
+
+ gi/overrides/Gtk.py | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+commit b85b445f15421209c0b4adf676d7c8218d6437c5
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+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 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+
+commit 684d716192d58c972083e579e909bcd97f8a5025
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Sat Oct 23 14:13:47 2010 +0200
+
+ Override Gtk.Container.get_focus_chain to not return success value
+
+ gi/overrides/Gtk.py | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+commit 8ec830c57fafbfe50d9619c6caba3cb95a00d688
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Sat Oct 23 14:12:44 2010 +0200
+
+ Override Gtk.ComboBox.get_active_iter to not return success value
+
+ gi/overrides/Gtk.py | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+commit b483852904468722230903989e3451c7c6a24c0f
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Oct 12 12:18:33 2010 -0400
+
+ [gi] make parameter check less strict when dealing with GValue params
+
+ * Some GValue API can store a pointer to a python object for later
+ use but our parameter checking was too strict to allow this
+ * Add pyg_type_from_object_strict API which takes a strict boolean and
+ returns PY_TYPE_OBJECT if no other GType can be found
+ * Since we don't have enough info to genrically check GValue
+ parameters
+ use the less strict type guessing when encountering a GValue param
+ * Other API stays the same and continues to do strict testing
+
+ 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
+ +++++++++++++++++++++++++++++++++++++++++----
+ 7 files changed, 90 insertions(+), 22 deletions(-)
+
+commit 8c87d622dcc6d76a981edfc5818fe67bb2e114e2
+Author: John Stowers <john.stowers@gmail.com>
+Date: Fri Oct 22 13:28:31 2010 +1300
+
+ Shortcut removal is not needed on post-uninstall
+
+ pygobject_postinstall.py | 14 ++------------
+ 1 file changed, 2 insertions(+), 12 deletions(-)
+
+commit a3ed97fe6f80548801739fe6b72771b9eb6d93f7
+Author: John Stowers <john.stowers@gmail.com>
+Date: Thu Oct 21 13:25:35 2010 +1300
+
+ Disable shortcut creation in windows installer
+
+ pygobject_postinstall.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit a3d6212b0abccef58f05d454c091936776413d98
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Oct 7 11:43:27 2010 -0400
+
+ overrides for all subclasses of dialog
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=631634
+
+ gi/overrides/Gtk.py | 94
+ +++++++++++++++++++++++++++++++++++++++++++++----
+ tests/test_overrides.py | 64 ++++++++++++++++++++++++++++++++-
+ 2 files changed, 151 insertions(+), 7 deletions(-)
+
+commit a87e3ba64b54e6df0b5b96af47c34e3be790b58f
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Thu Oct 7 19:37:53 2010 +0200
+
+ Make TreeModel behave like in GTK-2.x
+
+ Moved stuff from __getitem__ to get_iter.
+ Added TreePath.__cmp__
+
+ get_iter_from_string throws ValueError.
+ iterchildren() does not return None.
+
+ Adjusted tests to new TreeModel and added TestGtk.test_tree_model
+ method
+
+ Added support for negative row and column indices
+
+ Use rich comparison methods instead of __cmp__
+
+ Added TreeModel.__bool__/__nonzero__
+
+ Raise Error if tree path string is empty
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=631547
+
+ gi/overrides/Gtk.py | 195
+ ++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_overrides.py | 160 +++++++++++++++++++++++++++++++++++++--
+ 2 files changed, 349 insertions(+), 6 deletions(-)
+
+commit acfcc29af727fb67d0dfbbcc7cc14963ef21f1ea
+Author: John Stowers <john.stowers@gmail.com>
+Date: Sat Oct 16 18:59:25 2010 +1300
+
+ Correctly build GIO on windows
+
+ setup.py | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 33b59fd7437009b6c3ed43412e171d2cc91ee317
+Author: John Stowers <john.stowers@gmail.com>
+Date: Sat Oct 16 18:17:28 2010 +1300
+
+ Require Python >= 2.6.0 for Windows build
+
+ setup.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 544e0e4de4f5f97b0584eaf72ae8a081eca28ab6
+Author: John Stowers <john.stowers@gmail.com>
+Date: Sat Oct 16 17:41:01 2010 +1300
+
+ Fix depreciation warning in dsextras.py
+
+ dsextras.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 239ff961778e4e1587404d8a70dfbe8630ab0623
+Author: John Stowers <john.stowers@gmail.com>
+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 ++--
+ 3 files changed, 10 insertions(+), 4 deletions(-)
+
+commit 9a2f81d63012fef23fdde2b4d903bd69601c07c6
+Author: Michael Culbertson <michael.culbertson@gmail.com>
+Date: Sat Oct 16 17:08:11 2010 +1300
+
+ Support for GCC4 in Windows distutils build - bug 626548
+
+ dsextras.py | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit 27367c8dc3a3a31fdd778505b319cd3f4afb9e27
+Author: John Stowers <john.stowers@gmail.com>
+Date: Fri Oct 15 09:39:02 2010 +1300
+
+ Remove obsolete comments in dsextras.py
+
+ dsextras.py | 11 ++---------
+ 1 file changed, 2 insertions(+), 9 deletions(-)
+
+commit b5f383f854fb8f72677828b029589320c59006d1
+Author: John Stowers <john.stowers@gmail.com>
+Date: Fri Oct 15 09:21:03 2010 +1300
+
+ Broken dsextras.py pkg-config check error message
+
+ * Fixes bug 631962
+
+ dsextras.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit e1981da105b574e273ae6500fc6d25caf6af6aae
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Sep 28 15:31:03 2010 -0400
+
+ add compat functions for the deprecated PyCObject api
+
+ * Moved to using the PyCapsule API for python >= 3
+ * PyCObject is removed from Python 3.2
+ * It has also been deprecated in 2.7 but since we use the API in
+ header files
+ which are consumed by static binding modules, appling this for
+ python 2.7
+ causes crashes unless the modules are recompiled, breaking ABI.
+ It is safe
+ to rely on for 2.7 because it will never be removed and there is
+ talk of
+ undeprecating it upstream.
+ * There is no issues with static bindings under python 3 because
+ they are not
+ supported yet and most likely never will be.
+ * Even if PyCObject is brought back in 3.2, PyCapsule is a much
+ safer API
+ which adds a poorman's type check when unboxing.
+
+ 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 +++++-----
+ 9 files changed, 50 insertions(+), 13 deletions(-)
+
+commit 03d2e2924e27a9d6cae89e5748f70e0a51be91c6
+Author: Damien Caliste <damien.caliste@cea.fr>
+Date: Tue Sep 28 12:44:42 2010 +0200
+
+ Add __path__ attributes.
+
+ Add an attribute __path__ to DynamicModule and IntrospectionModule,
+ using the path of the typelib.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=630807
+
+ gi/module.py | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 28f9366c9cb382801bad080864f667c867daa3c7
+Author: Sebastian Pölsterl <sebp@k-d-w.org>
+Date: Sat Oct 9 17:40:40 2010 +0200
+
+ Override Gtk.TreeSelection.get_selected to not return success value.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=631765
+
+ gi/overrides/Gtk.py | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+commit f01a7d9e8222663ce52100e061033f2745a5e7af
+Author: Vincent Untz <vuntz@gnome.org>
+Date: Thu Oct 7 09:42:24 2010 +0200
+
+ Make row optional in Gtk.TreeStore/ListStore.append override
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=631548
+
+ gi/overrides/Gtk.py | 36 ++++++++++++++++++++++--------------
+ 1 file changed, 22 insertions(+), 14 deletions(-)
+
+commit 1e1357f5fa1a034b0b707040d664ac46be6e23f7
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Oct 4 12:50:55 2010 -0400
+
+ Revert "add compat functions for the deprecated PyCObject api"
+
+ This reverts commit f25e763d53e5cdd4de08e90b04aea4b4c4720ac0.
+
+ 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 +++++-----
+ 9 files changed, 13 insertions(+), 41 deletions(-)
+
+commit 97774cb149c5b03d5ef82a5af3f19e2ce4d79d0b
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Oct 4 12:43:31 2010 -0400
+
+ return NULL instead of -1 which fixes crash when introspection is
+ turned off
+
+ * see https://bugzilla.gnome.org/show_bug.cgi?id=631158
+
+ gi/pygi.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit f25e763d53e5cdd4de08e90b04aea4b4c4720ac0
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Sep 28 15:31:03 2010 -0400
+
+ add compat functions for the deprecated PyCObject api
+
+ * Moved to using the PyCapsule API for python >= 2.7
+
+ 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 +++++-----
+ 9 files changed, 41 insertions(+), 13 deletions(-)
+
+commit 80b8ccd450fe4e3ea77b27e58bb63cabc2a2bb2b
+Author: John (J5) Palmieri <johnp@redhat.com>
+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 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 9562842907a9d94f6adae2c1bb20d6b1f189abda
+Author: John (J5) Palmieri <johnp@redhat.com>
+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 ++--
+ 2 files changed, 9 insertions(+), 8 deletions(-)
+
+commit 98f69957ee9e3037b0a05a037098e4d2133ca256
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Sep 27 14:01:31 2010 -0400
+
+ post release bump to 2.27.0 unstable
+
+ * update hacking to fill in some holes in the release instructions
+
+ HACKING | 6 ++++--
+ configure.ac | 2 +-
+ 2 files changed, 5 insertions(+), 3 deletions(-)
+
+commit fd38010101411e6bc1ca9314657f418de660fa13
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Sep 27 12:03:10 2010 -0400
+
+ update NEWS for release
+
+ NEWS | 93
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 93 insertions(+)
+
+commit 7072d56b6cba13da97a052c75d1ae0c2cc417fd1
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Sun Sep 26 08:37:31 2010 +0200
+
+ Pre-release version bump 2.26.0
+
+ configure.ac | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit a549f429d2ced7a78d5baa5e2f28f6750b4788f2
+Author: John Stowers <john.stowers@gmail.com>
+Date: Fri Sep 24 22:44:03 2010 +1200
+
+ Wrap g_get_system_{config,data}_dirs ()
+
+ * Also tidy up g_get_{cache,config,data}_dir
+ to share common code
+
+ glib/glibmodule.c | 68
+ ++++++++++++++++++++++++++++++++++++++++---------------
+ 1 file changed, 50 insertions(+), 18 deletions(-)
+
+commit 328aca600714bdca89dfdb531c222ee561ede27e
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Sep 24 12:16:22 2010 -0400
+
+ fixed make check and make dist
+
+ tests/Makefile.am | 31 ++++++++++++++++++-------------
+ 1 file changed, 18 insertions(+), 13 deletions(-)
+
+commit 27023fd56148dd17b5576c1e81e0fe851d9b8727
+Author: John Stowers <john.stowers@gmail.com>
+Date: Fri Sep 24 21:20:53 2010 +1200
+
+ Disable GI tests when introspection disabled
+
+ tests/Makefile.am | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 7fe831081cdd2e26f5d948326b9f89ea0694e752
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+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 +++++++++++++++
+ 4 files changed, 56 insertions(+), 2 deletions(-)
+
+commit d6721a59c294f2471142b8c32de2f647b7084bca
+Author: Paul Bolle <pebolle@tiscali.nl>
+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 ++--
+ 6 files changed, 26 insertions(+), 25 deletions(-)
+
+commit a08c9fffb4262ae678e17f90bbfb2d5f880cfad0
+Author: Damien Caliste <damien.caliste@cea.fr>
+Date: Tue Sep 21 17:52:14 2010 +0200
+
+ pygi: always free the invocation_state struct
+
+ In pygi-invoke.c, the invocation_state struct is never freed
+ in case of success. Thus, always call _free_invocation_state()
+ before leaving.
+ Modify _free_invocation_state to avoid double free in case of
+ caller-allocated GValue, once as a released argument in the
+ _process routine and another time in the _free as the special
+ case. So move all argument releasing code from the _process
+ routine to the _free one.
+ Modify the tests for the callback routines to return an integer
+ value as specified in the GIR file.
+
+ Make check is as successful as before (already existing error
+ related to GVariant is still there).
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=630271
+
+ gi/pygi-invoke.c | 83
+ +++++++++++++++++++++---------------------------
+ tests/test_everything.py | 4 ++-
+ 2 files changed, 40 insertions(+), 47 deletions(-)
+
+commit 9714d765a34e246899f11b6792eea3aecce0b7ec
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Mon Sep 13 16:36:47 2010 +0200
+
+ Start implementing something equivalent to g_variant_new
+
+ 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 +++++++++
+ 5 files changed, 170 insertions(+), 24 deletions(-)
+
+commit fc45abdd9b55ab63556798ab0f04715be79dba08
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Sep 23 10:49:36 2010 -0400
+
+ fixed typo - missing comma in glib.option module
+
+ * https://bugzilla.gnome.org/show_bug.cgi?id=627449
+
+ glib/option.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 4ed100f3183c6325dd04461484e877bb7d4131b1
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Sep 17 12:08:09 2010 -0400
+
+ add checks so we can compile under python 3 by setting PYTHON=python3
+
+ * compile for python 3
+ * disables gio if compiling under python 3.x
+ * runs only pertinant tests
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=615872
+
+ configure.ac | 32 +++++++++++++++++++++++++++++---
+ tests/Makefile.am | 35 ++++++++++++++++++++---------------
+ tests/runtests.py | 4 ++++
+ 3 files changed, 53 insertions(+), 18 deletions(-)
+
+commit 269ff8564eeb597dc06c27e293354b7ff7a71a82
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Fri Sep 17 15:50:47 2010 +0200
+
+ Rename static methods as functions
+
+ In recent gobject-introspection releases, static methods have been
+ removed and placed as functions in the namespace level. In a future
+ releases it's planned to become static methods again but for now
+ let's fix the tests.
+
+ tests/test_gi.py | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+commit 2da8da589644d6125101210712defb1272a8abb1
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Sep 9 13:52:14 2010 -0400
+
+ fix a couple of compiler warnings
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=629199
+
+ gi/pygi-argument.c | 4 ++--
+ gi/pygi-struct.c | 2 +-
+ gobject/gobjectmodule.c | 2 +-
+ 3 files changed, 4 insertions(+), 4 deletions(-)
+
+commit 6769a4704f0876ac3baacd4da03ff16d9f0906be
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Sep 9 13:55:17 2010 -0400
+
+ remove unused code
+
+ * we use richcompare now
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=629198
+
+ gobject/pygtype.c | 9 ---------
+ 1 file changed, 9 deletions(-)
+
+commit 98f54f9d33996baeaa8c8c1240310f5396d03a1d
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Sep 14 14:10:49 2010 -0400
+
+ Check the type of the instance object
+
+ * in python 2 methods were added to classes as unbound methods and
+ they would
+ check the instance type to make sure it was correct
+ * in python 3 for perfomance reasons methods are added to classes
+ as simple
+ functions which treat the instance as an untyped argument so
+ no checks
+ are made.
+ * this patch adds a type check so that the correct errors are
+ thrown in
+ python 3 (python 2 this just adds another layer of redundancy should
+ something change with type checking in the future)
+ * since GI handles regular args and the instance arg slightly
+ differently
+ we had to split out the interface checks in
+ _pygi_g_type_info_check_object
+ in order to not duplicate code
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=615872
+
+ gi/pygi-argument.c | 182
+ ++++++++++++++++++++++++++++-------------------------
+ gi/pygi-argument.h | 2 +
+ gi/pygi-invoke.c | 14 +++++
+ 3 files changed, 112 insertions(+), 86 deletions(-)
+
+commit 5d79498d38b147b66ae72c1481e397160491e8d6
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Sep 15 10:26:20 2010 -0400
+
+ include the correct pycairo version
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=615872
+
+ gi/pygi-foreign-cairo.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+commit b855562e5c0019cd7e4982fe00c467ede9e3926d
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Sep 9 22:16:58 2010 -0400
+
+ Use PyMapping_Keys to determine if an object is a dict (py3k fix)
+
+ * in Py3k PyMapping_Check returns true for sequences such as strings
+ and lists. Since we need to get the keys anyway, and it returns
+ NULL if this is not a dict, this is a much better test, even in
+ Py2
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=615872
+
+ gi/pygi-argument.c | 10 +++-------
+ 1 file changed, 3 insertions(+), 7 deletions(-)
+
+commit 0e72e28c6c5502c7db5103cf1299c9f0e6689fdd
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Sep 9 18:44:11 2010 -0400
+
+ fix handling of UINT64 and INT64 arguments in py3k
+
+ * decode to the right sized C long
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=615872
+
+ gi/pygi-argument.c | 20 ++++++++++++--------
+ 1 file changed, 12 insertions(+), 8 deletions(-)
+
+commit d5666d99a1c0396b7da0cb14f9f4ff8892da7e2e
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Sep 9 17:35:10 2010 -0400
+
+ properly handle ulongs properties in py3k
+
+ * If this is a PyLong object pull use AsUnsignedLong
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=615872
+
+ gobject/pygtype.c | 29 ++++++++++++++++-------------
+ 1 file changed, 16 insertions(+), 13 deletions(-)
+
+commit 3d431c7dd0de97db10cb0c00c39d9c1837bed2f2
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Fri Sep 17 12:14:56 2010 +0200
+
+ Specify encoding of tests/test_gi.py
+
+ tests/test_gi.py | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit a808bdabb9fa6f4a9b9ce42e1cce05fb37403f0f
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Sep 9 13:24:30 2010 -0400
+
+ use actual unicode in the tests on py3k, not the byte representation
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=615872
+
+ tests/test_gi.py | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+commit 928f4485041d80d0c36ff2daeae4bcd09bd0bde4
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Sep 9 12:45:21 2010 -0400
+
+ s/METH_KEYWORDS/METH_VARARGS|METH_KEYWORDS/ when defining object
+ methods
+
+ * in Py3k the METH_KEYWORDS flag by itself is invalid. A method
+ must be defined
+ with both the METH_VARARGS and METH_KEYWORDS flags.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=615872
+
+ glib/pygiochannel.c | 30 +++++++++++++++---------------
+ glib/pygsource.c | 4 ++--
+ gobject/pygobject.c | 2 +-
+ 3 files changed, 18 insertions(+), 18 deletions(-)
+
+commit b5ee20afa4399c7689fbec8939fa20b927eeb782
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Sep 9 08:04:40 2010 -0400
+
+ fix subclassing PyLong by calling __new__ correctly
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=615872
+
+ glib/pygspawn.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit a499b2f0d622b671bd154544f66b73f1278e66ed
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Sep 9 07:56:44 2010 -0400
+
+ minor py3k fixups for python modules
+
+ * add _basestring and _bytes and _callable wrappers
+ * use items instead of iteritems and range instead of xrange
+
+ fix py3k modules
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=615872
+
+ gi/overrides/Gtk.py | 24 ++++++++++++++++--------
+ glib/option.py | 16 ++++++++++++----
+ 2 files changed, 28 insertions(+), 12 deletions(-)
+
+commit dec9001d26c97949e7b3578086cb35e98075c047
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Sep 9 07:36:04 2010 -0400
+
+ minor fixes in tests for py3k compat
+
+ * add a _bytes wrapper for API that expects bytes in py3k but str
+ in py2
+ * fix some more exception handling using sys.exc_info()[:2]
+ * use range instead of xrange, items instead of iteritems since py3k
+ dropped support for the different ways of accessing iterators
+ - this is less efficient in py2 but we plan to target py3k as the
+ primary platform
+ * use list(dict.items()) since py3k only returns iterables which
+ are not
+ indexable
+ * missed some _long wrapping
+
+ 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 +++---
+ 6 files changed, 32 insertions(+), 10 deletions(-)
+
+commit 09a0daeedf49eaf376c1288be5743b57fbc76d51
+Author: Colin Walters <walters@verbum.org>
+Date: Thu Sep 9 16:25:51 2010 -0400
+
+ compilation: Fix syntax error
+
+ gi/pygi-info.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 9f7afd6d5afd8c1a5f36bf1295814757b71c8cbc
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Thu Sep 9 22:17:00 2010 +0200
+
+ Add missing file
+
+ gi/overrides/GLib.py | 48
+ ++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 48 insertions(+)
+
+commit 306b792ac97a458ddee59fb86d66453495117f3e
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Thu Jul 22 13:48:51 2010 +0100
+
+ Add override for GLib.Variant.new_tuple
+
+ * gi/gimodule.c: Add _wrap_pyg_variant_new_tuple
+ * gi/overrides/GLib.py: Override Variant.new_tuple and
+ Variant.get_string
+ * gi/pygi-type.[hc]: split _pygi_type_import_by_name out from
+ _pygi_type_import_by_gi_info
+ * gi/types.py: Never override gobject.TYPE_NONE
+ * tests/test_everything.py: Add tests for GVariant tuples
+
+ 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 +++++++++
+ 6 files changed, 60 insertions(+), 6 deletions(-)
+
+commit 22e53aa2ed9cf6173a877b0af6928d5ab8da2f4f
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Sep 8 13:08:48 2010 -0400
+
+ fix for changes in the gi test libraries
+
+ tests/test_everything.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 246877074617b0e9c3b2ba2a5395a73e0ed9cd5d
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Sep 8 13:08:07 2010 -0400
+
+ Gtk.DialogFlags.NO_SEPARATOR has been removed in Gtk 3.0
+
+ gi/overrides/Gtk.py | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+commit f92fc48e7e2ec50996e994ccb7d08a61e7374f22
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Sep 8 12:35:09 2010 -0400
+
+ no need to offset arg positions when is_method is true
+
+ * The old GI libraries required we offset arg positions for the
+ missing
+ self argument. The new library fixes this so we don't have
+ to offset
+ anymore.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=629087
+
+ gi/pygi-callbacks.c | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+commit 8c517de2d278bdef641c72b8f2919a3924290ec1
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Fri Aug 20 14:54:35 2010 +0200
+
+ gi: Add support for more property types
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=627494
+
+ gi/pygi-property.c | 156
+ ++++++++++++++++++++++++++++++++++++-----------
+ tests/test_everything.py | 34 +++++++++++
+ 2 files changed, 154 insertions(+), 36 deletions(-)
+
+commit 6d183d1fff55d54569ba3e1f90a10284df74fd40
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Sep 3 12:04:16 2010 -0400
+
+ use PyObject_SetAttrString, not PyDict_SetItemString when setting
+ __gtype__
+
+ * When registering a gtype wrapper we used to set tp_dict
+ directly. This works
+ in python 2 but python 3 seems to handle attributes in a slightly
+ different
+ way where the tp_dict and attr get out of sync. By setting the attr
+ directly we avoid this issue.
+ * Note that there are many more places where we set __gtype__
+ using tp_dict
+ however for objects which are not instantiated yet we have to
+ set tp_dict
+ directly.
+ * Since this one change fixes a lot of failed tests, for now we
+ ignore the
+ other places where we set __gtype__. If we run into more issues
+ dealing
+ with __gtype__ we can take a closer look later.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=627878
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=615872
+
+ gobject/gobjectmodule.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit b7bf4269682a3335f5e0a52b46fa721af134d09a
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+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 +++++++-------
+ 12 files changed, 94 insertions(+), 94 deletions(-)
+
+commit 7197f85c9be2b03636639ac909ca2c3170653509
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Aug 18 10:29:19 2010 -0400
+
+ fix up tests so they run in py3k
+
+ * add a compat helper that should only be used by tests
+ * fix long notation to use the compat helper instead
+ * add parens to print statements
+ * use compatable try/except pattern
+
+ 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 ++--
+ 6 files changed, 72 insertions(+), 25 deletions(-)
+
+commit 720e614acdbcf734d4bcccc403e639b5a5bcae24
+Author: Colin Walters <walters@verbum.org>
+Date: Fri Aug 20 10:58:48 2010 -0400
+
+ tests: Port to new introspection tests
+
+ Everything is renamed "Regress", and both it and GIMarshallingTests
+ are now in source form, so we compile them.
+
+ The scanner now adds "static methods" to objects, structs, and unions,
+ so update the test code to use those.
+
+ In the tests, remove broken (inout) cases - the person writing these
+ tests misunderstood the semantics of (inout). It's not acceptable for
+ a C API to mutate e.g. a GSList* passed in, or unref an object.
+
+ The invocation code needed to be updated for this - remove some
+ broken hacks.
+
+ 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
+ +++++++++--------------------------------------
+ 6 files changed, 93 insertions(+), 267 deletions(-)
+
+commit f6c4d9e58c8f05cb2d82e158c9eb8480308565bd
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Aug 20 10:43:58 2010 -0400
+
+ we need to specify tp_hash since we overide tp_richcompare
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=615872
+
+ gobject/pygenum.c | 1 +
+ gobject/pygflags.c | 1 +
+ 2 files changed, 2 insertions(+)
+
+commit c03e6b482548aee99362356807c804f8834fad2b
+Author: John Ehresman <jpe@wingware.com>
+Date: Thu Apr 15 17:11:30 2010 -0400
+
+ working enum/flags/pid subclasses of long
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=615872
+
+ glib/pygspawn.c | 7 ++---
+ gobject/pygenum.c | 61 ++++++++++++++++++++++++-------------------
+ gobject/pygflags.c | 76
+ +++++++++++++++++++++++-------------------------------
+ 3 files changed, 71 insertions(+), 73 deletions(-)
+
+commit 0db676fd2296750a46ba0fb069e472da06ecc53a
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Aug 18 11:03:32 2010 -0400
+
+ make vfuncs work in py3k
+
+ * methods now export __func__ instead of im_func for getting the
+ function
+ out of a method closure
+ * however classes no longer return unbound methods in py3k and instead
+ return the actual function
+ * in python 2 we use im_func when getting the function from the
+ vfunc closure
+ * in py3k we simply assign vfunc to the function
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=615872
+
+ gi/types.py | 12 ++++++++----
+ 1 file changed, 8 insertions(+), 4 deletions(-)
+
+commit 286dcd0c6455961d818ac7f05f80f82435abc1dc
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Aug 17 15:43:42 2010 -0400
+
+ make cairo module compile in py3k
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=615872
+
+ gi/Makefile.am | 2 +-
+ gi/pygi-foreign-cairo.c | 17 +++++++----------
+ 2 files changed, 8 insertions(+), 11 deletions(-)
+
+commit bda58ec34fc443fe1108afc8532bec50f6fd0b44
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Aug 17 02:33:45 2010 -0400
+
+ fix exceptions so they work in python 3.x
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=615872
+
+ gi/module.py | 2 +-
+ gi/types.py | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 427a3c8053feca35ccd746575760ac8a0ed50a12
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Aug 17 02:24:44 2010 -0400
+
+ make the gi module compile under 3.x
+
+ * include the compat macros
+ * use GLIB_MODULE_START/END to define module
+ * add PyInit__gi to the exported symbols
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=615872
+
+ gi/Makefile.am | 2 +-
+ gi/gimodule.c | 24 +++++++++---------------
+ 2 files changed, 10 insertions(+), 16 deletions(-)
+
+commit 1dee5dcd2b1747b4a4af438c0443d7930e4802db
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Aug 17 02:14:14 2010 -0400
+
+ fix up testshelper module so it compiles in python 3.x
+
+ * include the compat header
+ * fix up PyInts to be PYGLIB_Long
+ * Use PYGLIB_DEFINE_TYPE macros to define module objects
+ * Use PYGLIB_MODULE_START/END to define modules
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=615872
+
+ tests/Makefile.am | 2 +-
+ tests/testhelpermodule.c | 221
+ ++++++-----------------------------------------
+ 2 files changed, 28 insertions(+), 195 deletions(-)
+
+commit 1ff83a2ccb7301c8f675913f1c4f6118ea50b9c7
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Aug 16 21:14:27 2010 -0400
+
+ convert to using PYGLIB_DEFINE_TYPE for module objects
+
+ 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 +++-----------
+ 4 files changed, 88 insertions(+), 210 deletions(-)
+
+commit 1efa2b12913b194d433c17014bc1077271a6ca32
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Aug 16 13:51:05 2010 -0400
+
+ some more p3k PyString and PyInt eradication in GI
+
+ * add the glib dir to the includes list in the build
+ * make sure we include the compat macros
+ * add GLIB_PyBytes_FromString to compat macros
+ * add GLIB_PyNumber_Long to compat macros
+ * use RichCompare instead of Compare
+
+ 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 +++
+ 8 files changed, 103 insertions(+), 47 deletions(-)
+
+commit 6b902c66200c1684513a9ef31bdef3f2ff64e4fa
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Fri Aug 20 09:28:57 2010 +0200
+
+ pyglib: Fix typo (Leo Singer)
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=627408
+
+ glib/option.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 3cefffecc1317b6ad77a5ed936bfb990d16bf9d3
+Author: Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+Date: Thu Aug 19 18:45:05 2010 -0300
+
+ Add defines for size_t and ssize_t conversion functions
+
+ These missing defines cause the resulting module to have unresolved
+ symbols, rendering it unusable.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=627440
+
+ glib/pyglib-python-compat.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit d45c7031876f355e15409f00f3e50e77d18f8f4b
+Author: Colin Walters <walters@verbum.org>
+Date: Thu Aug 19 17:50:35 2010 -0400
+
+ pyglib: Fix a compiler warning
+
+ glib/pyglib.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 0fe6828ddce187ac1897a1f02ca1c5480796d5b9
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Wed Aug 18 20:36:51 2010 +0200
+
+ Don't force gtk 2.0
+
+ pygi-convert.sh | 11 +++++++----
+ 1 file changed, 7 insertions(+), 4 deletions(-)
+
+commit ac59c18a4f2bfff47c862b763aaf1d1cf136a4f5
+Author: Steve Frécinaux <code@istique.net>
+Date: Tue Aug 17 14:49:30 2010 +0200
+
+ Fix some ref leaks in hook_up_vfunc_implementation()
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=627143
+
+ gi/gimodule.c | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+commit 18ee0db673c2fa42244ab85950bbf4840edb674b
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Aug 12 12:16:31 2010 -0400
+
+ handle strings correctly in gio
+
+ gio/gappinfo.override | 5 +++++
+ gio/pygio-utils.c | 42 +++++++++++++++++++++++++++++++++++-------
+ 2 files changed, 40 insertions(+), 7 deletions(-)
+
+commit 45ab0c03110c911b47519941dfd753326891b5e0
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Aug 11 16:13:59 2010 -0400
+
+ make giomodule compile under py3k
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=615872
+
+ gio/giomodule.c | 153
+ +++++++++++++++++++++++++++++---------------------------
+ 1 file changed, 78 insertions(+), 75 deletions(-)
+
+commit c52f8ed3ae8cb66a03b5695e980770c3f467f755
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Aug 11 16:04:48 2010 -0400
+
+ for py3k we need to do some more processing to get bytes from a
+ unicode string
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=615872
+
+ gi/pygi-argument.c | 31 +++++++++++++++++++++++++++----
+ 1 file changed, 27 insertions(+), 4 deletions(-)
+
+commit de9eae4dfcce856a42cc5c569a5b9683c28d0eeb
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Aug 11 15:03:55 2010 -0400
+
+ use Bytes instead of Unicode when reading io
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=615872
+
+ glib/pygiochannel.c | 30 ++++++++++++++++++++++++------
+ 1 file changed, 24 insertions(+), 6 deletions(-)
+
+commit 5824ff98175b749dbcfa72d24b994230b6e05377
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Aug 9 15:16:51 2010 -0400
+
+ prefix compat macros with PYGLIB
+
+ * refactor from John Ehresman <jpe@wingware.com> py3k branch
+ * fix up some extranious PyString calls
+ * remove duplicate macros from pyglib.h that are in
+ pyglib-python-compat.h
+ * pygobject.h can't import pyglib-python-compat.h so add codepaths
+ for both Py3k and legacy code instead of using macros
+
+ 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 +++++++++++++++++-----------------
+ 18 files changed, 563 insertions(+), 473 deletions(-)
+
+commit 231e934cc01d061e81bb60d35127a133cd0e1793
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Aug 16 10:14:04 2010 +0200
+
+ Gtk.Button unit tests
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=622606
+
+ tests/test_overrides.py | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+commit f07cfde377e42686c6b80f56cac62338ee333e61
+Author: Johan Dahlin <johan@gnome.org>
+Date: Mon Aug 16 10:08:38 2010 +0200
+
+ [Gtk] Add overrides for Button
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=622606
+
+ gi/overrides/Gtk.py | 13 +++++++++++++
+ 1 file changed, 13 insertions(+)
+
+commit 65a06a7216163c7e65b32c5b5f3388faa7fda5d6
+Author: Simon van der Linden <svdlinden@gnome.org>
+Date: Thu Aug 12 16:18:58 2010 +0200
+
+ Make Cairo an optional dependency
+
+ Add the --enable-cairo configure argument.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=616732
+
+ configure.ac | 15 ++++++++++++---
+ gi/Makefile.am | 20 ++++++++++++--------
+ 2 files changed, 24 insertions(+), 11 deletions(-)
+
+commit b83507263231d9bf47f6c8450583e3d03f0a3b5b
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Mon Aug 16 09:55:35 2010 +0200
+
+ Don't import again PyGObject (John Ralls)
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=626996
+
+ gi/pygi.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 0dc3656070f496431829c6e8441ca17129c569f8
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Aug 9 16:11:55 2010 -0400
+
+ move to using richcompare slot instead of compare
+
+ 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 +++++++++++----
+ 12 files changed, 233 insertions(+), 71 deletions(-)
+
+commit b426e531dc53d4b50e572a2da19733479635e662
+Author: Simon van der Linden <svdlinden@gnome.org>
+Date: Thu Aug 12 18:09:33 2010 +0200
+
+ Replace autogen.sh by a newer version
+
+ It pulls automake 1.10 or 1.11.
+ Greatly inspired from GLib's.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=625661
+
+ autogen.sh | 506
+ +++++++------------------------------------------------------
+ 1 file changed, 58 insertions(+), 448 deletions(-)
+
+commit 769645e00d6d055a4cd802454dbfc1bbfcbee691
+Author: Simon van der Linden <svdlinden@gnome.org>
+Date: Thu Aug 12 14:11:55 2010 +0200
+
+ Fix some warnings
+
+ pyglib.c: In function ‘pyglib_gerror_exception_check’:
+ pyglib.c:362: warning: format not a string literal and no format
+ arguments
+ pyglib.c:371: warning: format not a string literal and no format
+ arguments
+
+ gio.override: In function 'pygio_notify_allocate_buffer':
+ gio.override:144:13: warning: format '%d' expects type 'int', but
+ argument 3
+ has type 'gsize'
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=625437
+
+ gio/gio.override | 2 +-
+ glib/pyglib.c | 4 ++--
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+commit e4c4cccb588b258dbcd21702e6cddcfe9ebe4ffc
+Author: Simon van der Linden <svdlinden@gnome.org>
+Date: Thu Aug 12 11:09:37 2010 +0200
+
+ Fix caller-allocates emergency free.
+
+ In the state, args, args[i], arg_infos[i], and arg_type_infos[i]
+ must not be
+ NULL in order to be able caller-allocates. This patch adds those
+ conditions.
+
+ Moreover, the interface info needs to be freed afterwards.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=626684
+
+ gi/pygi-invoke.c | 9 ++++++++-
+ 1 file changed, 8 insertions(+), 1 deletion(-)
+
+commit 0ab967ca40ddcffc2834d4e656bb2010c6b9bdda
+Author: Simon van der Linden <svdlinden@gnome.org>
+Date: Thu Aug 12 10:46:17 2010 +0200
+
+ Remove useless checks.
+
+ No need to check for state->arg_infos, state->arg_type_infos, and
+ state->args_is_auxiliary to be NULL, they are always allocated.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=626684
+
+ gi/pygi-invoke.c | 14 +++-----------
+ 1 file changed, 3 insertions(+), 11 deletions(-)
+
+commit e17be9cd288fee5d7cb174d9d577eb9279044c67
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Tue Aug 10 17:40:16 2010 +0200
+
+ Call valgrind with G_SLICE=always-malloc G_DEBUG=gc-friendly
+
+ tests/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 8be59c37dd57acc51875c7189ca09d728b729013
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+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 -
+ 3 files changed, 1 insertion(+), 4 deletions(-)
+
+commit 529eca6054e9a7e2267f1529e317c2373932762f
+Author: Simon van der Linden <svdlinden@gnome.org>
+Date: Fri Jul 30 22:39:40 2010 +0200
+
+ Add myself as a maintainer
+
+ MAINTAINERS | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+commit caac75a6ed6f671b37e38a78e71b87906a00ac1b
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Fri Jul 30 14:14:16 2010 +0200
+
+ Properly allocate boxed structs that are (caller-allocates)
+
+ * gi/pygi-boxed.[hc]: Refactor out the allocation of boxed structs
+ * gi/pygi-invoke.c: Don't use g_malloc0 for boxed structs that
+ are (caller-allocates)
+ * tests/test_overrides.py: Split the TreeView tests
+
+ 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 +++++++++++++++++++-------------------
+ 4 files changed, 64 insertions(+), 51 deletions(-)
+
+commit 99c7322898c00a576c7319ea0a7c808446253133
+Author: Toms Baugis <toms.baugis@gmail.com>
+Date: Fri Jul 30 15:44:21 2010 +0200
+
+ override gdk.Event to return attribute from the proper event object
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=620593
+
+ gi/overrides/Gdk.py | 48
+ ++++++++++++++++++++++++++++++++++++++++++++++++
+ gi/pygi-invoke.c | 4 ----
+ tests/test_overrides.py | 10 ++++++++++
+ 3 files changed, 58 insertions(+), 4 deletions(-)
+
+commit 55814e722c2ae11310f346790c9221e4fad92b50
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Jul 30 06:30:48 2010 -0400
+
+ check if z# needs an int or Py_ssize_t
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=625438
+
+ gio/gio.override | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+commit 477315465d0a6d84b51e146e86e254873bc564ff
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Jul 30 06:43:06 2010 -0400
+
+ make sure we parse parameters to python object vars not glib vars
+
+ * py_flags was already set up but due to a typo &flags was being
+ passed
+ instead
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=625438
+
+ gio/gfile.override | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit faa7d4eece7ddb698725098970c2478a3b45c4d5
+Author: Paul Bolle <pebolle@tiscali.nl>
+Date: Fri Jul 30 10:56:01 2010 +0200
+
+ Make an example and a demo work out of the box
+
+ cairo-demo.py and gtk-demo.py need the two (kind of) magic lines
+ regarding pygtk to work out of the box. So add those.
+
+ Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=625638
+
+ demos/gtk-demo/gtk-demo.py | 2 ++
+ examples/cairo-demo.py | 2 ++
+ 2 files changed, 4 insertions(+)
+
+commit c9da5782e6c633d9af43ee85075e9ee65db09780
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Jul 9 13:14:42 2010 -0400
+
+ make sure caller allocated structs are freed when they go out of scope
+
+ * Move struct transfer checks from pygi-arguments to pygi-invoke
+ * add better warning if an unknown struct is fully transfered
+ * only free GValues we create in the invoke cleanup. All other
+ structs
+ get cleaned up when they go out of scope in python
+ * Fixes issues with caller allocated treeiters getting freed to early
+ * this is a fix to crashes in the current test suite when API's
+ returning
+ TreeIters were annotated as out caller-allocates so no new tests
+ are needed
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=623969
+
+ gi/pygi-argument.c | 13 +++++--------
+ gi/pygi-invoke.c | 46 ++++++++++++++++++++++++++++++++++++++++------
+ 2 files changed, 45 insertions(+), 14 deletions(-)
+
+commit e0a85305cd107aae5902e524afd074cd8c329927
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Fri Jul 30 10:35:33 2010 +0200
+
+ Revert "override gdk.Event to return attribute from the proper
+ event object."
+
+ Pushed by mistake, we still need testcases
+
+ This reverts commit e7bb3954880568884ca66e7751ede689dc2f24f6.
+
+ gi/overrides/Gdk.py | 44 --------------------------------------------
+ 1 file changed, 44 deletions(-)
+
+commit 61ffb8d6d08fcfe638f71ea97ceac3a366e5536d
+Author: Paul Bolle <pebolle@tiscali.nl>
+Date: Thu Jul 29 22:55:28 2010 +0200
+
+ PyGI: properly quit cairo-demo
+
+ Signed-off-by: Paul Bolle <pebolle@tiscali.nl>
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=625619
+
+ examples/cairo-demo.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit e7bb3954880568884ca66e7751ede689dc2f24f6
+Author: Toms Baugis <toms.baugis@gmail.com>
+Date: Tue Jul 27 21:37:16 2010 +0200
+
+ override gdk.Event to return attribute from the proper event object.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=620593
+
+ gi/overrides/Gdk.py | 44 ++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 44 insertions(+)
+
+commit 0a9f1da052fd33dcef81d0e267fc7972f02c7888
+Author: Simon van der Linden <svdlinden@gnome.org>
+Date: Wed Jul 28 14:56:00 2010 +0200
+
+ Clean and improve the test infrastructure
+
+ To run select tests, use for instance:
+ % make check TEST_NAMES='test_everything test_gi.TestConstant'
+
+ It works with check.gdb and check.valgrind too.
+
+ 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 +++-
+ 18 files changed, 82 insertions(+), 142 deletions(-)
+
+commit 82f4cb5ebf5d992493b7a2f74cfd5f175e19eb76
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Thu Jul 29 12:34:19 2010 +0200
+
+ Add some more transformations to pygi-convert.sh
+
+ pygi-convert.sh | 37 +++++++++++++++++++++++++++++--------
+ 1 file changed, 29 insertions(+), 8 deletions(-)
+
+commit de519adcd21947a0aef7932cdecb78cef200c85e
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+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 ++++++------
+ 2 files changed, 7 insertions(+), 7 deletions(-)
+
+commit 01cd9abb43f93f9a57a5a05b6dc9560614e666e3
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Wed Jul 28 12:26:48 2010 +0200
+
+ Add GValue<->GArgument marshalling for some more types
+
+ gi/pygi-property.c | 37 ++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 36 insertions(+), 1 deletion(-)
+
+commit ddffa70c3ee0e837070f390632bc692430f79171
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Wed Jul 28 11:10:42 2010 +0200
+
+ Chain up with the non-introspection implementation for properties
+ if needed
+
+ gobject/pygobject.c | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+commit 045433a1f8167205dc8eae613dcb8835d02c8916
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Wed Jul 28 10:59:49 2010 +0200
+
+ Improve error reporting for missing attributes in introspection
+ modules
+
+ gi/module.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 6655a79b2f13fe417aefdf6aebab0f2d6162ba00
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Tue Jul 27 21:52:49 2010 +0200
+
+ Implement getting and setting properties using introspection
+ information.
+
+ This allows us to use information not present in GObject such as
+ transfer and element types.
+
+ 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 ++++
+ 9 files changed, 341 insertions(+)
+
+commit 85f4572b3ffbfa364ebb2e470eab759edc557b36
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Tue Jul 27 21:32:41 2010 +0200
+
+ Readd Gdk.Rectangle override for Gtk-2.0
+
+ gi/overrides/Gdk.py | 19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+
+commit 2082ee35e2a33f52bf1e8ec49cb4a43398e91989
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Tue Jul 27 18:25:27 2010 +0200
+
+ Allow specifying a version when loading a typelib
+
+ * gi/importer.py: Defer loading the typelib until first usage.
+ * gi/module.py: Load the typelib in IntrospectionModule().
+ * gi/overrides/*.py: Adapt to API change.
+ * 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
+ +++++++++++++++++++++++++++++++++++-
+ 6 files changed, 105 insertions(+), 41 deletions(-)
+
+commit 6d7ed6c322234c240b1063a1dfaadd17157432a9
+Author: Jonathan Matthew <jonathan@d14n.org>
+Date: Tue Jul 13 20:27:28 2010 +1000
+
+ treat GFreeFunc as equivalent to GDestroyNotify when scanning
+ callbacks
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=624232
+
+ gi/pygi-callbacks.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit 7e9cbd5601ad548b78d106bac1a1576d33b91c65
+Author: Simon van der Linden <svdlinden@gnome.org>
+Date: Mon Jul 26 17:00:23 2010 +0200
+
+ Don't use == to compare doubles, use <= and =>.
+
+ This avoids inequality due to small precisions difference.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=625326
+
+ tests/testhelpermodule.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 5ca2a41f16f4a5fcc3ab4d00bec46b077c7eb384
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Thu Jul 8 11:36:12 2010 +0200
+
+ Allow passing ints as enum args
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=622584
+
+ gi/pygi-argument.c | 23 +++++++++++++++++++++--
+ tests/test_gi.py | 6 ++++--
+ 2 files changed, 25 insertions(+), 4 deletions(-)
+
+commit 890c3233f8a9f884b045a294bf0122bb3afcd54a
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Sun Jul 25 17:30:40 2010 +0100
+
+ Make error message less ambiguous
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=625095
+
+ gi/pygi-callbacks.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit 1162e436273ff8e9e4e24bd8ba74615fd4624753
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Jun 24 10:07:12 2010 -0400
+
+ fix passing in type names as a GType and add gtype unit tests
+
+ * a simple call to pyg_type_from_object covers all the bases
+ * added unit tests to check for correct GType value passing
+ * fixed up tree override tests to also check different ways of
+ passing GTypes
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=622605
+
+ gi/pygi-argument.c | 8 +-------
+ tests/test_everything.py | 27 +++++++++++++++++++++++++++
+ tests/test_overrides.py | 6 ++----
+ 3 files changed, 30 insertions(+), 11 deletions(-)
+
+commit 8becd32fc042445d62b885bac12dac326b2dc1fa
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Mon Jul 26 11:54:47 2010 +0200
+
+ Increase a bit verbosity of tests so people know which test failed
+
+ tests/runtests.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 3b3c63514f311592e6769a373d37a2bde7ea6b38
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+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 ++++++++++++++++++++++++++++++
+ 2 files changed, 104 insertions(+)
+
+commit e65275bc57f345c111eb12a6b4476ff1ddc3bc24
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Thu Jul 15 13:31:33 2010 +0200
+
+ Add foreign struct support for GVariant
+
+ * gi/pygi-invoke.c: Wrap foreign structs returned by constructors
+ * gi/pygi-foreign.c: Register foreign support for GVariant
+ * gi/pygi-struct.c: properly release foreign structs
+ * gi/pygi-argument.c, gi/pygi-foreign-cairo.c, gi/pygi.h: Adapt to
+ API changes
+ * tests/test_everything.py: Add basic tests for GVariant
+
+ 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 ++++
+ 9 files changed, 110 insertions(+), 69 deletions(-)
+
+commit 3b3bd4da3fbc993fa7f7cfb46ed4e67671c94cc0
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Mon Jul 12 11:19:06 2010 +0200
+
+ Add HACKING to MANIFEST.in
+
+ MANIFEST.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 40bf08ff001b119c7daf709197005ef6480216c5
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Mon Jul 12 11:18:04 2010 +0200
+
+ Add HACKING file with instructions for releasing
+
+ HACKING | 14 ++++++++++++++
+ 1 file changed, 14 insertions(+)
+
+commit 3b9dffe7cc3820dfb84fd968fc604899601c5dc4
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Mon Jul 12 11:09:58 2010 +0200
+
+ Post release version bump to 2.21.6
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 42a5a0897b38156ae010c396ea254abf502f35de
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Mon Jul 12 11:00:29 2010 +0200
+
+ Update NEWS and release PyGObject-2.21.5
+
+ NEWS | 17 +++++++++++++++++
+ 1 file changed, 17 insertions(+)
+
+commit 5857f25c1c6e25b79e6134558bd7151bc6c30ef7
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Mon Jul 12 11:00:20 2010 +0200
+
+ Pre-release version bump to 2.21.5
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit e500adc3ac19ef6f436809e5a8828ac7e8db28f6
+Author: Florian Müllner <florian.muellner@gmail.com>
+Date: Sat Jul 10 22:35:13 2010 +0200
+
+ Shut up some compiler warnings
+
+ Remove unused variables, make sure variables are properly initialized.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=624066
+
+ gi/pygi-callbacks.c | 1 -
+ gi/pygi-closure.c | 2 +-
+ gi/pygi-invoke.c | 1 -
+ 3 files changed, 1 insertion(+), 3 deletions(-)
+
+commit 2efa18afbcc2fac1c90958535b2f80e6e730ee56
+Author: =?UTF-8?q?Florian=20M=C3=BCllner?= <florian.muellner@gmail.com>
+Date: Mon Jul 12 10:31:42 2010 +0200
+
+ Adjust to API break in GObject-Introspection
+
+ As of commit 5cb925b20, many type_tags for standard C types have
+ been removed - namely machine-dependent integer types and derived
+ types (size_t, time_t).
+
+ Most removals are just synonyms of other types, so their removal
+ should not have too much impact, with the exception of time_t,
+ which was translated to a native datetime object before.
+
+ Also remove time_t tests (Tomeu Vizoso).
+
+ 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 --------
+ 6 files changed, 5 insertions(+), 218 deletions(-)
+
+commit 27a417c71f8c122e46c7472663bb25c17413f103
+Author: John (J5) Palmieri <johnp@redhat.com>
+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 +++---
+ 12 files changed, 37 insertions(+), 26 deletions(-)
+
+commit e7daae919c2c6ae35d3927f0006252aacd49ea86
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Jul 8 15:38:07 2010 -0400
+
+ demo fixes to keep up with Gtk+
+
+ * treeiter changes to reflect caller-allocate annotations
+ * 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 +++++--------
+ 3 files changed, 24 insertions(+), 23 deletions(-)
+
+commit 3d9fd6391710cc33058394d6821e4d4e11f09b22
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Jul 8 12:54:43 2010 -0400
+
+ override test fixes for new GTK+ annotations
+
+ tests/test_overrides.py | 23 +++++++++++++----------
+ 1 file changed, 13 insertions(+), 10 deletions(-)
+
+commit 7a400f8139b70ddfe7c949035e0851689951c647
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date: Thu Jul 8 12:42:25 2010 +0200
+
+ Fix warning.
+
+ gi/pygi-argument.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 39fd0a85a3de06b1b877d1125f91036409886373
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jul 7 15:48:36 2010 -0400
+
+ fix up treeiter usage due to caller-allocates annotations in gtk+
+
+ * we still don't pass tests because the caller-allocates code path
+ does not
+ handle the case where the parameter is followed by a regular
+ in parameter
+
+ gi/overrides/Gtk.py | 7 +++----
+ tests/test_overrides.py | 21 +++++++++++----------
+ 2 files changed, 14 insertions(+), 14 deletions(-)
+
+commit 4d970b75dc5c75c1bec04cb2954c9985b476070c
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Jul 6 17:50:10 2010 -0400
+
+ add entry completion demo
+
+ demos/gtk-demo/demos/Entry/entry_completion.py | 87
+ ++++++++++++++++++++++++++
+ 1 file changed, 87 insertions(+)
+
+commit f3531eaa1bfa4e01651d35cd587384d30a398ba8
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Jul 6 17:49:18 2010 -0400
+
+ string changes
+
+ demos/gtk-demo/demos/Entry/entry_buffer.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit baf1e9bb550c7bf45e2ac0b70ba29c434ef1ccc6
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Jul 6 17:27:04 2010 -0400
+
+ add the Entry demo directory and the entry_buffer demo
+
+ demos/gtk-demo/demos/Entry/__init__.py | 0
+ demos/gtk-demo/demos/Entry/entry_buffer.py | 73
+ ++++++++++++++++++++++++++++++
+ 2 files changed, 73 insertions(+)
+
+commit f2b1d222120f055bec9339cca55c9cc90f538c00
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Jul 6 17:26:03 2010 -0400
+
+ fix loading of demo modules to support sub modules
+
+ demos/gtk-demo/gtk-demo.py | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+commit 4f9390fb1892b13ab2ea00ed66c5000a40f09029
+Author: John (J5) Palmieri <johnp@redhat.com>
+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
+ ++++++++++++++++++++++++++++++++--------------
+ 1 file changed, 54 insertions(+), 22 deletions(-)
+
+commit dc2249a3ecf339008351316217191d0551ccc588
+Author: Jose Aliste <jaliste@src.gnome.org>
+Date: Mon Jul 5 14:36:59 2010 -0400
+
+ Add __name__ to DynamicModule class.
+
+ Fixes bug #623486.
+
+ gi/module.py | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 2357bca8d14539894b6bd0acfdc18d30b4bb4db6
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date: Mon Jul 5 16:11:07 2010 +0200
+
+ Do not override GdkRectangle.
+
+ This class was lately removed from gtk+ 3, so there is no need
+ to override
+ it anymore.
+
+ gi/overrides/Gdk.py | 19 -------------------
+ 1 file changed, 19 deletions(-)
+
+commit daca09dc2c2306d4fa82a68bbdd147d4b170a1e7
+Author: Philip Withnall <philip.withnall@collabora.co.uk>
+Date: Tue Jun 29 16:37:36 2010 +0100
+
+ Add override for TreeModel implementing __len__()
+
+ Closes: bgo#622882
+
+ gi/overrides/Gtk.py | 11 +++++++++--
+ tests/test_overrides.py | 5 +++++
+ 2 files changed, 14 insertions(+), 2 deletions(-)
+
+commit bb8adb7f02f0c5494df2cb6e535e44d23902e8f5
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Tue Jun 29 11:27:13 2010 +0200
+
+ Update NEWS and release PyGObject-2.21.4
+
+ NEWS | 27 +++++++++++++++++++++++++--
+ 1 file changed, 25 insertions(+), 2 deletions(-)
+
+commit 2d473ee17be4671244bb4a2a0953a21ccf2a0df6
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Tue Jun 29 10:55:03 2010 +0200
+
+ Remove files from the makefiles
+
+ gi/Makefile.am | 4 +---
+ gobject/Makefile.am | 3 +--
+ 2 files changed, 2 insertions(+), 5 deletions(-)
+
+commit 89827314fd183eac07443c8e9d275ca9d4ce59df
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Tue Jun 29 10:27:39 2010 +0200
+
+ Build the cairo shim as a python module so the _gi module stops
+ linking to it
+
+ 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 ++++++++++++++--
+ 9 files changed, 196 insertions(+), 169 deletions(-)
+
+commit a6a90551311bc64f037cbd442e13f70c30060871
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Mon Jun 28 14:20:43 2010 +0200
+
+ Remove pygi-external.h
+
+ 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 +-
+ 11 files changed, 40 insertions(+), 111 deletions(-)
+
+commit 8b3a3baacb45cb3f9112f7597607602fa89c6634
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Fri Jun 25 13:54:57 2010 +0200
+
+ Revert "correctly handle floating objects in gtk"
+
+ This reverts commit 60fdf4b8f738dd0f5c190bc18ddf010032d3c5ca.
+
+ Conflicts:
+
+ gi/gimodule.c
+ tests/test_everything.py
+
+ gi/gimodule.c | 13 -------------
+ tests/test_everything.py | 3 ++-
+ 2 files changed, 2 insertions(+), 14 deletions(-)
+
+commit 0f2a09d7eae63abb71723b7cd8fb290dcba33426
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Fri Jun 25 13:49:04 2010 +0200
+
+ Make valgrind happy again
+
+ * 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 ++++++--
+ 3 files changed, 9 insertions(+), 2 deletions(-)
+
+commit 63afe55906c8637e913783e65b82b540b81bed65
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Jun 24 16:13:37 2010 -0400
+
+ add drawing area demo
+
+ demos/gtk-demo/demos/drawingarea.py | 249
+ ++++++++++++++++++++++++++++++++++++
+ 1 file changed, 249 insertions(+)
+
+commit 8bba5f842393a284367cdd15f3d32a8c7745516a
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Jun 24 14:11:00 2010 -0400
+
+ sort the demo list
+
+ demos/gtk-demo/gtk-demo.py | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit b9da82742701ed276b01dee39626cd71cbef8556
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Jun 24 13:56:18 2010 -0400
+
+ rename iter to treeiter so we aren't using a python reserved word
+
+ demos/gtk-demo/gtk-demo.py | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+commit c93935621f2fb1ff5e8c424ae884bd684ea68e50
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Jun 24 13:47:54 2010 -0400
+
+ Fixup for change in buffer API
+
+ * Part of buffer API dealing with TextIter now marked (out
+ caller-allocates)
+
+ demos/gtk-demo/gtk-demo.py | 10 ++++------
+ 1 file changed, 4 insertions(+), 6 deletions(-)
+
+commit 8d9516a593a515290109401a9db7aa259b5aa35c
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jun 23 17:04:33 2010 -0400
+
+ add ListStore, TreeStore and TreeViewColumn APIs
+
+ * this is enough to support the gtk-demo.py shell
+ * TreeStore and ListStore allow passing in as an argument list
+ of either python or GLib types to the constructor as a description
+ of the columns in the model
+ * TreeStore and ListStore override the append method, allowing
+ the application developer to send in a list of column values
+ for one row in the model. Unlike the append in C which
+ just returns an iter that you can then add data to,
+ this append actualy appends data in one step
+ * TreeViewColumn overrides the constructor to allow the adding
+ of attributes and a cell renderer when constructing the
+ column
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=620405
+
+ gi/overrides/Gtk.py | 59 ++++++++++++++++++++++++++++++++++++++++++
+ tests/test_overrides.py | 69
+ +++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 128 insertions(+)
+
+commit c305fbeb7bdb44623d5198f4a8f0a374d529fdf4
+Author: Johan Dahlin <johan@gnome.org>
+Date: Wed Jun 23 14:34:28 2010 -0300
+
+ [gi] Add -I../gobject to cflags
+
+ Since we're no longer pulling in pygobject cflags,
+ add this to be able to include pygobject.h
+
+ gi/Makefile.am | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit 53a093198851e3ba5abd1f6c3314737decd401d8
+Author: Ignacio Casal Quinteiro <icq@gnome.org>
+Date: Wed Jun 23 18:09:19 2010 +0200
+
+ Add unit test for add_actions user data.
+
+ tests/test_overrides.py | 20 +++++++++++++++-----
+ 1 file changed, 15 insertions(+), 5 deletions(-)
+
+commit 7f829af620cba768de619dd9f228d5d2ebf7fee4
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Wed Jun 23 18:06:46 2010 +0200
+
+ Pass user_data param when adding actions
+
+ gi/overrides/Gtk.py | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+commit 8f537ccd62f41ebe0db3853e2ae08080666f598f
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jun 23 12:02:04 2010 -0400
+
+ add an exception type to the try/except block
+
+ * we should always specify what exception types we are expecting
+
+ gi/overrides/Gtk.py | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit f140a8ebf59347162b67b550bd6f62d2eafad29a
+Author: Johan Dahlin <johan@gnome.org>
+Date: Wed Jun 23 12:31:51 2010 -0300
+
+ Avoid duplicating required versions
+
+ Avoid duplicating the version of all required packages.
+ Also remove cyclic dependency of pygobject
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=622503
+
+ configure.ac | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+commit e8bd25355fbe7de38a28b7a0583167a2c0ffc31f
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Jun 22 15:03:08 2010 -0400
+
+ return PyList instead of PyTuple for array, return empty list for
+ NULL arrays
+
+ * returns an empty list when a NULL array (empty array) is encountered
+ * fix tests to check for lists instead of tuples or None
+ * 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
+ ++++++++++++++++++++++++------------------------
+ 3 files changed, 49 insertions(+), 47 deletions(-)
+
+commit f312e6a49505eca07815146cfbdb0e48e5b3b8a8
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Wed Jun 23 15:42:29 2010 +0200
+
+ Fix 'make distcheck'
+
+ * Makefile.am: put the tests dir to the end
+ * g*/Makefile.am: build the .so when running make check
+ * tests/Makefile.am: Don't pass the src dir to runtests.py and
+ remove (hopefully) unneeded cruft.
+ * 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 +++++-------
+ 8 files changed, 15 insertions(+), 26 deletions(-)
+
+commit 5f82e7d2909cbbbecbf5dbee2342f516c0d1f371
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+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 +++++++--------------
+ 5 files changed, 28 insertions(+), 26 deletions(-)
+
+commit cc3ea77318ee572673d2a044deca9001366b0f08
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Wed Jun 23 12:26:51 2010 +0200
+
+ Make sure that sys.argv is a list and not a sequence.
+
+ Because Python's optparse will try to do things on it that can
+ only be done with list.
+
+ gi/overrides/Gtk.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 3d72b8248cc534a689dee5679a729b2fba56c528
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+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 +++
+ 1 file changed, 3 insertions(+)
+
+commit c7c94ef349c30597f2f10d90f74718d678ec7add
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Jun 22 14:45:48 2010 -0400
+
+ we shouldn't g_array_free NULL pointers
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=622425
+
+ gi/pygi-info.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+commit fb1ee243493616d7a7e4f6924c574db39f5a423d
+Merge: acf7b43 5f9cb91
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Wed Jun 23 12:53:05 2010 +0200
+
+ Merge branch 'pygi'
+
+commit 5f9cb91c2b3851056d5e2d7ff1401d4ce2be7c1f
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Jun 22 15:39:46 2010 -0400
+
+ remove unneeded TextIter creation in the tests
+
+ tests/test_overrides.py | 3 ---
+ 1 file changed, 3 deletions(-)
+
+commit 53c355d2cc0894e7f551e9b4eb719b89188a978e
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Jun 21 11:42:12 2010 -0400
+
+ add override for TextBuffer
+
+ * TextBuffer.create_tag takes vargs which we can't bind yet so
+ change it
+ to except a keyword list of properties
+ * override the insert* methods so the developer does not have to
+ enter a length
+ - lengths are already encapsulated by a string in Python
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=620583
+
+ gi/overrides/Gtk.py | 51
+ +++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_overrides.py | 25 ++++++++++++++++++++++++
+ 2 files changed, 76 insertions(+)
+
+commit 1d89a88b212c7411ad28e74eda80ae751de92e50
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Jun 22 12:46:39 2010 -0400
+
+ fix up some build issues
+
+ * configure.ac: moved AM_PROG_CC_C_O below AM_PROG_CC_STDC because
+ autoconf
+ was complaining that AM_PROG_CC_STDC can't come after AM_PROC_CC_C_0
+ * tests/Makefile.am: fix check-local target to use EXEC_NAME so
+ targets like
+ make check.gdb work
+
+ configure.ac | 2 +-
+ tests/Makefile.am | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+commit 4fe0d94c219deb69a2309693202309c53a0e5e69
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Jun 22 11:50:30 2010 -0400
+
+ make the overrides file git friendly by appending to __all__ after
+ each override
+
+ * modifying the __all__ line for each override would confuse git as
+ each override needs to get seperate approval before comitting.
+ Because of
+ this commits would not always go in in the same order as they
+ are created.
+ Also different people working on the same file would start from
+ different
+ commit states. This caused conflicts when patches were merged.
+ * instead of modifying a single hard coded list we now append to
+ the list
+ 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 +++++--
+ 3 files changed, 13 insertions(+), 12 deletions(-)
+
+commit 49321b934603e1ec69fb04082c63902970907d2b
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Sun Jun 20 13:27:34 2010 +0200
+
+ Override Dialog constructor and add_buttons method
+
+ gi/overrides/Gtk.py | 46
+ +++++++++++++++++++++++++++++++++++++++++++++-
+ tests/test_overrides.py | 16 ++++++++++++++++
+ 2 files changed, 61 insertions(+), 1 deletion(-)
+
+commit acf7b43a41ce814f0c57ce609a090826f04771db
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Mon Jun 21 18:17:38 2010 +0200
+
+ Post release version bump to 2.21.4
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit a7fa8b80406227a06cf18f8675dbc1f471283829
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Mon Jun 21 18:10:32 2010 +0200
+
+ Update NEWS and release PyGObject-2.21.3
+
+ NEWS | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+commit 79acac7b86ec52cd3681d94d7f116314c3f00167
+Author: Ludovic L'Hours <ludovic.lhours@gmail.com>
+Date: Tue Jul 21 16:28:34 2009 +0200
+
+ Proper handling of null-ok in virtual methods
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=589253
+
+ codegen/codegen.py | 2 ++
+ codegen/reversewrapper.py | 18 +++++++++++++++---
+ 2 files changed, 17 insertions(+), 3 deletions(-)
+
+commit 259a4b08f009aa01451caed20dbb6e68b402da2a
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Mon Jun 21 17:34:54 2010 +0200
+
+ Add *~ and *.orig to .gitignore
+
+ .gitignore | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+commit 00a85f6a844714d1715e2f67431747d1a4cdacb1
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Mon Jun 21 17:33:56 2010 +0200
+
+ Fall back to use the floating references API in glib if there isn't
+ a sinkfunc defined.
+
+ * tests/*: Add ref counting tests for floating objects
+ * gobject/gobjectmodule.c, gobject/pygobject.c: Fall back to
+ g_object_ref_sink
+ or g_object_ref if there isn't a sinkfunc defined. Make sure that
+ pygobject_sink gets called only once per GObject instance.
+
+ 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
+ +++++++++++++++++++++++++++++++++++++++++++++++
+ 8 files changed, 315 insertions(+), 23 deletions(-)
+
+commit e71238a699ae783fd1a59c8a76e3555d8066cf82
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Mon Jun 21 13:06:13 2010 +0200
+
+ Revert "Drop sinkfuncs."
+
+ This reverts commit 04627488220b4f2a16e11f8982af7866fea9f7eb.
+
+ gobject/gobjectmodule.c | 3 ++-
+ gobject/pygobject.c | 42 ++++++++++++++++++++++++++++++++++--------
+ gobject/pygobject.h | 1 -
+ 3 files changed, 36 insertions(+), 10 deletions(-)
+
+commit b2661054d6bde673484eab472e69ca021124528d
+Author: Johan Dahlin <johan@gnome.org>
+Date: Sun Jun 20 11:09:57 2010 -0300
+
+ Merge back pygi
+
+ For reasons outlined at:
+ http://mail.gnome.org/archives/python-hackers-list/2010-June/msg00009.html
+
+ Makefile.am | 14 +-
+ configure.ac | 29 +-
+ demos/gtk-demo/demos/__init__.py | 0
+ demos/gtk-demo/demos/appwindow.py | 411 +++++
+ demos/gtk-demo/demos/assistant.py | 134 ++
+ demos/gtk-demo/demos/builder.py | 57 +
+ demos/gtk-demo/demos/button_box.py | 121 ++
+ demos/gtk-demo/demos/clipboard.py | 238 +++
+ demos/gtk-demo/demos/colorselector.py | 121 ++
+ demos/gtk-demo/demos/combobox.py | 282 ++++
+ 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 ++++
+ examples/Makefile.am | 2 +-
+ examples/cairo-demo.py | 121 ++
+ gi/Makefile.am | 4 +-
+ gi/demos/gtk-demo/demos/__init__.py | 0
+ gi/demos/gtk-demo/demos/appwindow.py | 411 -----
+ gi/demos/gtk-demo/demos/assistant.py | 134 --
+ gi/demos/gtk-demo/demos/builder.py | 57 -
+ gi/demos/gtk-demo/demos/button_box.py | 121 --
+ gi/demos/gtk-demo/demos/clipboard.py | 238 ---
+ gi/demos/gtk-demo/demos/colorselector.py | 121 --
+ gi/demos/gtk-demo/demos/combobox.py | 282 ----
+ gi/demos/gtk-demo/demos/data/alphatest.png | Bin 26529 ->
+ 0 bytes
+ gi/demos/gtk-demo/demos/data/apple-red.png | Bin 3545 -> 0 bytes
+ gi/demos/gtk-demo/demos/data/background.jpg | Bin 22219 ->
+ 0 bytes
+ gi/demos/gtk-demo/demos/data/demo.ui | 258 ----
+ gi/demos/gtk-demo/demos/data/floppybuddy.gif | Bin 5216 -> 0 bytes
+ gi/demos/gtk-demo/demos/data/gnome-applets.png | Bin 3090 -> 0 bytes
+ gi/demos/gtk-demo/demos/data/gnome-calendar.png | Bin 2755 -> 0 bytes
+ gi/demos/gtk-demo/demos/data/gnome-foot.png | Bin 2916 -> 0 bytes
+ .../gtk-demo/demos/data/gnome-fs-directory.png | Bin 2044 -> 0 bytes
+ gi/demos/gtk-demo/demos/data/gnome-fs-regular.png | Bin 1795 -> 0 bytes
+ gi/demos/gtk-demo/demos/data/gnome-gimp.png | Bin 3410 -> 0 bytes
+ gi/demos/gtk-demo/demos/data/gnome-gmush.png | Bin 3244 -> 0 bytes
+ gi/demos/gtk-demo/demos/data/gnome-gsame.png | Bin 4263 -> 0 bytes
+ gi/demos/gtk-demo/demos/data/gnu-keys.png | Bin 3852 -> 0 bytes
+ gi/demos/gtk-demo/demos/data/gtk-logo-rgb.gif | Bin 6427 -> 0 bytes
+ gi/demos/gtk-demo/demos/test.py | 14 -
+ gi/demos/gtk-demo/gtk-demo.py | 266 ----
+ gi/examples/Makefile.am | 2 -
+ gi/examples/cairo-demo.py | 121 --
+ gi/tests/test_everything.py | 270 ----
+ gi/tests/test_gi.py | 1624
+ --------------------
+ gi/tests/test_overrides.py | 132 --
+ pygi-Makefile.am | 28 -
+ pygi-configure.ac | 60 -
+ pygi.doap | 34 -
+ pygobject.doap | 16 +-
+ tests/Makefile.am | 23 +-
+ tests/test_everything.py | 270 ++++
+ tests/test_gi.py | 1624
+ ++++++++++++++++++++
+ tests/test_overrides.py | 132 ++
+ 68 files changed, 4124 insertions(+), 4186 deletions(-)
+
+commit 597bd64319d7966045b5b8613ca6fc85668c3f56
+Merge: ec8d148 fa91dfd
+Author: Johan Dahlin <johan@gnome.org>
+Date: Sun Jun 20 10:53:46 2010 -0300
+
+ Merge branch 'pygi-merge'
+
+commit fa91dfd3ec79ecd03c9fb59b9363eab4a5b3ff2b
+Author: Johan Dahlin <johan@gnome.org>
+Date: Sun Jun 20 10:53:36 2010 -0300
+
+ Prepare pygi move
+
+ .gitignore | 40 -
+ HACKING | 26 -
+ Makefile.am | 28 -
+ autogen.sh | 166 --
+ configure.ac | 60 -
+ demos/gtk-demo/demos/__init__.py | 0
+ demos/gtk-demo/demos/appwindow.py | 411 -----
+ demos/gtk-demo/demos/assistant.py | 134 --
+ demos/gtk-demo/demos/builder.py | 57 -
+ demos/gtk-demo/demos/button_box.py | 121 --
+ demos/gtk-demo/demos/clipboard.py | 238 ---
+ demos/gtk-demo/demos/colorselector.py | 121 --
+ demos/gtk-demo/demos/combobox.py | 282 ----
+ demos/gtk-demo/demos/data/alphatest.png | Bin 26529 ->
+ 0 bytes
+ demos/gtk-demo/demos/data/apple-red.png | Bin 3545 -> 0 bytes
+ demos/gtk-demo/demos/data/background.jpg | Bin 22219 ->
+ 0 bytes
+ demos/gtk-demo/demos/data/demo.ui | 258 ----
+ demos/gtk-demo/demos/data/floppybuddy.gif | Bin 5216 -> 0 bytes
+ demos/gtk-demo/demos/data/gnome-applets.png | Bin 3090 -> 0 bytes
+ demos/gtk-demo/demos/data/gnome-calendar.png | Bin 2755 -> 0 bytes
+ demos/gtk-demo/demos/data/gnome-foot.png | Bin 2916 -> 0 bytes
+ demos/gtk-demo/demos/data/gnome-fs-directory.png | Bin 2044 -> 0 bytes
+ demos/gtk-demo/demos/data/gnome-fs-regular.png | Bin 1795 -> 0 bytes
+ demos/gtk-demo/demos/data/gnome-gimp.png | Bin 3410 -> 0 bytes
+ demos/gtk-demo/demos/data/gnome-gmush.png | Bin 3244 -> 0 bytes
+ demos/gtk-demo/demos/data/gnome-gsame.png | Bin 4263 -> 0 bytes
+ demos/gtk-demo/demos/data/gnu-keys.png | Bin 3852 -> 0 bytes
+ demos/gtk-demo/demos/data/gtk-logo-rgb.gif | Bin 6427 -> 0 bytes
+ demos/gtk-demo/demos/test.py | 14 -
+ demos/gtk-demo/gtk-demo.py | 266 ----
+ examples/Makefile.am | 2 -
+ examples/cairo-demo.py | 121 --
+ gi/.gitignore | 40 +
+ gi/HACKING | 26 +
+ gi/demos/gtk-demo/demos/__init__.py | 0
+ gi/demos/gtk-demo/demos/appwindow.py | 411 +++++
+ gi/demos/gtk-demo/demos/assistant.py | 134 ++
+ gi/demos/gtk-demo/demos/builder.py | 57 +
+ gi/demos/gtk-demo/demos/button_box.py | 121 ++
+ gi/demos/gtk-demo/demos/clipboard.py | 238 +++
+ gi/demos/gtk-demo/demos/colorselector.py | 121 ++
+ gi/demos/gtk-demo/demos/combobox.py | 282 ++++
+ gi/demos/gtk-demo/demos/data/alphatest.png | Bin 0 ->
+ 26529 bytes
+ gi/demos/gtk-demo/demos/data/apple-red.png | Bin 0 -> 3545 bytes
+ gi/demos/gtk-demo/demos/data/background.jpg | Bin 0 ->
+ 22219 bytes
+ gi/demos/gtk-demo/demos/data/demo.ui | 258 ++++
+ gi/demos/gtk-demo/demos/data/floppybuddy.gif | Bin 0 -> 5216 bytes
+ gi/demos/gtk-demo/demos/data/gnome-applets.png | Bin 0 -> 3090 bytes
+ gi/demos/gtk-demo/demos/data/gnome-calendar.png | Bin 0 -> 2755 bytes
+ gi/demos/gtk-demo/demos/data/gnome-foot.png | Bin 0 -> 2916 bytes
+ .../gtk-demo/demos/data/gnome-fs-directory.png | Bin 0 -> 2044 bytes
+ gi/demos/gtk-demo/demos/data/gnome-fs-regular.png | Bin 0 -> 1795 bytes
+ gi/demos/gtk-demo/demos/data/gnome-gimp.png | Bin 0 -> 3410 bytes
+ gi/demos/gtk-demo/demos/data/gnome-gmush.png | Bin 0 -> 3244 bytes
+ gi/demos/gtk-demo/demos/data/gnome-gsame.png | Bin 0 -> 4263 bytes
+ gi/demos/gtk-demo/demos/data/gnu-keys.png | Bin 0 -> 3852 bytes
+ gi/demos/gtk-demo/demos/data/gtk-logo-rgb.gif | Bin 0 -> 6427 bytes
+ gi/demos/gtk-demo/demos/test.py | 14 +
+ gi/demos/gtk-demo/gtk-demo.py | 266 ++++
+ gi/examples/Makefile.am | 2 +
+ gi/examples/cairo-demo.py | 121 ++
+ gi/tests/Makefile.am | 22 +
+ gi/tests/runtests.py | 21 +
+ gi/tests/test_everything.py | 270 ++++
+ gi/tests/test_gi.py | 1624
+ ++++++++++++++++++++
+ gi/tests/test_overrides.py | 132 ++
+ pygi-Makefile.am | 28 +
+ pygi-configure.ac | 60 +
+ tests/Makefile.am | 22 -
+ tests/runtests.py | 21 -
+ tests/test_everything.py | 270 ----
+ tests/test_gi.py | 1624
+ --------------------
+ tests/test_overrides.py | 132 --
+ 73 files changed, 4248 insertions(+), 4414 deletions(-)
+
+commit ec8d148eccbb3714093f21b595ea77ae4c7c3bce
+Author: Johan Dahlin <johan@gnome.org>
+Date: Sun Jun 20 10:49:55 2010 -0300
+
+ [giounix] Make it possible to compile on glib 2.20
+
+ gio/unix.override | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 606018a2c551d890fc2bb987d99683f777598bda
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Jun 7 16:32:29 2010 -0400
+
+ Don't free transfer full struct pointers because we can't do it safely
+
+ * Most libraries which are sending back structs as transfer-full
+ are either annotated incorrectly or should be sending boxed types
+ * It is much better to throw a warning and leak memory than it is to
+ call free on an unknown struct pointer. Doing so may cause
+ a double free
+ * Specific case is gdk_atom_intern where a GdkAtom is not actually
+ a pointer
+ but an integer stuffed into a pointer type
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=620898
+
+ gi/pygi-argument.c | 9 ++++++++-
+ gi/pygi-invoke.c | 11 +++++++++--
+ 2 files changed, 17 insertions(+), 3 deletions(-)
+
+commit 433ee2aa029a1482961f478252a06492bd3498e6
+Author: Sjoerd Simons <sjoerd.simons@collabora.co.uk>
+Date: Tue Jun 15 11:42:28 2010 +0200
+
+ Release the lock when potentially invoking Python code.
+
+ * gobject/pygobject.c: Release GIL lock when retrieving properties
+ and when clearing a PyGObject.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=530935
+
+ gobject/pygobject.c | 11 ++++++++++-
+ 1 file changed, 10 insertions(+), 1 deletion(-)
+
+commit aa1e82c7eb87620bd73e1edb486f5b9e0d49aa96
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Jun 14 18:36:57 2010 -0400
+
+ add combobox example
+
+ demos/gtk-demo/demos/combobox.py | 282
+ +++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 282 insertions(+)
+
+commit a8668694da59c2dd959c875f13337e64ca22f7e9
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Jun 14 13:43:53 2010 -0400
+
+ fix leak in the allow None callbacks patch
+
+ gi/pygi-callbacks.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 729072e73d65e7fd5b5197ebe5a8c53a449d0ec0
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Jun 7 17:12:09 2010 -0400
+
+ Allow passing None for callbacks which are annotated allow-none
+
+ * Many callbacks are optional parameters yet we were asserting on
+ Py_None
+ * We now check to see if allow_none is set when setting up callbacks,
+ if it is set and py_function == Py_None, we set the closure to NULL
+ and return
+ * pygi-invoke.c now checks to see if the closure == NULL when setting
+ arguments
+ * if it is NULL there is no reason to set the the destroy notify
+ handler
+ so we skip that too
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=620906
+
+ gi/pygi-callbacks.c | 7 +++++++
+ gi/pygi-invoke.c | 14 +++++++++++---
+ tests/test_everything.py | 4 ++++
+ 3 files changed, 22 insertions(+), 3 deletions(-)
+
+commit a3eb5c7de5836c37aa7ae01dbe98996ec2632c17
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Mon Jun 14 19:06:45 2010 +0200
+
+ Fix to match latest gtk annotations
+
+ demos/gtk-demo/demos/appwindow.py | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+commit 6306dd73cc74aa9202569eac0eaaa5f825c8dc59
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Jun 8 15:03:49 2010 -0400
+
+ fix variable member names in Gdk.Color override
+
+ * override was using r, g, and b for the red, green, blue components
+ but
+ the struct specifies red, green, blue so we need to use those names
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=621007
+
+ gi/overrides/Gdk.py | 10 +++++-----
+ tests/test_overrides.py | 6 +++---
+ 2 files changed, 8 insertions(+), 8 deletions(-)
+
+commit d182630e1128fef6f1c2aea28ccd8da4bddd2c8f
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Thu Jun 10 20:23:13 2010 +0200
+
+ Post release version bump to 2.21.3
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit c4e64d5d264593051b9a3131e4985a58e8e76f8b
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Thu Jun 10 20:21:13 2010 +0200
+
+ Update NEWS and release PyGObject-2.21.2
+
+ NEWS | 26 ++++++++++++++++++++++++++
+ 1 file changed, 26 insertions(+)
+
+commit e0fe844d5fe8f7e26316f197444fd4143ed36adf
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Thu Jun 10 20:09:07 2010 +0200
+
+ Remove deleted files from the Makefile.
+
+ test_conversion.py
+ test_enum.py
+ test_gtype.py
+ test_subtype.py
+
+ tests/Makefile.am | 4 ----
+ 1 file changed, 4 deletions(-)
+
+commit 495a301cb81c5e914bcef905999265604faa27fc
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Thu Jun 10 19:39:09 2010 +0200
+
+ Add myself to the maintainers list in the README
+
+ README | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 04627488220b4f2a16e11f8982af7866fea9f7eb
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Thu Jun 10 19:24:31 2010 +0200
+
+ Drop sinkfuncs.
+
+ * use g_object methods to sink floating refs instead of allowing
+ custom sink functions to be registered
+ * we now sink inside of pygobject_new_full to handle cases where
+ a library creates its own gobject via g_object_new and just
+ needs a python wrapper
+ - a previous patch had done the sink when creating the gobject,
+ since it needs to call pygobject_new_full to wrap the object,
+ this patch handles both cases (e.g. pygobject created object
+ and externally created gobject)
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=583909
+
+ gobject/gobjectmodule.c | 3 +--
+ gobject/pygobject.c | 42 ++++++++----------------------------------
+ gobject/pygobject.h | 1 +
+ 3 files changed, 10 insertions(+), 36 deletions(-)
+
+commit 07df124dc06cf506634e95d08397f50a2d07fce2
+Author: Steve Frécinaux <code@istique.net>
+Date: Mon Jun 7 09:47:23 2010 +0200
+
+ Make the "wrong argument count" exception more explicit.
+
+ Previously we had messages like this one:
+ TypeError: takes exactly 2 argument(s) (1 given)
+
+ With this patch, they become like this:
+ TypeError: get_end_iter() takes exactly 2 argument(s) (1 given)
+
+ It makes things much easier to debug when there are several pygi calls
+ on the same line.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=620804
+
+ gi/pygi-invoke.c | 3 ++-
+ tests/test_everything.py | 6 ++++++
+ 2 files changed, 8 insertions(+), 1 deletion(-)
+
+commit b435319fe830a909cc4d414533b3b66574931e24
+Author: Steve Frécinaux <code@istique.net>
+Date: Mon Jun 7 09:54:06 2010 +0200
+
+ Use bash explicitely in the pre-commit hook.
+
+ The "builtin" command is not available in all sh flavours, so the
+ pre-commit hook is going to fail if you use dash or others instead of
+ bash as your default 'sh' alias.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=620805
+
+ pre-commit.hook | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit e9ee2916494eb7654004925c1ee1e94f99b14f1a
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Jun 8 16:55:26 2010 -0400
+
+ colorselector demo
+
+ demos/gtk-demo/demos/colorselector.py | 121
+ ++++++++++++++++++++++++++++++++++
+ 1 file changed, 121 insertions(+)
+
+commit ec598128de9e90dccab662ed2f5511c8d659e156
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Tue Jun 8 15:48:33 2010 +0200
+
+ Update PyGObject dependency to 2.21.1
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 87774a17bd607724a56e18c2eb1ac71b04b7079d
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Tue Jun 8 10:40:39 2010 +0200
+
+ Add myself to maintainers
+
+ MAINTAINERS | 4 ++++
+ pygobject.doap | 7 +++++++
+ 2 files changed, 11 insertions(+)
+
+commit 46c91a11d448e5e11d142d3362aff1483226bca4
+Author: Colin Walters <walters@verbum.org>
+Date: Wed May 5 13:54:27 2010 -0400
+
+ Clear error if we failed the import
+
+ Otherwise we leave the exception set which causes bizarre problems
+ later in unrelated code.
+
+ https://bugzilla.redhat.com/show_bug.cgi?id=569885
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=617796
+
+ gobject/pygi-external.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit c1c41576d053cc1cdd8366d8cd1e59fff1c3a9c6
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Jun 7 17:19:30 2010 -0400
+
+ fix some typos and add a link to a patch which fixes a FIXME
+
+ demos/gtk-demo/demos/clipboard.py | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+commit e7fabb5024d94a3166766e5fca740741bc50380a
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon Jun 7 16:21:42 2010 -0400
+
+ clipboard demo
+
+ demos/gtk-demo/demos/clipboard.py | 235
+ ++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 235 insertions(+)
+
+commit e0f1dce5ec58d071759f886697501da6eeea549d
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Sun Jun 6 13:27:46 2010 -0400
+
+ set is_fully_bound to false
+
+ demos/gtk-demo/demos/button_box.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 986db1c73746d3a8ad7d8d5141c7eed194e7b948
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Sat Jun 5 23:53:36 2010 -0400
+
+ new button box demo
+
+ demos/gtk-demo/demos/button_box.py | 121
+ +++++++++++++++++++++++++++++++++++++
+ 1 file changed, 121 insertions(+)
+
+commit e9f5f8a829121e59367bae690442150f144946ad
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Sat Jun 5 23:26:03 2010 -0400
+
+ set is_fully_bound to True fro builder example
+
+ demos/gtk-demo/demos/builder.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit d9968c3a4dea1d4a73a9376009cf486c80ea3da6
+Author: John (J5) Palmieri <johnp@redhat.com>
+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 +-
+ 3 files changed, 21 insertions(+), 21 deletions(-)
+
+commit ffca02536bafb55e8c3bce31cd992365207429f6
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Sat Jun 5 14:54:47 2010 -0400
+
+ add the builder demo
+
+ demos/gtk-demo/demos/builder.py | 57
+ +++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 57 insertions(+)
+
+commit a96dbafdf562a2ac6bde4df27919d3628689dbdb
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Jun 4 17:48:24 2010 -0400
+
+ add assistant demo
+
+ demos/gtk-demo/demos/assistant.py | 134
+ ++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 134 insertions(+)
+
+commit 7e1b8cf32f33d45603aaec76afb0d14be84ffd94
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Jun 4 16:56:46 2010 -0400
+
+ add formatting rules and copyright notice
+
+ demos/gtk-demo/demos/appwindow.py | 19 +++++++++++++++++++
+ 1 file changed, 19 insertions(+)
+
+commit 03b99692b81631d397ab62dcd263341465bcee88
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Jun 4 16:26:54 2010 -0400
+
+ add the gtk-demo app along with a couple of demos
+
+ * note there are still a couple of patches in bugzilla that are
+ needed for this
+ to run correctly:
+ - http://bugzilla-attachments.gnome.org/attachment.cgi?id=162682
+ - http://bugzilla-attachments.gnome.org/attachment.cgi?id=162764
+
+ demos/gtk-demo/demos/__init__.py | 0
+ 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 +++++++++++++++
+ 19 files changed, 931 insertions(+)
+
+commit b3b1f029d8d16cf9bd74160009808147d07e3b3f
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Fri Jun 4 11:25:08 2010 +0200
+
+ Update gobject-introspection dependency to 0.6.14
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 45c4e46ae93bd83a0e3f3550df6c64ce96bbedb4
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Fri Jun 4 11:23:41 2010 +0200
+
+ Post-release version bump to 0.6.1
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 7a94270dac48b67aabc7dbad156cf1180db9cb5e
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Fri Jun 4 08:29:42 2010 +0200
+
+ Pre-release version bump 0.6.0
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 1e42ee6eb25a07a5201f24ffeac18d298a98477e
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri May 28 10:03:11 2010 -0400
+
+ support for caller-allocates annotations for structs
+
+ * out caller-allocates parameters expect an already constructed
+ structure
+ to be passed in by reference. It is then modified and the caller
+ uses the
+ modified value. We support this by using only one level of pointer
+ indirection.
+ * Only structs are considered to be caller-allocates parameters
+ even if
+ they are marked as such by GI. This is because the GI scanner
+ isn't smart
+ enough to correctly guess 100% of the time
+ * GValues are a special case of a caller-allocates parameter when
+ cleaning
+ up (e.g. g_value_unset is called). GValues make no sense in
+ a scripting
+ language. Developers should never deal with them.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=620406
+
+ gi/pygi-invoke.c | 73
+ +++++++++++++++++++++++++++++++++++++++++++++---
+ tests/test_everything.py | 28 +++++++++++++++++++
+ 2 files changed, 97 insertions(+), 4 deletions(-)
+
+commit c3f467e0ae99aa78c2fdb91b973a272d2fe970bd
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Jun 2 14:14:16 2010 -0400
+
+ don't import gobject directly in the tests
+
+ * use from gi.repository import GObject
+
+ tests/test_overrides.py | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+commit 46b5133fea4cd5db57a360b3cbe9ee923e27560c
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Tue Jun 1 14:28:57 2010 +0200
+
+ Wrap C arrays in structs as GArrays before converting to Python
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=620247
+
+ gi/pygi-info.c | 11 +++++++++++
+ tests/test_gi.py | 17 +++++++++++++++++
+ 2 files changed, 28 insertions(+)
+
+commit 5f0f9a9c9145a129a063b041424c3109a24d9ead
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+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 +++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 46 insertions(+)
+
+commit 1319da5b7f483e48a90b0b7489f77236ba26f479
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Wed May 26 12:19:17 2010 +0200
+
+ Apply consistent whitespace formatting with:
+
+ astyle -p -d -c -S -U -M60
+
+ 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 +-
+ 18 files changed, 1544 insertions(+), 1542 deletions(-)
+
+commit 6156f15cb15b4c20e975527227135d49207c520a
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Tue May 25 14:08:51 2010 +0200
+
+ Prepend gi.repository to the __module__ attribute of wrapper classes.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=619597
+
+ gi/module.py | 4 ++--
+ tests/test_gi.py | 4 +++-
+ 2 files changed, 5 insertions(+), 3 deletions(-)
+
+commit 097b92983b7a322c58fecb1e691ba6ddf5035548
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Tue May 25 14:17:13 2010 +0200
+
+ Correctly identify at creation time:
+
+ * if the class is defined in python -> hook up vfuncs
+ * if the class wraps a type from a .typelib -> set atributes
+ * else (GLocalFile) -> do nothing
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=619604
+
+ gi/types.py | 15 +++++++++++----
+ 1 file changed, 11 insertions(+), 4 deletions(-)
+
+commit 686e10fcdb108af9758eb025a3447813c3513a93
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Thu Apr 29 10:55:13 2010 +0200
+
+ Dont complain if another base has implemented the method
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=617153
+
+ gi/types.py | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit 9f34d120845d936b04546a5cea599ec67e9181a7
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon May 24 16:16:50 2010 -0400
+
+ fix up Builder override, add new override methods, and add unit tests
+
+ * check for flags when connecting signals now that we get gi
+ GObject types
+ * override the add_from_string and add_objects_from string overrides
+ so
+ that you don't have to pass in the length of the buffer
+ * add test that loads objects from strings and connects them to
+ signals
+
+ gi/overrides/Gtk.py | 19 +++++++++++--
+ tests/test_overrides.py | 72
+ ++++++++++++++++++++++++++++++++++++++++++++++---
+ 2 files changed, 86 insertions(+), 5 deletions(-)
+
+commit 1561d2977691f1cb8684f183a2e274c47960d931
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Mon May 24 18:48:10 2010 +0200
+
+ Improve handling of subclasses without __gtype_name__
+
+ Gives a better message at type registration.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=616849
+
+ gi/gimodule.c | 9 +++++++++
+ tests/test_gi.py | 13 ++++++++++++-
+ 2 files changed, 21 insertions(+), 1 deletion(-)
+
+commit c9d44d4d46c3da3a445000b1db592baa9c378a92
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Fri Apr 30 18:17:50 2010 +0200
+
+ Add support for GArray args
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=617054
+
+ gi/pygi-invoke.c | 11 +++++++----
+ tests/test_gi.py | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 57 insertions(+), 4 deletions(-)
+
+commit c171579ee22681e1ee4ad33441c89f1053bdc3d1
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon May 24 11:48:16 2010 -0400
+
+ check refcounting of callback userdata in unit tests
+
+ tests/test_everything.py | 18 ++++++++++++++++++
+ 1 file changed, 18 insertions(+)
+
+commit 8eb809468fe3e1f8e4f92bd7f25d96f9cf802cd4
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Sat May 22 15:12:37 2010 +0200
+
+ Add support for out args in callbacks
+
+ This patch refactors argument marshalling for closures in
+ preparation for more complete support.
+
+ Also fixes a bug in the memory management of user_data args.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=617780
+
+ gi/pygi-closure.c | 335
+ +++++++++++++++++++++++++++++++++++++++++-------------
+ tests/test_gi.py | 4 +
+ 2 files changed, 263 insertions(+), 76 deletions(-)
+
+commit 0df0c956bb2476392c9d81f0a243a7e84c067166
+Author: Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>
+Date: Sun May 23 10:59:27 2010 +0200
+
+ If None is passed to an interface which takes an object, convert it to
+ NULL
+
+ * without this patch PyGI treats the None object as a PyGObject
+ and ends up
+ extracting garbage data causing a crash
+ * None's equivalent in C is NULL so we must provide a special case
+ where we
+ marshal the None as NULL
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=617880
+
+ gi/pygi-argument.c | 5 +++++
+ tests/test_everything.py | 6 ++++++
+ 2 files changed, 11 insertions(+)
+
+commit 60fdf4b8f738dd0f5c190bc18ddf010032d3c5ca
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Sat May 22 14:06:37 2010 +0200
+
+ correctly handle floating objects in gtk
+
+ * this is a stopgap so we work with older pygobject libraries
+ * there is a patch at
+ https://bugzilla.gnome.org/show_bug.cgi?id=583909
+ which adds the correct fix to pygobject
+ * once pygobject accepts the above patch this patch does not need to
+ be reverted because pygobject_register_sinkfunc becomes a noop
+ * add tests (Tomeu)
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=619007
+
+ gi/gimodule.c | 12 ++++++++++++
+ tests/test_everything.py | 3 +++
+ 2 files changed, 15 insertions(+)
+
+commit 4b369f8aca980fc6a582094d6648f40fe4af5e9f
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Sat May 22 13:21:30 2010 +0200
+
+ Return an empty list when a NULL GList and GSList is returned
+
+ * In GTK a GList * and GSList set to NULL is equivilant to empty
+ list. All
+ GTK list methods can take a NULL and treat it as an empty list. e.g.
+ g_list_length(NULL) returns 0
+ * PyGtk consitently returns empty list when a NULL is returned for
+ GList or
+ GSList return
+ * Many PyGtk apps do this:
+ for i in range(len(obj.get_list())):
+ ...
+ * If we were to continue to return None, they would have to add
+ a check
+ which is needlessly verbose and isn't very "pythonic"
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=619232
+
+ gi/pygi-argument.c | 6 ------
+ tests/test_everything.py | 4 ++--
+ 2 files changed, 2 insertions(+), 8 deletions(-)
+
+commit 71a2148b00dfdda99e0d961ae39b901608724e59
+Author: Steve Frécinaux <code@istique.net>
+Date: Fri May 21 19:05:03 2010 +0200
+
+ Fix warning in configure.
+
+ The warning is caused by the use of the construction 'CFLAGS+=' in a
+ sh version that doesn't understand it (in this case, 'dash').
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=619311
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit aa0357e468eb91e0f3707346e9b32f312fbf51d3
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Thu Apr 29 13:06:15 2010 +0200
+
+ GTypeInterface cannot be unrefed
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=617159
+
+ gi/gimodule.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+commit ab1aaff108d23aabd28c3634edfb67236eb55460
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Sat May 22 13:09:48 2010 +0200
+
+ fix NULL array unit tests and fix crasher when sending None as
+ an array
+
+ * Unit tests were wrong given the annotation for
+ test_array_int_null_in and
+ test_array_int_null_out:
+
+ /**
+ * test_array_int_null_in:
+ * @arr: (array length=len) (allow-none):
+ * @len: length
+ */
+
+ -- and --
+
+ /**
+ * test_array_int_null_out:
+ * @arr: (out) (array length=len) (allow-none):
+ * @len: (out) : length
+ */
+
+ The (array length=len) annotation meant we don't pass in or
+ receive the len argument as this is handled under the hood
+ (Python's representation of an array, the list type, encapsulates
+ the length inside the type)
+
+ * Fixing up the tests revealed a latent crasher bug when passing
+ None to an
+ interface that accepts an array. The fix was to check for NULL
+ and set
+ the length argument to 0 when invoking the bound method.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=619235
+
+ gi/pygi-invoke.c | 6 +++++-
+ tests/test_everything.py | 4 ++--
+ 2 files changed, 7 insertions(+), 3 deletions(-)
+
+commit e928ea9b1df9d87314ff8e93479530e26be9bd87
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri May 14 14:57:27 2010 -0400
+
+ don't error out on methods with callbacks as return type
+
+ * Right now we just throw an error which means API's like
+ gtk_about_dialog_set_url_hook aren't able to be called,
+ * this allows us to call such APIs while printing a warning, in
+ most cases
+ API such as this doesn't need to be used anymore and is a result of
+ early GTK development
+
+ gi/pygi-argument.c | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
+
+commit d963007aab123f4e53a944a66a935db2d22907c2
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Mon May 17 11:54:34 2010 -0400
+
+ reset sys.argv to the return value of Gtk.init_check
+
+ * applications which check command line arguments will error out if it
+ encounters a GTK command line switch such as --g-fatal-warnings.
+ * The Gtk.init* API reads these switches and returns a new argv with
+ the GTK
+ switches stripped out
+ * In C argv is modified in place but in Python we must set sys.argv
+ to the
+ new modified argument list
+ * fixes https://bugzilla.gnome.org/show_bug.cgi?id=618889
+
+ gi/overrides/Gtk.py | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 897420ed97cc4a7b8a806894df5e76ed72617614
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed May 12 14:25:32 2010 -0400
+
+ add GtkUIManager and GtkActionGroup overrides
+
+ * fixes bug https://bugzilla.gnome.org/show_bug.cgi?id=618476
+
+ gi/overrides/Gtk.py | 167
+ +++++++++++++++++++++++++++++++++++++++++++++++-
+ tests/test_overrides.py | 45 +++++++++++++
+ 2 files changed, 211 insertions(+), 1 deletion(-)
+
+commit 865939d29c1e9d69dbe6b9cf89477b5516dbff1f
+Author: Zach Goldberg <zach@zachgoldberg.com>
+Date: Thu May 13 01:02:24 2010 -0400
+
+ Bump version for development to 0.5.2 (hopefully 0.6)
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 2674a9546b0246d4a75d71cf1708df77dc0173f9
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Wed May 5 15:54:39 2010 +0200
+
+ Fix overrides.Gdk.Color.__new__ args
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=617757
+
+ gi/overrides/Gdk.py | 2 +-
+ tests/Makefile.am | 3 ++-
+ tests/test_overrides.py | 22 ++++++++++++++++++++++
+ 3 files changed, 25 insertions(+), 2 deletions(-)
+
+commit c20b9f632a35bada1320ccc10fb7d5b2c06b9a88
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Thu Apr 29 14:55:33 2010 -0400
+
+ wrap GObject module so we can go through GI when requesting attrs
+
+ * This gives us the best of both worlds.
+ - We remain backwards compatable with pygobject by checking for
+ existing
+ attrs in the gobject module
+ - If an attr does not exist we use the GI mechanism to look it up
+ so that
+ things like flags look the same whether exported from GObject, Gtk
+ or any GI managed library
+
+ * 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
+ ++++++++++++++++++++++++++----------------------
+ 4 files changed, 87 insertions(+), 48 deletions(-)
+
+commit 64324a4c629432b2e688299b6edbfd5da4439a2a
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Fri Apr 30 14:11:55 2010 -0400
+
+ override Gdk.Drawable to add cairo_create convinience method
+
+ gi/overrides/Gdk.py | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+commit 17fa1289b1e2ed841dd5de09a2ec7c25d401886e
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Mon May 3 19:13:46 2010 +0200
+
+ Fix passing callbacks as constructor args
+
+ 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 +++++++++++++++++++++
+ 4 files changed, 29 insertions(+), 3 deletions(-)
+
+commit f9fff978d56ddf2c012b906169ae16abb7fdc2a5
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Wed May 5 08:06:03 2010 +0200
+
+ Avoid freeing garbage
+
+ gi/pygi-invoke.c | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+commit 5e20c018ae09a936f5ff140df5d1c133c98e98ba
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Thu Apr 29 13:09:03 2010 +0200
+
+ Only hookup vfunc implementations for locally-defined methods
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=617160
+
+ gi/types.py | 10 +++++++++-
+ tests/test_gi.py | 10 ++++++++++
+ 2 files changed, 19 insertions(+), 1 deletion(-)
+
+commit 3e61e7d4450a2bb133c7f3862e0962a35339ce8d
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Mon May 3 18:35:13 2010 +0200
+
+ Fix passing GDestroyNotify
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=617542
+
+ gi/pygi-invoke.c | 3 ++-
+ tests/test_everything.py | 10 ++++++++++
+ 2 files changed, 12 insertions(+), 1 deletion(-)
+
+commit 9669acd0fad193013ef3505ae231588307f9834c
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Mon May 3 12:23:58 2010 +0200
+
+ Move invocation code to its own file
+
+ 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 +
+ 5 files changed, 949 insertions(+), 884 deletions(-)
+
+commit 9b923a68dfde06fc2df6321b3f1e53f1c57b3666
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Tue Apr 27 19:13:08 2010 -0400
+
+ Add the Gtk.Builder override
+
+ gi/overrides/Gtk.py | 37 ++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 36 insertions(+), 1 deletion(-)
+
+commit 9fc6783406b8263ebd67ceae2730b4e86689b43e
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Fri Apr 30 15:00:52 2010 +0200
+
+ Fix GAsyncReadyCallback
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=616236
+
+ gi/pygi-closure.c | 8 +++++++-
+ tests/test_everything.py | 16 ++++++++++++++++
+ 2 files changed, 23 insertions(+), 1 deletion(-)
+
+commit 5657ccaaec09e2a3194ea2e9a923724bcc66759e
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Thu Apr 29 18:32:50 2010 +0200
+
+ Add override for Gdk.Color
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=617162
+
+ gi/overrides/Gdk.py | 20 +++++++++++++++++++-
+ 1 file changed, 19 insertions(+), 1 deletion(-)
+
+commit 4410abd589a2f64cfbd7bbcb4013fae9e4aa734f
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Apr 28 13:19:48 2010 -0400
+
+ make __all__ be a list of strings, fix override mechanism to use
+ it correctly
+
+ * before we were adding classes to the __all__ module property but
+ the convention is to use the name of the class
+ * simplified the check to just check the name against __all__
+ instead of trying to get the class and then checking the class
+ 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 +-
+ 3 files changed, 6 insertions(+), 7 deletions(-)
+
+commit 64fa8f936bad9a90628df446e690d67d947a0a22
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Mon Apr 26 11:41:06 2010 +0200
+
+ One more step at refactoring _wrap_g_function_info_invoke
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=616357
+
+ gi/pygi-callbacks.c | 22 +-
+ gi/pygi-callbacks.h | 4 +-
+ gi/pygi-info.c | 582
+ ++++++++++++++++++++++++++++++----------------------
+ 3 files changed, 346 insertions(+), 262 deletions(-)
+
+commit 7fc5528273edae5ecdd5d8bdf0e5b898eec7a624
+Author: Zach Goldberg <zach@zachgoldberg.com>
+Date: Tue Apr 20 23:23:38 2010 -0400
+
+ Step 1 of refactoring _wrap_g_function_info_invoke
+
+ Original patch by David Malcom <dmalcolm@redhat.com>
+
+ This patch bitrots *REALLY* fast.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=616357
+
+ gi/pygi-info.c | 417
+ +++++++++++++++++++++++++++++----------------------------
+ 1 file changed, 214 insertions(+), 203 deletions(-)
+
+commit 1d9c6b6d76a3e27f66e6f0cfc7b16c5191e4fc22
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Tue Apr 27 10:24:35 2010 +0200
+
+ Dont force subclasses to implement all virtual methods of their bases
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=616674
+
+ gi/types.py | 4 ++--
+ tests/test_gi.py | 15 +++++++++++++++
+ 2 files changed, 17 insertions(+), 2 deletions(-)
+
+commit 8a0c48f4dd512797e5cf132f8ec6fb6d4d1e7aaa
+Author: Zach Goldberg <zach@zachgoldberg.com>
+Date: Sun Apr 25 15:09:08 2010 -0400
+
+ Correct the reference counting of userdata in closure handling
+
+ Without this we lose references on every call and eventually end up
+ free'ing objects
+ while they are still in use.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=616786
+
+ gi/pygi-closure.c | 3 +++
+ tests/test_everything.py | 13 +++++++++++++
+ 2 files changed, 16 insertions(+)
+
+commit 2b12049306bf57513c43d08017185468bf897a4a
+Author: Zach Goldberg <zach@zachgoldberg.com>
+Date: Tue Apr 20 22:57:14 2010 -0400
+
+ Change SCOPE_TYPE_INVALID handling to be a more verbose error.
+
+ (Previous commit did not include the proper error message. I blame
+ git-bz)
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=616356
+
+ gi/pygi-closure.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 8240320d0b67074ce91bdf7aadcf5951c5a8c45a
+Author: Zach Goldberg <zach@zachgoldberg.com>
+Date: Tue Apr 20 23:53:57 2010 -0400
+
+ Force out arguments to be initialized as NULL. Comes with a test.
+
+ This fix was motivated by a real world library which had a transfer
+ full
+ utf8 out argument which sometimes was not set. We would leave
+ the pointer
+ dangling and try and free it at the end of invoke() and crash.
+ Library refused
+ to change their behavior so we're forced to take care of it on
+ our end.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=616043
+
+ gi/pygi-info.c | 1 +
+ tests/test_gi.py | 3 +++
+ 2 files changed, 4 insertions(+)
+
+commit 10e558ca283cdd06725bb0d24b5071ccbecc7d13
+Author: Zach Goldberg <zach@zachgoldberg.com>
+Date: Tue Apr 20 22:57:14 2010 -0400
+
+ Change SCOPE_TYPE_INVALID handling to be a warning and not an error
+
+ Be slightly nicer to library maintainers. It really isn't a fatal
+ condition
+ if we don't have a proper scope type, better to leave a good code
+ comment
+ and a warning than to cause their code to segv.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=616356
+
+ gi/pygi-closure.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit d3b5fae9d609dbcd83deb0fa9102b24faf76787c
+Author: Zach Goldberg <zach@zachgoldberg.com>
+Date: Tue Apr 20 22:43:20 2010 -0400
+
+ Refactor implementation of scope call to allow for multiple calls
+ during lifetime of function invocation.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=616343
+
+ gi/pygi-closure.c | 10 +++++-----
+ gi/pygi-info.c | 9 +++++++--
+ tests/test_everything.py | 9 +++++++++
+ 3 files changed, 21 insertions(+), 7 deletions(-)
+
+commit 3ba666b7ab9c393963922c272e7d87bff50a93f9
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Sat Jan 2 16:31:55 2010 +0100
+
+ Add basic support for unions
+
+ 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 ++++++++++++++++++++++++++++++++
+ 6 files changed, 165 insertions(+), 31 deletions(-)
+
+commit af9e4e086d160fe7fb24758ed81753e784b198a8
+Author: Simon van der Linden <svdlinden@src.gnome.org>
+Date: Fri Jan 22 22:16:32 2010 +0100
+
+ Bump required GLib version to 2.22
+
+ Since PyGObject now depends on GLib 2.22.4, there is no need to
+ keep PyGI
+ backward-compatible.
+
+ configure.ac | 2 +-
+ gi/pygi-private.h | 20 --------------------
+ 2 files changed, 1 insertion(+), 21 deletions(-)
+
+commit c0f40de5648e2ebc556c449342a0025ffce2e33b
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Sun Apr 18 11:50:14 2010 -0400
+
+ Refactor get_* methods in the *Info wrappers
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=616108
+
+ gi/pygi-info.c | 360
+ +++++++++++++++++++++++++++------------------------------
+ 1 file changed, 168 insertions(+), 192 deletions(-)
+
+commit 24bb89f1310dc2fc8ee6ddaf945342ebf80055cd
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Tue Apr 20 15:12:47 2010 +0200
+
+ Print any error messages raised inside _pygi_closure_handle
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=616279
+
+ gi/pygi-closure.c | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+commit d1ba23cdd05686ea721425f233371d573a2e9cce
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Thu Apr 22 19:57:17 2010 +0200
+
+ Rename variable with a very generic name
+
+ gi/module.py | 28 ++++++++++++++--------------
+ 1 file changed, 14 insertions(+), 14 deletions(-)
+
+commit 391640b30ede50af3667b1019edb72bd79f2c68c
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Thu Apr 22 19:53:06 2010 +0200
+
+ Add support for enums without GType
+
+ 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 ++++++++++++++++++++++++++++--
+ 4 files changed, 68 insertions(+), 4 deletions(-)
+
+commit 89704f60ddae0c81f1383d86491ef2785590a353
+Author: Zach Goldberg <zach@zachgoldberg.com>
+Date: Tue Apr 20 22:20:42 2010 -0400
+
+ Bump version during development to 0.5.1
+
+ This follows what is, according to Colin Walters,
+ standard versioning practice. During development the
+ version in your config is the *next* version you will release,
+ not the version after. Thus after a release you make a new commit
+ bumping to the next development version.
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit e203dc7c8f524c16aa52e15758dc3a2b09fbac75
+Author: John Ehresman <jpe@wingware.com>
+Date: Tue Apr 20 20:40:02 2010 -0400
+
+ Added missing , to keyword list of gio.GFile.set_attribute
+
+ gio/gresolver.override | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 0b222f01ac9ceea1d127083623ad532ecc75bf7e
+Author: John Ehresman <jpe@wingware.com>
+Date: Tue Apr 20 20:37:12 2010 -0400
+
+ Fix arg conversion in gio.GFile.set_attribute
+
+ gio/gfile.override | 232
+ +++++++++++++++++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 227 insertions(+), 5 deletions(-)
+
+commit a579ccc8bea90937bf970be3d461e2b650b0c7d6
+Author: John Ehresman <jpe@wingware.com>
+Date: Tue Apr 20 20:01:53 2010 -0400
+
+ Set constants under python 2.5 or before
+
+ gobject/gobjectmodule.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+commit 11fa39a861abf679e01b5f0da97be93ae0adf0f0
+Author: José Alburquerque <jaalburqu@svn.gnome.org>
+Date: Sun Apr 18 20:22:21 2010 -0400
+
+ Doc Extractor: Use replacements that make sense for &...;
+ expressions.
+
+ * codegen/docextract_to_xml.py: Use &#35; and &#160; respectively
+ for
+ &num; (#) and &nbsp;. These are interpreted correctly in XML
+ and will
+ not make the parsing crash.
+
+ codegen/docextract_to_xml.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 8dbc2cb016acef7b364804cd9bc8f0b1da37e84b
+Author: Zach Goldberg <zach@zachgoldberg.com>
+Date: Sun Apr 18 14:32:06 2010 -0400
+
+ Bump version for release 0.5.0
+
+ HACKING | 7 +++++++
+ configure.ac | 4 ++--
+ 2 files changed, 9 insertions(+), 2 deletions(-)
+
+commit 3293c91d90c5c497b45e42a527d7f79f7435823e
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Sun Apr 18 14:28:13 2010 -0400
+
+ One more missing file...
+
+ examples/Makefile.am | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 1dc575af19fe985cc3fa3ec0cf18aeab1f43c16d
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Sun Apr 18 14:18:44 2010 -0400
+
+ Add more stuff to the tarballs
+
+ Makefile.am | 8 +++++++-
+ configure.ac | 1 +
+ 2 files changed, 8 insertions(+), 1 deletion(-)
+
+commit 8a9bb04755057e934b7f46c917af6ef281a2fedd
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Sun Apr 18 13:48:45 2010 -0400
+
+ Add one more missing file to tarballs
+
+ gi/overrides/GIMarshallingTests.py | 0
+ gi/overrides/Makefile.am | 1 +
+ 2 files changed, 1 insertion(+)
+
+commit 979e01852fc7f830ee91093accdc387fa535075f
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Sun Apr 18 13:45:29 2010 -0400
+
+ Add missing file to tarballs
+
+ tests/Makefile.am | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 8b70faa7a9a32b9ea8862f28a503e38f496cfd89
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Sun Apr 18 13:11:11 2010 -0400
+
+ Implement vfuncs.
+
+ 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 +++++++++++
+ 9 files changed, 227 insertions(+), 21 deletions(-)
+
+commit e239faacb4798fe2d166233ca1a19a843a6225e3
+Author: Zach Goldberg <zach@zachgoldberg.com>
+Date: Sun Apr 18 11:59:06 2010 -0400
+
+ Fix a typo in pygi-callbacks.c header
+
+ gi/pygi-callbacks.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 79aa416ae8632b123da61d79fb820d9e2704209c
+Author: Zach Goldberg <zach@zachgoldberg.com>
+Date: Sat Apr 17 12:00:05 2010 -0400
+
+ Implement nullable argument support, including tests
+
+ 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 ++++++++++++++++++++++++++++
+ 4 files changed, 80 insertions(+), 13 deletions(-)
+
+commit 7d533b8893bc4a8a82fd9708278fa1dce5d3551e
+Author: Zach Goldberg <zach@zachgoldberg.com>
+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
+ +-----------------------------------------------
+ 2 files changed, 61 insertions(+), 61 deletions(-)
+
+commit a90298cc9e6c0f336f887a71d80b1efd07ec2811
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Sun Apr 18 10:44:35 2010 -0400
+
+ Update to latest version of the pygi-convert.sh script
+
+ pygi-convert.sh | 193
+ ++++++++++++++++++++++++++++++++++++++++----------------
+ 1 file changed, 137 insertions(+), 56 deletions(-)
+
+commit 34a39318c674737c6d64f2430456daef86ba1626
+Author: Colin Walters <walters@verbum.org>
+Date: Sun Apr 18 10:40:44 2010 -0400
+
+ Add Tomeu's prototype script for converting pygtk to pygi
+
+ pygi-convert.sh | 71
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 71 insertions(+)
+
+commit a3afdb5fd33de0bf11d63857a245a8f5edec242c
+Author: Olav Vitters <olav@vitters.nl>
+Date: Sun Apr 18 13:01:58 2010 +0200
+
+ Fix doap file
+
+ pygi.doap | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+commit 0de73d0bba79f92af22f43693f3575c596712416
+Author: Zach Goldberg <zach@zachgoldberg.com>
+Date: Sat Apr 17 16:01:31 2010 -0400
+
+ Add Zach Goldberg as a pygi maintainer
+
+ pygi.doap | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+commit a0e22e36e8cf0c1e0da3c0ec48c821fdb5a07ccd
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Sat Apr 17 11:47:54 2010 -0400
+
+ Require PyCairo
+
+ configure.ac | 7 +------
+ 1 file changed, 1 insertion(+), 6 deletions(-)
+
+commit 2778f8a1bf6379a46beec6546c8efcb0fec2d7ad
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Sat Apr 17 11:40:14 2010 -0400
+
+ Add examples/cairo-demo.py
+
+ examples/cairo-demo.py | 121
+ +++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 121 insertions(+)
+
+commit 610dd1eec87fab5c8c3badb4d104cba74477c745
+Author: Zach Goldberg <zach@zachgoldberg.com>
+Date: Sat Apr 17 09:17:14 2010 -0400
+
+ Implementation callback support with scoping and basic argument
+ support.
+
+ This patch was originally written by
+ Zach Goldberg <zach@zachgoldberg.com> with modifications and
+ review by Simon van der Linden <svdlinden@src.gnome.org> and
+ Colin Walters <walters@verbum.org>.
+
+ This impementation enforces the assumption that any one function
+ signature can only have one (callback, userdata, destronotify) tuple.
+ This allows us to move callback creation into the actual function
+ invoke pipeline and also to keep just one destroy notify callback
+ around, vastly simplifying the code.
+
+ 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 +++++++++++++++-
+ 10 files changed, 648 insertions(+), 10 deletions(-)
+
+commit a34cb9f0038a6c89e5e6c5f7761d48a5a833044f
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Sat Apr 17 10:54:45 2010 -0400
+
+ Add support for foreign structs
+
+ 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 ++++++++++++++++++
+ 10 files changed, 428 insertions(+), 4 deletions(-)
+
+commit e73b6f6fe8b5f23a2a390ae0a6bbced593ded155
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Fri Apr 16 14:35:13 2010 -0400
+
+ Allow creating structs with pointers
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=603537
+
+ gi/pygi-struct.c | 6 ------
+ tests/test_gi.py | 3 ++-
+ 2 files changed, 2 insertions(+), 7 deletions(-)
+
+commit fc9ff02e53aacf9e77625c70985e99813544912a
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+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 +++++++++++++-
+ 3 files changed, 44 insertions(+), 1 deletion(-)
+
+commit 695ac7bc5c60371a32538d690c7a15509f3c9637
+Author: John Stowers <john.stowers@gmail.com>
+Date: Fri Apr 16 14:36:11 2010 +1200
+
+ Add build docs for windows
+
+ Makefile.am | 1 +
+ README.win32 | 24 ++++++++++++++++++++++++
+ 2 files changed, 25 insertions(+)
+
+commit e580da87f0b2fd36cb5d8008fb2fb0c3b01f456a
+Author: John Stowers <john.stowers@gmail.com>
+Date: Thu Apr 15 13:40:39 2010 +1200
+
+ Setup.py cosmetic tidy
+
+ * Remove local doc install, point to website instead
+ * link to versioned docs
+
+ pygobject_postinstall.py | 43 ++++++++++++++++++++++++++-----------------
+ setup.py | 39 ++++++++++++++-------------------------
+ 2 files changed, 40 insertions(+), 42 deletions(-)
+
+commit 69ecd506c83ddf180c6cc9a2a8dc753a02543959
+Author: John Stowers <john.stowers@gmail.com>
+Date: Sat Jul 25 14:12:30 2009 +1200
+
+ Fix crash when importing gio
+
+ Only seems to be necessary on windows, but
+ no harm on linux as multiple calls to init
+ are OK
+
+ gio/giomodule.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit 5d159a13d89587cba189a0ca3203ac003e2f1f2b
+Author: John Stowers <john.stowers@gmail.com>
+Date: Thu Apr 15 22:52:48 2010 +1200
+
+ Bug 589671 - Dont use generate-constants
+
+ This breaks the build using distutils, and it is
+ 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 +-
+ 7 files changed, 121 insertions(+), 112 deletions(-)
+
+commit 6d7a3ab9ce352692d0faccbf106974d264fa953d
+Author: John Stowers <john.stowers@gmail.com>
+Date: Thu Apr 15 22:49:17 2010 +1200
+
+ Bug 589671 - Fix setup.py for windows build
+
+ * Building pyglib as a static private library
+ * Update to include new defs
+ * Modernise setup.py and add more util functions
+ to dsextras
+
+ dsextras.py | 32 ++++++++++++++++---
+ setup.py | 102
+ +++++++++++++++++++++++++++++++++++++++++++++++++++---------
+ 2 files changed, 116 insertions(+), 18 deletions(-)
+
+commit d11ef47072acae5801ce25c68d1289e425eb9fc2
+Author: John Stowers <john.stowers@gmail.com>
+Date: Thu Apr 15 22:48:28 2010 +1200
+
+ Include pygsource.h
+
+ glib/pygiochannel.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit c5f6af4844c74354abc508d17969d9d45153acf2
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Thu Apr 15 14:25:59 2010 -0400
+
+ Add metadata to the .doap file
+
+ pygi.doap | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit 81796cb77cbe6b9598a652bd63c047af93e747ee
+Author: John (J5) Palmieri <johnp@redhat.com>
+Date: Wed Apr 14 12:01:43 2010 -0400
+
+ override that wasn't checked in - fixes some test cases
+
+ gi/overrides/GIMarshallingTests.py | 69
+ ++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 69 insertions(+)
+
+commit de5d2ea1584b01af809346316c7fbd4955a9db1d
+Author: Colin Walters <walters@verbum.org>
+Date: Wed Apr 14 10:06:07 2010 -0400
+
+ [Makefile.am] Clean up CFLAGS handling, don't override all: target
+
+ First, we should move the CFLAGS into AM_CFLAGS, otherwise the
+ per-target CFLAGS forces Automake to prefix object files, which
+ is unnecessary since we only have one target.
+
+ More importantly, avoid overriding the all: target here; that's
+ owned by Automake. Use all-local instead to append things to
+ the end of the normal build.
+
+ gi/Makefile.am | 15 +++++++++------
+ 1 file changed, 9 insertions(+), 6 deletions(-)
+
+commit 5a47e96e3f580c973e6880dafa747f54c144c760
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Tue Apr 13 19:15:49 2010 -0400
+
+ Use GIMarshallingTests (old TestGI) in gobject-introspection
+
+ gi/overrides/TestGI.py | 69 --
+ tests/Makefile.am | 40 -
+ tests/libtestgi.c | 2924
+ ------------------------------------------------
+ tests/libtestgi.h | 628 -----------
+ tests/test_gi.py | 832 +++++++-------
+ 5 files changed, 416 insertions(+), 4077 deletions(-)
+
+commit 681832c3cd040433a488a400693b68f213bf7078
+Author: José Alburquerque <jaalburqu@svn.gnome.org>
+Date: Tue Apr 13 13:33:12 2010 -0400
+
+ codegen/docextract_to_xml.py: One more &...; replacement (&nbsp;).
+
+ * codegen/docextract_to_xml.py: Replace &nbsp; which also causes
+ errors with a regular space.
+
+ codegen/docextract_to_xml.py | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit bd4e7f2459e34957aaae59b9be807d6dff5ec1eb
+Author: José Alburquerque <jaalburqu@svn.gnome.org>
+Date: Tue Apr 13 12:28:10 2010 -0400
+
+ codegen/docextract_to_xml.py: Replace some &..; that cause errors.
+
+ * codegen/docextract_to_xml.py (escape_text): Replace some &..;
+ expressions that cause errors with more appropriate output.
+
+ codegen/docextract_to_xml.py | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+commit f00b9ce91fc9c3aabd4af4132fc112d9e415e12e
+Author: José Alburquerque <jaalburqu@svn.gnome.org>
+Date: Sun Apr 11 17:46:40 2010 -0400
+
+ codegen/docextract_to_xml.py: Handle C++ multi-line comments.
+
+ * codegen/docextract_to_xml.py (escape_text): Translate '/*'
+ and '*/'
+ in text to '/ *' and '* /' respectively so that comment errors
+ don't
+ 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 +++++++++
+ 1 file changed, 9 insertions(+)
+
+commit a2fcdecbb5e109da5568084d7acb2332af83b6f5
+Author: José Alburquerque <jaalburqu@svn.gnome.org>
+Date: Sun Apr 11 16:15:01 2010 -0400
+
+ codegen/docextract.py: Stop final section processing on first
+ match.
+
+ * codegen/docextract.py (process_final_sections): Modify the final
+ section pattern matching for loop to stop on first match so
+ that it
+ doesn't match both a colon return ('Returns: ...') and a no colon
+ return ('Returns ...') which leads to annotation extraction
+ errors.
+
+ codegen/docextract.py | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+commit 825fd305f03b726665edca34963978ce27448182
+Author: José Alburquerque <jaalburqu@svn.gnome.org>
+Date: Sun Apr 11 15:45:09 2010 -0400
+
+ Update doc extraction tool to handle GObjectIntrospection
+ annotations.
+
+ * codegen/docextract.py (FunctionDoc): Renamed class to GtkDoc.
+ (GtkDoc::annotations): Added a list field to store annotations
+ which
+ are 2-tuples of (name, value).
+ (GtkDoc::ret): Modified field to store the return description
+ along
+ with a list of annotations as described above.
+ (GtkDoc::params): Now holds a list of 3-tupples: name,
+ description and
+ annotations (as described above).
+ (GtkDoc::block_type): Add a field to tell if the comment block
+ is a
+ function block, signal block or property block.
+ (GtkDoc::set_type):
+ (GtkDoc::get_type): Add methods for setting/getting the block
+ type.
+ (GtkDoc::add_param): Modified to also accept a list of
+ annotations to
+ be added with the parameter.
+ (GtkDoc::add_annotation):
+ (GtkDoc::get_annotations): Added methods to add/get annotations
+ for
+ the comment block.
+ (GtkDoc::append_description): Renamed to append_to_description().
+ (GtkDoc::get_param_description): Removed unused method.
+ (GtkDoc::get_description): Added method to get block description.
+ (GtkDoc::add_return): Added method to add a return accepting
+ the first
+ line of the description and its annotations.
+ (GtkDoc::append_return): Renamed to append_to_return().
+ (Regular expressions):
+ - Made the names of the variables un-abbreviated.
+
+ - Added 'since', 'deprecated' and 'rename to' regular
+ expressions.
+
+ - Modified the return matching regular expression so that
+ it doesn't
+ match descriptions that begin with 'Returns ...'.
+ This improves
+ the docs of many function.
+
+ - Added signal and property comment block identifier matching
+ regular
+ expressions in case those are useful.
+
+ - Modified existing identifier matching regular expressions
+ (function,
+ signal, and property regular expressions) to properly parse
+ annotations. Also added a regular expression for extracting
+ annotations from the parameter and return descriptions.
+
+ - Refined the function name matching regular expression to
+ only accept
+ identifiers that begin with a lowercase letter. This eliminates
+ 'SECTION:' matches.
+
+ - Finally, grouped commonly related expressions like
+ return_pattern,
+ since_pattern, etc. into groups (in lists) so that matching
+ those
+ sections can be done using loops.
+
+ (Parsing algorithm): Modified the algorithm to use a functional
+ approach to parsing. Extra methods like skip_to_comment() and
+ processs_params() have been added and used in the parse_file()
+ function to now process the comment blocks.
+ (parse_dir): Added file processing output to stderr.
+ * codegen/docextract_to_xml.py (usage): Added function to
+ print out
+ the usage.
+ (print_annotations): Added function to print the given list of
+ annotations.
+ (options): Added --with-signals (-i), with-properties (-p) and
+ --with-annotation (-a) to the existing --source-dir (-s) option.
+
+ (algorithm): Now prints annotations, if specified. Also, prints
+ signals and properties correctly (using names like
+ Class::signal-one
+ for signals and Classs:property) with xml such as <signal
+ name="...">...</signal>. The return xml is slightly modified with
+ annotations but this would only be exhibited if annotation xml is
+ requested.
+
+ codegen/docextract.py | 439
+ ++++++++++++++++++++++++++++++++++---------
+ codegen/docextract_to_xml.py | 87 ++++++---
+ 2 files changed, 414 insertions(+), 112 deletions(-)
+
+commit 9fef1acb42cd900d4a814a7378f60bc189121785
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Fri Apr 9 13:47:03 2010 +0200
+
+ Always create the .so link
+
+ gi/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit e9f7fd414e94595e40eb1ba0fc471ca69136d82f
+Author: Paul Bolle <pebolle@tiscali.nl>
+Date: Thu Apr 8 11:52:25 2010 +0200
+
+ Docs: replace gio.IO_ERROR_* with gio.ERROR_*
+
+ 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 +++----
+ 3 files changed, 45 insertions(+), 45 deletions(-)
+
+commit 4cbd9941c5705970a9f7a429e236e1203d3155a1
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Mon Apr 5 18:10:42 2010 +0200
+
+ Bug 613341 - pygobject tests seem to require pygtk causing a circular
+ dependencies problem
+
+ 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
+ -----------------------------------------------
+ 4 files changed, 718 deletions(-)
+
+commit ef0ceb266a45715ece58642fb0042e3376416755
+Author: Simon van der Linden <svdlinden@src.gnome.org>
+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 ++++++++++++++++++++
+ 3 files changed, 62 insertions(+)
+
+commit 5106523a4b8378997a1e6cb0488398aa73e7d9d5
+Author: Simon van der Linden <svdlinden@src.gnome.org>
+Date: Wed Feb 3 20:29:55 2010 +0100
+
+ Fix and complete overrides tests
+
+ Those tests were missing in the last commit
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=602830
+
+ gi/overrides/TestGI.py | 49
+ +++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_gi.py | 8 +++++++-
+ 2 files changed, 56 insertions(+), 1 deletion(-)
+
+commit 23fc0f615d87994acafd9d39e92dd92b587fc2eb
+Author: Simon van der Linden <svdlinden@src.gnome.org>
+Date: Thu Jan 21 17:30:51 2010 +0100
+
+ Don't raise an error in _pygi_import if pygi support is disabled
+
+ 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 +-----
+ 4 files changed, 3 insertions(+), 16 deletions(-)
+
+commit aefac8c5f64bf059dd6652f8a843d17b34fa0854
+Author: Simon van der Linden <svdlinden@src.gnome.org>
+Date: Fri Jan 22 22:22:37 2010 +0100
+
+ Remove support for pointers to basic types as input-only argument
+ and return value
+
+ There is no reason for an API to use such things, and
+ g_function_info_invoke
+ broke such features.
+
+ 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 ------------
+ 6 files changed, 47 insertions(+), 1438 deletions(-)
+
+commit eaf7cb8ebb7e34f9493ac83b2f04af4dcf45f40f
+Author: Simon van der Linden <svdlinden@src.gnome.org>
+Date: Fri Jan 22 13:41:21 2010 +0100
+
+ Restore the overrides support
+
+ Add a ModuleProxy in front of the DynamicModule when an overrides
+ module is
+ present. There is no need for an overrides module to be a class;
+ it can just be a module.
+
+ Add an override decorator to override the wrapper of a registered
+ type.
+
+ Adapt Gdk and Gtk accordingly.
+
+ Add tests.
+
+ 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 ++++++++++++++++++
+ 8 files changed, 273 insertions(+), 64 deletions(-)
+
+commit 289d641775d1ea52d2a5379126b70b7fcee46683
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Sun Jan 10 21:01:59 2010 +0100
+
+ Initialize PyGPollFD_Type.fd_obj to NULL
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=606582
+
+ gio/gcancellable.override | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit b11cf2595987c1f0fc4ffd834f07c98b92aa2355
+Author: Simon van der Linden <svdlinden@src.gnome.org>
+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 +++++
+ 2 files changed, 6 insertions(+), 1 deletion(-)
+
+commit b4189be2b2d3c350fdf33e27309bee5a72e4f72a
+Author: Simon van der Linden <svdlinden@src.gnome.org>
+Date: Fri Jan 8 20:33:44 2010 +0100
+
+ Don't set a default constructor for structures.
+
+ Update tests accordingly.
+
+ The reason for this change is that setting __new__ in the metaclass
+ doesn't let
+ one overrides it afterwards, in a subclass (in my experience, at
+ least, even
+ though it seems weird).
+
+ 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 ++++++++++-----------
+ 4 files changed, 17 insertions(+), 79 deletions(-)
+
+commit 4db68b958ea11bd2c3a88067cae03fd6bdd1d24b
+Author: Simon van der Linden <svdlinden@src.gnome.org>
+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 +-
+ 3 files changed, 3 insertions(+), 4 deletions(-)
+
+commit 4e2efa91d101bf755739e1cca8eee41eb0ad20fd
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Mon Jan 4 08:35:14 2010 +0100
+
+ Bug 605937 - pygobject: Makefile.am sets $TMPDIR, disrupting distcc
+
+ Committed a patch from Kevin Pyle
+
+ Makefile.am | 27 +++++++++++++--------------
+ 1 file changed, 13 insertions(+), 14 deletions(-)
+
+commit 8ddcbca0e98e0b0c082170a2b2b6cfcbd7864b40
+Author: Simon van der Linden <svdlinden@src.gnome.org>
+Date: Fri Dec 11 22:24:30 2009 +0100
+
+ sys.path must be modified after pygtk is imported
+
+ Otherwise, sys.path is overridden by pygtk and gi.repository is
+ loaded from the
+ system's default site-package directory.
+
+ tests/runtests.py | 1 -
+ tests/test_gi.py | 3 +++
+ 2 files changed, 3 insertions(+), 1 deletion(-)
+
+commit 284a1e1c0143c95d3007cf58e6c248b5d11fb4d1
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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 +++++++++++++++
+ 4 files changed, 56 insertions(+)
+
+commit 82d7bcbf37200ee2ef5892dd12bebd2f39965c56
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Sat Jan 2 23:15:56 2010 +0100
+
+ Make cancellable an optional parameter in many methods
+
+ gio/gio.defs | 102
+ +++++++++++++++++++++++++++++------------------------------
+ 1 file changed, 51 insertions(+), 51 deletions(-)
+
+commit 49a078cd22d55dc33a03ecfda235d63955edc741
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Sat Jan 2 23:15:21 2010 +0100
+
+ Post release version bump to 2.21.2
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 4f9f1f43ab4e2cfb204ffa0e257a34cfd95d84e2
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Sat Jan 2 22:58:36 2010 +0100
+
+ Update NEWS and release PyGObject-2.21.1
+
+ NEWS | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 55 insertions(+)
+
+commit c1f34be73bd186d7b4682dfef133da2c4229d213
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Fri Jan 1 20:25:35 2010 +0100
+
+ Wrap gio.Volume.eject_with_operation()
+
+ gio/gvolume.override | 54
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 54 insertions(+)
+
+commit 9b76fbff6f6897aaf26ed4644c1f19efc2826917
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Fri Jan 1 20:22:21 2010 +0100
+
+ gio.Mount.unmount_with_operation() fix a copy/paste leftover
+
+ gio/gmount.override | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 6f459786dd641cd49d81eba403d940620f961cab
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Fri Jan 1 20:21:05 2010 +0100
+
+ Wrap gio.Mount.eject_with_operation()
+
+ gio/gmount.override | 54
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 54 insertions(+)
+
+commit d4b5d1b4839364e5676eb2da28f1d21db7e2552d
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Fri Jan 1 20:15:38 2010 +0100
+
+ Wrap gio.Mount.unmount_mountable_with_operation()
+
+ gio/gmount.override | 54
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 54 insertions(+)
+
+commit e919d47c2430451b436cec955e9b99237f97028c
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Fri Jan 1 18:22:46 2010 +0100
+
+ Wrap File.unmount_mountable_with_operation()
+
+ gio/gfile.override | 54
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 54 insertions(+)
+
+commit 5a614df9c5507d67f240462f7bf71b4cd411addf
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Fri Jan 1 18:14:11 2010 +0100
+
+ Wrap gio.File.stop_mountable()
+
+ gio/gfile.override | 52
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 52 insertions(+)
+
+commit 6af506647f36f2b825bc6556df5ee57fa7721906
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Fri Jan 1 18:10:49 2010 +0100
+
+ Wrap gio.File.start_mountable()
+
+ gio/gfile.override | 52
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 52 insertions(+)
+
+commit e700efc839fc0b651fc9794a1611190bffa80263
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Fri Jan 1 18:02:46 2010 +0100
+
+ Wrap gio.File.replace_readwrite_async()
+
+ gio/gfile.override | 55
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 55 insertions(+)
+
+commit 92662f129fc728258fd5e34f53dcb081e3715017
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Fri Jan 1 17:00:26 2010 +0100
+
+ Wrap gio.File.poll_mountable()
+
+ gio/gfile.override | 41 +++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 41 insertions(+)
+
+commit 99902b786500948c3278779841e4db54223b9256
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Fri Jan 1 16:56:26 2010 +0100
+
+ Wrap gio.File.open_readwrite_async()
+
+ gio/gfile.override | 44 ++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 44 insertions(+)
+
+commit 8cff5d53183ae81364ac74a34a1d52e55e082eb4
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Fri Jan 1 16:50:15 2010 +0100
+
+ Wrap gio.File.eject_mountable_with_operation()
+
+ gio/gfile.override | 54
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 54 insertions(+)
+
+commit ca436fe7785fd24b0f0e65f2f8c9fa6478277682
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Fri Jan 1 13:30:24 2010 +0100
+
+ Wrap gio.File.create_readwrite_async() and add a test
+
+ gio/gfile.override | 51
+ +++++++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_gio.py | 24 ++++++++++++++++++++++++
+ 2 files changed, 75 insertions(+)
+
+commit f72c5e451dfaeb01b3c3d9243fed2732d3620462
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Fri Jan 1 13:20:11 2010 +0100
+
+ Wrap gio.Drive.stop()
+
+ gio/gdrive.override | 52
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 52 insertions(+)
+
+commit 29043bade408338cefa13fb4b0c875aabd3ef05e
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Fri Jan 1 13:00:42 2010 +0100
+
+ Wrap gio.Drive.start()
+
+ gio/gdrive.override | 52
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 52 insertions(+)
+
+commit dff374287bbecc8af782bbc726fad86c6c867754
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Fri Jan 1 12:45:29 2010 +0100
+
+ Add more remainders on missing methods of gio.Socket and related types
+
+ gio/gsocket.override | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit b8c7e996498bd72df551011af85ff05ef7335b4f
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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 ++++++++++++++
+ 2 files changed, 108 insertions(+), 2 deletions(-)
+
+commit a5ae2d5ba3db34967fe07a3cc97b75df2793988c
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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 ++++++++++++++++++++++++
+ 2 files changed, 66 insertions(+), 2 deletions(-)
+
+commit a5ab26cc1bb3e9dd57e2fdb26ef5c02e8066d097
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Fri Jan 1 11:19:34 2010 +0100
+
+ Wrap gio.SocketListener.accept_async()
+
+ gio/gsocket.override | 42 ++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 42 insertions(+)
+
+commit c9496b29ef9ef232020a4044577d2947353953a5
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Fri Jan 1 11:14:35 2010 +0100
+
+ Wrap gio.SocketListener.accept_socket() and add a test
+
+ gio/gsocket.override | 48
+ +++++++++++++++++++++++++++++++++++++++++++++++-
+ tests/test_gsocket.py | 13 +++++++++++++
+ 2 files changed, 60 insertions(+), 1 deletion(-)
+
+commit 1aa5e301c49f11e1c5ef58de44b4b03f714d1a70
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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 +++++++++++++
+ 2 files changed, 58 insertions(+), 1 deletion(-)
+
+commit aaedcf166c78baf5449ef59d0ade4a29077fedc7
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Thu Dec 31 16:25:33 2009 +0100
+
+ Make cancellable optional in gio.SocketClient.connect_to_host()
+
+ gio/gio.defs | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 3829d7667b19126fb74562b28d271e616b154c99
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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 ++++++++
+ 2 files changed, 65 insertions(+), 1 deletion(-)
+
+commit 5bec72f34ea75bc56158cae5c39d61a2a4e7e601
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Thu Dec 31 10:19:47 2009 +0100
+
+ Add more remainders on missing methods of gio.Socket and related types
+
+ gio/gsocket.override | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+commit b08b20f2b1a57bcbf400d6fe8e87cf052bdb719d
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Thu Dec 31 10:16:18 2009 +0100
+
+ Wrap gio.SocketClient.connect_to_service_async()
+
+ gio/gsocket.override | 47 +++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 47 insertions(+)
+
+commit 116ea1bfe32946e67aa54eb8dc7b977e57f254c2
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Thu Dec 31 10:10:43 2009 +0100
+
+ Wrap gio.SocketClient.connect_to_host_async()
+
+ gio/gsocket.override | 48
+ ++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 48 insertions(+)
+
+commit 9c930910505d5b9001b8cec17ff98fadeaa799e2
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Thu Dec 31 09:59:46 2009 +0100
+
+ Wrap gio.SocketClient.connect_async()
+
+ gio/gsocket.override | 45 +++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 45 insertions(+)
+
+commit dff024256295c15e49888ad9d5fef74a7746edd7
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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 ++++++++++++++++
+ 2 files changed, 58 insertions(+)
+
+commit e2330bd0d6cbc49b0ecb27b30e3b0593935ce229
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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 +++++++++++++++++++++++++++++++
+ 2 files changed, 38 insertions(+)
+
+commit 6040b33467ea381c6cb02f6a5efc0745fa8fa47b
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Wed Dec 30 22:54:47 2009 +0100
+
+ Make cancellable optional for gio.SocketAddressEnumerator.next()
+
+ gio/gio.defs | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit b19f59790b9de943d69b6c5e483928e0443c3d20
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Wed Dec 30 22:17:44 2009 +0100
+
+ Add a remainder of the Socket methods that needs manual wrapping still
+
+ gio/gsocket.override | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+commit 771a7c3fdef7b2e98e509293a8376a81c1282286
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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 +++++-
+ 2 files changed, 32 insertions(+), 1 deletion(-)
+
+commit 50960656815b0897a5ebe5f011537b8dcbdc857e
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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 +++++++++++++++++++++
+ 4 files changed, 64 insertions(+)
+
+commit de7a359e81792ae8573ac944455ea289985449ed
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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 +++++++++++++
+ 2 files changed, 50 insertions(+)
+
+commit 308421789ce849040d645077c41c80b6e2e65e83
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Wed Dec 30 14:00:22 2009 +0100
+
+ Wrap gio.Resolver.lookup_service_async()
+
+ gio/gresolver.override | 48
+ ++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 48 insertions(+)
+
+commit 9d56ce775f56fff1b1ef3c75843c0583e39f75c3
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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 +++++
+ 2 files changed, 47 insertions(+)
+
+commit 7fc71f490494dae73a5264869a97a9d30814930e
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Tue Dec 29 22:12:50 2009 +0100
+
+ Wrap gio.Resolver.lookup_by_address_async() and add a test
+
+ gio/gresolver.override | 46
+ ++++++++++++++++++++++++++++++++++++++++++++++
+ tests/test_gresolver.py | 14 ++++++++++++++
+ 2 files changed, 60 insertions(+)
+
+commit c91656dbe56f07d3ebbad5113467c22427cf212a
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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 ++++++++--
+ 2 files changed, 96 insertions(+), 2 deletions(-)
+
+commit 45b477342fa1c2435917c6d97745ad57665c4734
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Tue Dec 29 17:15:44 2009 +0100
+
+ Wrap gio.Drive.eject_with_data()
+
+ gio/gdrive.override | 54
+ +++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 54 insertions(+)
+
+commit 635227480f9659a1f91ab1ec12536d3ed012a976
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Tue Dec 29 17:06:52 2009 +0100
+
+ Deprecate old gio.Drive methods
+
+ gio/gdrive.override | 7 ++++++-
+ gio/gio.defs | 1 +
+ 2 files changed, 7 insertions(+), 1 deletion(-)
+
+commit 3c0cbc95af29b1e192ed4b5963e96e39c70b349c
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Tue Dec 29 13:51:54 2009 +0100
+
+ Small fix in the header
+
+ gio/gdrive.override | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 7589128515b79d836365247dc876538c6352da23
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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 ++++++++++++++++++
+ 4 files changed, 80 insertions(+)
+
+commit 604d2bf220b1fefa415baaedbdb2882dbaf9e07e
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Tue Dec 29 12:39:13 2009 +0100
+
+ Make cancellable an optional parameter in
+ gio.Resolver.lookup_by_address()
+
+ gio/gio.defs | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 00029145f4cd10759b37b38fb9f72435bf26b28b
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Tue Dec 29 10:15:14 2009 +0100
+
+ Strip g_ prefix for many other functions
+
+ gio/gio.defs | 94
+ ++++++++++++++++++++++++++++++------------------------------
+ 1 file changed, 47 insertions(+), 47 deletions(-)
+
+commit 56d5dfc4fd862e32c19f944a0feb7a00a9154f06
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Tue Dec 29 10:12:53 2009 +0100
+
+ Strip g_prefix from InetAddress functions
+
+ gio/gio.defs | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit 1d360301d51a587a36a59f5d62e354484bbd2b31
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Tue Dec 29 10:03:59 2009 +0100
+
+ Fix function name gio.resolver_get_default()
+
+ Strip the g_ prefix from function name
+
+ gio/gio.defs | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 0fe00109c4f6fc27cbaae9b0a24ecfac71355d2f
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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 ++++++++++++
+ 4 files changed, 88 insertions(+)
+
+commit 86783c695f3641b9491962e8f95a4dcb91f4017c
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Tue Dec 29 13:08:29 2009 +0100
+
+ Register enums and flags in PyGI if needed
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=603534
+
+ gobject/pygenum.c | 20 ++++++++++++++------
+ gobject/pygflags.c | 19 +++++++++++++------
+ 2 files changed, 27 insertions(+), 12 deletions(-)
+
+commit b90c01cff5ff5cb2796182f2ffd7b5248eaeed6a
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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 ++++++++++++++++
+ 4 files changed, 91 insertions(+)
+
+commit 0bff01bcee73a0e0d18342331136119c4e8bf151
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Mon Dec 28 22:39:09 2009 +0100
+
+ Make cancellable an optional parameter in GFile.create_readwrite()
+
+ gio/gio.defs | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 1cabd733cde269ce3164834933f4a226673ecb0b
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Mon Dec 28 21:39:50 2009 +0100
+
+ Remove a duplicate entry in gio.defs
+
+ gio/gio.defs | 9 ---------
+ 1 file changed, 9 deletions(-)
+
+commit 9ac372ad0bcfdec4bb1c96bc152246542a59a9b1
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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 ++++++-
+ 2 files changed, 38 insertions(+), 2 deletions(-)
+
+commit 7bc2673f92138b1804d8eba091942d14d8884f90
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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 +++++++
+ 2 files changed, 21 insertions(+)
+
+commit 3d5056ad766d6856d8d6459fe9b377de2f0fd172
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Sat Dec 26 22:27:48 2009 +0100
+
+ Update Enums and Flags with new API
+
+ gio/gio-types.defs | 153
+ +++++++++++++++++++++++++++++++++++++++++++++++++++--
+ 1 file changed, 149 insertions(+), 4 deletions(-)
+
+commit 62a9d660a4a2d5fab1d57c6c96c984ff02d25ccd
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Fri Dec 25 18:06:39 2009 +0100
+
+ Post release version bump to 2.21.1
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 2bd92cba5b028f0f78c35ecb34e648e95248f9d3
+Author: Bastian Winkler <buz@netbuz.org>
+Date: Fri Aug 14 15:10:26 2009 +0200
+
+ Fix handling of uchar in pyg_value_from_pyobject
+
+ Set the value by g_value_set_uchar and allow to use integer types
+ from python.
+
+ gobject/pygtype.c | 15 +++++++++++----
+ 1 file changed, 11 insertions(+), 4 deletions(-)
+
+commit 828d0f042b59ea0319f33a23803c179af34ef2f1
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Tue Dec 22 18:05:47 2009 +0100
+
+ Add Gtk.keysyms to overrides
+
+ gi/overrides/Gtk.py | 2 +
+ gi/overrides/Makefile.am | 1 +
+ gi/overrides/keysyms.py | 1499
+ ++++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 1502 insertions(+)
+
+commit 24fa1224ff00b9da177e0bfaa1e14e1b899e4976
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Wed Nov 25 10:33:56 2009 +0100
+
+ The array field 'length' starts to count from the C arg list, so
+ need to decrement when it's a method
+
+ 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 ++++++++++++++
+ 6 files changed, 103 insertions(+), 4 deletions(-)
+
+commit 867536c6734e606d045760837ed22583da06566e
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Fri Dec 18 10:50:09 2009 +0100
+
+ Update NEWS and README, release pygobject 2.21.0
+
+ NEWS | 18 ++++++++++++++++++
+ README | 6 +++---
+ 2 files changed, 21 insertions(+), 3 deletions(-)
+
+commit f50fbd24fa61863aaefa4ae1e12e0b314ecd43ae
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Fri Dec 18 10:31:48 2009 +0100
+
+ Add pygi-external.h into Makefile SOURCES
+
+ gobject/Makefile.am | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit 108c03b78f04b4bcfe066a6cb4d941e172bd32fe
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Fri Dec 18 01:20:34 2009 +0100
+
+ Bug 598435 - No wrapping for g_find_program_in_path ()
+
+ glib/glibmodule.c | 20 ++++++++++++++++++++
+ 1 file changed, 20 insertions(+)
+
+commit d3d5cb3a4a2c2cb2bd0c2571304d59e19bc08452
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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 ++++
+ 3 files changed, 144 insertions(+), 1 deletion(-)
+
+commit c87c8a81947a68507e8f3bcaf8e0e969b3e5331b
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Thu Dec 17 21:52:11 2009 +0100
+
+ Bump required glib version to 2.22.4
+
+ I've committed a patch to glib which will be released in the stable
+ branch.
+ Without the patch the unix module will fail, so I'm forced to bump.
+
+ configure.ac | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit b630c8d4b1e55938dac89729768c4a877b305215
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Thu Dec 17 02:24:45 2009 +0100
+
+ Properly define Connectable as interface type and not object type
+
+ gio/gio-types.defs | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+commit e955b931b07113c7432f7a85f882f69f12d263ad
+Author: Anderson Lizardo <anderson.lizardo@openbossa.org>
+Date: Mon Nov 30 22:01:25 2009 +0100
+
+ Depend on GLib 2.20 rather than 2.22
+
+ Backport g_array_get_element_size.
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=603411
+
+ configure.ac | 2 +-
+ gi/pygi-private.h | 19 +++++++++++++++++++
+ 2 files changed, 20 insertions(+), 1 deletion(-)
+
+commit 542fdf6da4ad8f2d28d0d50152bd93cb4d8ee39a
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Sat Nov 28 18:48:19 2009 +0000
+
+ Use the limit constants from glib and interpret G_MAXUINT32 as
+ PyLong_FromLongLong
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=602384
+
+ gi/pygi-argument.c | 14 +++++++-------
+ tests/test_gi.py | 18 +++++++++---------
+ 2 files changed, 16 insertions(+), 16 deletions(-)
+
+commit 38e89942d29f2a1dba47ab4a8d5edc84322707cd
+Author: Simon van der Linden <svdlinden@src.gnome.org>
+Date: Mon Nov 30 00:10:56 2009 +0100
+
+ Suppress warnings about format conversion
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=603355
+
+ gobject/generate-constants.c | 32 ++++++++++++++++----------------
+ 1 file changed, 16 insertions(+), 16 deletions(-)
+
+commit cfa7d005487e17e8f7c1ceb14282d3a5baadb736
+Author: Simon van der Linden <svdlinden@src.gnome.org>
+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 +++++++++++++++++-----------------
+ 2 files changed, 596 insertions(+), 253 deletions(-)
+
+commit d1ae73f3cf7cebdb74c9ec56b08928a2a53b9de6
+Author: Johan Dahlin <johan@gnome.org>
+Date: Mon Nov 23 15:58:17 2009 -0200
+
+ Pythonify. Avoid ; and () around if statements
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=602830
+
+ gi/types.py | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit a8660621679c629fc81320a8ddf5bf2c7ee1f177
+Author: Johan Dahlin <johan@gnome.org>
+Date: Tue Nov 24 10:36:18 2009 -0200
+
+ Remove trailing whitespace
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=602830
+
+ gi/module.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 66c34805223af9e63c7d61f21a3dbd7505a8f256
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Mon Nov 30 10:03:34 2009 +0000
+
+ Set a default constructor for boxed structs that don't have one
+
+ 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 ++++++++------
+ 13 files changed, 321 insertions(+), 86 deletions(-)
+
+commit e7e2fccae36c28c7e9f288fcd4c90a001140e307
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Mon Nov 30 10:53:57 2009 +0000
+
+ Revert "Use the limit constants from glib and interpret G_MAXUINT32
+ as PyLong_FromLongLong"
+
+ This reverts commit 05a2ed55f3e5d2620de8b3b6b0d99e928ef3b041.
+
+ gi/pygi-argument.c | 14 +++++++-------
+ tests/test_gi.py | 18 +++++++++---------
+ 2 files changed, 16 insertions(+), 16 deletions(-)
+
+commit 05a2ed55f3e5d2620de8b3b6b0d99e928ef3b041
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Sat Nov 28 18:48:19 2009 +0000
+
+ Use the limit constants from glib and interpret G_MAXUINT32 as
+ PyLong_FromLongLong
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=602384
+
+ gi/pygi-argument.c | 14 +++++++-------
+ tests/test_gi.py | 18 +++++++++---------
+ 2 files changed, 16 insertions(+), 16 deletions(-)
+
+commit e24d155dd7b4a5b9c25c054137d1370c369d3192
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Sat Nov 28 18:45:54 2009 +0000
+
+ Add the missing limit constants from glibconfig.h
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=603244
+
+ gobject/generate-constants.c | 17 ++++++++++++++++-
+ 1 file changed, 16 insertions(+), 1 deletion(-)
+
+commit 3a295cb7ffaaaf29c71b8833cf0ee5ec7ceaa909
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Sat Nov 28 18:48:49 2009 +0100
+
+ Fix bad name when rebuilding the unix source module
+
+ gio/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit a8cbb6fb72dbe6630d1265b18095c9a96f496b86
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Sat Nov 28 18:47:26 2009 +0100
+
+ Wrap new API added in GIO 2.22
+
+ gio/gio-types.defs | 138 +++
+ gio/gio.defs | 2444
+ +++++++++++++++++++++++++++++++++++++++++++++++-----
+ 2 files changed, 2360 insertions(+), 222 deletions(-)
+
+commit 96f6c638709636d7e2ddf560b877879691da3314
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Sat Nov 28 11:03:51 2009 +0000
+
+ A few tests about interfaces
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=601181
+
+ tests/libtestgi.c | 23 +++++++++++++++++++++++
+ tests/libtestgi.h | 16 ++++++++++++++++
+ tests/test_gi.py | 21 +++++++++++++++++++++
+ 3 files changed, 60 insertions(+)
+
+commit 076ba3156c13375a75983cef7a409c8c8afea119
+Author: Simon van der Linden <svdlinden@src.gnome.org>
+Date: Thu Nov 26 23:50:54 2009 +0100
+
+ Fix members initialization in metaclasses
+
+ In metaclasses, the test for the name of the class was wrong, since it
+ prevented one to create a subclass with the same name (especially
+ annoying for
+ overrides). Now, if a GType is available from the info, the fact
+ that it
+ doesn't have any wrapper yet means that the metaclass is creating
+ the base
+ class, which will be registerd just after its creation. This is
+ true for
+ objects, and for structures registered as boxed or pointer too.
+
+ This patch includes a test for basic subclassing in Python. It
+ notably tests
+ that methods don't get overridden by the metaclass.
+
+ gi/types.py | 5 +++--
+ tests/test_gi.py | 19 +++++++++++++++++++
+ 2 files changed, 22 insertions(+), 2 deletions(-)
+
+commit ac80e64c9f7d257865aa820753e52d56cf2871c8
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Fri Nov 27 12:06:59 2009 +0000
+
+ Structs in arrays are not marshalled correctly
+
+ 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 ++++++++
+ 4 files changed, 59 insertions(+), 8 deletions(-)
+
+commit 4a373b8ad6ec137e911b92a3e745e0fd76541292
+Author: Simon van der Linden <svdlinden@src.gnome.org>
+Date: Wed Nov 25 16:53:55 2009 +0100
+
+ Use the right variable when looking up in sys.modules
+
+ gi/importer.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit fc3dca018e85aee34ade79d104ebd8cdd1dd5968
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Tue Nov 24 15:52:47 2009 +0100
+
+ Accept 0 as a valid value for flag and enum arguments
+
+ 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 +
+ 4 files changed, 26 insertions(+), 1 deletion(-)
+
+commit 33081c29a1c2fdec2b8bfe17ae0a72b8db7a8d84
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Tue Nov 24 13:10:11 2009 +0100
+
+ Add stuff to .gitignore
+
+ .gitignore | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+commit 5c010fe673d9bd01c27c8d7d312064665275888c
+Author: Simon van der Linden <svdlinden@src.gnome.org>
+Date: Mon Nov 23 22:39:12 2009 +0100
+
+ Remove the girepository module
+
+ Makefile.am | 2 +-
+ configure.ac | 17 -
+ girepository/Makefile.am | 54 --
+ girepository/__init__.py | 24 -
+ girepository/bank-argument.c | 379 ------------
+ girepository/bank-info.c | 1194
+ ------------------------------------
+ girepository/bank-repository.c | 236 -------
+ girepository/bank.c | 155 -----
+ girepository/bank.h | 80 ---
+ girepository/btypes.py | 300 ---------
+ girepository/importer.py | 51 --
+ girepository/module.py | 224 -------
+ girepository/overrides/Gdk.py | 14 -
+ girepository/overrides/Gtk.py | 8 -
+ girepository/overrides/__init__.py | 0
+ girepository/repository.py | 51 --
+ tests/test_girepository.py | 386 ------------
+ 17 files changed, 1 insertion(+), 3174 deletions(-)
+
+commit a644edf0515c26ed027522891ccf02aceac764e8
+Author: Johan Dahlin <johan@gnome.org>
+Date: Mon Nov 23 15:32:16 2009 -0200
+
+ Create overridden modules in two passes
+
+ This patch splits overridden module creation into two passes. The
+ first pass
+ creates the auto-generated module normally before the overridden
+ module is
+ attempted to be imported. The second pass imports the overridden
+ module and
+ replaces the auto-generated module with the overridden. This is
+ necessary
+ for the overridden modules to be able to access the auto-generated
+ ones.
+
+ gi/importer.py | 34 +++++++++++++++++++++-------------
+ 1 file changed, 21 insertions(+), 13 deletions(-)
+
+commit fad89e12a744b57e6348968f351d25d167de8248
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Sun Nov 22 17:56:20 2009 +0100
+
+ Add support for Any arguments
+
+ 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 +++++
+ 4 files changed, 27 insertions(+), 8 deletions(-)
+
+commit 1dc62a998dd8d2a0a397f8309011a8d79cb56034
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Sun Nov 22 17:25:04 2009 +0100
+
+ Register interfaces
+
+ https://bugzilla.gnome.org/show_bug.cgi?id=601181
+
+ gi/gimodule.c | 33 +++++++++++++++++++++++++++++++++
+ gi/types.py | 5 ++++-
+ 2 files changed, 37 insertions(+), 1 deletion(-)
+
+commit d67d5afb5115c1d8294415b2e1a82af2c737ba17
+Author: Paul Pogonyshev <pogonyshev@gmx.net>
+Date: Sun Nov 22 18:23:02 2009 +0200
+
+ Ignore one more file.
+
+ .gitignore | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 408b2186aea58a41ec26b9d0ca29ecd42df5ef7e
+Author: Paul Pogonyshev <pogonyshev@gmx.net>
+Date: Sun Nov 22 18:22:23 2009 +0200
+
+ Fix wrong minimum checking in float properties
+
+ Bug #587637. Test the fix.
+
+ gobject/propertyhelper.py | 5 +++--
+ tests/test_properties.py | 6 ++++++
+ 2 files changed, 9 insertions(+), 2 deletions(-)
+
+commit 6ccf58afcf58e118903ced0135f0fe69b00e09ad
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Mon Oct 26 18:06:06 2009 +0000
+
+ Treat GI_INFO_TYPE_INTERFACE same as GI_INFO_TYPE_OBJECT
+
+ gi/pygi-argument.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit e6f730d6e1431e36bd5f6b503a1038617f8d1e7d
+Author: Simon van der Linden <svdlinden@src.gnome.org>
+Date: Sat Nov 14 21:42:43 2009 +0100
+
+ Import pygtk properly to avoid failure on some setups
+
+ tests/test_gi.py | 3 +++
+ 1 file changed, 3 insertions(+)
+
+commit e604a89e9dc1a79687ef5fb94af7a2182be07dfb
+Author: Alex Dedul <rotmer@gmail.com>
+Date: Sat Nov 14 21:39:15 2009 +0100
+
+ Search for python-config-${VERSION} when python${VERSION}-config is
+ not found
+
+ On Gentoo, notably, the config tool is named python-config-${VERSION},
+ while on
+ Fedora and Ubuntu, it is named python${VERSION}-config.
+
+ Signed-off-by: Simon van der Linden <svdlinden@src.gnome.org>
+
+ configure.ac | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+commit 4a887cfabb326cb99dc65073d592c03f59e2f141
+Author: Simon van der Linden <svdlinden@src.gnome.org>
+Date: Sat Nov 14 21:36:19 2009 +0100
+
+ Fix silent rules setup
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 602afea88c338a38327cd84e08703c5daa384ec6
+Author: Paul Pogonyshev <pogonyshev@gmx.net>
+Date: Tue Nov 10 22:32:33 2009 +0200
+
+ Move threads_init() function from 'gobject' to 'glib'
+
+ Retain in original place for backward compatibility, but remove it
+ from the docs.
+
+ docs/reference/pygobject-functions.xml | 36
+ +++++++---------------------------
+ glib/glibmodule.c | 16 +++++++++++++++
+ 2 files changed, 23 insertions(+), 29 deletions(-)
+
+commit 734755912fff11332dc0e96317b7d6b7c4014e6a
+Author: Simon van der Linden <svdlinden@src.gnome.org>
+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 ---
+ 4 files changed, 493 deletions(-)
+
+commit 6a69288941e65312fe82649ec72d2f21b2dc618f
+Author: Simon van der Linden <svdlinden@src.gnome.org>
+Date: Sat Nov 7 23:42:07 2009 +0100
+
+ Create instances by calling tp_alloc rather than PyObject_NEW
+
+ PyObject_NEW calls a generic allocator and should only be called by
+ tp_new, knowing
+ that the type's free function agrees. In pyg_boxed_new, we may
+ allocate
+ PyGBoxed subtypes, so the subtype's allocation function must be
+ called instead.
+
+ gobject/pygboxed.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit 000f7c36e667c6e078e3370769ea868e56a1b4ee
+Author: Simon van der Linden <svdlinden@src.gnome.org>
+Date: Sat Nov 7 16:43:35 2009 +0100
+
+ Add capabilities to import wrappers from pygi
+
+ At instance creation for boxed and pointers, at lookup for objects,
+ when the gtype has no wrapper yet, a wrapper may be imported from
+ pygi.
+
+ The feature is turned on at configure time by --enable-pygi.
+
+ Because we couldn't create a circular build dependency, PyGI's import
+ 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 +++++++++
+ 5 files changed, 105 insertions(+)
+
+commit fdfbc90dbc9e305646b62d73de506b5e0e99cc91
+Author: Simon van der Linden <svdlinden@src.gnome.org>
+Date: Sun Nov 8 20:03:58 2009 +0100
+
+ Update PyGObject patches
+
+ 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 +-
+ 2 files changed, 69 insertions(+), 7 deletions(-)
+
+commit 8f53ca8a72f9958711765281dd5c5bdfb7042d7d
+Author: Tomeu Vizoso <tomeu@sugarlabs.org>
+Date: Sun Nov 8 16:52:18 2009 +0100
+
+ Add myself to pygi.doap
+
+ pygi.doap | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+commit 6f50d5102aec9288e1851f12e9d232b9c141d524
+Author: Simon van der Linden <svdlinden@src.gnome.org>
+Date: Sun Nov 8 15:40:51 2009 +0100
+
+ Add a doap file
+
+ pygi.doap | 17 +++++++++++++++++
+ 1 file changed, 17 insertions(+)
+
+commit ce673b9027868e6add4eeb438bc707eb40bfd046
+Author: Simon van der Linden <svdlinden@src.gnome.org>
+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 ++++
+ 4 files changed, 431 insertions(+)
+
+commit b24fd9633cabe1d95cde173a04e9a49833b06a26
+Author: Simon van der Linden <svdlinden@src.gnome.org>
+Date: Sun Nov 8 12:35:08 2009 +0100
+
+ Initial import
+
+ .gitignore | 33 +
+ Makefile.am | 10 +
+ autogen.sh | 159 +++
+ configure.ac | 53 +
+ gi/Makefile.am | 50 +
+ gi/__init__.py | 24 +
+ gi/gimodule.c | 144 ++
+ gi/importer.py | 89 ++
+ gi/module.py | 167 +++
+ gi/overrides/Gdk.py | 21 +
+ gi/overrides/Gtk.py | 13 +
+ gi/overrides/Makefile.am | 10 +
+ gi/overrides/__init__.py | 0
+ gi/pygi-argument.c | 1976 ++++++++++++++++++++++++++
+ gi/pygi-argument.h | 65 +
+ gi/pygi-info.c | 2093 ++++++++++++++++++++++++++++
+ gi/pygi-info.h | 64 +
+ gi/pygi-private.h | 55 +
+ gi/pygi-repository.c | 238 ++++
+ gi/pygi-repository.h | 39 +
+ gi/pygi-struct.c | 175 +++
+ gi/pygi-struct.h | 40 +
+ gi/pygi-type.c | 96 ++
+ gi/pygi-type.h | 43 +
+ gi/pygi.h | 99 ++
+ gi/pygobject-external.h | 83 ++
+ gi/repository/Makefile.am | 8 +
+ gi/repository/__init__.py | 30 +
+ gi/types.py | 163 +++
+ tests/Makefile.am | 48 +
+ tests/libtestgi.c | 3397
+ +++++++++++++++++++++++++++++++++++++++++++++
+ tests/libtestgi.h | 643 +++++++++
+ tests/runtests.py | 22 +
+ tests/test_gi.py | 1416 +++++++++++++++++++
+ 34 files changed, 11566 insertions(+)
+
+commit bfd3100a580b8bea9db25b8bb7443fb8c3dbe1cc
+Author: Simon van der Linden <svdlinden@src.gnome.org>
+Date: Sat Nov 7 13:23:53 2009 +0100
+
+ Fix girpository build setup
+
+ configure.ac | 21 ++++++-----
+ girepository/Makefile.am | 13 ++++---
+ m4/introspection.m4 | 92
+ ++++++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 111 insertions(+), 15 deletions(-)
+
+commit 421c03b1c5b69f90c778663df901b45ca3ee8ba5
+Author: Simon van der Linden <svdlinden@src.gnome.org>
+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 +++++++++++++++++++++++++++++++++------
+ 1 file changed, 33 insertions(+), 6 deletions(-)
+
+commit a9c168c58cc6a449b51653417bf3f58bdd41457c
+Author: Philippe Normad <phil@base-art.net>
+Date: Wed Oct 21 18:01:16 2009 +0200
+
+ pygmainloop: fix use of PySignal_WakeUpFD API for nested loops
+
+ Fixes bug #481569
+
+ glib/pygmainloop.c | 95
+ ++++++++++++++++++++++++++++--------------------------
+ 1 file changed, 50 insertions(+), 45 deletions(-)
+
+commit c6a5750379354c12e2599b3c73b4f9a23fd39114
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Fri Sep 25 20:12:21 2009 +0200
+
+ Post release version bump to 2.21.0
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 33920eb013628a5e22b7b32403fb965ae3210f47
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Wed Sep 23 21:52:04 2009 +0200
+
+ Update NEWS and release 2.20.0
+
+ NEWS | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+commit 66b12f7d2f54143ea80b4f8aec863b26800363d6
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Wed Sep 23 21:51:43 2009 +0200
+
+ Bump version to 2.20.0
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 7bf87338a026ac82f908aa5fddf2bfea2daf6617
+Author: Brian Cameron <Brian.Cameron@sun.com>
+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 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit d042402b7c649b2bed7f20038eb82518ec7cc9b3
+Author: Paul Pogonyshev <pogonyshev@gmx.net>
+Date: Tue Sep 22 22:02:27 2009 +0300
+
+ Plug reference leak of GSource in pyg_main_loop_init()
+
+ Bug #579406, second change.
+
+ glib/pygmainloop.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 640be8109d066e85ed77c810830a5f73c750415b
+Author: Frédéric Péters <fpeters@0d.be>
+Date: Sun Aug 30 16:46:02 2009 +0200
+
+ Specify programming language in .devhelp file
+
+ This add a new language attribute (hardcoded to python) in the
+ .devhelp
+ file that is produced when using ref-html-style.xsl.
+
+ docs/xsl/devhelp.xsl | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit c888b5ca722fcad6a03de585606c677c2969ebd6
+Author: Paolo Borelli <pborelli@gnome.org>
+Date: Thu Aug 13 21:32:07 2009 +0200
+
+ Allow to use automake 1.11
+
+ autogen.sh | 13 +++++++------
+ 1 file changed, 7 insertions(+), 6 deletions(-)
+
+commit 30deaba4bd1e199aab75cb346ee9237237807fbd
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Tue Aug 11 22:19:50 2009 +0200
+
+ Update README
+
+ README | 10 ++++++++--
+ 1 file changed, 8 insertions(+), 2 deletions(-)
+
+commit af165d350d0d1bb493be5140bf84376d3da1e4d8
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Tue Aug 11 22:16:52 2009 +0200
+
+ Update AUTHORS
+
+ AUTHORS | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+commit 5f9f87f276b97964b525a501d8584ea8b4d8bfd2
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Tue Aug 11 22:11:43 2009 +0200
+
+ Add myself and Paul as maintainers
+
+ MAINTAINERS | 8 ++++++++
+ pygobject.doap | 14 ++++++++++++++
+ 2 files changed, 22 insertions(+)
+
+commit 3bfae47fbcb5523d91fb2d1ed7ea347eeddd1775
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Tue Aug 11 20:52:44 2009 +0200
+
+ Update NEWS release 2.19.0
+
+ NEWS | 29 +++++++++++++++++++++++++++++
+ 1 file changed, 29 insertions(+)
+
+commit e82a1841f31ad54dd50569d0d45290713409e0bf
+Author: John Finlay <finlay@moeraki.com>
+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
+ +++++++++++++++++++++++++++++++++++++++++++++++++++-
+ 1 file changed, 241 insertions(+), 1 deletion(-)
+
+commit f1fad96da2c531fbd3218923baa4fe806a2942d4
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Sat Aug 8 21:37:54 2009 +0200
+
+ Bug 590063 – GFileInfo.list_attributes should accept None/NULL
+
+ gio/gfileinfo.override | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit b7907cf6ff6ccf8d38b5206f09f5c864c205e5de
+Author: Johan Dahlin <johan@gnome.org>
+Date: Fri Jul 24 14:30:37 2009 -0300
+
+ Remove myself as a maintainer
+
+ MAINTAINERS | 4 ----
+ pygobject.doap | 7 -------
+ 2 files changed, 11 deletions(-)
+
+commit be6eb21320b4688bcfcd8cbea33f7be29a76f2a2
+Author: John Finlay <finlay@moeraki.com>
+Date: Wed Jul 8 15:47:44 2009 -0700
+
+ * codegen/defsgen.py (clean_patterns): Strip out Windows
+ DLL API macros.
+
+ codegen/defsgen.py | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit 2214cad3529979e29342a7e1fdc2915b90ce9c10
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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 +
+ 6 files changed, 42 insertions(+), 28 deletions(-)
+
+commit c0acaedfe7f4e488a490e07e3184f0709e1fadc2
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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
+ +++++++++++++++++++++++++++++++++++++
+ 3 files changed, 398 insertions(+)
+
+commit ebddee47fb7f3e06f9e0a7a14b9532d5cf8a3881
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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
+ ++++++++++++++++++++++++++++++
+ 4 files changed, 410 insertions(+)
+
+commit 5b71e58117c85634d95d08449eb54079b246e5be
+Author: Paul Pogonyshev <pogonyshev@gmx.net>
+Date: Sun Jun 21 16:50:03 2009 +0300
+
+ Document that many functions got moved gobject -> glib
+
+ docs/reference/pygobject-functions.xml | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+commit b270dc43f2cef5260b0bbc71356fd8e6a2b7f754
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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
+ ++++++++++++++++++++++++++++++
+ 3 files changed, 507 insertions(+)
+
+commit 549313fc4886fa3deb31761de6f5400708165d86
+Author: Murray Cumming <murrayc@murrayc.com>
+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 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit 5c36ef20dca8cd1793f2d3e88949675299097f40
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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
+ +++++++++++++++++++++++++++++++
+ 4 files changed, 868 insertions(+)
+
+commit a8b36c343c6850af929c1d5a930f923831b4e637
+Author: Theppitak Karoonboonyanan <thep@linux.thai.net>
+Date: Mon Jun 15 23:25:01 2009 +0300
+
+ Fix build when builddir is not the same as srcdir
+
+ Bug #585817.
+
+ girepository/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 9d9ae97b8a49836ec1f3b8d6529bafe1cc06d4d7
+Author: Paul Pogonyshev <pogonyshev@gmx.net>
+Date: Mon Jun 15 23:19:47 2009 +0300
+
+ Make gio.Emblem constructor new-style
+
+ 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 ++--
+ 2 files changed, 52 insertions(+), 4 deletions(-)
+
+commit 268e1681fd5b46e6412d3a8db84f3f1cb02fdbde
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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 +
+ 3 files changed, 325 insertions(+), 47 deletions(-)
+
+commit a6e25aaa7c8f27d62f2917b06728d7ccfcd46416
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Sat Jun 13 14:38:34 2009 +0200
+
+ Fix gio.BufferedInputStream docs
+
+ Added the constructor reference and fixed a typo in properties header
+
+ docs/reference/pygio-bufferedinputstream.xml | 34
+ ++++++++++++++++++++++++++--
+ 1 file changed, 32 insertions(+), 2 deletions(-)
+
+commit a9b13b60a5aad726d7d7dd7fdc5153b1561fb591
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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 +
+ 3 files changed, 434 insertions(+)
+
+commit 7766daa59b0e2b85413cee368bf2ebd2afe198e1
+Author: Paul Pogonyshev <pogonyshev@gmx.net>
+Date: Sun May 31 18:25:47 2009 +0300
+
+ Cleanup GIO overrides to use Python function/method names
+
+ 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
+ +++++++++++++++++++++++++++++++++++++++++++
+ 5 files changed, 218 insertions(+), 218 deletions(-)
+
+commit 07e9c18dc092f6546230168b6b69c1b3454e120a
+Author: Paul Pogonyshev <pogonyshev@gmx.net>
+Date: Sun May 31 18:56:55 2009 +0300
+
+ Make codegen report errors using Python function/method names
+
+ Part of bug #584289.
+
+ codegen/codegen.py | 9 +++++----
+ codegen/definitions.py | 10 +++++++++-
+ 2 files changed, 14 insertions(+), 5 deletions(-)
+
+commit 235fde85d015382f2ba38b21968e82b3ac0b6612
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Fri Jun 12 00:12:17 2009 +0200
+
+ Fix object type in gio.BufferedInputStream_fill_async
+
+ gio/gbufferedinputstream.override | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 407b0e909056f15960e6a4e549896d786ce0a0b2
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Tue Jun 9 00:08:21 2009 +0200
+
+ Wrap gio.BufferedInputStream.fill_async
+
+ 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 ++++++++++++++
+ 4 files changed, 97 insertions(+)
+
+commit b7c96b41b287685fe57504e0add3a6f16e649975
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Mon Jun 8 15:42:40 2009 +0200
+
+ Add gio.BufferedOutputStream which was forgotten in the types
+ definition
+
+ gio/gio-types.defs | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+commit 3666f75af4ef2c8e038116aee5afada59d59f689
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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
+ ++++++++++++++++++++++++++++
+ 3 files changed, 178 insertions(+)
+
+commit 6eb5e3988cbddb4afb3d5747364d6eb80370bb78
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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 ---------------------
+ 4 files changed, 47 insertions(+), 24 deletions(-)
+
+commit dfbdf23633a772e78b47b0e7b0c3e3b87855d9ff
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Mon Jun 8 11:45:11 2009 +0200
+
+ Wrap gio.memory_input_stream_new_from_data
+
+ 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 +
+ 8 files changed, 252 insertions(+), 35 deletions(-)
+
+commit fcc3cb0e167789746a1a9db0cba54ea7a97c7259
+Author: Simon van der Linden <simon.vanderlinden@student.uclouvain.be>
+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 +-
+ 5 files changed, 39 insertions(+), 40 deletions(-)
+
+commit fb4b2c8cdad2853e6bfe9526529e3a3ab052c5e0
+Author: Simon van der Linden <simon.vanderlinden@student.uclouvain.be>
+Date: Fri Jun 5 19:03:59 2009 +0200
+
+ Removes the header but the modeline in test_girepository.py.
+
+ tests/test_girepository.py | 26 +-------------------------
+ 1 file changed, 1 insertion(+), 25 deletions(-)
+
+commit abe4828f52c7eb3a08f5b592e7ced1e97a58ef5c
+Author: Simon van der Linden <simon.vanderlinden@student.uclouvain.be>
+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/overrides/__init__.py | 0
+ 5 files changed, 26 insertions(+), 2 deletions(-)
+
+commit c12964e6a3354d8063355225c94e6d21d621e08b
+Author: Simon van der Linden <simon.vanderlinden@student.uclouvain.be>
+Date: Tue Jun 2 23:40:41 2009 +0200
+
+ Disables the tests that fail in tests/test_girepository.py.
+
+ tests/test_girepository.py | 242
+ ++++++++++++++++++++++++++++++++++-----------
+ 1 file changed, 182 insertions(+), 60 deletions(-)
+
+commit a4469a3f7d32a25156bae5e7aef9ec4ae5f6e140
+Author: Simon van der Linden <simon.vanderlinden@student.uclouvain.be>
+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
+ +++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 288 insertions(+)
+
+commit e4f2a5ef8734cf40cf8345d442612db1f6c62d5a
+Author: Simon van der Linden <simon.vanderlinden@student.uclouvain.be>
+Date: Thu May 28 17:45:11 2009 +0200
+
+ Introduces the girepository module from the former PyBank.
+
+ INSTALL | 69 +--
+ Makefile.am | 2 +-
+ configure.ac | 12 +
+ girepository/Makefile.am | 52 ++
+ girepository/__init__.py | 24 +
+ girepository/bank-argument.c | 379 +++++++++++++
+ girepository/bank-info.c | 1194
+ ++++++++++++++++++++++++++++++++++++++++
+ girepository/bank-repository.c | 237 ++++++++
+ girepository/bank.c | 155 ++++++
+ girepository/bank.h | 80 +++
+ girepository/btypes.py | 300 ++++++++++
+ girepository/importer.py | 52 ++
+ girepository/module.py | 224 ++++++++
+ girepository/repository.py | 51 ++
+ 14 files changed, 2799 insertions(+), 32 deletions(-)
+
+commit f5ab5046fe9b67ec5e8fc64679e1a3d01787af7e
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Tue Jun 2 18:28:22 2009 +0200
+
+ Fix the docs for gio.FilterOutputStream
+
+ docs/reference/pygio-filteroutputstream.xml | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit fded60d8376fc45d19bf6cd8be6b927cc3f2e8c6
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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
+ ++++++++++++++++++++++++++++
+ 3 files changed, 155 insertions(+)
+
+commit e2c31f916967229b6547e68013628ce0082cf875
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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
+ +++++++++++++++++++++++++++++
+ 3 files changed, 155 insertions(+)
+
+commit 49a467eee445bc75554db0374006722ac075194b
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Tue Jun 2 11:33:20 2009 +0200
+
+ Add API appeared in 2.20 but not marked as such in gio docs
+
+ gio/gio.defs | 30 ++++++++++++++++++++++++++++++
+ 1 file changed, 30 insertions(+)
+
+commit 180c157f2a20b7d2dd9af05bfb5f515fd23870a0
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Tue Jun 2 10:41:26 2009 +0200
+
+ Wrap gio.FileOutputStream.query_info_async
+
+ 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 ++++
+ 7 files changed, 358 insertions(+), 1 deletion(-)
+
+commit 4673577d1f6c3d54423808dd575987092fb05ad2
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Tue Jun 2 10:17:41 2009 +0200
+
+ Fix gio.FileInputStream docs
+
+ Add implemented interface section and remove a method description
+
+ docs/reference/pygio-fileinputstream.xml | 25 +++++++++----------------
+ 1 file changed, 9 insertions(+), 16 deletions(-)
+
+commit 1e1cad02879d514745b5233658654cbe944530a5
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Mon Jun 1 22:54:26 2009 +0200
+
+ Fix the method name
+
+ gio/gfileinputstream.override | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+commit f605811afe8c91f121e89b6f9ec28c70b62f4110
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Mon Jun 1 22:40:56 2009 +0200
+
+ Wrap gio.FileInputStream.query_async
+
+ 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 ++++
+ 7 files changed, 321 insertions(+)
+
+commit 08623e54a426377c1504b5c364aabae5a17f8ad8
+Author: Paul Pogonyshev <pogonyshev@gmx.net>
+Date: Sun May 31 17:43:16 2009 +0300
+
+ Install executable codegen parts with executing permissions
+
+ Also add shebang where it was missing. Bug #583979.
+
+ codegen/Makefile.am | 23 ++++++++++++-----------
+ codegen/code-coverage.py | 2 ++
+ codegen/codegen.py | 2 ++
+ codegen/createdefs.py | 0
+ codegen/defsconvert.py | 2 ++
+ codegen/defsgen.py | 0
+ codegen/docgen.py | 0
+ codegen/scmexpr.py | 0
+ 8 files changed, 18 insertions(+), 11 deletions(-)
+
+commit 833d4da202bcfcb01a414f8aec4b751ec8e1ccb2
+Author: Paul Pogonyshev <pogonyshev@gmx.net>
+Date: Sat May 30 16:57:49 2009 +0300
+
+ Wrap gio.DataInputStream.read_line_async and read_until_async
+
+ Wrap the functions and their corresponding *_finish() functions.
+ Create 'gdatainputstream.override' for these and move two existing
+ 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 ++++++++-
+ 6 files changed, 300 insertions(+), 72 deletions(-)
+
+commit 2cb569c0ced49f9ed5ca83292d5f15c837066688
+Author: Paul Pogonyshev <pogonyshev@gmx.net>
+Date: Sat May 30 17:24:15 2009 +0300
+
+ Fix gio.OutputStream.splice_async
+
+ Bug #584290.
+
+ gio/goutputstream.override | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+commit e43fa429f6b4019a432acb481bbc07c8201cc46d
+Author: Paul Pogonyshev <pogonyshev@gmx.net>
+Date: Wed May 27 21:19:27 2009 +0300
+
+ Code maintenance: ignore one more file created by unit tests
+
+ tests/.gitignore | 1 +
+ 1 file changed, 1 insertion(+)
+
+commit 76e9dc74ac706a9207f9d31f887d6e38df2a678f
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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
+ +++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 367 insertions(+), 3 deletions(-)
+
+commit 8e40d71ac23deb7d91789486ee8cad440a6be1dd
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Mon May 25 01:33:08 2009 +0200
+
+ Add gio 2.20 API
+
+ add the new API added in gio 2.20, some needs to be wrapped manually
+
+ gio/gio.defs | 106
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gio/unix.defs | 48 +++++++++++++++++++++-----
+ 2 files changed, 146 insertions(+), 8 deletions(-)
+
+commit 0d08df42514fba6abc896814abfee0d2d083c29e
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Mon May 25 00:14:21 2009 +0200
+
+ Post release version bump 2.19.0
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit edfb09e3de7baf294b3beba84b4ecb94e1f16764
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Sun May 24 23:56:29 2009 +0200
+
+ Update NEWS, release 2.18.0
+
+ NEWS | 14 ++++++++++++++
+ configure.ac | 4 ++--
+ 2 files changed, 16 insertions(+), 2 deletions(-)
+
+commit e0648ea435e0b309cdd5bb0ebe56d4534efd26e4
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Sun May 24 22:18:40 2009 +0200
+
+ Add documentation for the gio.OutputStream class
+
+ The docs for this class are not completed, missing methods
+ descriptions.
+ The index is complete though, it will be completed once all the
+ 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
+ ++++++++++++++++++++++++++++++++++
+ 3 files changed, 144 insertions(+), 1 deletion(-)
+
+commit 11524cdf6472d9115a812ce431f6767aec5627bc
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Sun May 24 22:12:04 2009 +0200
+
+ Wrap gio.OutputStream.splice_async()
+
+ wrap gio.OutputStream.splice_async() and add a test.
+
+ gio/goutputstream.override | 58
+ +++++++++++++++++++++++++++++++++++++++++++++-
+ tests/test_gio.py | 20 ++++++++++++++++
+ 2 files changed, 77 insertions(+), 1 deletion(-)
+
+commit 82ad6b8c8ea4d6694126f5e0e67b826717e38f19
+Author: Emilio Pozuelo Monfort <pochu@ubuntu.com>
+Date: Sun May 24 22:55:16 2009 +0300
+
+ Add Python version into installed libpyglib name
+
+ 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 +-
+ 4 files changed, 9 insertions(+), 7 deletions(-)
+
+commit 59da8cd24ea390b6c983995833ec6b0e5d028b35
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Sun May 24 11:44:24 2009 +0200
+
+ Wrap gio.OutputStream.flush_async()
+
+ wrap gio.OutputStream.flush_async() and add a test.
+
+ gio/goutputstream.override | 47
+ +++++++++++++++++++++++++++++++++++++++++++++-
+ tests/test_gio.py | 11 +++++++++++
+ 2 files changed, 57 insertions(+), 1 deletion(-)
+
+commit 84ab6178ed0033f69932df5bc73c86bdff80c953
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Sun May 17 17:29:37 2009 +0200
+
+ Add documentation for the gio.FileMonitor class
+
+ The docs for this class are not completed, missing methods
+ descriptions.
+ The index is complete though, it will be completed once all the
+ 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
+ +++++++++++++++++++++++++++++++++++
+ 3 files changed, 131 insertions(+)
+
+commit 629496a5617d30e4dfa494b05a62c85a6af77b9a
+Author: Josselin Mouette <joss@malsain.org>
+Date: Sun May 17 18:03:44 2009 +0300
+
+ Use 'Requires.private' for libffi in '.pc' files
+
+ Correction for patch in bug #550231.
+
+ pygobject-2.0-uninstalled.pc.in | 3 ++-
+ pygobject-2.0.pc.in | 3 ++-
+ 2 files changed, 4 insertions(+), 2 deletions(-)
+
+commit 90cd8b7c4a25cd2ecb751f8337b401c98538272b
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Wed May 13 21:54:39 2009 +0200
+
+ Add wrapper for gio.FileAttributeMatcher
+
+ added a boxed type for gio.FileAttributeMatcher which has been
+ 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 ++
+ 3 files changed, 31 insertions(+), 2 deletions(-)
+
+commit e707447d9313f2f2ecba395cfe3682d5a5e859f4
+Author: Paul Pogonyshev <pogonyshev@gmx.net>
+Date: Wed May 13 22:06:25 2009 +0300
+
+ Mark relevant glib.IOChannel methods as METH_NOARGS
+
+ Additionally fix glib.IOChannel.set_close_on_unref: was marked
+ METH_NOARGS but actually accepted arguments. Fixes bug #582427.
+
+ glib/pygiochannel.c | 83
+ +++++++++++++----------------------------------------
+ 1 file changed, 20 insertions(+), 63 deletions(-)
+
+commit 002915e5f458fec5a89766a54e8119a70a80caa7
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Tue May 12 20:37:24 2009 +0200
+
+ Add documentation for the gio.FileInfo class
+
+ The docs for this class are not completed, missing methods
+ descriptions.
+ The index is complete though, it will be completed once all the
+ 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
+ ++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 349 insertions(+)
+
+commit 8cd25c871609580425c6c4c9e5bc6ec8d40862a1
+Author: Paul Pogonyshev <pogonyshev@gmx.net>
+Date: Sat May 9 16:46:04 2009 +0300
+
+ Retire hand-written ChangeLog; autocreate from Git history
+
+ Basically copied over from GLib source tree.
+
+ ChangeLog | 3606
+ ---------------------------------------------------
+ ChangeLog.pre-2.18 | 3608
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Makefile.am | 32 +
+ 3 files changed, 3640 insertions(+), 3606 deletions(-)
+
+commit 23556bdbcf9cf06db866901fb822dd78a9043648
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Sat May 9 00:03:05 2009 +0200
+
+ Fix a bug in InputStream.skip_async
+
+ use the count argument instead of buffer_size which is always zero
+
+ gio/ginputstream.override | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+commit ed6b06315c17441b41c001d38537c904b8fe18de
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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
+ +++++++++++++++++++++++++++++++++++
+ 3 files changed, 733 insertions(+)
+
+commit d58322b84d47da7905f95b43e9e0daf9f7c4b507
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Mon May 4 23:40:28 2009 +0200
+
+ Wrap gio.InputStream.skip_async()
+
+ wrap gio.InputStream.skip_async() and add a test.
+
+ gio/ginputstream.override | 50
+ ++++++++++++++++++++++++++++++++++++++++++++++-
+ tests/test_gio.py | 20 +++++++++++++++++++
+ 2 files changed, 69 insertions(+), 1 deletion(-)
+
+commit 2311187824d1b48a996ee2620fd3c9a63e3edd66
+Author: Siavash Safi <siavash@siavashs.org>
+Date: Mon May 4 15:46:49 2009 +0430
+
+ Add -n --namespace option and the code to remove
+ dll API in headers, Added documentation
+
+ Patch from bug #579275
+
+ ChangeLog | 8 ++++
+ codegen/h2def.py | 133
+ +++++++++++++++++++++++++++++++++++++++++++++----------
+ 2 files changed, 117 insertions(+), 24 deletions(-)
+
+commit 442ec5bb997bb7dab55baeea6e54e79d3ce0d3c1
+Author: Paul Pogonyshev <pogonyshev@gmx.net>
+Date: Sat May 2 23:54:52 2009 +0300
+
+ Properly mark glib.get_user_special_dir() as a keywords method
+
+ Fixes bug #581082.
+
+ glib/glibmodule.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit f466dca880cc6ea68b9fe236943eea7a07d33520
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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
+ ++++++++++++++++++++++++++++++++++
+ 3 files changed, 201 insertions(+)
+
+commit eab4ebf7f6c82580b61205f34e1cfe535aeada60
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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
+ ++++++++++++++++++++++++++++++++++++
+ 3 files changed, 207 insertions(+)
+
+commit 22d7de8b620055f14b30f9c3c99160c8b4ebe672
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Sat May 2 12:25:19 2009 +0200
+
+ post release version bump to 2.17.1
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 282ac3c76e1e3513bd76f819f320ec56aba15d9e
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Fri May 1 23:40:31 2009 +0200
+
+ Fix the class title
+
+ docs/reference/pygio-mountoperation.xml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit d8b70dec1e5c09b73ae277f4f5b246315841fb8e
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+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
+ ++++++++++++++++++++++++++++++++
+ 4 files changed, 836 insertions(+)
+
+commit fceea8e843e880f0469e454df23141e7dd2bc0cf
+Author: Gian Mario Tagliaretti <gianmt@gnome.org>
+Date: Thu Apr 30 22:13:06 2009 +0200
+
+ Update NEWS, release 2.17.0
+
+ NEWS | 93
+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 93 insertions(+)
+
+commit 47389217d1a65a8e3f404d486c508cf5d3164756
+Author: Paul Pogonyshev <pogonyshev@gmx.net>
+Date: Thu Apr 30 22:47:19 2009 +0300
+
+ Fix memory leak in gio.File.query_info_async()
+
+ After the recent patch it would leak exception data if old argument
+ order was used. Properly decref the objects.
+
+ gio/gfile.override | 4 ++++
+ 1 file changed, 4 insertions(+)
diff --git a/Makefile.am b/Makefile.am
index 58d720f..ea0b4ba 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,10 +1,13 @@
ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
AUTOMAKE_OPTIONS = 1.7
+# Limit PyFlakes and PEP8 to these directories.
+pycheck_dirs = examples gi tests pygtkcompat
+
# Part of the gi subdirectory is handled with non-recursive make to avoid
# py-compile getting confused between gi/types.py and Python's standard
# types module.
-SUBDIRS = examples gi tests pygtkcompat
+SUBDIRS = . $(pycheck_dirs)
PLATFORM_VERSION = 3.0
@@ -58,7 +61,11 @@ nobase_pyexec_PYTHON = \
gi/module.py \
gi/importer.py \
gi/pygtkcompat.py \
- gi/docstring.py
+ gi/docstring.py \
+ gi/_constants.py \
+ gi/_propertyhelper.py \
+ gi/_signalhelper.py \
+ gi/_option.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
@@ -73,9 +80,11 @@ all-local: build_pylinks
check-local: build_pylinks
+if WITH_COMMON
# pkg-config files
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = pygobject-$(PLATFORM_VERSION).pc
+endif
# python
pyexec_LTLIBRARIES =
@@ -132,15 +141,15 @@ release-news:
@echo "-------------- 8< -------------"
@echo >> NEWS.tmp
- @cat NEWS >> NEWS.tmp
- @mv NEWS.tmp NEWS
+ @cat $(top_srcdir)/NEWS >> NEWS.tmp
+ @mv NEWS.tmp $(top_srcdir)/NEWS
.PHONY: ChangeLog release-news
ChangeLog:
@echo Creating $@
@if test -d "$(srcdir)/.git"; then \
- (GIT_DIR=$(top_srcdir)/.git ./missing --run git log PYGOBJECT_2_17_0^^.. --stat) | fmt --split-only > $@.tmp \
+ (GIT_DIR=$(top_srcdir)/.git $(top_srcdir)/missing --run git log PYGOBJECT_2_17_0^^.. --stat) | fmt --split-only > $@.tmp \
&& mv -f $@.tmp $@ \
|| ($(RM) $@.tmp; \
echo Failed to generate ChangeLog, your ChangeLog may be outdated >&2; \
@@ -163,6 +172,22 @@ dist-hook: $(BUILT_EXTRA_DIST)
if test -f $$f; then d=.; else d=$(srcdir); fi; \
rm -f $(distdir)/$$f && cp $$d/$$f $(distdir) || exit 1; done
+# pycheck_subdirs =
+
+check-local:
+ @echo " CHECK Pyflakes" $(pycheck_dirs)
+ @if type pyflakes >/dev/null 2>&1; then \
+ (cd $(abs_top_srcdir) && pyflakes $(pycheck_dirs) ); \
+ else echo "skipped, pyflakes not installed"; \
+ fi
+ @if test -z "$$SKIP_PEP8"; then \
+ echo " CHECK PEP8"; \
+ if type pep8 >/dev/null 2>&1; then \
+ (cd $(abs_top_srcdir) && pep8 --ignore=E501,E123,E124 --repeat --show-source $(pycheck_dirs) ); \
+ else echo "skipped, pep8 not installed"; \
+ fi; \
+ fi
+
check.gdb:
cd tests && $(MAKE) check.gdb
diff --git a/Makefile.in b/Makefile.in
index d855563..7ba43dd 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -343,10 +343,13 @@ top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AUTOMAKE_OPTIONS = 1.7
+# Limit PyFlakes and PEP8 to these directories.
+pycheck_dirs = examples gi tests pygtkcompat
+
# Part of the gi subdirectory is handled with non-recursive make to avoid
# py-compile getting confused between gi/types.py and Python's standard
# types module.
-SUBDIRS = examples gi tests pygtkcompat
+SUBDIRS = . $(pycheck_dirs)
PLATFORM_VERSION = 3.0
CLEANFILES = \
`find "$(builddir)" -type f -name "*.pyc" -print`
@@ -398,12 +401,16 @@ nobase_pyexec_PYTHON = \
gi/module.py \
gi/importer.py \
gi/pygtkcompat.py \
- gi/docstring.py
+ gi/docstring.py \
+ gi/_constants.py \
+ gi/_propertyhelper.py \
+ gi/_signalhelper.py \
+ gi/_option.py
# pkg-config files
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = pygobject-$(PLATFORM_VERSION).pc
+@WITH_COMMON_TRUE@pkgconfigdir = $(libdir)/pkgconfig
+@WITH_COMMON_TRUE@pkgconfig_DATA = pygobject-$(PLATFORM_VERSION).pc
# python
pyexec_LTLIBRARIES =
@@ -1098,15 +1105,15 @@ release-news:
@echo "-------------- 8< -------------"
@echo >> NEWS.tmp
- @cat NEWS >> NEWS.tmp
- @mv NEWS.tmp NEWS
+ @cat $(top_srcdir)/NEWS >> NEWS.tmp
+ @mv NEWS.tmp $(top_srcdir)/NEWS
.PHONY: ChangeLog release-news
ChangeLog:
@echo Creating $@
@if test -d "$(srcdir)/.git"; then \
- (GIT_DIR=$(top_srcdir)/.git ./missing --run git log PYGOBJECT_2_17_0^^.. --stat) | fmt --split-only > $@.tmp \
+ (GIT_DIR=$(top_srcdir)/.git $(top_srcdir)/missing --run git log PYGOBJECT_2_17_0^^.. --stat) | fmt --split-only > $@.tmp \
&& mv -f $@.tmp $@ \
|| ($(RM) $@.tmp; \
echo Failed to generate ChangeLog, your ChangeLog may be outdated >&2; \
@@ -1128,6 +1135,22 @@ dist-hook: $(BUILT_EXTRA_DIST)
if test -f $$f; then d=.; else d=$(srcdir); fi; \
rm -f $(distdir)/$$f && cp $$d/$$f $(distdir) || exit 1; done
+# pycheck_subdirs =
+
+check-local:
+ @echo " CHECK Pyflakes" $(pycheck_dirs)
+ @if type pyflakes >/dev/null 2>&1; then \
+ (cd $(abs_top_srcdir) && pyflakes $(pycheck_dirs) ); \
+ else echo "skipped, pyflakes not installed"; \
+ fi
+ @if test -z "$$SKIP_PEP8"; then \
+ echo " CHECK PEP8"; \
+ if type pep8 >/dev/null 2>&1; then \
+ (cd $(abs_top_srcdir) && pep8 --ignore=E501,E123,E124 --repeat --show-source $(pycheck_dirs) ); \
+ else echo "skipped, pep8 not installed"; \
+ fi; \
+ fi
+
check.gdb:
cd tests && $(MAKE) check.gdb
diff --git a/NEWS b/NEWS
index 71dfc09..f1db3c9 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,19 @@
+3.11.5 03-Feb-2014
+ - cache refactoring: Move all cache marshalers into files based on type
+ (Simon Feltman) (#709700)
+ - tests: Add test for an owned boxed struct passed in a callback
+ (Mike Gorse) (#722899)
+ - build: Add --without-common configure option for package maintainers
+ (Patrick Welche) (#721646)
+ - demo: Add TreeModel interface implementation demonstration
+ (Simon Feltman)
+ - build: Set PLATFORM_VERSION again to 3.0 (Colin Walters)
+ - tests: Run PyFlakes and PEP8 only on SUBDIRS (Simon Feltman)
+ - Merge static PyGLib and PyGObject modules into PyGI
+ (Simon Feltman) (#712197)
+ - Add test for callback user data arguments with following arguments
+ (Martin Pitt) (#722104)
+
3.11.4 13-Jan-2014
- overrides: Fix __repr__ for various Gdk structs (Simon Feltman)
- Add enum and flags member methods (Simon Feltman) (#693099)
diff --git a/PKG-INFO b/PKG-INFO
index 0410ccb..eac9485 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
Metadata-Version: 1.0
Name: PyGObject
-Version: 3.11.4
+Version: 3.11.5
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.11/pygobject-3.11.4.tar.gz
+Download-url: ftp://ftp.gnome.org/pub/GNOME/sources/pygobject/3.11/pygobject-3.11.5.tar.gz
Description: Python bindings for GLib and GObject
Platform: POSIX, Windows
Classifier: Development Status :: 5 - Production/Stable
diff --git a/aclocal.m4 b/aclocal.m4
index 5ed8d6d..4d2e451 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1538,13 +1538,10 @@ int
main ()
{
unsigned int major, minor, micro;
- char *tmp_version;
fclose (fopen ("conf.glibtest", "w"));
- /* HP/UX 9 (%@#!) writes to sscanf strings */
- tmp_version = g_strdup("$min_glib_version");
- if (sscanf(tmp_version, "%u.%u.%u", &major, &minor, &micro) != 3) {
+ if (sscanf("$min_glib_version", "%u.%u.%u", &major, &minor, &micro) != 3) {
printf("%s, bad version string\n", "$min_glib_version");
exit(1);
}
diff --git a/configure b/configure
index 257ea24..726ef29 100755
--- 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.11.4.
+# Generated by GNU Autoconf 2.69 for pygobject 3.11.5.
#
# Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=pygobject>.
#
@@ -591,8 +591,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='pygobject'
PACKAGE_TARNAME='pygobject'
-PACKAGE_VERSION='3.11.4'
-PACKAGE_STRING='pygobject 3.11.4'
+PACKAGE_VERSION='3.11.5'
+PACKAGE_STRING='pygobject 3.11.5'
PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=pygobject'
PACKAGE_URL='https://live.gnome.org/PyGObject/'
@@ -648,6 +648,8 @@ CODE_COVERAGE_ENABLED_TRUE
WARN_CFLAGS
INTROSPECTION_COMPILER
INTROSPECTION_SCANNER
+WITH_COMMON_FALSE
+WITH_COMMON_TRUE
ENABLE_CAIRO_FALSE
ENABLE_CAIRO_TRUE
PYCAIRO_LIBS
@@ -828,6 +830,7 @@ enable_thread
enable_glibtest
with_ffi
enable_cairo
+with_common
enable_compile_warnings
enable_iso_c
enable_code_coverage
@@ -1395,7 +1398,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.11.4 to adapt to many kinds of systems.
+\`configure' configures pygobject 3.11.5 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1465,7 +1468,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of pygobject 3.11.4:";;
+ short | recursive ) echo "Configuration of pygobject 3.11.5:";;
esac
cat <<\_ACEOF
@@ -1503,6 +1506,8 @@ Optional Packages:
program name is given; if not given, searches for a
few standard names such as "python3" or "python2"
--without-ffi Disable libffi support
+ --without-common For package maintainers: do not install Python
+ version independent files
Some influential environment variables:
CC C compiler command
@@ -1600,7 +1605,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-pygobject configure 3.11.4
+pygobject configure 3.11.5
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1878,7 +1883,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.11.4, which was
+It was created by pygobject $as_me 3.11.5, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2242,9 +2247,9 @@ $as_echo "#define PYGOBJECT_MINOR_VERSION 11" >>confdefs.h
PYGOBJECT_MINOR_VERSION=11
-$as_echo "#define PYGOBJECT_MICRO_VERSION 4" >>confdefs.h
+$as_echo "#define PYGOBJECT_MICRO_VERSION 5" >>confdefs.h
-PYGOBJECT_MICRO_VERSION=4
+PYGOBJECT_MICRO_VERSION=5
ac_config_headers="$ac_config_headers config.h"
@@ -2755,7 +2760,7 @@ fi
# Define the identity of the package.
PACKAGE='pygobject'
- VERSION='3.11.4'
+ VERSION='3.11.5'
cat >>confdefs.h <<_ACEOF
@@ -13402,13 +13407,10 @@ int
main ()
{
unsigned int major, minor, micro;
- char *tmp_version;
fclose (fopen ("conf.glibtest", "w"));
- /* HP/UX 9 (%@#!) writes to sscanf strings */
- tmp_version = g_strdup("$min_glib_version");
- if (sscanf(tmp_version, "%u.%u.%u", &major, &minor, &micro) != 3) {
+ if (sscanf("$min_glib_version", "%u.%u.%u", &major, &minor, &micro) != 3) {
printf("%s, bad version string\n", "$min_glib_version");
exit(1);
}
@@ -14205,6 +14207,23 @@ else
fi
+
+# Check whether --with-common was given.
+if test "${with_common+set}" = set; then :
+ withval=$with_common; with_common=$enableval
+else
+ with_common=yes
+fi
+
+ if test "$with_common" = "yes"; then
+ WITH_COMMON_TRUE=
+ WITH_COMMON_FALSE='#'
+else
+ WITH_COMMON_TRUE='#'
+ WITH_COMMON_FALSE=
+fi
+
+
INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
@@ -14720,7 +14739,7 @@ fi
CFLAGS="$CFLAGS $WARN_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"
+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/_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
@@ -14867,6 +14886,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 "${WITH_COMMON_TRUE}" && test -z "${WITH_COMMON_FALSE}"; then
+ as_fn_error $? "conditional \"WITH_COMMON\" 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
@@ -15268,7 +15291,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.11.4, which was
+This file was extended by pygobject $as_me 3.11.5, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -15335,7 +15358,7 @@ _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.11.4
+pygobject config.status 3.11.5
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
@@ -15752,7 +15775,6 @@ do
"gi/Makefile") CONFIG_FILES="$CONFIG_FILES gi/Makefile" ;;
"gi/repository/Makefile") CONFIG_FILES="$CONFIG_FILES gi/repository/Makefile" ;;
"gi/overrides/Makefile") CONFIG_FILES="$CONFIG_FILES gi/overrides/Makefile" ;;
- "gi/_glib/Makefile") CONFIG_FILES="$CONFIG_FILES gi/_glib/Makefile" ;;
"gi/_gobject/Makefile") CONFIG_FILES="$CONFIG_FILES gi/_gobject/Makefile" ;;
"examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;;
"tests/Makefile") CONFIG_FILES="$CONFIG_FILES tests/Makefile" ;;
diff --git a/configure.ac b/configure.ac
index e85bedf..93305f9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -18,7 +18,7 @@ m4_define(python3_min_ver, 3.1)
dnl the pygobject version number
m4_define(pygobject_major_version, 3)
m4_define(pygobject_minor_version, 11)
-m4_define(pygobject_micro_version, 4)
+m4_define(pygobject_micro_version, 5)
m4_define(pygobject_version, pygobject_major_version.pygobject_minor_version.pygobject_micro_version)
dnl versions of packages we require ...
@@ -226,6 +226,13 @@ if test "$enable_cairo" != no; then
fi
AM_CONDITIONAL(ENABLE_CAIRO, test "$enable_cairo" = "yes")
+AC_ARG_WITH(common,
+ AS_HELP_STRING([--without-common],
+ [For package maintainers: do not install Python version independent files]),
+ with_common=$enableval,
+ with_common=yes)
+AM_CONDITIONAL(WITH_COMMON, test "$with_common" = "yes")
+
INTROSPECTION_SCANNER=`$PKG_CONFIG --variable=g_ir_scanner gobject-introspection-1.0`
INTROSPECTION_COMPILER=`$PKG_CONFIG --variable=g_ir_compiler gobject-introspection-1.0`
@@ -268,7 +275,6 @@ AC_CONFIG_FILES(
gi/Makefile
gi/repository/Makefile
gi/overrides/Makefile
- gi/_glib/Makefile
gi/_gobject/Makefile
examples/Makefile
tests/Makefile
diff --git a/gi/Makefile.am b/gi/Makefile.am
index aa91a46..b00d30a 100644
--- a/gi/Makefile.am
+++ b/gi/Makefile.am
@@ -1,7 +1,8 @@
+PLATFORM_VERSION = 3.0
+
SUBDIRS = \
repository \
overrides \
- _glib \
_gobject
extension_cppflags = \
@@ -24,11 +25,46 @@ extension_ldflags += \
-no-undefined
endif
+pkgincludedir = $(includedir)/pygobject-$(PLATFORM_VERSION)
+if WITH_COMMON
+pkginclude_HEADERS = pygobject.h
+endif
+
pygidir = $(pyexecdir)/gi
pygi_LTLIBRARIES = _gi.la
_gi_la_SOURCES = \
+ gobjectmodule.c \
+ pygboxed.c \
+ pygboxed.h \
+ pygenum.c \
+ pygenum.h \
+ pygflags.c \
+ pygflags.h \
+ pyginterface.c \
+ pyginterface.h \
+ pygobject.c \
+ pygobject.h \
+ pygobject-private.h \
+ pygparamspec.c \
+ pygparamspec.h \
+ pygpointer.c \
+ pygpointer.h \
+ pygtype.c \
+ pygtype.h \
+ glibmodule.c \
+ pygoptioncontext.c \
+ pygoptioncontext.h \
+ pygoptiongroup.c \
+ pygoptiongroup.h \
+ pygspawn.c \
+ pygspawn.h \
+ pyglib.c \
+ pyglib.h \
+ pyglib-private.h \
+ pyglib-python-compat.h \
+ gimodule.c \
pygi-repository.c \
pygi-repository.h \
pygi-info.c \
@@ -56,28 +92,41 @@ _gi_la_SOURCES = \
pygi-signal-closure.c \
pygi-signal-closure.h \
pygobject-external.h \
- gimodule.c \
pygi-invoke.c \
pygi-invoke.h \
pygi-invoke-state-struct.h \
pygi-cache.h \
pygi-cache.c \
- pygi-marshal-from-py.c \
- pygi-marshal-from-py.h \
- pygi-marshal-to-py.c \
- pygi-marshal-to-py.h \
pygi-marshal-cleanup.c \
- pygi-marshal-cleanup.h
+ pygi-marshal-cleanup.h \
+ pygi-basictype.c \
+ pygi-basictype.h \
+ pygi-list.c \
+ pygi-list.h \
+ pygi-array.c \
+ pygi-array.h \
+ pygi-error.c \
+ pygi-error.h \
+ pygi-object.c \
+ pygi-object.h \
+ pygi-value.c \
+ pygi-value.h \
+ pygi-enum-marshal.c \
+ pygi-enum-marshal.h \
+ pygi-struct-marshal.c \
+ pygi-struct-marshal.h \
+ pygi-hashtable.c \
+ pygi-hashtable.h
_gi_la_CFLAGS = \
+ $(extension_cppflags) \
+ $(GLIB_CFLAGS) \
$(GI_CFLAGS)
_gi_la_CPPFLAGS = \
- $(extension_cppflags) \
- -I$(top_srcdir)/gi/_glib \
- -I$(top_srcdir)/gi/_gobject
+ $(extension_cppflags)
_gi_la_LIBADD = \
$(extension_libadd) \
- $(GI_LIBS) \
- $(top_builddir)/gi/_glib/libpyglib-gi-2.0-@PYTHON_BASENAME@.la
+ $(GLIB_LIBS) \
+ $(GI_LIBS)
_gi_la_LDFLAGS = \
$(extension_ldflags) \
-export-symbols-regex "init_gi|PyInit__gi"
@@ -92,9 +141,7 @@ _gi_cairo_la_CFLAGS = \
$(GI_CFLAGS) \
$(PYCAIRO_CFLAGS)
_gi_cairo_la_CPPFLAGS = \
- $(extension_cppflags) \
- -I$(top_srcdir)/gi/_glib \
- -I$(top_srcdir)/gi/_gobject
+ $(extension_cppflags)
_gi_cairo_la_LIBADD = \
$(extension_libadd) \
$(GI_LIBS) \
diff --git a/gi/Makefile.in b/gi/Makefile.in
index d4f89c7..0f6fa1f 100644
--- a/gi/Makefile.in
+++ b/gi/Makefile.in
@@ -15,6 +15,7 @@
@SET_MAKE@
+
VPATH = @srcdir@
am__make_dryrun = \
{ \
@@ -34,7 +35,6 @@ am__make_dryrun = \
test $$am__dry = yes; \
}
pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
@@ -56,7 +56,8 @@ host_triplet = @host@
@ENABLE_CAIRO_TRUE@am__append_2 = _gi_cairo.la
subdir = gi
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(am__pkginclude_HEADERS_DIST) $(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 \
@@ -96,21 +97,30 @@ am__uninstall_files_from_dir = { \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
-am__installdirs = "$(DESTDIR)$(pygidir)"
+am__installdirs = "$(DESTDIR)$(pygidir)" "$(DESTDIR)$(pkgincludedir)"
LTLIBRARIES = $(pygi_LTLIBRARIES)
am__DEPENDENCIES_1 =
@OS_WIN32_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
_gi_la_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
- $(top_builddir)/gi/_glib/libpyglib-gi-2.0-@PYTHON_BASENAME@.la
-am__gi_la_OBJECTS = _gi_la-pygi-repository.lo _gi_la-pygi-info.lo \
+ $(am__DEPENDENCIES_1)
+am__gi_la_OBJECTS = _gi_la-gobjectmodule.lo _gi_la-pygboxed.lo \
+ _gi_la-pygenum.lo _gi_la-pygflags.lo _gi_la-pyginterface.lo \
+ _gi_la-pygobject.lo _gi_la-pygparamspec.lo \
+ _gi_la-pygpointer.lo _gi_la-pygtype.lo _gi_la-glibmodule.lo \
+ _gi_la-pygoptioncontext.lo _gi_la-pygoptiongroup.lo \
+ _gi_la-pygspawn.lo _gi_la-pyglib.lo _gi_la-gimodule.lo \
+ _gi_la-pygi-repository.lo _gi_la-pygi-info.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-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-pygi-invoke.lo _gi_la-pygi-cache.lo \
+ _gi_la-pygi-marshal-cleanup.lo _gi_la-pygi-basictype.lo \
+ _gi_la-pygi-list.lo _gi_la-pygi-array.lo _gi_la-pygi-error.lo \
+ _gi_la-pygi-object.lo _gi_la-pygi-value.lo \
+ _gi_la-pygi-enum-marshal.lo _gi_la-pygi-struct-marshal.lo \
+ _gi_la-pygi-hashtable.lo
_gi_la_OBJECTS = $(am__gi_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -166,6 +176,8 @@ am__can_run_installinfo = \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
+am__pkginclude_HEADERS_DIST = pygobject.h
+HEADERS = $(pkginclude_HEADERS)
RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
distclean-recursive maintainer-clean-recursive
AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
@@ -200,6 +212,7 @@ am__relativize = \
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
done; \
reldir="$$dir2"
+pkgincludedir = $(includedir)/pygobject-$(PLATFORM_VERSION)
ACLOCAL = @ACLOCAL@
ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
AMTAR = @AMTAR@
@@ -365,10 +378,10 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+PLATFORM_VERSION = 3.0
SUBDIRS = \
repository \
overrides \
- _glib \
_gobject
extension_cppflags = \
@@ -384,9 +397,40 @@ extension_ldflags = -module -avoid-version -shrext $(PYTHON_SO) \
@OS_WIN32_TRUE@extension_libadd = \
@OS_WIN32_TRUE@ $(PYTHON_LIBS)
+@WITH_COMMON_TRUE@pkginclude_HEADERS = pygobject.h
pygidir = $(pyexecdir)/gi
pygi_LTLIBRARIES = _gi.la $(am__append_2)
_gi_la_SOURCES = \
+ gobjectmodule.c \
+ pygboxed.c \
+ pygboxed.h \
+ pygenum.c \
+ pygenum.h \
+ pygflags.c \
+ pygflags.h \
+ pyginterface.c \
+ pyginterface.h \
+ pygobject.c \
+ pygobject.h \
+ pygobject-private.h \
+ pygparamspec.c \
+ pygparamspec.h \
+ pygpointer.c \
+ pygpointer.h \
+ pygtype.c \
+ pygtype.h \
+ glibmodule.c \
+ pygoptioncontext.c \
+ pygoptioncontext.h \
+ pygoptiongroup.c \
+ pygoptiongroup.h \
+ pygspawn.c \
+ pygspawn.h \
+ pyglib.c \
+ pyglib.h \
+ pyglib-private.h \
+ pyglib-python-compat.h \
+ gimodule.c \
pygi-repository.c \
pygi-repository.h \
pygi-info.c \
@@ -414,31 +458,44 @@ _gi_la_SOURCES = \
pygi-signal-closure.c \
pygi-signal-closure.h \
pygobject-external.h \
- gimodule.c \
pygi-invoke.c \
pygi-invoke.h \
pygi-invoke-state-struct.h \
pygi-cache.h \
pygi-cache.c \
- pygi-marshal-from-py.c \
- pygi-marshal-from-py.h \
- pygi-marshal-to-py.c \
- pygi-marshal-to-py.h \
pygi-marshal-cleanup.c \
- pygi-marshal-cleanup.h
+ pygi-marshal-cleanup.h \
+ pygi-basictype.c \
+ pygi-basictype.h \
+ pygi-list.c \
+ pygi-list.h \
+ pygi-array.c \
+ pygi-array.h \
+ pygi-error.c \
+ pygi-error.h \
+ pygi-object.c \
+ pygi-object.h \
+ pygi-value.c \
+ pygi-value.h \
+ pygi-enum-marshal.c \
+ pygi-enum-marshal.h \
+ pygi-struct-marshal.c \
+ pygi-struct-marshal.h \
+ pygi-hashtable.c \
+ pygi-hashtable.h
_gi_la_CFLAGS = \
+ $(extension_cppflags) \
+ $(GLIB_CFLAGS) \
$(GI_CFLAGS)
_gi_la_CPPFLAGS = \
- $(extension_cppflags) \
- -I$(top_srcdir)/gi/_glib \
- -I$(top_srcdir)/gi/_gobject
+ $(extension_cppflags)
_gi_la_LIBADD = \
$(extension_libadd) \
- $(GI_LIBS) \
- $(top_builddir)/gi/_glib/libpyglib-gi-2.0-@PYTHON_BASENAME@.la
+ $(GLIB_LIBS) \
+ $(GI_LIBS)
_gi_la_LDFLAGS = \
$(extension_ldflags) \
@@ -452,9 +509,7 @@ _gi_cairo_la_CFLAGS = \
$(PYCAIRO_CFLAGS)
_gi_cairo_la_CPPFLAGS = \
- $(extension_cppflags) \
- -I$(top_srcdir)/gi/_glib \
- -I$(top_srcdir)/gi/_gobject
+ $(extension_cppflags)
_gi_cairo_la_LIBADD = \
$(extension_libadd) \
@@ -544,23 +599,44 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_cairo_la-pygi-foreign-cairo.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-gimodule.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-glibmodule.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-gobjectmodule.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygboxed.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygenum.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygflags.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-argument.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-array.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-basictype.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-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-enum-marshal.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-error.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-hashtable.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-info.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-invoke.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-list.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-marshal-cleanup.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-marshal-from-py.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-marshal-to-py.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-object.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-property.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-repository.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-signal-closure.Plo@am__quote@
@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-marshal.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@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygi-value.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pyginterface.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pyglib.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygobject.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygoptioncontext.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygoptiongroup.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygparamspec.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygpointer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygspawn.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gi_la-pygtype.Plo@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -583,6 +659,111 @@ distclean-compile:
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
+_gi_la-gobjectmodule.lo: gobjectmodule.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-gobjectmodule.lo -MD -MP -MF $(DEPDIR)/_gi_la-gobjectmodule.Tpo -c -o _gi_la-gobjectmodule.lo `test -f 'gobjectmodule.c' || echo '$(srcdir)/'`gobjectmodule.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-gobjectmodule.Tpo $(DEPDIR)/_gi_la-gobjectmodule.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gobjectmodule.c' object='_gi_la-gobjectmodule.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-gobjectmodule.lo `test -f 'gobjectmodule.c' || echo '$(srcdir)/'`gobjectmodule.c
+
+_gi_la-pygboxed.lo: pygboxed.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygboxed.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygboxed.Tpo -c -o _gi_la-pygboxed.lo `test -f 'pygboxed.c' || echo '$(srcdir)/'`pygboxed.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygboxed.Tpo $(DEPDIR)/_gi_la-pygboxed.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pygboxed.c' object='_gi_la-pygboxed.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-pygboxed.lo `test -f 'pygboxed.c' || echo '$(srcdir)/'`pygboxed.c
+
+_gi_la-pygenum.lo: pygenum.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygenum.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygenum.Tpo -c -o _gi_la-pygenum.lo `test -f 'pygenum.c' || echo '$(srcdir)/'`pygenum.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygenum.Tpo $(DEPDIR)/_gi_la-pygenum.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pygenum.c' object='_gi_la-pygenum.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-pygenum.lo `test -f 'pygenum.c' || echo '$(srcdir)/'`pygenum.c
+
+_gi_la-pygflags.lo: pygflags.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygflags.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygflags.Tpo -c -o _gi_la-pygflags.lo `test -f 'pygflags.c' || echo '$(srcdir)/'`pygflags.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygflags.Tpo $(DEPDIR)/_gi_la-pygflags.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pygflags.c' object='_gi_la-pygflags.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-pygflags.lo `test -f 'pygflags.c' || echo '$(srcdir)/'`pygflags.c
+
+_gi_la-pyginterface.lo: pyginterface.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pyginterface.lo -MD -MP -MF $(DEPDIR)/_gi_la-pyginterface.Tpo -c -o _gi_la-pyginterface.lo `test -f 'pyginterface.c' || echo '$(srcdir)/'`pyginterface.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pyginterface.Tpo $(DEPDIR)/_gi_la-pyginterface.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pyginterface.c' object='_gi_la-pyginterface.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-pyginterface.lo `test -f 'pyginterface.c' || echo '$(srcdir)/'`pyginterface.c
+
+_gi_la-pygobject.lo: pygobject.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygobject.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygobject.Tpo -c -o _gi_la-pygobject.lo `test -f 'pygobject.c' || echo '$(srcdir)/'`pygobject.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygobject.Tpo $(DEPDIR)/_gi_la-pygobject.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pygobject.c' object='_gi_la-pygobject.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-pygobject.lo `test -f 'pygobject.c' || echo '$(srcdir)/'`pygobject.c
+
+_gi_la-pygparamspec.lo: pygparamspec.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygparamspec.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygparamspec.Tpo -c -o _gi_la-pygparamspec.lo `test -f 'pygparamspec.c' || echo '$(srcdir)/'`pygparamspec.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygparamspec.Tpo $(DEPDIR)/_gi_la-pygparamspec.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pygparamspec.c' object='_gi_la-pygparamspec.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-pygparamspec.lo `test -f 'pygparamspec.c' || echo '$(srcdir)/'`pygparamspec.c
+
+_gi_la-pygpointer.lo: pygpointer.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygpointer.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygpointer.Tpo -c -o _gi_la-pygpointer.lo `test -f 'pygpointer.c' || echo '$(srcdir)/'`pygpointer.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygpointer.Tpo $(DEPDIR)/_gi_la-pygpointer.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pygpointer.c' object='_gi_la-pygpointer.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-pygpointer.lo `test -f 'pygpointer.c' || echo '$(srcdir)/'`pygpointer.c
+
+_gi_la-pygtype.lo: pygtype.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygtype.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygtype.Tpo -c -o _gi_la-pygtype.lo `test -f 'pygtype.c' || echo '$(srcdir)/'`pygtype.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygtype.Tpo $(DEPDIR)/_gi_la-pygtype.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pygtype.c' object='_gi_la-pygtype.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-pygtype.lo `test -f 'pygtype.c' || echo '$(srcdir)/'`pygtype.c
+
+_gi_la-glibmodule.lo: glibmodule.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-glibmodule.lo -MD -MP -MF $(DEPDIR)/_gi_la-glibmodule.Tpo -c -o _gi_la-glibmodule.lo `test -f 'glibmodule.c' || echo '$(srcdir)/'`glibmodule.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-glibmodule.Tpo $(DEPDIR)/_gi_la-glibmodule.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='glibmodule.c' object='_gi_la-glibmodule.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-glibmodule.lo `test -f 'glibmodule.c' || echo '$(srcdir)/'`glibmodule.c
+
+_gi_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) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygoptioncontext.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygoptioncontext.Tpo -c -o _gi_la-pygoptioncontext.lo `test -f 'pygoptioncontext.c' || echo '$(srcdir)/'`pygoptioncontext.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygoptioncontext.Tpo $(DEPDIR)/_gi_la-pygoptioncontext.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pygoptioncontext.c' object='_gi_la-pygoptioncontext.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-pygoptioncontext.lo `test -f 'pygoptioncontext.c' || echo '$(srcdir)/'`pygoptioncontext.c
+
+_gi_la-pygoptiongroup.lo: pygoptiongroup.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygoptiongroup.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygoptiongroup.Tpo -c -o _gi_la-pygoptiongroup.lo `test -f 'pygoptiongroup.c' || echo '$(srcdir)/'`pygoptiongroup.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygoptiongroup.Tpo $(DEPDIR)/_gi_la-pygoptiongroup.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pygoptiongroup.c' object='_gi_la-pygoptiongroup.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-pygoptiongroup.lo `test -f 'pygoptiongroup.c' || echo '$(srcdir)/'`pygoptiongroup.c
+
+_gi_la-pygspawn.lo: pygspawn.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygspawn.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygspawn.Tpo -c -o _gi_la-pygspawn.lo `test -f 'pygspawn.c' || echo '$(srcdir)/'`pygspawn.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygspawn.Tpo $(DEPDIR)/_gi_la-pygspawn.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pygspawn.c' object='_gi_la-pygspawn.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-pygspawn.lo `test -f 'pygspawn.c' || echo '$(srcdir)/'`pygspawn.c
+
+_gi_la-pyglib.lo: pyglib.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pyglib.lo -MD -MP -MF $(DEPDIR)/_gi_la-pyglib.Tpo -c -o _gi_la-pyglib.lo `test -f 'pyglib.c' || echo '$(srcdir)/'`pyglib.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pyglib.Tpo $(DEPDIR)/_gi_la-pyglib.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pyglib.c' object='_gi_la-pyglib.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-pyglib.lo `test -f 'pyglib.c' || echo '$(srcdir)/'`pyglib.c
+
+_gi_la-gimodule.lo: gimodule.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-gimodule.lo -MD -MP -MF $(DEPDIR)/_gi_la-gimodule.Tpo -c -o _gi_la-gimodule.lo `test -f 'gimodule.c' || echo '$(srcdir)/'`gimodule.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-gimodule.Tpo $(DEPDIR)/_gi_la-gimodule.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gimodule.c' object='_gi_la-gimodule.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-gimodule.lo `test -f 'gimodule.c' || echo '$(srcdir)/'`gimodule.c
+
_gi_la-pygi-repository.lo: pygi-repository.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-repository.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-repository.Tpo -c -o _gi_la-pygi-repository.lo `test -f 'pygi-repository.c' || echo '$(srcdir)/'`pygi-repository.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-repository.Tpo $(DEPDIR)/_gi_la-pygi-repository.Plo
@@ -667,13 +848,6 @@ _gi_la-pygi-signal-closure.lo: pygi-signal-closure.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-signal-closure.lo `test -f 'pygi-signal-closure.c' || echo '$(srcdir)/'`pygi-signal-closure.c
-_gi_la-gimodule.lo: gimodule.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-gimodule.lo -MD -MP -MF $(DEPDIR)/_gi_la-gimodule.Tpo -c -o _gi_la-gimodule.lo `test -f 'gimodule.c' || echo '$(srcdir)/'`gimodule.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-gimodule.Tpo $(DEPDIR)/_gi_la-gimodule.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gimodule.c' object='_gi_la-gimodule.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-gimodule.lo `test -f 'gimodule.c' || echo '$(srcdir)/'`gimodule.c
-
_gi_la-pygi-invoke.lo: pygi-invoke.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-invoke.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-invoke.Tpo -c -o _gi_la-pygi-invoke.lo `test -f 'pygi-invoke.c' || echo '$(srcdir)/'`pygi-invoke.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-invoke.Tpo $(DEPDIR)/_gi_la-pygi-invoke.Plo
@@ -688,20 +862,6 @@ _gi_la-pygi-cache.lo: pygi-cache.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-cache.lo `test -f 'pygi-cache.c' || echo '$(srcdir)/'`pygi-cache.c
-_gi_la-pygi-marshal-from-py.lo: pygi-marshal-from-py.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-marshal-from-py.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-marshal-from-py.Tpo -c -o _gi_la-pygi-marshal-from-py.lo `test -f 'pygi-marshal-from-py.c' || echo '$(srcdir)/'`pygi-marshal-from-py.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-marshal-from-py.Tpo $(DEPDIR)/_gi_la-pygi-marshal-from-py.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pygi-marshal-from-py.c' object='_gi_la-pygi-marshal-from-py.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-marshal-from-py.lo `test -f 'pygi-marshal-from-py.c' || echo '$(srcdir)/'`pygi-marshal-from-py.c
-
-_gi_la-pygi-marshal-to-py.lo: pygi-marshal-to-py.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-marshal-to-py.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-marshal-to-py.Tpo -c -o _gi_la-pygi-marshal-to-py.lo `test -f 'pygi-marshal-to-py.c' || echo '$(srcdir)/'`pygi-marshal-to-py.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-marshal-to-py.Tpo $(DEPDIR)/_gi_la-pygi-marshal-to-py.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pygi-marshal-to-py.c' object='_gi_la-pygi-marshal-to-py.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -c -o _gi_la-pygi-marshal-to-py.lo `test -f 'pygi-marshal-to-py.c' || echo '$(srcdir)/'`pygi-marshal-to-py.c
-
_gi_la-pygi-marshal-cleanup.lo: pygi-marshal-cleanup.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_la_CPPFLAGS) $(CPPFLAGS) $(_gi_la_CFLAGS) $(CFLAGS) -MT _gi_la-pygi-marshal-cleanup.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-marshal-cleanup.Tpo -c -o _gi_la-pygi-marshal-cleanup.lo `test -f 'pygi-marshal-cleanup.c' || echo '$(srcdir)/'`pygi-marshal-cleanup.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-marshal-cleanup.Tpo $(DEPDIR)/_gi_la-pygi-marshal-cleanup.Plo
@@ -709,6 +869,69 @@ _gi_la-pygi-marshal-cleanup.lo: pygi-marshal-cleanup.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-marshal-cleanup.lo `test -f 'pygi-marshal-cleanup.c' || echo '$(srcdir)/'`pygi-marshal-cleanup.c
+_gi_la-pygi-basictype.lo: pygi-basictype.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-basictype.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-basictype.Tpo -c -o _gi_la-pygi-basictype.lo `test -f 'pygi-basictype.c' || echo '$(srcdir)/'`pygi-basictype.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-basictype.Tpo $(DEPDIR)/_gi_la-pygi-basictype.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pygi-basictype.c' object='_gi_la-pygi-basictype.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-basictype.lo `test -f 'pygi-basictype.c' || echo '$(srcdir)/'`pygi-basictype.c
+
+_gi_la-pygi-list.lo: pygi-list.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-list.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-list.Tpo -c -o _gi_la-pygi-list.lo `test -f 'pygi-list.c' || echo '$(srcdir)/'`pygi-list.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-list.Tpo $(DEPDIR)/_gi_la-pygi-list.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pygi-list.c' object='_gi_la-pygi-list.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-list.lo `test -f 'pygi-list.c' || echo '$(srcdir)/'`pygi-list.c
+
+_gi_la-pygi-array.lo: pygi-array.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-array.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-array.Tpo -c -o _gi_la-pygi-array.lo `test -f 'pygi-array.c' || echo '$(srcdir)/'`pygi-array.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-array.Tpo $(DEPDIR)/_gi_la-pygi-array.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pygi-array.c' object='_gi_la-pygi-array.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-array.lo `test -f 'pygi-array.c' || echo '$(srcdir)/'`pygi-array.c
+
+_gi_la-pygi-error.lo: pygi-error.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-error.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-error.Tpo -c -o _gi_la-pygi-error.lo `test -f 'pygi-error.c' || echo '$(srcdir)/'`pygi-error.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-error.Tpo $(DEPDIR)/_gi_la-pygi-error.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pygi-error.c' object='_gi_la-pygi-error.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-error.lo `test -f 'pygi-error.c' || echo '$(srcdir)/'`pygi-error.c
+
+_gi_la-pygi-object.lo: pygi-object.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-object.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-object.Tpo -c -o _gi_la-pygi-object.lo `test -f 'pygi-object.c' || echo '$(srcdir)/'`pygi-object.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-object.Tpo $(DEPDIR)/_gi_la-pygi-object.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pygi-object.c' object='_gi_la-pygi-object.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-object.lo `test -f 'pygi-object.c' || echo '$(srcdir)/'`pygi-object.c
+
+_gi_la-pygi-value.lo: pygi-value.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-value.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-value.Tpo -c -o _gi_la-pygi-value.lo `test -f 'pygi-value.c' || echo '$(srcdir)/'`pygi-value.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-value.Tpo $(DEPDIR)/_gi_la-pygi-value.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pygi-value.c' object='_gi_la-pygi-value.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-value.lo `test -f 'pygi-value.c' || echo '$(srcdir)/'`pygi-value.c
+
+_gi_la-pygi-enum-marshal.lo: pygi-enum-marshal.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-enum-marshal.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-enum-marshal.Tpo -c -o _gi_la-pygi-enum-marshal.lo `test -f 'pygi-enum-marshal.c' || echo '$(srcdir)/'`pygi-enum-marshal.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-enum-marshal.Tpo $(DEPDIR)/_gi_la-pygi-enum-marshal.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pygi-enum-marshal.c' object='_gi_la-pygi-enum-marshal.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-enum-marshal.lo `test -f 'pygi-enum-marshal.c' || echo '$(srcdir)/'`pygi-enum-marshal.c
+
+_gi_la-pygi-struct-marshal.lo: pygi-struct-marshal.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-marshal.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-struct-marshal.Tpo -c -o _gi_la-pygi-struct-marshal.lo `test -f 'pygi-struct-marshal.c' || echo '$(srcdir)/'`pygi-struct-marshal.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-struct-marshal.Tpo $(DEPDIR)/_gi_la-pygi-struct-marshal.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pygi-struct-marshal.c' object='_gi_la-pygi-struct-marshal.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-struct-marshal.lo `test -f 'pygi-struct-marshal.c' || echo '$(srcdir)/'`pygi-struct-marshal.c
+
+_gi_la-pygi-hashtable.lo: pygi-hashtable.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-hashtable.lo -MD -MP -MF $(DEPDIR)/_gi_la-pygi-hashtable.Tpo -c -o _gi_la-pygi-hashtable.lo `test -f 'pygi-hashtable.c' || echo '$(srcdir)/'`pygi-hashtable.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_la-pygi-hashtable.Tpo $(DEPDIR)/_gi_la-pygi-hashtable.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pygi-hashtable.c' object='_gi_la-pygi-hashtable.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-hashtable.lo `test -f 'pygi-hashtable.c' || echo '$(srcdir)/'`pygi-hashtable.c
+
_gi_cairo_la-pygi-foreign-cairo.lo: pygi-foreign-cairo.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_gi_cairo_la_CPPFLAGS) $(CPPFLAGS) $(_gi_cairo_la_CFLAGS) $(CFLAGS) -MT _gi_cairo_la-pygi-foreign-cairo.lo -MD -MP -MF $(DEPDIR)/_gi_cairo_la-pygi-foreign-cairo.Tpo -c -o _gi_cairo_la-pygi-foreign-cairo.lo `test -f 'pygi-foreign-cairo.c' || echo '$(srcdir)/'`pygi-foreign-cairo.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gi_cairo_la-pygi-foreign-cairo.Tpo $(DEPDIR)/_gi_cairo_la-pygi-foreign-cairo.Plo
@@ -721,6 +944,27 @@ mostlyclean-libtool:
clean-libtool:
-rm -rf .libs _libs
+install-pkgincludeHEADERS: $(pkginclude_HEADERS)
+ @$(NORMAL_INSTALL)
+ @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
+ if test -n "$$list"; then \
+ echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \
+ fi; \
+ for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ echo "$$d$$p"; \
+ done | $(am__base_list) | \
+ while read files; do \
+ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \
+ $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \
+ done
+
+uninstall-pkgincludeHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+ dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir)
# This directory's subdirectories are mostly independent; you can cd
# into them and run `make' without going through this Makefile.
@@ -915,10 +1159,10 @@ distdir: $(DISTFILES)
check-am: all-am
$(MAKE) $(AM_MAKEFLAGS) check-local
check: check-recursive
-all-am: Makefile $(LTLIBRARIES) all-local
+all-am: Makefile $(LTLIBRARIES) $(HEADERS) all-local
installdirs: installdirs-recursive
installdirs-am:
- for dir in "$(DESTDIR)$(pygidir)"; do \
+ for dir in "$(DESTDIR)$(pygidir)" "$(DESTDIR)$(pkgincludedir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-recursive
@@ -974,7 +1218,7 @@ info: info-recursive
info-am:
-install-data-am: install-pygiLTLIBRARIES
+install-data-am: install-pkgincludeHEADERS install-pygiLTLIBRARIES
install-dvi: install-dvi-recursive
@@ -1020,7 +1264,7 @@ ps: ps-recursive
ps-am:
-uninstall-am: uninstall-pygiLTLIBRARIES
+uninstall-am: uninstall-pkgincludeHEADERS uninstall-pygiLTLIBRARIES
.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) check-am \
ctags-recursive install-am install-strip tags-recursive
@@ -1034,13 +1278,13 @@ uninstall-am: uninstall-pygiLTLIBRARIES
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-pygiLTLIBRARIES install-strip installcheck \
- installcheck-am installdirs installdirs-am maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags tags-recursive uninstall uninstall-am \
- uninstall-pygiLTLIBRARIES
+ install-pdf-am install-pkgincludeHEADERS install-ps \
+ install-ps-am install-pygiLTLIBRARIES install-strip \
+ installcheck installcheck-am installdirs installdirs-am \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \
+ uninstall-pkgincludeHEADERS uninstall-pygiLTLIBRARIES
# This is to ensure we have a symlink to the .so in the
diff --git a/gi/__init__.py b/gi/__init__.py
index 0645d44..7c1a279 100644
--- a/gi/__init__.py
+++ b/gi/__init__.py
@@ -24,24 +24,27 @@ from __future__ import absolute_import
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)
+import sys
+import os
+
+# we can't have pygobject 2 loaded at the same time we load the internal _gobject
+if 'gobject' in sys.modules:
+ raise ImportError('When using gi.repository you must not import static '
+ 'modules like "gobject". Please change all occurrences '
+ 'of "import gobject" to "from gi.repository import GObject".')
+
+from ._gi import _gobject
from ._gi import _API
from ._gi import Repository
from ._gi import PyGIDeprecationWarning
-# Force loading the GObject typelib so we have available the wrappers for
-# base classes such as GInitiallyUnowned
-import gi._gobject
-gi # pyflakes
-
_API = _API # pyflakes
PyGIDeprecationWarning = PyGIDeprecationWarning
-import os
-
_versions = {}
_overridesdir = os.path.join(os.path.dirname(__file__), 'overrides')
-version_info = gi._gobject.pygobject_version[:]
+version_info = _gobject.pygobject_version[:]
__version__ = "{0}.{1}.{2}".format(*version_info)
diff --git a/gi/_gobject/constants.py b/gi/_constants.py
index 9565a66..495c6e1 100644
--- a/gi/_gobject/constants.py
+++ b/gi/_constants.py
@@ -2,7 +2,7 @@
# pygobject - Python bindings for the GObject library
# Copyright (C) 2006-2007 Johan Dahlin
#
-# gobject/constants.py: GObject type constants
+# gi/_constants.py: GObject type constants
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
@@ -19,7 +19,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
# USA
-from . import _gobject
+from ._gi import _gobject
TYPE_INVALID = _gobject.TYPE_INVALID
TYPE_NONE = _gobject.type_from_name('void')
diff --git a/gi/_glib/Makefile.am b/gi/_glib/Makefile.am
deleted file mode 100644
index 774b7e1..0000000
--- a/gi/_glib/Makefile.am
+++ /dev/null
@@ -1,91 +0,0 @@
-AUTOMAKE_OPTIONS = 1.7
-
-extension_cppflags = \
- $(PYTHON_INCLUDES) \
- -DPY_SSIZE_T_CLEAN
-
-extension_ldflags = \
- -module \
- -avoid-version \
- -shrext $(PYTHON_SO)
-
-if OS_WIN32
-# Windows requires Python modules to be explicitly linked to libpython.
-# Extension modules are shared libaries (.dll), but need to be
-# called .pyd for Python to load it as an extension module.
-extension_libadd = \
- $(PYTHON_LIBS)
-
-extension_ldflags += \
- -no-undefined
-endif
-
-
-pyglibdir = $(pyexecdir)/gi/_glib
-
-pyglib_PYTHON = \
- __init__.py \
- option.py
-
-lib_LTLIBRARIES = libpyglib-gi-2.0-@PYTHON_BASENAME@.la
-
-libpyglib_gi_2_0_@PYTHON_BASENAME@_la_SOURCES = \
- pyglib.c \
- pyglib.h \
- pyglib-private.h \
- pyglib-python-compat.h
-libpyglib_gi_2_0_@PYTHON_BASENAME@_la_CPPFLAGS = \
- $(extension_cppflags)
-libpyglib_gi_2_0_@PYTHON_BASENAME@_la_CFLAGS = \
- $(GLIB_CFLAGS)
-libpyglib_gi_2_0_@PYTHON_BASENAME@_la_LIBADD = \
- $(extension_libadd) \
- $(FFI_LIBS) \
- $(GLIB_LIBS)
-
-if OS_WIN32
-libpyglib_gi_2_0_@PYTHON_BASENAME@_la_LDFLAGS = \
- -no-undefined
-endif
-
-pyglib_LTLIBRARIES = _glib.la
-
-_glib_la_SOURCES = \
- glibmodule.c \
- pygoptioncontext.c \
- pygoptioncontext.h \
- pygoptiongroup.c \
- pygoptiongroup.h \
- pygspawn.c \
- pygspawn.h
-_glib_la_CFLAGS = \
- $(GLIB_CFLAGS)
-_glib_la_CPPFLAGS = \
- $(extension_cppflags)
-_glib_la_LIBADD = \
- $(extension_libadd) \
- $(GLIB_LIBS) \
- libpyglib-gi-2.0-@PYTHON_BASENAME@.la
-_glib_la_LDFLAGS = \
- $(extension_ldflags) \
- -export-symbols-regex "_glib|PyInit__glib"
-
-if PLATFORM_WIN32
-_glib_la_CFLAGS += -DPLATFORM_WIN32
-endif
-
-# if we build in a separate tree, we need to symlink the *.py files from the
-# source tree; Python does not accept the extensions and modules in different
-# paths
-build_pylinks:
- for f in $(pyglib_PYTHON); do \
- [ -e $(builddir)/$$f ] || $(LN_S) $(srcdir)/$$f $(builddir)/$$f; \
- done
-
-
-all: $(pyglib_LTLIBRARIES:.la=$(PYTHON_SO)) build_pylinks
-check-local: $(pyglib_LTLIBRARIES:.la=$(PYTHON_SO)) build_pylinks
-clean-local:
- rm -f $(pyglib_LTLIBRARIES:.la=$(PYTHON_SO))
-%$(PYTHON_SO): %.la
- $(LN_S) -f .libs/$@ $@
diff --git a/gi/_glib/Makefile.in b/gi/_glib/Makefile.in
deleted file mode 100644
index 2829376..0000000
--- a/gi/_glib/Makefile.in
+++ /dev/null
@@ -1,845 +0,0 @@
-# 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@
-@OS_WIN32_TRUE@am__append_1 = \
-@OS_WIN32_TRUE@ -no-undefined
-
-@PLATFORM_WIN32_TRUE@am__append_2 = -DPLATFORM_WIN32
-subdir = gi/_glib
-DIST_COMMON = $(pyglib_PYTHON) $(srcdir)/Makefile.am \
- $(srcdir)/Makefile.in
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/m4/as-ac-expand.m4 \
- $(top_srcdir)/m4/jhflags.m4 $(top_srcdir)/m4/libtool.m4 \
- $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
- $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
- $(top_srcdir)/m4/python.m4 $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
- $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
- *) f=$$p;; \
- esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
- srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
- for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
- for p in $$list; do echo "$$p $$p"; done | \
- sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
- $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
- if (++n[$$2] == $(am__install_max)) \
- { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
- END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
- sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
- sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
- test -z "$$files" \
- || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
- || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
- $(am__cd) "$$dir" && rm -f $$files; }; \
- }
-am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pyglibdir)" \
- "$(DESTDIR)$(pyglibdir)"
-LTLIBRARIES = $(lib_LTLIBRARIES) $(pyglib_LTLIBRARIES)
-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-pygoptioncontext.lo _glib_la-pygoptiongroup.lo \
- _glib_la-pygspawn.lo
-_glib_la_OBJECTS = $(am__glib_la_OBJECTS)
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-_glib_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(_glib_la_CFLAGS) \
- $(CFLAGS) $(_glib_la_LDFLAGS) $(LDFLAGS) -o $@
-libpyglib_gi_2_0_@PYTHON_BASENAME@_la_DEPENDENCIES = \
- $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
-am_libpyglib_gi_2_0_@PYTHON_BASENAME@_la_OBJECTS = \
- libpyglib_gi_2_0_@PYTHON_BASENAME@_la-pyglib.lo
-libpyglib_gi_2_0_@PYTHON_BASENAME@_la_OBJECTS = \
- $(am_libpyglib_gi_2_0_@PYTHON_BASENAME@_la_OBJECTS)
-libpyglib_gi_2_0_@PYTHON_BASENAME@_la_LINK = $(LIBTOOL) $(AM_V_lt) \
- --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
- $(CCLD) $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_CFLAGS) \
- $(CFLAGS) $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_LDFLAGS) \
- $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo " CC " $@;
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo " CCLD " $@;
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-SOURCES = $(_glib_la_SOURCES) \
- $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_SOURCES)
-DIST_SOURCES = $(_glib_la_SOURCES) \
- $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_SOURCES)
-am__can_run_installinfo = \
- case $$AM_UPDATE_INFO_DIR in \
- n|no|NO) false;; \
- *) (install-info --version) >/dev/null 2>&1;; \
- esac
-am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile)
-py_compile = $(top_srcdir)/py-compile
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AR = @AR@
-AS = @AS@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-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_SO = @PYTHON_SO@
-PYTHON_VERSION = @PYTHON_VERSION@
-RANLIB = @RANLIB@
-SED = @SED@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-THREADING_CFLAGS = @THREADING_CFLAGS@
-VERSION = @VERSION@
-WARN_CFLAGS = @WARN_CFLAGS@
-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@
-AUTOMAKE_OPTIONS = 1.7
-extension_cppflags = \
- $(PYTHON_INCLUDES) \
- -DPY_SSIZE_T_CLEAN
-
-extension_ldflags = -module -avoid-version -shrext $(PYTHON_SO) \
- $(am__append_1)
-
-# Windows requires Python modules to be explicitly linked to libpython.
-# Extension modules are shared libaries (.dll), but need to be
-# called .pyd for Python to load it as an extension module.
-@OS_WIN32_TRUE@extension_libadd = \
-@OS_WIN32_TRUE@ $(PYTHON_LIBS)
-
-pyglibdir = $(pyexecdir)/gi/_glib
-pyglib_PYTHON = \
- __init__.py \
- option.py
-
-lib_LTLIBRARIES = libpyglib-gi-2.0-@PYTHON_BASENAME@.la
-libpyglib_gi_2_0_@PYTHON_BASENAME@_la_SOURCES = \
- pyglib.c \
- pyglib.h \
- pyglib-private.h \
- pyglib-python-compat.h
-
-libpyglib_gi_2_0_@PYTHON_BASENAME@_la_CPPFLAGS = \
- $(extension_cppflags)
-
-libpyglib_gi_2_0_@PYTHON_BASENAME@_la_CFLAGS = \
- $(GLIB_CFLAGS)
-
-libpyglib_gi_2_0_@PYTHON_BASENAME@_la_LIBADD = \
- $(extension_libadd) \
- $(FFI_LIBS) \
- $(GLIB_LIBS)
-
-@OS_WIN32_TRUE@libpyglib_gi_2_0_@PYTHON_BASENAME@_la_LDFLAGS = \
-@OS_WIN32_TRUE@ -no-undefined
-
-pyglib_LTLIBRARIES = _glib.la
-_glib_la_SOURCES = \
- glibmodule.c \
- pygoptioncontext.c \
- pygoptioncontext.h \
- pygoptiongroup.c \
- pygoptiongroup.h \
- pygspawn.c \
- pygspawn.h
-
-_glib_la_CFLAGS = $(GLIB_CFLAGS) $(am__append_2)
-_glib_la_CPPFLAGS = \
- $(extension_cppflags)
-
-_glib_la_LIBADD = \
- $(extension_libadd) \
- $(GLIB_LIBS) \
- libpyglib-gi-2.0-@PYTHON_BASENAME@.la
-
-_glib_la_LDFLAGS = \
- $(extension_ldflags) \
- -export-symbols-regex "_glib|PyInit__glib"
-
-all: all-am
-
-.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
-$(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 gi/_glib/Makefile'; \
- $(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --foreign gi/_glib/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):
-install-libLTLIBRARIES: $(lib_LTLIBRARIES)
- @$(NORMAL_INSTALL)
- @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
- list2=; for p in $$list; do \
- if test -f $$p; then \
- list2="$$list2 $$p"; \
- else :; fi; \
- done; \
- test -z "$$list2" || { \
- echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
- }
-
-uninstall-libLTLIBRARIES:
- @$(NORMAL_UNINSTALL)
- @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
- for p in $$list; do \
- $(am__strip_dir) \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
- done
-
-clean-libLTLIBRARIES:
- -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
- @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
- test "$$dir" != "$$p" || dir=.; \
- echo "rm -f \"$${dir}/so_locations\""; \
- rm -f "$${dir}/so_locations"; \
- done
-install-pyglibLTLIBRARIES: $(pyglib_LTLIBRARIES)
- @$(NORMAL_INSTALL)
- @list='$(pyglib_LTLIBRARIES)'; test -n "$(pyglibdir)" || list=; \
- list2=; for p in $$list; do \
- if test -f $$p; then \
- list2="$$list2 $$p"; \
- else :; fi; \
- done; \
- test -z "$$list2" || { \
- echo " $(MKDIR_P) '$(DESTDIR)$(pyglibdir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(pyglibdir)" || exit 1; \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pyglibdir)'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pyglibdir)"; \
- }
-
-uninstall-pyglibLTLIBRARIES:
- @$(NORMAL_UNINSTALL)
- @list='$(pyglib_LTLIBRARIES)'; test -n "$(pyglibdir)" || list=; \
- for p in $$list; do \
- $(am__strip_dir) \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pyglibdir)/$$f'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pyglibdir)/$$f"; \
- done
-
-clean-pyglibLTLIBRARIES:
- -test -z "$(pyglib_LTLIBRARIES)" || rm -f $(pyglib_LTLIBRARIES)
- @list='$(pyglib_LTLIBRARIES)'; for p in $$list; do \
- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
- test "$$dir" != "$$p" || dir=.; \
- echo "rm -f \"$${dir}/so_locations\""; \
- rm -f "$${dir}/so_locations"; \
- done
-_glib.la: $(_glib_la_OBJECTS) $(_glib_la_DEPENDENCIES) $(EXTRA__glib_la_DEPENDENCIES)
- $(AM_V_CCLD)$(_glib_la_LINK) -rpath $(pyglibdir) $(_glib_la_OBJECTS) $(_glib_la_LIBADD) $(LIBS)
-libpyglib-gi-2.0-@PYTHON_BASENAME@.la: $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_OBJECTS) $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_DEPENDENCIES) $(EXTRA_libpyglib_gi_2_0_@PYTHON_BASENAME@_la_DEPENDENCIES)
- $(AM_V_CCLD)$(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_LINK) -rpath $(libdir) $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_OBJECTS) $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-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-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-pygspawn.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libpyglib_gi_2_0_@PYTHON_BASENAME@_la-pyglib.Plo@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-_glib_la-glibmodule.lo: glibmodule.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -MT _glib_la-glibmodule.lo -MD -MP -MF $(DEPDIR)/_glib_la-glibmodule.Tpo -c -o _glib_la-glibmodule.lo `test -f 'glibmodule.c' || echo '$(srcdir)/'`glibmodule.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_glib_la-glibmodule.Tpo $(DEPDIR)/_glib_la-glibmodule.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='glibmodule.c' object='_glib_la-glibmodule.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(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-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
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pygoptioncontext.c' object='_glib_la-pygoptioncontext.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -c -o _glib_la-pygoptioncontext.lo `test -f 'pygoptioncontext.c' || echo '$(srcdir)/'`pygoptioncontext.c
-
-_glib_la-pygoptiongroup.lo: pygoptiongroup.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -MT _glib_la-pygoptiongroup.lo -MD -MP -MF $(DEPDIR)/_glib_la-pygoptiongroup.Tpo -c -o _glib_la-pygoptiongroup.lo `test -f 'pygoptiongroup.c' || echo '$(srcdir)/'`pygoptiongroup.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_glib_la-pygoptiongroup.Tpo $(DEPDIR)/_glib_la-pygoptiongroup.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pygoptiongroup.c' object='_glib_la-pygoptiongroup.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(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-pygspawn.lo: pygspawn.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -MT _glib_la-pygspawn.lo -MD -MP -MF $(DEPDIR)/_glib_la-pygspawn.Tpo -c -o _glib_la-pygspawn.lo `test -f 'pygspawn.c' || echo '$(srcdir)/'`pygspawn.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_glib_la-pygspawn.Tpo $(DEPDIR)/_glib_la-pygspawn.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pygspawn.c' object='_glib_la-pygspawn.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(_glib_la_CPPFLAGS) $(CPPFLAGS) $(_glib_la_CFLAGS) $(CFLAGS) -c -o _glib_la-pygspawn.lo `test -f 'pygspawn.c' || echo '$(srcdir)/'`pygspawn.c
-
-libpyglib_gi_2_0_@PYTHON_BASENAME@_la-pyglib.lo: pyglib.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_CPPFLAGS) $(CPPFLAGS) $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_CFLAGS) $(CFLAGS) -MT libpyglib_gi_2_0_@PYTHON_BASENAME@_la-pyglib.lo -MD -MP -MF $(DEPDIR)/libpyglib_gi_2_0_@PYTHON_BASENAME@_la-pyglib.Tpo -c -o libpyglib_gi_2_0_@PYTHON_BASENAME@_la-pyglib.lo `test -f 'pyglib.c' || echo '$(srcdir)/'`pyglib.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libpyglib_gi_2_0_@PYTHON_BASENAME@_la-pyglib.Tpo $(DEPDIR)/libpyglib_gi_2_0_@PYTHON_BASENAME@_la-pyglib.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pyglib.c' object='libpyglib_gi_2_0_@PYTHON_BASENAME@_la-pyglib.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_CPPFLAGS) $(CPPFLAGS) $(libpyglib_gi_2_0_@PYTHON_BASENAME@_la_CFLAGS) $(CFLAGS) -c -o libpyglib_gi_2_0_@PYTHON_BASENAME@_la-pyglib.lo `test -f 'pyglib.c' || echo '$(srcdir)/'`pyglib.c
-
-mostlyclean-libtool:
- -rm -f *.lo
-
-clean-libtool:
- -rm -rf .libs _libs
-install-pyglibPYTHON: $(pyglib_PYTHON)
- @$(NORMAL_INSTALL)
- @list='$(pyglib_PYTHON)'; dlist=; list2=; test -n "$(pyglibdir)" || list=; \
- if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(pyglibdir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(pyglibdir)" || exit 1; \
- fi; \
- for p in $$list; do \
- if test -f "$$p"; then b=; else b="$(srcdir)/"; fi; \
- if test -f $$b$$p; then \
- $(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)$(pyglibdir)'"; \
- $(INSTALL_DATA) $$files "$(DESTDIR)$(pyglibdir)" || exit $$?; \
- done || exit $$?; \
- if test -n "$$dlist"; then \
- if test -z "$(DESTDIR)"; then \
- $(am__py_compile) --basedir "$(pyglibdir)" $$dlist; \
- else \
- $(am__py_compile) --destdir "$(DESTDIR)" \
- --basedir "$(pyglibdir)" $$dlist; \
- fi; \
- else :; fi
-
-uninstall-pyglibPYTHON:
- @$(NORMAL_UNINSTALL)
- @list='$(pyglib_PYTHON)'; test -n "$(pyglibdir)" || list=; \
- files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- test -n "$$files" || exit 0; \
- dir='$(DESTDIR)$(pyglibdir)'; \
- filesc=`echo "$$files" | sed 's|$$|c|'`; \
- fileso=`echo "$$files" | sed 's|$$|o|'`; \
- st=0; \
- for files in "$$files" "$$filesc" "$$fileso"; do \
- $(am__uninstall_files_from_dir) || st=$$?; \
- done; \
- exit $$st
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
-tags: TAGS
-
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- set x; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
-ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
- @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
- list='$(DISTFILES)'; \
- dist_files=`for file in $$list; do echo $$file; done | \
- sed -e "s|^$$srcdirstrip/||;t" \
- -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
- case $$dist_files in \
- */*) $(MKDIR_P) `echo "$$dist_files" | \
- sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
- sort -u` ;; \
- esac; \
- for file in $$dist_files; do \
- if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
- if test -d $$d/$$file; then \
- dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
- if test -d "$(distdir)/$$file"; then \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
- cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
- find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
- fi; \
- cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
- else \
- test -f "$(distdir)/$$file" \
- || cp -p $$d/$$file "$(distdir)/$$file" \
- || exit 1; \
- fi; \
- done
-check-am: all-am
- $(MAKE) $(AM_MAKEFLAGS) check-local
-check: check-am
-all-am: Makefile $(LTLIBRARIES)
-installdirs:
- for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pyglibdir)" "$(DESTDIR)$(pyglibdir)"; 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-libLTLIBRARIES clean-libtool clean-local \
- clean-pyglibLTLIBRARIES mostlyclean-am
-
-distclean: distclean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-pyglibLTLIBRARIES install-pyglibPYTHON
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am: install-libLTLIBRARIES
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
- -rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-libLTLIBRARIES uninstall-pyglibLTLIBRARIES \
- uninstall-pyglibPYTHON
-
-.MAKE: check-am install-am install-strip
-
-.PHONY: CTAGS GTAGS all all-am check check-am check-local clean \
- clean-generic clean-libLTLIBRARIES clean-libtool clean-local \
- clean-pyglibLTLIBRARIES ctags distclean distclean-compile \
- distclean-generic distclean-libtool distclean-tags distdir dvi \
- dvi-am html html-am info info-am install install-am \
- install-data install-data-am install-dvi install-dvi-am \
- install-exec install-exec-am install-html install-html-am \
- install-info install-info-am install-libLTLIBRARIES \
- install-man install-pdf install-pdf-am install-ps \
- install-ps-am install-pyglibLTLIBRARIES install-pyglibPYTHON \
- install-strip installcheck installcheck-am installdirs \
- maintainer-clean maintainer-clean-generic mostlyclean \
- mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
- pdf pdf-am ps ps-am tags uninstall uninstall-am \
- uninstall-libLTLIBRARIES uninstall-pyglibLTLIBRARIES \
- uninstall-pyglibPYTHON
-
-
-# if we build in a separate tree, we need to symlink the *.py files from the
-# source tree; Python does not accept the extensions and modules in different
-# paths
-build_pylinks:
- for f in $(pyglib_PYTHON); do \
- [ -e $(builddir)/$$f ] || $(LN_S) $(srcdir)/$$f $(builddir)/$$f; \
- done
-
-all: $(pyglib_LTLIBRARIES:.la=$(PYTHON_SO)) build_pylinks
-check-local: $(pyglib_LTLIBRARIES:.la=$(PYTHON_SO)) build_pylinks
-clean-local:
- rm -f $(pyglib_LTLIBRARIES:.la=$(PYTHON_SO))
-%$(PYTHON_SO): %.la
- $(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.
-.NOEXPORT:
diff --git a/gi/_glib/__init__.py b/gi/_glib/__init__.py
deleted file mode 100644
index 0b9df9a..0000000
--- a/gi/_glib/__init__.py
+++ /dev/null
@@ -1,25 +0,0 @@
-# -*- Mode: Python; py-indent-offset: 4 -*-
-# pygobject - Python bindings for the GObject library
-# Copyright (C) 2006-2012 Johan Dahlin
-#
-# glib/__init__.py: initialisation file for glib module
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
-# USA
-
-from . import _glib
-
-# Internal API
-_PyGLib_API = _glib._PyGLib_API
diff --git a/gi/_gobject/Makefile.am b/gi/_gobject/Makefile.am
index 5059ea7..37068b8 100644
--- a/gi/_gobject/Makefile.am
+++ b/gi/_gobject/Makefile.am
@@ -1,74 +1,10 @@
AUTOMAKE_OPTIONS = 1.7
PLATFORM_VERSION = 3.0
-pkgincludedir = $(includedir)/pygobject-$(PLATFORM_VERSION)
-pkginclude_HEADERS = pygobject.h
-
-extension_cppflags = \
- $(PYTHON_INCLUDES) \
- -DPY_SSIZE_T_CLEAN
-
-extension_ldflags = \
- -module \
- -avoid-version \
- -shrext $(PYTHON_SO)
-
-if OS_WIN32
-# Windows requires Python modules to be explicitly linked to libpython.
-# Extension modules are shared libaries (.dll), but need to be
-# called .pyd for Python to load it as an extension module.
-extension_libadd = \
- $(PYTHON_LIBS)
-
-extension_ldflags += \
- -no-undefined
-endif
-
pygobjectdir = $(pyexecdir)/gi/_gobject
pygobject_PYTHON = \
- __init__.py \
- constants.py \
- propertyhelper.py \
- signalhelper.py
-
-pygobject_LTLIBRARIES = _gobject.la
-
-_gobject_la_SOURCES = \
- gobjectmodule.c \
- pygboxed.c \
- pygboxed.h \
- pygenum.c \
- pygenum.h \
- pygflags.c \
- pygflags.h \
- pyginterface.c \
- pyginterface.h \
- pygobject.c \
- pygobject.h \
- pygobject-private.h \
- pygparamspec.c \
- pygparamspec.h \
- pygpointer.c \
- pygpointer.h \
- pygtype.c \
- pygtype.h
-_gobject_la_CFLAGS = \
- $(extension_cppflags) \
- -I$(top_srcdir)/gi/_glib \
- -I$(top_srcdir)/gi \
- $(GLIB_CFLAGS) \
- $(GI_CFLAGS)
-_gi_la_CPPFLAGS = \
- $(extension_cppflags)
-_gobject_la_LIBADD = \
- $(extension_libadd) \
- $(GLIB_LIBS) \
- $(GI_LIBS) \
- $(top_builddir)/gi/_glib/libpyglib-gi-2.0-@PYTHON_BASENAME@.la
-_gobject_la_LDFLAGS = \
- $(extension_ldflags) \
- -export-symbols-regex "_gobject|PyInit__gobject"
+ __init__.py
# if we build in a separate tree, we need to symlink the *.py files from the
# source tree; Python does not accept the extensions and modules in different
@@ -79,9 +15,5 @@ build_pylinks:
done
-all: $(pygobject_LTLIBRARIES:.la=$(PYTHON_SO)) build_pylinks
-check-local: $(pygobject_LTLIBRARIES:.la=$(PYTHON_SO)) build_pylinks
-clean-local:
- rm -f $(pygobject_LTLIBRARIES:.la=$(PYTHON_SO))
-%$(PYTHON_SO): %.la
- $(LN_S) -f .libs/$@ $@
+all: build_pylinks
+check-local: build_pylinks
diff --git a/gi/_gobject/Makefile.in b/gi/_gobject/Makefile.in
index ce28f0e..39c07e3 100644
--- a/gi/_gobject/Makefile.in
+++ b/gi/_gobject/Makefile.in
@@ -14,8 +14,6 @@
# PARTICULAR PURPOSE.
@SET_MAKE@
-
-
VPATH = @srcdir@
am__make_dryrun = \
{ \
@@ -35,6 +33,7 @@ am__make_dryrun = \
test $$am__dry = yes; \
}
pkgdatadir = $(datadir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkglibexecdir = $(libexecdir)/@PACKAGE@
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
@@ -51,12 +50,9 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-@OS_WIN32_TRUE@am__append_1 = \
-@OS_WIN32_TRUE@ -no-undefined
-
subdir = gi/_gobject
-DIST_COMMON = $(pkginclude_HEADERS) $(pygobject_PYTHON) \
- $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(pygobject_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 \
@@ -69,6 +65,19 @@ mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
+AM_V_GEN = $(am__v_GEN_@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/||"`;; \
@@ -96,66 +105,10 @@ am__uninstall_files_from_dir = { \
|| { echo " ( cd '$$dir' && rm -f" $$files ")"; \
$(am__cd) "$$dir" && rm -f $$files; }; \
}
-am__installdirs = "$(DESTDIR)$(pygobjectdir)" \
- "$(DESTDIR)$(pygobjectdir)" "$(DESTDIR)$(pkgincludedir)"
-LTLIBRARIES = $(pygobject_LTLIBRARIES)
-am__DEPENDENCIES_1 =
-@OS_WIN32_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1)
-_gobject_la_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) \
- $(top_builddir)/gi/_glib/libpyglib-gi-2.0-@PYTHON_BASENAME@.la
-am__gobject_la_OBJECTS = _gobject_la-gobjectmodule.lo \
- _gobject_la-pygboxed.lo _gobject_la-pygenum.lo \
- _gobject_la-pygflags.lo _gobject_la-pyginterface.lo \
- _gobject_la-pygobject.lo _gobject_la-pygparamspec.lo \
- _gobject_la-pygpointer.lo _gobject_la-pygtype.lo
-_gobject_la_OBJECTS = $(am__gobject_la_OBJECTS)
-AM_V_lt = $(am__v_lt_@AM_V@)
-am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
-am__v_lt_0 = --silent
-_gobject_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(_gobject_la_CFLAGS) \
- $(CFLAGS) $(_gobject_la_LDFLAGS) $(LDFLAGS) -o $@
-DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
-depcomp = $(SHELL) $(top_srcdir)/depcomp
-am__depfiles_maybe = depfiles
-am__mv = mv -f
-COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
- $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
-LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CFLAGS) $(CFLAGS)
-AM_V_CC = $(am__v_CC_@AM_V@)
-am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
-am__v_CC_0 = @echo " CC " $@;
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-CCLD = $(CC)
-LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
- $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CCLD = $(am__v_CCLD_@AM_V@)
-am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
-am__v_CCLD_0 = @echo " CCLD " $@;
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo " GEN " $@;
-SOURCES = $(_gobject_la_SOURCES)
-DIST_SOURCES = $(_gobject_la_SOURCES)
-am__can_run_installinfo = \
- case $$AM_UPDATE_INFO_DIR in \
- n|no|NO) false;; \
- *) (install-info --version) >/dev/null 2>&1;; \
- esac
am__py_compile = PYTHON=$(PYTHON) $(SHELL) $(py_compile)
+am__installdirs = "$(DESTDIR)$(pygobjectdir)"
py_compile = $(top_srcdir)/py-compile
-HEADERS = $(pkginclude_HEADERS)
-ETAGS = etags
-CTAGS = ctags
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-pkgincludedir = $(includedir)/pygobject-$(PLATFORM_VERSION)
ACLOCAL = @ACLOCAL@
ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
AMTAR = @AMTAR@
@@ -323,72 +276,13 @@ top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AUTOMAKE_OPTIONS = 1.7
PLATFORM_VERSION = 3.0
-pkginclude_HEADERS = pygobject.h
-extension_cppflags = \
- $(PYTHON_INCLUDES) \
- -DPY_SSIZE_T_CLEAN
-
-extension_ldflags = -module -avoid-version -shrext $(PYTHON_SO) \
- $(am__append_1)
-
-# Windows requires Python modules to be explicitly linked to libpython.
-# Extension modules are shared libaries (.dll), but need to be
-# called .pyd for Python to load it as an extension module.
-@OS_WIN32_TRUE@extension_libadd = \
-@OS_WIN32_TRUE@ $(PYTHON_LIBS)
-
pygobjectdir = $(pyexecdir)/gi/_gobject
pygobject_PYTHON = \
- __init__.py \
- constants.py \
- propertyhelper.py \
- signalhelper.py
-
-pygobject_LTLIBRARIES = _gobject.la
-_gobject_la_SOURCES = \
- gobjectmodule.c \
- pygboxed.c \
- pygboxed.h \
- pygenum.c \
- pygenum.h \
- pygflags.c \
- pygflags.h \
- pyginterface.c \
- pyginterface.h \
- pygobject.c \
- pygobject.h \
- pygobject-private.h \
- pygparamspec.c \
- pygparamspec.h \
- pygpointer.c \
- pygpointer.h \
- pygtype.c \
- pygtype.h
-
-_gobject_la_CFLAGS = \
- $(extension_cppflags) \
- -I$(top_srcdir)/gi/_glib \
- -I$(top_srcdir)/gi \
- $(GLIB_CFLAGS) \
- $(GI_CFLAGS)
-
-_gi_la_CPPFLAGS = \
- $(extension_cppflags)
-
-_gobject_la_LIBADD = \
- $(extension_libadd) \
- $(GLIB_LIBS) \
- $(GI_LIBS) \
- $(top_builddir)/gi/_glib/libpyglib-gi-2.0-@PYTHON_BASENAME@.la
-
-_gobject_la_LDFLAGS = \
- $(extension_ldflags) \
- -export-symbols-regex "_gobject|PyInit__gobject"
+ __init__.py
all: all-am
.SUFFIXES:
-.SUFFIXES: .c .lo .o .obj
$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
@@ -419,140 +313,6 @@ $(top_srcdir)/configure: $(am__configure_deps)
$(ACLOCAL_M4): $(am__aclocal_m4_deps)
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
-install-pygobjectLTLIBRARIES: $(pygobject_LTLIBRARIES)
- @$(NORMAL_INSTALL)
- @list='$(pygobject_LTLIBRARIES)'; test -n "$(pygobjectdir)" || list=; \
- list2=; for p in $$list; do \
- if test -f $$p; then \
- list2="$$list2 $$p"; \
- else :; fi; \
- done; \
- test -z "$$list2" || { \
- echo " $(MKDIR_P) '$(DESTDIR)$(pygobjectdir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(pygobjectdir)" || exit 1; \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(pygobjectdir)'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(pygobjectdir)"; \
- }
-
-uninstall-pygobjectLTLIBRARIES:
- @$(NORMAL_UNINSTALL)
- @list='$(pygobject_LTLIBRARIES)'; test -n "$(pygobjectdir)" || list=; \
- for p in $$list; do \
- $(am__strip_dir) \
- echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(pygobjectdir)/$$f'"; \
- $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(pygobjectdir)/$$f"; \
- done
-
-clean-pygobjectLTLIBRARIES:
- -test -z "$(pygobject_LTLIBRARIES)" || rm -f $(pygobject_LTLIBRARIES)
- @list='$(pygobject_LTLIBRARIES)'; for p in $$list; do \
- dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
- test "$$dir" != "$$p" || dir=.; \
- echo "rm -f \"$${dir}/so_locations\""; \
- rm -f "$${dir}/so_locations"; \
- done
-_gobject.la: $(_gobject_la_OBJECTS) $(_gobject_la_DEPENDENCIES) $(EXTRA__gobject_la_DEPENDENCIES)
- $(AM_V_CCLD)$(_gobject_la_LINK) -rpath $(pygobjectdir) $(_gobject_la_OBJECTS) $(_gobject_la_LIBADD) $(LIBS)
-
-mostlyclean-compile:
- -rm -f *.$(OBJEXT)
-
-distclean-compile:
- -rm -f *.tab.c
-
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gobject_la-gobjectmodule.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gobject_la-pygboxed.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gobject_la-pygenum.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gobject_la-pygflags.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gobject_la-pyginterface.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gobject_la-pygobject.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gobject_la-pygparamspec.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gobject_la-pygpointer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/_gobject_la-pygtype.Plo@am__quote@
-
-.c.o:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $<
-
-.c.obj:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
-
-.c.lo:
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-
-_gobject_la-gobjectmodule.lo: gobjectmodule.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -MT _gobject_la-gobjectmodule.lo -MD -MP -MF $(DEPDIR)/_gobject_la-gobjectmodule.Tpo -c -o _gobject_la-gobjectmodule.lo `test -f 'gobjectmodule.c' || echo '$(srcdir)/'`gobjectmodule.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gobject_la-gobjectmodule.Tpo $(DEPDIR)/_gobject_la-gobjectmodule.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gobjectmodule.c' object='_gobject_la-gobjectmodule.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-gobjectmodule.lo `test -f 'gobjectmodule.c' || echo '$(srcdir)/'`gobjectmodule.c
-
-_gobject_la-pygboxed.lo: pygboxed.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -MT _gobject_la-pygboxed.lo -MD -MP -MF $(DEPDIR)/_gobject_la-pygboxed.Tpo -c -o _gobject_la-pygboxed.lo `test -f 'pygboxed.c' || echo '$(srcdir)/'`pygboxed.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gobject_la-pygboxed.Tpo $(DEPDIR)/_gobject_la-pygboxed.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pygboxed.c' object='_gobject_la-pygboxed.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-pygboxed.lo `test -f 'pygboxed.c' || echo '$(srcdir)/'`pygboxed.c
-
-_gobject_la-pygenum.lo: pygenum.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -MT _gobject_la-pygenum.lo -MD -MP -MF $(DEPDIR)/_gobject_la-pygenum.Tpo -c -o _gobject_la-pygenum.lo `test -f 'pygenum.c' || echo '$(srcdir)/'`pygenum.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gobject_la-pygenum.Tpo $(DEPDIR)/_gobject_la-pygenum.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pygenum.c' object='_gobject_la-pygenum.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-pygenum.lo `test -f 'pygenum.c' || echo '$(srcdir)/'`pygenum.c
-
-_gobject_la-pygflags.lo: pygflags.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -MT _gobject_la-pygflags.lo -MD -MP -MF $(DEPDIR)/_gobject_la-pygflags.Tpo -c -o _gobject_la-pygflags.lo `test -f 'pygflags.c' || echo '$(srcdir)/'`pygflags.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gobject_la-pygflags.Tpo $(DEPDIR)/_gobject_la-pygflags.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pygflags.c' object='_gobject_la-pygflags.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-pygflags.lo `test -f 'pygflags.c' || echo '$(srcdir)/'`pygflags.c
-
-_gobject_la-pyginterface.lo: pyginterface.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -MT _gobject_la-pyginterface.lo -MD -MP -MF $(DEPDIR)/_gobject_la-pyginterface.Tpo -c -o _gobject_la-pyginterface.lo `test -f 'pyginterface.c' || echo '$(srcdir)/'`pyginterface.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gobject_la-pyginterface.Tpo $(DEPDIR)/_gobject_la-pyginterface.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pyginterface.c' object='_gobject_la-pyginterface.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-pyginterface.lo `test -f 'pyginterface.c' || echo '$(srcdir)/'`pyginterface.c
-
-_gobject_la-pygobject.lo: pygobject.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -MT _gobject_la-pygobject.lo -MD -MP -MF $(DEPDIR)/_gobject_la-pygobject.Tpo -c -o _gobject_la-pygobject.lo `test -f 'pygobject.c' || echo '$(srcdir)/'`pygobject.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gobject_la-pygobject.Tpo $(DEPDIR)/_gobject_la-pygobject.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pygobject.c' object='_gobject_la-pygobject.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-pygobject.lo `test -f 'pygobject.c' || echo '$(srcdir)/'`pygobject.c
-
-_gobject_la-pygparamspec.lo: pygparamspec.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -MT _gobject_la-pygparamspec.lo -MD -MP -MF $(DEPDIR)/_gobject_la-pygparamspec.Tpo -c -o _gobject_la-pygparamspec.lo `test -f 'pygparamspec.c' || echo '$(srcdir)/'`pygparamspec.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gobject_la-pygparamspec.Tpo $(DEPDIR)/_gobject_la-pygparamspec.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pygparamspec.c' object='_gobject_la-pygparamspec.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-pygparamspec.lo `test -f 'pygparamspec.c' || echo '$(srcdir)/'`pygparamspec.c
-
-_gobject_la-pygpointer.lo: pygpointer.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -MT _gobject_la-pygpointer.lo -MD -MP -MF $(DEPDIR)/_gobject_la-pygpointer.Tpo -c -o _gobject_la-pygpointer.lo `test -f 'pygpointer.c' || echo '$(srcdir)/'`pygpointer.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gobject_la-pygpointer.Tpo $(DEPDIR)/_gobject_la-pygpointer.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pygpointer.c' object='_gobject_la-pygpointer.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-pygpointer.lo `test -f 'pygpointer.c' || echo '$(srcdir)/'`pygpointer.c
-
-_gobject_la-pygtype.lo: pygtype.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -MT _gobject_la-pygtype.lo -MD -MP -MF $(DEPDIR)/_gobject_la-pygtype.Tpo -c -o _gobject_la-pygtype.lo `test -f 'pygtype.c' || echo '$(srcdir)/'`pygtype.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/_gobject_la-pygtype.Tpo $(DEPDIR)/_gobject_la-pygtype.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pygtype.c' object='_gobject_la-pygtype.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(_gobject_la_CFLAGS) $(CFLAGS) -c -o _gobject_la-pygtype.lo `test -f 'pygtype.c' || echo '$(srcdir)/'`pygtype.c
mostlyclean-libtool:
-rm -f *.lo
@@ -601,79 +361,12 @@ uninstall-pygobjectPYTHON:
$(am__uninstall_files_from_dir) || st=$$?; \
done; \
exit $$st
-install-pkgincludeHEADERS: $(pkginclude_HEADERS)
- @$(NORMAL_INSTALL)
- @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
- if test -n "$$list"; then \
- echo " $(MKDIR_P) '$(DESTDIR)$(pkgincludedir)'"; \
- $(MKDIR_P) "$(DESTDIR)$(pkgincludedir)" || exit 1; \
- fi; \
- for p in $$list; do \
- if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
- echo "$$d$$p"; \
- done | $(am__base_list) | \
- while read files; do \
- echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(pkgincludedir)'"; \
- $(INSTALL_HEADER) $$files "$(DESTDIR)$(pkgincludedir)" || exit $$?; \
- done
-
-uninstall-pkgincludeHEADERS:
- @$(NORMAL_UNINSTALL)
- @list='$(pkginclude_HEADERS)'; test -n "$(pkgincludedir)" || list=; \
- files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
- dir='$(DESTDIR)$(pkgincludedir)'; $(am__uninstall_files_from_dir)
-
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- mkid -fID $$unique
tags: TAGS
+TAGS:
-TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- set x; \
- here=`pwd`; \
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- shift; \
- if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- if test $$# -gt 0; then \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- "$$@" $$unique; \
- else \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$unique; \
- fi; \
- fi
ctags: CTAGS
-CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
- $(TAGS_FILES) $(LISP)
- list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
- unique=`for i in $$list; do \
- if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
- done | \
- $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
- END { if (nonempty) { for (i in files) print i; }; }'`; \
- test -z "$(CTAGS_ARGS)$$unique" \
- || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
- $$unique
-
-GTAGS:
- here=`$(am__cd) $(top_builddir) && pwd` \
- && $(am__cd) $(top_srcdir) \
- && gtags -i $(GTAGS_ARGS) "$$here"
-
-distclean-tags:
- -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+CTAGS:
+
distdir: $(DISTFILES)
@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -708,9 +401,9 @@ distdir: $(DISTFILES)
check-am: all-am
$(MAKE) $(AM_MAKEFLAGS) check-local
check: check-am
-all-am: Makefile $(LTLIBRARIES) $(HEADERS)
+all-am: Makefile
installdirs:
- for dir in "$(DESTDIR)$(pygobjectdir)" "$(DESTDIR)$(pygobjectdir)" "$(DESTDIR)$(pkgincludedir)"; do \
+ for dir in "$(DESTDIR)$(pygobjectdir)"; do \
test -z "$$dir" || $(MKDIR_P) "$$dir"; \
done
install: install-am
@@ -745,14 +438,11 @@ maintainer-clean-generic:
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
-clean-am: clean-generic clean-libtool clean-local \
- clean-pygobjectLTLIBRARIES mostlyclean-am
+clean-am: clean-generic clean-libtool mostlyclean-am
distclean: distclean-am
- -rm -rf ./$(DEPDIR)
-rm -f Makefile
-distclean-am: clean-am distclean-compile distclean-generic \
- distclean-tags
+distclean-am: clean-am distclean-generic
dvi: dvi-am
@@ -766,8 +456,7 @@ info: info-am
info-am:
-install-data-am: install-pkgincludeHEADERS \
- install-pygobjectLTLIBRARIES install-pygobjectPYTHON
+install-data-am: install-pygobjectPYTHON
install-dvi: install-dvi-am
@@ -796,14 +485,12 @@ install-ps-am:
installcheck-am:
maintainer-clean: maintainer-clean-am
- -rm -rf ./$(DEPDIR)
-rm -f Makefile
maintainer-clean-am: distclean-am maintainer-clean-generic
mostlyclean: mostlyclean-am
-mostlyclean-am: mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
pdf: pdf-am
@@ -813,27 +500,22 @@ ps: ps-am
ps-am:
-uninstall-am: uninstall-pkgincludeHEADERS \
- uninstall-pygobjectLTLIBRARIES uninstall-pygobjectPYTHON
+uninstall-am: uninstall-pygobjectPYTHON
.MAKE: check-am install-am install-strip
-.PHONY: CTAGS GTAGS all all-am check check-am check-local clean \
- clean-generic clean-libtool clean-local \
- clean-pygobjectLTLIBRARIES ctags distclean distclean-compile \
- distclean-generic distclean-libtool distclean-tags distdir dvi \
- dvi-am html html-am info info-am install install-am \
- install-data install-data-am install-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-pkgincludeHEADERS install-ps \
- install-ps-am install-pygobjectLTLIBRARIES \
+.PHONY: all all-am check check-am check-local clean clean-generic \
+ clean-libtool distclean distclean-generic distclean-libtool \
+ distdir dvi dvi-am html html-am info info-am install \
+ install-am install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
install-pygobjectPYTHON install-strip installcheck \
installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags uninstall uninstall-am uninstall-pkgincludeHEADERS \
- uninstall-pygobjectLTLIBRARIES uninstall-pygobjectPYTHON
+ maintainer-clean-generic mostlyclean mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
+ uninstall-pygobjectPYTHON
# if we build in a separate tree, we need to symlink the *.py files from the
@@ -844,12 +526,8 @@ build_pylinks:
[ -e $(builddir)/$$f ] || $(LN_S) $(srcdir)/$$f $(builddir)/$$f; \
done
-all: $(pygobject_LTLIBRARIES:.la=$(PYTHON_SO)) build_pylinks
-check-local: $(pygobject_LTLIBRARIES:.la=$(PYTHON_SO)) build_pylinks
-clean-local:
- rm -f $(pygobject_LTLIBRARIES:.la=$(PYTHON_SO))
-%$(PYTHON_SO): %.la
- $(LN_S) -f .libs/$@ $@
+all: build_pylinks
+check-local: build_pylinks
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/gi/_gobject/__init__.py b/gi/_gobject/__init__.py
index d3ea0e0..dd5217d 100644
--- a/gi/_gobject/__init__.py
+++ b/gi/_gobject/__init__.py
@@ -19,42 +19,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
# USA
-# this can go when things are a little further along
-
-import sys
-
-# we can't have pygobject 2 loaded at the same time we load the internal _gobject
-if 'gobject' in sys.modules:
- raise ImportError('When using gi.repository you must not import static modules like "gobject". Please change all occurrences of "import gobject" to "from gi.repository import GObject".')
-
-from . import _gobject
-from . import propertyhelper
-from . import signalhelper
-
-GObject = _gobject.GObject
-GType = _gobject.GType
-_PyGObject_API = _gobject._PyGObject_API
-pygobject_version = _gobject.pygobject_version
-
-
-class GObjectMeta(type):
- "Metaclass for automatically registering GObject classes"
- def __init__(cls, name, bases, dict_):
- type.__init__(cls, name, bases, dict_)
- propertyhelper.install_properties(cls)
- signalhelper.install_signals(cls)
- cls._type_register(cls.__dict__)
-
- def _type_register(cls, namespace):
- ## don't register the class if already registered
- if '__gtype__' in namespace:
- return
-
- # Do not register a new GType for the overrides, as this would sort of
- # defeat the purpose of overrides...
- if cls.__module__.startswith('gi.overrides.'):
- return
-
- _gobject.type_register(cls, namespace.get('__gtype_name__'))
-
-_gobject._install_metaclass(GObjectMeta)
+# Needed for compatibility with "pygobject.h"
+import gi._gi
+_PyGObject_API = gi._gi._gobject._PyGObject_API
+pygobject_version = gi._gi._gobject.pygobject_version
diff --git a/gi/_glib/option.py b/gi/_option.py
index 54e802f..0649081 100644
--- a/gi/_glib/option.py
+++ b/gi/_option.py
@@ -33,7 +33,7 @@ import sys
import optparse
from optparse import OptParseError, OptionError, OptionValueError, \
BadOptionError, OptionConflictError
-from ..module import get_introspection_module
+from .module import get_introspection_module
if sys.version_info >= (3, 0):
_basestring = str
@@ -42,7 +42,7 @@ else:
_basestring = basestring
_bytes = str
-from gi._glib import _glib
+from gi._gi import _glib
GLib = get_introspection_module('GLib')
OPTION_CONTEXT_ERROR_QUARK = GLib.quark_to_string(GLib.option_error_quark())
diff --git a/gi/_gobject/propertyhelper.py b/gi/_propertyhelper.py
index c9400df..ddc81cc 100644
--- a/gi/_gobject/propertyhelper.py
+++ b/gi/_propertyhelper.py
@@ -2,7 +2,7 @@
# pygobject - Python bindings for the GObject library
# Copyright (C) 2007 Johan Dahlin
#
-# gobject/propertyhelper.py: GObject property wrapper/helper
+# gi/_propertyhelper.py: GObject property wrapper/helper
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
@@ -21,19 +21,25 @@
import sys
-from . import _gobject
+import gi._gi
+_gobject = gi._gi._gobject
-from .constants import \
+from ._constants import \
TYPE_NONE, TYPE_INTERFACE, TYPE_CHAR, TYPE_UCHAR, \
TYPE_BOOLEAN, TYPE_INT, TYPE_UINT, TYPE_LONG, \
TYPE_ULONG, TYPE_INT64, TYPE_UINT64, TYPE_ENUM, TYPE_FLAGS, \
TYPE_FLOAT, TYPE_DOUBLE, TYPE_STRING, \
TYPE_POINTER, TYPE_BOXED, TYPE_PARAM, TYPE_OBJECT, \
TYPE_PYOBJECT, TYPE_GTYPE, TYPE_STRV, TYPE_VARIANT
-from ._gobject import \
- G_MAXFLOAT, G_MAXDOUBLE, \
- G_MININT, G_MAXINT, G_MAXUINT, G_MINLONG, G_MAXLONG, \
- G_MAXULONG
+
+G_MAXFLOAT = _gobject.G_MAXFLOAT
+G_MAXDOUBLE = _gobject.G_MAXDOUBLE
+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
if sys.version_info >= (3, 0):
_basestring = str
diff --git a/gi/_gobject/signalhelper.py b/gi/_signalhelper.py
index b630158..79de301 100644
--- a/gi/_gobject/signalhelper.py
+++ b/gi/_signalhelper.py
@@ -2,7 +2,7 @@
# pygobject - Python bindings for the GObject library
# Copyright (C) 2012 Simon Feltman
#
-# gobject/signalhelper.py: GObject signal binding decorator object
+# gi/_signalhelper.py: GObject signal binding decorator object
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
@@ -22,7 +22,7 @@
import sys
import inspect
-from . import _gobject
+from ._gi import _gobject
# Callable went away in python 3.0 and came back in 3.2.
# Use versioning to figure out when to define it, otherwise we have to deal with
diff --git a/gi/gimodule.c b/gi/gimodule.c
index 12addbc..ef3e205 100644
--- a/gi/gimodule.c
+++ b/gi/gimodule.c
@@ -21,11 +21,13 @@
* USA
*/
+#include "pyglib-private.h"
+#include "pygobject-private.h"
+#include "pyginterface.h"
#include "pygi-private.h"
#include "pygi.h"
#include "pyglib.h"
-#include <pygobject.h>
#include <pyglib-python-compat.h>
PyObject *PyGIDeprecationWarning;
@@ -627,6 +629,8 @@ static struct PyGI_API CAPI = {
PYGLIB_MODULE_START(_gi, "_gi")
{
PyObject *api;
+ PyObject *_glib_module;
+ PyObject *_gobject_module;
/* Always enable Python threads since we cannot predict which GI repositories
* might accept Python callbacks run within non-Python threads or might trigger
@@ -635,13 +639,30 @@ PYGLIB_MODULE_START(_gi, "_gi")
*/
PyEval_InitThreads ();
- if (pygobject_init (-1, -1, -1) == NULL) {
+ _glib_module = pyglib__glib_module_create ();
+ if (_glib_module == NULL) {
return PYGLIB_MODULE_ERROR_RETURN;
}
+ /* In Python 2.x, pyglib_..._module_create returns a borrowed reference and
+ * PyModule_AddObject steals a reference. Ensure we don't share a reference
+ * between sys.modules and gi._gi._glib by incrementing the ref count here.
+ * Note that we don't add this to the PYGLIB_MODULE_START macro because that
+ * would cause a leak for the main module gi._gi */
+ if (PY_MAJOR_VERSION < 3) {
+ Py_INCREF (_glib_module);
+ }
+ PyModule_AddObject (module, "_glib", _glib_module);
+ PyModule_AddStringConstant(module, "__package__", "gi._gi");
- if (_pygobject_import() < 0) {
+ _gobject_module = pyglib__gobject_module_create ();
+ if (_gobject_module == NULL) {
return PYGLIB_MODULE_ERROR_RETURN;
}
+ if (PY_MAJOR_VERSION < 3) {
+ Py_INCREF (_gobject_module);
+ }
+ PyModule_AddObject (module, "_gobject", _gobject_module);
+ PyModule_AddStringConstant(module, "__package__", "gi._gi");
_pygi_repository_register_types (module);
_pygi_info_register_types (module);
diff --git a/gi/_glib/glibmodule.c b/gi/glibmodule.c
index d08d4fb..c11f08b 100644
--- a/gi/_glib/glibmodule.c
+++ b/gi/glibmodule.c
@@ -33,6 +33,8 @@
#include "pygoptiongroup.h"
#include "pygspawn.h"
+PyObject *PyGError = NULL;
+
/* ---------------- glib module functions -------------------- */
static PyMethodDef _glib_functions[] = {
@@ -47,54 +49,26 @@ static PyMethodDef _glib_functions[] = {
{ NULL, NULL, 0 }
};
-/* ----------------- glib module initialisation -------------- */
-
-static struct _PyGLib_Functions pyglib_api = {
- FALSE, /* threads_enabled */
- NULL, /* gerror_exception */
- NULL, /* block_threads */
- NULL, /* unblock_threads */
- NULL, /* pyg_main_context_new */
- pyg_option_context_new,
- pyg_option_group_new,
-};
-
-static void
-pyglib_register_api(PyObject *d)
-{
- PyObject *o;
-
- /* for addon libraries ... */
- PyDict_SetItemString(d, "_PyGLib_API",
- o=PYGLIB_CPointer_WrapPointer(&pyglib_api,"gi._glib._PyGLib_API"));
- Py_DECREF(o);
-
- pyglib_init_internal(o);
-}
-
static void
pyglib_register_error(PyObject *d)
{
PyObject *dict;
- PyObject *gerror_class;
dict = PyDict_New();
/* This is a hack to work around the deprecation warning of
* BaseException.message in Python 2.6+.
* GError has also an "message" attribute.
*/
PyDict_SetItemString(dict, "message", Py_None);
- gerror_class = PyErr_NewException("gi._glib.GError", PyExc_RuntimeError, dict);
+ PyGError = PyErr_NewException("gi._glib.GError", PyExc_RuntimeError, dict);
Py_DECREF(dict);
- PyDict_SetItemString(d, "GError", gerror_class);
- pyglib_api.gerror_exception = gerror_class;
+ PyDict_SetItemString(d, "GError", PyGError);
}
PYGLIB_MODULE_START(_glib, "_glib")
{
PyObject *d = PyModule_GetDict(module);
- pyglib_register_api(d);
pyglib_register_error(d);
pyglib_spawn_register_types(d);
pyglib_option_context_register_types(d);
diff --git a/gi/_gobject/gobjectmodule.c b/gi/gobjectmodule.c
index e982107..82d52a1 100644
--- a/gi/_gobject/gobjectmodule.c
+++ b/gi/gobjectmodule.c
@@ -36,6 +36,9 @@
#include "pygparamspec.h"
#include "pygpointer.h"
#include "pygtype.h"
+#include "pygoptiongroup.h"
+
+#include "pygi-value.h"
static GHashTable *log_handlers = NULL;
static gboolean log_handlers_disabled = FALSE;
@@ -2099,7 +2102,7 @@ struct _PyGObject_Functions pygobject_api_functions = {
pyg_gerror_exception_check,
- pyglib_option_group_new,
+ pyg_option_group_new,
pyg_type_from_object_strict,
pygobject_new_full,
@@ -2193,8 +2196,6 @@ PYGLIB_MODULE_START(_gobject, "_gobject")
{
PyObject *d;
- pyglib_init();
-
d = PyModule_GetDict(module);
pygobject_register_api(d);
pygobject_register_constants(module);
diff --git a/gi/module.py b/gi/module.py
index 8996926..8c25fd7 100644
--- a/gi/module.py
+++ b/gi/module.py
@@ -54,15 +54,15 @@ from ._gi import \
enum_add, \
enum_register_new_gtype_and_add, \
flags_add, \
- flags_register_new_gtype_and_add
+ flags_register_new_gtype_and_add, \
+ _gobject
from .types import \
GObjectMeta, \
StructMeta
-from ._gobject._gobject import \
- GInterface
+GInterface = _gobject.GInterface
-from ._gobject.constants import \
+from ._constants import \
TYPE_NONE, \
TYPE_BOXED, \
TYPE_POINTER, \
diff --git a/gi/overrides/GLib.py b/gi/overrides/GLib.py
index df5654a..b17c69b 100644
--- a/gi/overrides/GLib.py
+++ b/gi/overrides/GLib.py
@@ -33,13 +33,13 @@ GLib = get_introspection_module('GLib')
__all__ = []
-from gi._glib import option
+from gi import _option as option
option # pyflakes
__all__.append('option')
# Types and functions still needed from static bindings
-from gi._glib import _glib
+from gi._gi import _glib
GError = _glib.GError
OptionContext = _glib.OptionContext
OptionGroup = _glib.OptionGroup
diff --git a/gi/overrides/GObject.py b/gi/overrides/GObject.py
index 147a452..8c22ac5 100644
--- a/gi/overrides/GObject.py
+++ b/gi/overrides/GObject.py
@@ -31,16 +31,17 @@ from gi.overrides import override
from gi.repository import GLib
from gi import PyGIDeprecationWarning
-from gi._gobject import _gobject
-from gi._gobject import propertyhelper
-from gi._gobject import signalhelper
+from gi import _propertyhelper as propertyhelper
+from gi import _signalhelper as signalhelper
+
+_gobject = gi._gi._gobject
GObjectModule = gi.module.get_introspection_module('GObject')
__all__ = []
-from gi._glib import option
+from gi import _option as option
sys.modules['gi._gobject.option'] = option
diff --git a/gi/overrides/__init__.py b/gi/overrides/__init__.py
index 9e7a0f1..2cd1345 100644
--- a/gi/overrides/__init__.py
+++ b/gi/overrides/__init__.py
@@ -3,7 +3,7 @@ import warnings
from gi import PyGIDeprecationWarning
from gi._gi import CallableInfo
-from gi._gobject.constants import \
+from gi._constants import \
TYPE_NONE, \
TYPE_INVALID
diff --git a/gi/_gobject/pygboxed.c b/gi/pygboxed.c
index 541e77b..541e77b 100644
--- a/gi/_gobject/pygboxed.c
+++ b/gi/pygboxed.c
diff --git a/gi/_gobject/pygboxed.h b/gi/pygboxed.h
index 8433b9d..8433b9d 100644
--- a/gi/_gobject/pygboxed.h
+++ b/gi/pygboxed.h
diff --git a/gi/_gobject/pygenum.c b/gi/pygenum.c
index 89e3a06..89e3a06 100644
--- a/gi/_gobject/pygenum.c
+++ b/gi/pygenum.c
diff --git a/gi/_gobject/pygenum.h b/gi/pygenum.h
index 0558831..0558831 100644
--- a/gi/_gobject/pygenum.h
+++ b/gi/pygenum.h
diff --git a/gi/_gobject/pygflags.c b/gi/pygflags.c
index bdeaae7..bdeaae7 100644
--- a/gi/_gobject/pygflags.c
+++ b/gi/pygflags.c
diff --git a/gi/_gobject/pygflags.h b/gi/pygflags.h
index e93265c..e93265c 100644
--- a/gi/_gobject/pygflags.h
+++ b/gi/pygflags.h
diff --git a/gi/pygi-argument.c b/gi/pygi-argument.c
index 6378892..63149b0 100644
--- a/gi/pygi-argument.c
+++ b/gi/pygi-argument.c
@@ -22,17 +22,19 @@
*/
#include "pygi-private.h"
+#include "pygobject-private.h"
#include <string.h>
#include <time.h>
#include <datetime.h>
-#include <pygobject.h>
#include <pyglib-python-compat.h>
#include <pyglib.h>
-#include "pygi-marshal-from-py.h"
-#include "pygi-marshal-to-py.h"
+#include "pygi-value.h"
+#include "pygi-basictype.h"
+#include "pygi-object.h"
+#include "pygi-struct-marshal.h"
static gboolean
@@ -1062,7 +1064,7 @@ array_success:
case GI_INFO_TYPE_INTERFACE:
case GI_INFO_TYPE_OBJECT:
/* An error within this call will result in a NULL arg */
- _pygi_marshal_from_py_gobject_out_arg (object, &arg, transfer);
+ pygi_arg_gobject_out_arg_from_py (object, &arg, transfer);
break;
default:
@@ -1435,10 +1437,10 @@ _pygi_argument_to_object (GIArgument *arg,
transfer == GI_TRANSFER_NOTHING &&
g_object_is_floating (arg->v_pointer)) {
g_object_ref (arg->v_pointer);
- object = _pygi_marshal_to_py_object (arg, GI_TRANSFER_EVERYTHING);
+ object = pygi_arg_gobject_to_py (arg, GI_TRANSFER_EVERYTHING);
g_object_force_floating (arg->v_pointer);
} else {
- object = _pygi_marshal_to_py_object (arg, transfer);
+ object = pygi_arg_gobject_to_py (arg, transfer);
}
break;
@@ -1587,131 +1589,6 @@ _pygi_argument_to_object (GIArgument *arg,
return object;
}
-
-GIArgument
-_pygi_argument_from_g_value(const GValue *value,
- GITypeInfo *type_info)
-{
- 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);
- break;
- case GI_TYPE_TAG_INT8:
- case GI_TYPE_TAG_INT16:
- case GI_TYPE_TAG_INT32:
- 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:
- 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:
- 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:
- 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);
- break;
- case GI_TYPE_TAG_FLOAT:
- arg.v_float = g_value_get_float (value);
- break;
- case GI_TYPE_TAG_DOUBLE:
- arg.v_double = g_value_get_double (value);
- break;
- case GI_TYPE_TAG_GTYPE:
- arg.v_long = g_value_get_gtype (value);
- break;
- case GI_TYPE_TAG_UTF8:
- case GI_TYPE_TAG_FILENAME:
- arg.v_string = g_value_dup_string (value);
- break;
- case GI_TYPE_TAG_GLIST:
- case GI_TYPE_TAG_GSLIST:
- arg.v_pointer = g_value_get_pointer (value);
- break;
- case GI_TYPE_TAG_ARRAY:
- case GI_TYPE_TAG_GHASH:
- if (G_VALUE_HOLDS_BOXED (value))
- arg.v_pointer = g_value_get_boxed (value);
- else
- /* e. g. GSettings::change-event */
- arg.v_pointer = g_value_get_pointer (value);
- break;
- case GI_TYPE_TAG_INTERFACE:
- {
- GIBaseInfo *info;
- GIInfoType info_type;
-
- info = g_type_info_get_interface (type_info);
- info_type = g_base_info_get_type (info);
-
- g_base_info_unref (info);
-
- switch (info_type) {
- case GI_INFO_TYPE_FLAGS:
- arg.v_uint = g_value_get_flags (value);
- break;
- case GI_INFO_TYPE_ENUM:
- arg.v_int = g_value_get_enum (value);
- break;
- case GI_INFO_TYPE_INTERFACE:
- case GI_INFO_TYPE_OBJECT:
- if (G_VALUE_HOLDS_PARAM (value))
- arg.v_pointer = g_value_get_param (value);
- else
- arg.v_pointer = g_value_get_object (value);
- break;
- case GI_INFO_TYPE_BOXED:
- case GI_INFO_TYPE_STRUCT:
- case GI_INFO_TYPE_UNION:
- if (G_VALUE_HOLDS(value, G_TYPE_BOXED)) {
- arg.v_pointer = g_value_get_boxed (value);
- } else if (G_VALUE_HOLDS(value, G_TYPE_VARIANT)) {
- arg.v_pointer = g_value_get_variant (value);
- } else {
- arg.v_pointer = g_value_get_pointer (value);
- }
- break;
- default:
- g_warning("Converting of type '%s' is not implemented", g_info_type_to_string(info_type));
- g_assert_not_reached();
- }
- break;
- }
- case GI_TYPE_TAG_ERROR:
- arg.v_pointer = g_value_get_boxed (value);
- break;
- case GI_TYPE_TAG_VOID:
- arg.v_pointer = g_value_get_pointer (value);
- break;
- }
-
- return arg;
-}
-
void
_pygi_argument_release (GIArgument *arg,
GITypeInfo *type_info,
@@ -1981,6 +1858,5 @@ void
_pygi_argument_init (void)
{
PyDateTime_IMPORT;
- _pygobject_import();
}
diff --git a/gi/pygi-argument.h b/gi/pygi-argument.h
index ed88214..d32bd99 100644
--- a/gi/pygi-argument.h
+++ b/gi/pygi-argument.h
@@ -63,9 +63,6 @@ PyObject* _pygi_argument_to_object (GIArgument *arg,
GITypeInfo *type_info,
GITransfer transfer);
-GIArgument _pygi_argument_from_g_value(const GValue *value,
- GITypeInfo *type_info);
-
void _pygi_argument_release (GIArgument *arg,
GITypeInfo *type_info,
GITransfer transfer,
diff --git a/gi/pygi-array.c b/gi/pygi-array.c
new file mode 100644
index 0000000..937c6b3
--- /dev/null
+++ b/gi/pygi-array.c
@@ -0,0 +1,909 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>
+ * Copyright (C) 2014 Simon Feltman <sfeltman@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, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <glib.h>
+#include <Python.h>
+#include <pyglib-python-compat.h>
+
+#include "pygi-array.h"
+#include "pygi-private.h"
+#include "pygi-marshal-cleanup.h"
+
+/* Needed for _pygi_marshal_cleanup_from_py_interface_struct_gvalue hack */
+#include "pygi-struct-marshal.h"
+
+/*
+ * GArray to Python
+ */
+
+static gboolean
+gi_argument_from_py_ssize_t (GIArgument *arg_out,
+ Py_ssize_t size_in,
+ GITypeTag type_tag)
+{
+ switch (type_tag) {
+ case GI_TYPE_TAG_VOID:
+ case GI_TYPE_TAG_BOOLEAN:
+ 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:
+ 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:
+ if (size_in >= G_MININT32 && size_in <= G_MAXINT32) {
+ arg_out->v_int32 = size_in;
+ return TRUE;
+ } else {
+ goto overflow;
+ }
+
+ case GI_TYPE_TAG_UINT32:
+ if (size_in >= 0 && size_in <= G_MAXUINT32) {
+ arg_out->v_uint32 = size_in;
+ return TRUE;
+ } else {
+ goto overflow;
+ }
+
+ case GI_TYPE_TAG_INT64:
+ arg_out->v_int64 = size_in;
+ return TRUE;
+
+ case GI_TYPE_TAG_UINT64:
+ if (size_in >= 0) {
+ arg_out->v_uint64 = size_in;
+ return TRUE;
+ } else {
+ goto overflow;
+ }
+
+ case GI_TYPE_TAG_FLOAT:
+ case GI_TYPE_TAG_DOUBLE:
+ case GI_TYPE_TAG_GTYPE:
+ case GI_TYPE_TAG_UTF8:
+ case GI_TYPE_TAG_FILENAME:
+ case GI_TYPE_TAG_ARRAY:
+ case GI_TYPE_TAG_INTERFACE:
+ case GI_TYPE_TAG_GLIST:
+ case GI_TYPE_TAG_GSLIST:
+ case GI_TYPE_TAG_GHASH:
+ case GI_TYPE_TAG_ERROR:
+ case GI_TYPE_TAG_UNICHAR:
+ default:
+ goto unhandled_type;
+ }
+
+ overflow:
+ PyErr_Format (PyExc_OverflowError,
+ "Unable to marshal C Py_ssize_t %zd to %s",
+ size_in,
+ g_type_tag_to_string (type_tag));
+ return FALSE;
+
+ unhandled_type:
+ PyErr_Format (PyExc_TypeError,
+ "Unable to marshal C Py_ssize_t %zd to %s",
+ size_in,
+ g_type_tag_to_string (type_tag));
+ return FALSE;
+}
+
+static gboolean
+gi_argument_to_gsize (GIArgument *arg_in,
+ gsize *gsize_out,
+ GITypeTag type_tag)
+{
+ switch (type_tag) {
+ case GI_TYPE_TAG_INT8:
+ *gsize_out = arg_in->v_int8;
+ return TRUE;
+ case GI_TYPE_TAG_UINT8:
+ *gsize_out = arg_in->v_uint8;
+ return TRUE;
+ case GI_TYPE_TAG_INT16:
+ *gsize_out = arg_in->v_int16;
+ return TRUE;
+ case GI_TYPE_TAG_UINT16:
+ *gsize_out = arg_in->v_uint16;
+ return TRUE;
+ case GI_TYPE_TAG_INT32:
+ *gsize_out = arg_in->v_int32;
+ return TRUE;
+ case GI_TYPE_TAG_UINT32:
+ *gsize_out = arg_in->v_uint32;
+ return TRUE;
+ case GI_TYPE_TAG_INT64:
+ *gsize_out = arg_in->v_int64;
+ return TRUE;
+ case GI_TYPE_TAG_UINT64:
+ *gsize_out = arg_in->v_uint64;
+ return TRUE;
+ default:
+ PyErr_Format (PyExc_TypeError,
+ "Unable to marshal %s to gsize",
+ g_type_tag_to_string (type_tag));
+ return FALSE;
+ }
+}
+
+static gboolean
+_pygi_marshal_from_py_array (PyGIInvokeState *state,
+ PyGICallableCache *callable_cache,
+ PyGIArgCache *arg_cache,
+ PyObject *py_arg,
+ GIArgument *arg,
+ gpointer *cleanup_data)
+{
+ PyGIMarshalFromPyFunc from_py_marshaller;
+ int i = 0;
+ int success_count = 0;
+ Py_ssize_t length;
+ gssize item_size;
+ gboolean is_ptr_array;
+ GArray *array_ = NULL;
+ PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
+ PyGIArgGArray *array_cache = (PyGIArgGArray *)arg_cache;
+
+
+ if (py_arg == Py_None) {
+ arg->v_pointer = NULL;
+ return TRUE;
+ }
+
+ if (!PySequence_Check (py_arg)) {
+ PyErr_Format (PyExc_TypeError, "Must be sequence, not %s",
+ py_arg->ob_type->tp_name);
+ return FALSE;
+ }
+
+ length = PySequence_Length (py_arg);
+ if (length < 0)
+ return FALSE;
+
+ if (array_cache->fixed_size >= 0 &&
+ array_cache->fixed_size != length) {
+ PyErr_Format (PyExc_ValueError, "Must contain %zd items, not %zd",
+ array_cache->fixed_size, length);
+
+ return FALSE;
+ }
+
+ item_size = array_cache->item_size;
+ is_ptr_array = (array_cache->array_type == GI_ARRAY_TYPE_PTR_ARRAY);
+ if (is_ptr_array) {
+ array_ = (GArray *)g_ptr_array_sized_new (length);
+ } else {
+ array_ = g_array_sized_new (array_cache->is_zero_terminated,
+ TRUE,
+ item_size,
+ length);
+ }
+
+ if (array_ == NULL) {
+ PyErr_NoMemory ();
+ return FALSE;
+ }
+
+ if (sequence_cache->item_cache->type_tag == GI_TYPE_TAG_UINT8 &&
+ PYGLIB_PyBytes_Check (py_arg)) {
+ memcpy(array_->data, PYGLIB_PyBytes_AsString (py_arg), length);
+ array_->len = length;
+ if (array_cache->is_zero_terminated) {
+ /* If array_ has been created with zero_termination, space for the
+ * terminator is properly allocated, so we're not off-by-one here. */
+ array_->data[length] = '\0';
+ }
+ goto array_success;
+ }
+
+ from_py_marshaller = sequence_cache->item_cache->from_py_marshaller;
+ for (i = 0, success_count = 0; i < length; i++) {
+ GIArgument item = {0};
+ gpointer item_cleanup_data = NULL;
+ PyObject *py_item = PySequence_GetItem (py_arg, i);
+ if (py_item == NULL)
+ goto err;
+
+ if (!from_py_marshaller ( state,
+ callable_cache,
+ sequence_cache->item_cache,
+ py_item,
+ &item,
+ &item_cleanup_data)) {
+ Py_DECREF (py_item);
+ goto err;
+ }
+ Py_DECREF (py_item);
+
+ if (item_cleanup_data != NULL && item_cleanup_data != item.v_pointer) {
+ /* We only support one level of data discrepancy between an items
+ * data and its cleanup data. This is because we only track a single
+ * extra cleanup data pointer per-argument and cannot track the entire
+ * array of items differing data and cleanup_data.
+ * For example, this would fail if trying to marshal an array of
+ * callback closures marked with SCOPE call type where the cleanup data
+ * is different from the items v_pointer, likewise an array of arrays.
+ */
+ PyErr_SetString(PyExc_RuntimeError, "Cannot cleanup item data for array due to "
+ "the items data its cleanup data being different.");
+ goto err;
+ }
+
+ /* FIXME: it is much more efficent to have seperate marshaller
+ * for ptr arrays than doing the evaluation
+ * and casting each loop iteration
+ */
+ if (is_ptr_array) {
+ g_ptr_array_add((GPtrArray *)array_, item.v_pointer);
+ } else if (sequence_cache->item_cache->is_pointer) {
+ /* if the item is a pointer, simply copy the pointer */
+ g_assert (item_size == sizeof (item.v_pointer));
+ g_array_insert_val (array_, i, item);
+ } else if (sequence_cache->item_cache->type_tag == GI_TYPE_TAG_INTERFACE) {
+ /* Special case handling of flat arrays of gvalue/boxed/struct */
+ PyGIInterfaceCache *item_iface_cache = (PyGIInterfaceCache *) sequence_cache->item_cache;
+ GIBaseInfo *base_info = (GIBaseInfo *) item_iface_cache->interface_info;
+ GIInfoType info_type = g_base_info_get_type (base_info);
+
+ switch (info_type) {
+ case GI_INFO_TYPE_UNION:
+ case GI_INFO_TYPE_STRUCT:
+ {
+ PyGIArgCache *item_arg_cache = (PyGIArgCache *)item_iface_cache;
+ PyGIMarshalCleanupFunc from_py_cleanup = item_arg_cache->from_py_cleanup;
+
+ if (g_type_is_a (item_iface_cache->g_type, G_TYPE_VALUE)) {
+ /* Special case GValue flat arrays to properly init and copy the contents. */
+ GValue* dest = (GValue*) (array_->data + (i * item_size));
+ if (item.v_pointer != NULL) {
+ memset (dest, 0, item_size);
+ g_value_init (dest, G_VALUE_TYPE ((GValue*) item.v_pointer));
+ g_value_copy ((GValue*) item.v_pointer, dest);
+ }
+ /* Manually increment the length because we are manually setting the memory. */
+ array_->len++;
+
+ } else {
+ /* Handles flat arrays of boxed or struct types. */
+ g_array_insert_vals (array_, i, item.v_pointer, 1);
+ }
+
+ /* Cleanup any memory left by the per-item marshaler because
+ * _pygi_marshal_cleanup_from_py_array will not know about this
+ * due to "item" being a temporarily marshaled value done on the stack.
+ */
+ if (from_py_cleanup)
+ from_py_cleanup (state, item_arg_cache, py_item, item_cleanup_data, TRUE);
+
+ break;
+ }
+ default:
+ g_array_insert_val (array_, i, item);
+ }
+ } else {
+ /* default value copy of a simple type */
+ g_array_insert_val (array_, i, item);
+ }
+
+ success_count++;
+ continue;
+err:
+ if (sequence_cache->item_cache->from_py_cleanup != NULL) {
+ gsize j;
+ PyGIMarshalCleanupFunc cleanup_func =
+ sequence_cache->item_cache->from_py_cleanup;
+
+ /* Only attempt per item cleanup on pointer items */
+ if (sequence_cache->item_cache->is_pointer) {
+ for(j = 0; j < success_count; j++) {
+ PyObject *py_item = PySequence_GetItem (py_arg, j);
+ cleanup_func (state,
+ sequence_cache->item_cache,
+ py_item,
+ is_ptr_array ?
+ g_ptr_array_index ((GPtrArray *)array_, j) :
+ g_array_index (array_, gpointer, j),
+ TRUE);
+ Py_DECREF (py_item);
+ }
+ }
+ }
+
+ if (is_ptr_array)
+ g_ptr_array_free ( ( GPtrArray *)array_, TRUE);
+ else
+ g_array_free (array_, TRUE);
+ _PyGI_ERROR_PREFIX ("Item %i: ", i);
+ return FALSE;
+ }
+
+array_success:
+ if (array_cache->len_arg_index >= 0) {
+ /* we have an child arg to handle */
+ PyGIArgCache *child_cache =
+ _pygi_callable_cache_get_arg (callable_cache, array_cache->len_arg_index);
+
+ if (child_cache->direction == PYGI_DIRECTION_BIDIRECTIONAL) {
+ gint *len_arg = (gint *)state->in_args[child_cache->c_arg_index].v_pointer;
+ /* if we are not setup yet just set the in arg */
+ if (len_arg == NULL) {
+ if (!gi_argument_from_py_ssize_t (&state->in_args[child_cache->c_arg_index],
+ length,
+ child_cache->type_tag)) {
+ goto err;
+ }
+ } else {
+ *len_arg = length;
+ }
+ } else {
+ if (!gi_argument_from_py_ssize_t (&state->in_args[child_cache->c_arg_index],
+ length,
+ child_cache->type_tag)) {
+ goto err;
+ }
+ }
+ }
+
+ if (array_cache->array_type == GI_ARRAY_TYPE_C) {
+ /* In the case of GI_ARRAY_C, we give the data directly as the argument
+ * but keep the array_ wrapper as cleanup data so we don't have to find
+ * it's length again.
+ */
+ arg->v_pointer = array_->data;
+
+ if (arg_cache->transfer == GI_TRANSFER_EVERYTHING) {
+ g_array_free (array_, FALSE);
+ *cleanup_data = NULL;
+ } else {
+ *cleanup_data = array_;
+ }
+ } else {
+ arg->v_pointer = array_;
+
+ if (arg_cache->transfer == GI_TRANSFER_NOTHING) {
+ /* Free everything in cleanup. */
+ *cleanup_data = array_;
+ } else if (arg_cache->transfer == GI_TRANSFER_CONTAINER) {
+ /* Make a shallow copy so we can free the elements later in cleanup
+ * because it is possible invoke will free the list before our cleanup. */
+ *cleanup_data = is_ptr_array ?
+ (gpointer)g_ptr_array_ref ((GPtrArray *)array_) :
+ (gpointer)g_array_ref (array_);
+ } else { /* GI_TRANSFER_EVERYTHING */
+ /* No cleanup, everything is given to the callee. */
+ *cleanup_data = NULL;
+ }
+ }
+
+ return TRUE;
+}
+
+static void
+_pygi_marshal_cleanup_from_py_array (PyGIInvokeState *state,
+ PyGIArgCache *arg_cache,
+ PyObject *py_arg,
+ gpointer data,
+ gboolean was_processed)
+{
+ if (was_processed) {
+ GArray *array_ = NULL;
+ GPtrArray *ptr_array_ = NULL;
+ PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
+ PyGIArgGArray *array_cache = (PyGIArgGArray *)arg_cache;
+
+ if (array_cache->array_type == GI_ARRAY_TYPE_PTR_ARRAY) {
+ ptr_array_ = (GPtrArray *) data;
+ } else {
+ array_ = (GArray *) data;
+ }
+
+ /* clean up items first */
+ if (sequence_cache->item_cache->from_py_cleanup != NULL) {
+ gsize i;
+ guint len = (array_ != NULL) ? array_->len : ptr_array_->len;
+ PyGIMarshalCleanupFunc cleanup_func =
+ sequence_cache->item_cache->from_py_cleanup;
+
+ for (i = 0; i < len; i++) {
+ gpointer item;
+ PyObject *py_item = NULL;
+
+ /* case 1: GPtrArray */
+ if (ptr_array_ != NULL)
+ item = g_ptr_array_index (ptr_array_, i);
+ /* case 2: C array or GArray with object pointers */
+ else if (sequence_cache->item_cache->is_pointer)
+ item = g_array_index (array_, gpointer, i);
+ /* case 3: C array or GArray with simple types or structs */
+ else {
+ item = array_->data + i * array_cache->item_size;
+ /* special-case hack: GValue array items do not get slice
+ * allocated in _pygi_marshal_from_py_array(), so we must
+ * not try to deallocate it as a slice and thus
+ * short-circuit cleanup_func. */
+ if (cleanup_func == _pygi_marshal_cleanup_from_py_interface_struct_gvalue) {
+ g_value_unset ((GValue*) item);
+ continue;
+ }
+ }
+
+ py_item = PySequence_GetItem (py_arg, i);
+ cleanup_func (state, sequence_cache->item_cache, py_item, item, TRUE);
+ Py_XDECREF (py_item);
+ }
+ }
+
+ /* Only free the array when we didn't transfer ownership */
+ if (array_cache->array_type == GI_ARRAY_TYPE_C) {
+ /* always free the GArray wrapper created in from_py marshaling and
+ * passed back as cleanup_data
+ */
+ g_array_free (array_, arg_cache->transfer == GI_TRANSFER_NOTHING);
+ } else {
+ if (array_ != NULL)
+ g_array_unref (array_);
+ else
+ g_ptr_array_unref (ptr_array_);
+ }
+ }
+}
+
+/*
+ * GArray from Python
+ */
+static PyObject *
+_pygi_marshal_to_py_array (PyGIInvokeState *state,
+ PyGICallableCache *callable_cache,
+ PyGIArgCache *arg_cache,
+ GIArgument *arg)
+{
+ GArray *array_;
+ PyObject *py_obj = NULL;
+ PyGISequenceCache *seq_cache = (PyGISequenceCache *)arg_cache;
+ PyGIArgGArray *array_cache = (PyGIArgGArray *)arg_cache;
+ gsize processed_items = 0;
+
+ /* GArrays make it easier to iterate over arrays
+ * with different element sizes but requires that
+ * we allocate a GArray if the argument was a C array
+ */
+ if (array_cache->array_type == GI_ARRAY_TYPE_C) {
+ gsize len;
+ if (array_cache->fixed_size >= 0) {
+ g_assert(arg->v_pointer != NULL);
+ len = array_cache->fixed_size;
+ } else if (array_cache->is_zero_terminated) {
+ if (arg->v_pointer == NULL) {
+ len = 0;
+ } else if (seq_cache->item_cache->type_tag == GI_TYPE_TAG_UINT8) {
+ len = strlen (arg->v_pointer);
+ } else {
+ len = g_strv_length ((gchar **)arg->v_pointer);
+ }
+ } else {
+ GIArgument *len_arg = state->args[array_cache->len_arg_index];
+ PyGIArgCache *arg_cache = _pygi_callable_cache_get_arg (callable_cache,
+ array_cache->len_arg_index);
+
+ if (!gi_argument_to_gsize (len_arg, &len, arg_cache->type_tag)) {
+ return NULL;
+ }
+ }
+
+ array_ = g_array_new (FALSE,
+ FALSE,
+ array_cache->item_size);
+ if (array_ == NULL) {
+ PyErr_NoMemory ();
+
+ if (arg_cache->transfer == GI_TRANSFER_EVERYTHING && arg->v_pointer != NULL)
+ g_free (arg->v_pointer);
+
+ return NULL;
+ }
+
+ if (array_->data != NULL)
+ g_free (array_->data);
+ array_->data = arg->v_pointer;
+ array_->len = len;
+ } else {
+ array_ = arg->v_pointer;
+ }
+
+ if (seq_cache->item_cache->type_tag == GI_TYPE_TAG_UINT8) {
+ if (arg->v_pointer == NULL) {
+ py_obj = PYGLIB_PyBytes_FromString ("");
+ } else {
+ py_obj = PYGLIB_PyBytes_FromStringAndSize (array_->data, array_->len);
+ }
+ } else {
+ if (arg->v_pointer == NULL) {
+ py_obj = PyList_New (0);
+ } else {
+ int i;
+
+ gsize item_size;
+ PyGIMarshalToPyFunc item_to_py_marshaller;
+ PyGIArgCache *item_arg_cache;
+
+ py_obj = PyList_New (array_->len);
+ if (py_obj == NULL)
+ goto err;
+
+
+ item_arg_cache = seq_cache->item_cache;
+ item_to_py_marshaller = item_arg_cache->to_py_marshaller;
+
+ item_size = g_array_get_element_size (array_);
+
+ for (i = 0; i < array_->len; i++) {
+ GIArgument item_arg = {0};
+ PyObject *py_item;
+
+ /* If we are receiving an array of pointers, simply assign the pointer
+ * and move on, letting the per-item marshaler deal with the
+ * various transfer modes and ref counts (e.g. g_variant_ref_sink).
+ */
+ if (array_cache->array_type == GI_ARRAY_TYPE_PTR_ARRAY) {
+ item_arg.v_pointer = g_ptr_array_index ( ( GPtrArray *)array_, i);
+
+ } else if (item_arg_cache->is_pointer) {
+ item_arg.v_pointer = g_array_index (array_, gpointer, i);
+
+ } else if (item_arg_cache->type_tag == GI_TYPE_TAG_INTERFACE) {
+ PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *) item_arg_cache;
+
+ // FIXME: This probably doesn't work with boxed types or gvalues. See fx. _pygi_marshal_from_py_array()
+ switch (g_base_info_get_type (iface_cache->interface_info)) {
+ case GI_INFO_TYPE_STRUCT:
+ if (arg_cache->transfer == GI_TRANSFER_EVERYTHING &&
+ !g_type_is_a (iface_cache->g_type, G_TYPE_BOXED)) {
+ /* array elements are structs */
+ gpointer *_struct = g_malloc (item_size);
+ memcpy (_struct, array_->data + i * item_size,
+ item_size);
+ item_arg.v_pointer = _struct;
+ } else {
+ item_arg.v_pointer = array_->data + i * item_size;
+ }
+ break;
+ default:
+ item_arg.v_pointer = g_array_index (array_, gpointer, i);
+ break;
+ }
+ } else {
+ memcpy (&item_arg, array_->data + i * item_size, item_size);
+ }
+
+ py_item = item_to_py_marshaller ( state,
+ callable_cache,
+ item_arg_cache,
+ &item_arg);
+
+ if (py_item == NULL) {
+ Py_CLEAR (py_obj);
+
+ if (array_cache->array_type == GI_ARRAY_TYPE_C)
+ g_array_unref (array_);
+
+ goto err;
+ }
+ PyList_SET_ITEM (py_obj, i, py_item);
+ processed_items++;
+ }
+ }
+ }
+
+ if (array_cache->array_type == GI_ARRAY_TYPE_C)
+ g_array_free (array_, FALSE);
+
+ return py_obj;
+
+err:
+ if (array_cache->array_type == GI_ARRAY_TYPE_C) {
+ g_array_free (array_, arg_cache->transfer == GI_TRANSFER_EVERYTHING);
+ } else {
+ /* clean up unprocessed items */
+ if (seq_cache->item_cache->to_py_cleanup != NULL) {
+ int j;
+ PyGIMarshalCleanupFunc cleanup_func = seq_cache->item_cache->to_py_cleanup;
+ for (j = processed_items; j < array_->len; j++) {
+ cleanup_func (state,
+ seq_cache->item_cache,
+ NULL,
+ g_array_index (array_, gpointer, j),
+ FALSE);
+ }
+ }
+
+ if (arg_cache->transfer == GI_TRANSFER_EVERYTHING)
+ g_array_free (array_, TRUE);
+ }
+
+ return NULL;
+}
+
+static GArray*
+_wrap_c_array (PyGIInvokeState *state,
+ PyGIArgGArray *array_cache,
+ gpointer data)
+{
+ GArray *array_;
+ gsize len = 0;
+
+ if (array_cache->fixed_size >= 0) {
+ len = array_cache->fixed_size;
+ } else if (array_cache->is_zero_terminated) {
+ len = g_strv_length ((gchar **)data);
+ } else if (array_cache->len_arg_index >= 0) {
+ GIArgument *len_arg = state->args[array_cache->len_arg_index];
+ len = len_arg->v_long;
+ }
+
+ array_ = g_array_new (FALSE,
+ FALSE,
+ array_cache->item_size);
+
+ if (array_ == NULL)
+ return NULL;
+
+ g_free (array_->data);
+ array_->data = data;
+ array_->len = len;
+
+ return array_;
+}
+
+static void
+_pygi_marshal_cleanup_to_py_array (PyGIInvokeState *state,
+ PyGIArgCache *arg_cache,
+ PyObject *dummy,
+ gpointer data,
+ gboolean was_processed)
+{
+ if (arg_cache->transfer == GI_TRANSFER_EVERYTHING ||
+ arg_cache->transfer == GI_TRANSFER_CONTAINER) {
+ GArray *array_ = NULL;
+ GPtrArray *ptr_array_ = NULL;
+ PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
+ PyGIArgGArray *array_cache = (PyGIArgGArray *)arg_cache;
+
+ /* If this isn't a garray create one to help process variable sized
+ array elements */
+ if (array_cache->array_type == GI_ARRAY_TYPE_C) {
+ array_ = _wrap_c_array (state, array_cache, data);
+
+ if (array_ == NULL)
+ return;
+
+ } else if (array_cache->array_type == GI_ARRAY_TYPE_PTR_ARRAY) {
+ ptr_array_ = (GPtrArray *) data;
+ } else {
+ array_ = (GArray *) data;
+ }
+
+ if (sequence_cache->item_cache->to_py_cleanup != NULL) {
+ gsize i;
+ guint len = (array_ != NULL) ? array_->len : ptr_array_->len;
+
+ PyGIMarshalCleanupFunc cleanup_func = sequence_cache->item_cache->to_py_cleanup;
+ for (i = 0; i < len; i++) {
+ cleanup_func (state,
+ sequence_cache->item_cache,
+ NULL,
+ (array_ != NULL) ? g_array_index (array_, gpointer, i) : g_ptr_array_index (ptr_array_, i),
+ was_processed);
+ }
+ }
+
+ if (array_ != NULL)
+ g_array_free (array_, TRUE);
+ else
+ g_ptr_array_free (ptr_array_, TRUE);
+ }
+}
+
+static void
+_array_cache_free_func (PyGIArgGArray *cache)
+{
+ if (cache != NULL) {
+ pygi_arg_cache_free (((PyGISequenceCache *)cache)->item_cache);
+ g_slice_free (PyGIArgGArray, cache);
+ }
+}
+
+PyGIArgCache*
+pygi_arg_garray_len_arg_setup (PyGIArgCache *arg_cache,
+ GITypeInfo *type_info,
+ PyGICallableCache *callable_cache,
+ PyGIDirection direction,
+ gssize arg_index,
+ gssize *py_arg_index)
+{
+ PyGIArgGArray *seq_cache = (PyGIArgGArray *)arg_cache;
+
+ /* attempt len_arg_index setup for the first time */
+ if (seq_cache->len_arg_index < 0) {
+ seq_cache->len_arg_index = g_type_info_get_array_length (type_info);
+
+ /* offset by self arg for methods and vfuncs */
+ if (seq_cache->len_arg_index >= 0 && callable_cache != NULL &&
+ (callable_cache->function_type == PYGI_FUNCTION_TYPE_METHOD ||
+ callable_cache->function_type == PYGI_FUNCTION_TYPE_VFUNC)) {
+ seq_cache->len_arg_index += 1;
+ }
+ }
+
+ if (seq_cache->len_arg_index >= 0) {
+ PyGIArgCache *child_cache = NULL;
+
+ child_cache = _pygi_callable_cache_get_arg (callable_cache,
+ seq_cache->len_arg_index);
+ if (child_cache == NULL) {
+ child_cache = pygi_arg_cache_alloc ();
+ } else {
+ /* If the "length" arg cache already exists (the length comes before
+ * the array in the argument list), remove it from the to_py_args list
+ * because it does not belong in "to python" return tuple. The length
+ * will implicitly be a part of the returned Python list.
+ */
+ if (direction & PYGI_DIRECTION_TO_PYTHON) {
+ callable_cache->to_py_args =
+ g_slist_remove (callable_cache->to_py_args, child_cache);
+ }
+
+ /* This is a case where the arg cache already exists and has been
+ * setup by another array argument sharing the same length argument.
+ * See: gi_marshalling_tests_multi_array_key_value_in
+ */
+ if (child_cache->meta_type == PYGI_META_ARG_TYPE_CHILD)
+ return child_cache;
+ }
+
+ /* There is a length argument for this array, so increment the number
+ * of "to python" child arguments when applicable.
+ */
+ if (direction & PYGI_DIRECTION_TO_PYTHON)
+ callable_cache->n_to_py_child_args++;
+
+ child_cache->meta_type = PYGI_META_ARG_TYPE_CHILD;
+ child_cache->direction = direction;
+ child_cache->to_py_marshaller = NULL;
+ child_cache->from_py_marshaller = NULL;
+
+ /* ugly edge case code:
+ *
+ * When the length comes before the array parameter we need to update
+ * indexes of arguments after the index argument.
+ */
+ if (seq_cache->len_arg_index < arg_index && direction & PYGI_DIRECTION_FROM_PYTHON) {
+ gssize i;
+ (*py_arg_index) -= 1;
+ callable_cache->n_py_args -= 1;
+
+ for (i = seq_cache->len_arg_index + 1;
+ i < _pygi_callable_cache_args_len (callable_cache); i++) {
+ PyGIArgCache *update_cache = _pygi_callable_cache_get_arg (callable_cache, i);
+ if (update_cache == NULL)
+ break;
+
+ update_cache->py_arg_index -= 1;
+ }
+ }
+
+ _pygi_callable_cache_set_arg (callable_cache, seq_cache->len_arg_index, child_cache);
+ return child_cache;
+ }
+
+ return NULL;
+}
+
+static gboolean
+pygi_arg_garray_setup (PyGIArgGArray *sc,
+ GITypeInfo *type_info,
+ GIArgInfo *arg_info, /* may be NULL for return arguments */
+ GITransfer transfer,
+ PyGIDirection direction)
+{
+ GITypeInfo *item_type_info;
+ PyGIArgCache *arg_cache = (PyGIArgCache *)sc;
+
+ if (!pygi_arg_sequence_setup ((PyGISequenceCache *)sc,
+ type_info,
+ arg_info,
+ transfer,
+ direction)) {
+ return FALSE;
+ }
+
+ ((PyGIArgCache *)sc)->destroy_notify = (GDestroyNotify)_array_cache_free_func;
+ sc->array_type = g_type_info_get_array_type (type_info);
+ sc->is_zero_terminated = g_type_info_is_zero_terminated (type_info);
+ sc->fixed_size = g_type_info_get_array_fixed_size (type_info);
+ sc->len_arg_index = -1; /* setup by pygi_arg_garray_len_arg_setup */
+
+ item_type_info = g_type_info_get_param_type (type_info, 0);
+ sc->item_size = _pygi_g_type_info_size (item_type_info);
+ g_base_info_unref ( (GIBaseInfo *)item_type_info);
+
+ if (direction & PYGI_DIRECTION_FROM_PYTHON) {
+ arg_cache->from_py_marshaller = _pygi_marshal_from_py_array;
+ arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_array;
+ }
+
+ if (direction & PYGI_DIRECTION_TO_PYTHON) {
+ arg_cache->to_py_marshaller = _pygi_marshal_to_py_array;
+ arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_array;
+ }
+
+ return TRUE;
+}
+
+PyGIArgCache *
+pygi_arg_garray_new_from_info (GITypeInfo *type_info,
+ GIArgInfo *arg_info,
+ GITransfer transfer,
+ PyGIDirection direction)
+{
+ PyGIArgGArray *array_cache = g_slice_new0 (PyGIArgGArray);
+ if (array_cache == NULL)
+ return NULL;
+
+ if (!pygi_arg_garray_setup (array_cache,
+ type_info,
+ arg_info,
+ transfer,
+ direction)) {
+ pygi_arg_cache_free ( (PyGIArgCache *)array_cache);
+ return NULL;
+ }
+
+ return (PyGIArgCache *)array_cache;
+}
diff --git a/gi/pygi-array.h b/gi/pygi-array.h
new file mode 100644
index 0000000..4792ca1
--- /dev/null
+++ b/gi/pygi-array.h
@@ -0,0 +1,42 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * Copyright (C) 2014 Simon Feltman <sfeltman@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, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __PYGI_ARRAY_H__
+#define __PYGI_ARRAY_H__
+
+#include <girepository.h>
+#include "pygi-cache.h"
+
+G_BEGIN_DECLS
+
+PyGIArgCache *pygi_arg_garray_new_from_info (GITypeInfo *type_info,
+ GIArgInfo *arg_info, /* may be null */
+ GITransfer transfer,
+ PyGIDirection direction);
+
+PyGIArgCache *pygi_arg_garray_len_arg_setup (PyGIArgCache *arg_cache,
+ GITypeInfo *type_info,
+ PyGICallableCache *callable_cache,
+ PyGIDirection direction,
+ gssize arg_index,
+ gssize *py_arg_index);
+
+G_END_DECLS
+
+#endif /*__PYGI_ARRAY_H__*/
diff --git a/gi/pygi-basictype.c b/gi/pygi-basictype.c
new file mode 100644
index 0000000..6fbe929
--- /dev/null
+++ b/gi/pygi-basictype.c
@@ -0,0 +1,824 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>
+ * Copyright (C) 2014 Simon Feltman <sfeltman@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, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <Python.h>
+#include <pyglib-python-compat.h>
+
+#include "pygi-basictype.h"
+#include "pygi-argument.h"
+#include "pygi-private.h"
+
+
+/*
+ * From Python Marshaling
+ */
+
+static gboolean
+_pygi_marshal_from_py_void (PyGIInvokeState *state,
+ PyGICallableCache *callable_cache,
+ PyGIArgCache *arg_cache,
+ PyObject *py_arg,
+ GIArgument *arg,
+ gpointer *cleanup_data)
+{
+ g_warn_if_fail (arg_cache->transfer == GI_TRANSFER_NOTHING);
+
+ if (py_arg == Py_None) {
+ arg->v_pointer = NULL;
+ } else if (PYGLIB_CPointer_Check(py_arg)) {
+ arg->v_pointer = PYGLIB_CPointer_GetPointer (py_arg, NULL);
+ } else if (PYGLIB_PyLong_Check(py_arg) || PyLong_Check(py_arg)) {
+ arg->v_pointer = PyLong_AsVoidPtr (py_arg);
+ } else {
+ PyErr_SetString(PyExc_ValueError,
+ "Pointer arguments are restricted to integers, capsules, and None. "
+ "See: https://bugzilla.gnome.org/show_bug.cgi?id=683599");
+ return FALSE;
+ }
+
+ *cleanup_data = arg->v_pointer;
+ return TRUE;
+}
+
+static gboolean
+check_valid_double (double x, double min, double max)
+{
+ char buf[100];
+
+ if ((x < min || x > max) && x != INFINITY && x != -INFINITY && x != NAN) {
+ if (PyErr_Occurred())
+ PyErr_Clear ();
+
+ /* we need this as PyErr_Format() does not support float types */
+ snprintf (buf, sizeof (buf), "%g not in range %g to %g", x, min, max);
+ PyErr_SetString (PyExc_OverflowError, buf);
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static gboolean
+_pygi_py_arg_to_double (PyObject *py_arg, double *double_)
+{
+ PyObject *py_float;
+
+ if (!PyNumber_Check (py_arg)) {
+ PyErr_Format (PyExc_TypeError, "Must be number, not %s",
+ py_arg->ob_type->tp_name);
+ return FALSE;
+ }
+
+ py_float = PyNumber_Float (py_arg);
+ if (!py_float)
+ return FALSE;
+
+ *double_ = PyFloat_AsDouble (py_float);
+ Py_DECREF (py_float);
+
+
+ return TRUE;
+}
+
+static gboolean
+_pygi_marshal_from_py_float (PyObject *py_arg,
+ GIArgument *arg)
+{
+ double double_;
+
+ if (!_pygi_py_arg_to_double (py_arg, &double_))
+ return FALSE;
+
+ if (PyErr_Occurred () || !check_valid_double (double_, -G_MAXFLOAT, G_MAXFLOAT))
+ return FALSE;
+
+ arg->v_float = double_;
+ return TRUE;
+}
+
+static gboolean
+_pygi_marshal_from_py_double (PyObject *py_arg,
+ GIArgument *arg)
+{
+ double double_;
+
+ if (!_pygi_py_arg_to_double (py_arg, &double_))
+ return FALSE;
+
+ if (PyErr_Occurred () || !check_valid_double (double_, -G_MAXDOUBLE, G_MAXDOUBLE))
+ return FALSE;
+
+ arg->v_double = double_;
+ return TRUE;
+}
+
+static gboolean
+_pygi_marshal_from_py_unichar (PyObject *py_arg,
+ GIArgument *arg)
+{
+ Py_ssize_t size;
+ gchar *string_;
+
+ if (py_arg == Py_None) {
+ arg->v_uint32 = 0;
+ return FALSE;
+ }
+
+ if (PyUnicode_Check (py_arg)) {
+ PyObject *py_bytes;
+
+ size = PyUnicode_GET_SIZE (py_arg);
+ py_bytes = PyUnicode_AsUTF8String (py_arg);
+ if (!py_bytes)
+ return FALSE;
+
+ string_ = g_strdup(PYGLIB_PyBytes_AsString (py_bytes));
+ Py_DECREF (py_bytes);
+
+#if PY_VERSION_HEX < 0x03000000
+ } else if (PyString_Check (py_arg)) {
+ PyObject *pyuni = PyUnicode_FromEncodedObject (py_arg, "UTF-8", "strict");
+ if (!pyuni)
+ return FALSE;
+
+ size = PyUnicode_GET_SIZE (pyuni);
+ string_ = g_strdup (PyString_AsString(py_arg));
+ Py_DECREF (pyuni);
+#endif
+ } else {
+ PyErr_Format (PyExc_TypeError, "Must be string, not %s",
+ py_arg->ob_type->tp_name);
+ return FALSE;
+ }
+
+ if (size != 1) {
+ PyErr_Format (PyExc_TypeError, "Must be a one character string, not %lld characters",
+ (long long) size);
+ g_free (string_);
+ return FALSE;
+ }
+
+ arg->v_uint32 = g_utf8_get_char (string_);
+ g_free (string_);
+
+ return TRUE;
+}
+
+static gboolean
+_pygi_marshal_from_py_gtype (PyObject *py_arg,
+ GIArgument *arg)
+{
+ long type_ = pyg_type_from_object (py_arg);
+
+ if (type_ == 0) {
+ PyErr_Format (PyExc_TypeError, "Must be gobject.GType, not %s",
+ py_arg->ob_type->tp_name);
+ return FALSE;
+ }
+
+ arg->v_long = type_;
+ return TRUE;
+}
+
+static gboolean
+_pygi_marshal_from_py_utf8 (PyObject *py_arg,
+ GIArgument *arg,
+ gpointer *cleanup_data)
+{
+ gchar *string_;
+
+ if (py_arg == Py_None) {
+ arg->v_pointer = NULL;
+ return TRUE;
+ }
+
+ if (PyUnicode_Check (py_arg)) {
+ PyObject *pystr_obj = PyUnicode_AsUTF8String (py_arg);
+ if (!pystr_obj)
+ return FALSE;
+
+ string_ = g_strdup (PYGLIB_PyBytes_AsString (pystr_obj));
+ Py_DECREF (pystr_obj);
+ }
+#if PY_VERSION_HEX < 0x03000000
+ else if (PyString_Check (py_arg)) {
+ string_ = g_strdup (PyString_AsString (py_arg));
+ }
+#endif
+ else {
+ PyErr_Format (PyExc_TypeError, "Must be string, not %s",
+ py_arg->ob_type->tp_name);
+ return FALSE;
+ }
+
+ arg->v_string = string_;
+ *cleanup_data = arg->v_string;
+ return TRUE;
+}
+
+static gboolean
+_pygi_marshal_from_py_filename (PyObject *py_arg,
+ GIArgument *arg,
+ gpointer *cleanup_data)
+{
+ gchar *string_;
+ GError *error = NULL;
+
+ if (PyUnicode_Check (py_arg)) {
+ PyObject *pystr_obj = PyUnicode_AsUTF8String (py_arg);
+ if (!pystr_obj)
+ return FALSE;
+
+ string_ = g_strdup (PYGLIB_PyBytes_AsString (pystr_obj));
+ Py_DECREF (pystr_obj);
+ }
+#if PY_VERSION_HEX < 0x03000000
+ else if (PyString_Check (py_arg)) {
+ string_ = g_strdup (PyString_AsString (py_arg));
+ }
+#endif
+ else {
+ PyErr_Format (PyExc_TypeError, "Must be string, not %s",
+ py_arg->ob_type->tp_name);
+ return FALSE;
+ }
+
+ arg->v_string = g_filename_from_utf8 (string_, -1, NULL, NULL, &error);
+ g_free (string_);
+
+ if (arg->v_string == NULL) {
+ PyErr_SetString (PyExc_Exception, error->message);
+ g_error_free (error);
+ /* TODO: Convert the error to an exception. */
+ return FALSE;
+ }
+
+ *cleanup_data = arg->v_string;
+ return TRUE;
+}
+
+static gboolean
+_pygi_marshal_from_py_long (PyObject *object, /* in */
+ GIArgument *arg, /* out */
+ GITypeTag type_tag,
+ GITransfer transfer)
+{
+ PyObject *number;
+
+ if (!PyNumber_Check (object)) {
+ PyErr_Format (PyExc_TypeError, "Must be number, not %s",
+ object->ob_type->tp_name);
+ return FALSE;
+ }
+
+#if PY_MAJOR_VERSION < 3
+ {
+ PyObject *tmp = PyNumber_Int (object);
+ if (tmp) {
+ number = PyNumber_Long (tmp);
+ Py_DECREF (tmp);
+ } else {
+ number = PyNumber_Long (object);
+ }
+ }
+#else
+ number = PyNumber_Long (object);
+#endif
+
+ if (number == NULL) {
+ PyErr_SetString (PyExc_TypeError, "expected int argument");
+ return FALSE;
+ }
+
+ switch (type_tag) {
+ case GI_TYPE_TAG_INT8:
+ {
+ long long_value = PyLong_AsLong (number);
+ if (PyErr_Occurred()) {
+ break;
+ } else if (long_value < G_MININT8 || long_value > G_MAXINT8) {
+ PyErr_Format (PyExc_OverflowError, "%ld not in range %ld to %ld",
+ long_value, (long)G_MININT8, (long)G_MAXINT8);
+ } else {
+ arg->v_int8 = long_value;
+ }
+ break;
+ }
+
+ case GI_TYPE_TAG_UINT8:
+ {
+ long long_value = PyLong_AsLong (number);
+ if (PyErr_Occurred()) {
+ break;
+ } else if (long_value < 0 || long_value > G_MAXUINT8) {
+ PyErr_Format (PyExc_OverflowError, "%ld not in range %ld to %ld",
+ long_value, (long)0, (long)G_MAXUINT8);
+ } else {
+ arg->v_uint8 = long_value;
+ }
+ break;
+ }
+
+ case GI_TYPE_TAG_INT16:
+ {
+ long long_value = PyLong_AsLong (number);
+ if (PyErr_Occurred()) {
+ break;
+ } else if (long_value < G_MININT16 || long_value > G_MAXINT16) {
+ PyErr_Format (PyExc_OverflowError, "%ld not in range %ld to %ld",
+ long_value, (long)G_MININT16, (long)G_MAXINT16);
+ } else {
+ arg->v_int16 = long_value;
+ }
+ break;
+ }
+
+ case GI_TYPE_TAG_UINT16:
+ {
+ long long_value = PyLong_AsLong (number);
+ if (PyErr_Occurred()) {
+ break;
+ } else if (long_value < 0 || long_value > G_MAXUINT16) {
+ PyErr_Format (PyExc_OverflowError, "%ld not in range %ld to %ld",
+ long_value, (long)0, (long)G_MAXUINT16);
+ } else {
+ arg->v_uint16 = long_value;
+ }
+ break;
+ }
+
+ case GI_TYPE_TAG_INT32:
+ {
+ long long_value = PyLong_AsLong (number);
+ if (PyErr_Occurred()) {
+ break;
+ } else if (long_value < G_MININT32 || long_value > G_MAXINT32) {
+ PyErr_Format (PyExc_OverflowError, "%ld not in range %ld to %ld",
+ long_value, (long)G_MININT32, (long)G_MAXINT32);
+ } else {
+ arg->v_int32 = long_value;
+ }
+ break;
+ }
+
+ case GI_TYPE_TAG_UINT32:
+ {
+ PY_LONG_LONG long_value = PyLong_AsLongLong (number);
+ if (PyErr_Occurred()) {
+ break;
+ } else if (long_value < 0 || long_value > G_MAXUINT32) {
+ PyErr_Format (PyExc_OverflowError, "%lld not in range %ld to %lu",
+ long_value, (long)0, (unsigned long)G_MAXUINT32);
+ } else {
+ arg->v_uint32 = long_value;
+ }
+ break;
+ }
+
+ case GI_TYPE_TAG_INT64:
+ {
+ /* Rely on Python overflow error and convert to ValueError for 64 bit values */
+ arg->v_int64 = PyLong_AsLongLong (number);
+ break;
+ }
+
+ case GI_TYPE_TAG_UINT64:
+ {
+ /* Rely on Python overflow error and convert to ValueError for 64 bit values */
+ arg->v_uint64 = PyLong_AsUnsignedLongLong (number);
+ break;
+ }
+
+ default:
+ g_assert_not_reached ();
+ }
+
+ Py_DECREF (number);
+
+ if (PyErr_Occurred())
+ return FALSE;
+ return TRUE;
+}
+
+gboolean
+_pygi_marshal_from_py_basic_type (PyObject *object, /* in */
+ GIArgument *arg, /* out */
+ GITypeTag type_tag,
+ GITransfer transfer,
+ gpointer *cleanup_data /* out */)
+{
+ switch (type_tag) {
+ case GI_TYPE_TAG_VOID:
+ g_warn_if_fail (transfer == GI_TRANSFER_NOTHING);
+ 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);
+ *cleanup_data = arg->v_pointer;
+ }
+ break;
+ case GI_TYPE_TAG_INT8:
+ case GI_TYPE_TAG_UINT8:
+ if (PYGLIB_PyBytes_Check (object)) {
+ if (PYGLIB_PyBytes_Size (object) != 1) {
+ PyErr_Format (PyExc_TypeError, "Must be a single character");
+ return FALSE;
+ }
+ if (type_tag == GI_TYPE_TAG_INT8) {
+ arg->v_int8 = (gint8)(PYGLIB_PyBytes_AsString (object)[0]);
+ } else {
+ arg->v_uint8 = (guint8)(PYGLIB_PyBytes_AsString (object)[0]);
+ }
+ } else {
+ return _pygi_marshal_from_py_long (object, arg, type_tag, transfer);
+ }
+ break;
+ 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:
+ return _pygi_marshal_from_py_long (object, arg, type_tag, transfer);
+
+ case GI_TYPE_TAG_BOOLEAN:
+ arg->v_boolean = PyObject_IsTrue (object);
+ break;
+
+ case GI_TYPE_TAG_FLOAT:
+ return _pygi_marshal_from_py_float (object, arg);
+
+ case GI_TYPE_TAG_DOUBLE:
+ return _pygi_marshal_from_py_double (object, arg);
+
+ case GI_TYPE_TAG_GTYPE:
+ return _pygi_marshal_from_py_gtype (object, arg);
+
+ case GI_TYPE_TAG_UNICHAR:
+ return _pygi_marshal_from_py_unichar (object, arg);
+
+ case GI_TYPE_TAG_UTF8:
+ return _pygi_marshal_from_py_utf8 (object, arg, cleanup_data);
+
+ case GI_TYPE_TAG_FILENAME:
+ return _pygi_marshal_from_py_filename (object, arg, cleanup_data);
+
+ default:
+ return FALSE;
+ }
+
+ if (PyErr_Occurred())
+ return FALSE;
+
+ return TRUE;
+}
+
+static gboolean
+_pygi_marshal_from_py_basic_type_cache_adapter (PyGIInvokeState *state,
+ PyGICallableCache *callable_cache,
+ PyGIArgCache *arg_cache,
+ PyObject *py_arg,
+ GIArgument *arg,
+ gpointer *cleanup_data)
+{
+ return _pygi_marshal_from_py_basic_type (py_arg,
+ arg,
+ arg_cache->type_tag,
+ arg_cache->transfer,
+ cleanup_data);
+}
+
+static void
+_pygi_marshal_cleanup_from_py_utf8 (PyGIInvokeState *state,
+ PyGIArgCache *arg_cache,
+ PyObject *py_arg,
+ gpointer data,
+ gboolean was_processed)
+{
+ /* We strdup strings so free unless ownership is transferred to C. */
+ if (was_processed && arg_cache->transfer == GI_TRANSFER_NOTHING)
+ g_free (data);
+}
+
+static void
+_arg_cache_from_py_void_setup (PyGIArgCache *arg_cache)
+{
+ arg_cache->from_py_marshaller = _pygi_marshal_from_py_void;
+}
+
+
+static void
+_arg_cache_from_py_basic_type_setup (PyGIArgCache *arg_cache)
+{
+ arg_cache->from_py_marshaller = _pygi_marshal_from_py_basic_type_cache_adapter;
+}
+
+static void
+_arg_cache_from_py_utf8_setup (PyGIArgCache *arg_cache,
+ GITransfer transfer)
+{
+ arg_cache->from_py_marshaller = _pygi_marshal_from_py_basic_type_cache_adapter;
+ arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_utf8;
+}
+
+
+/*
+ * To Python Marshaling
+ */
+
+
+static PyObject *
+_pygi_marshal_to_py_void (PyGIInvokeState *state,
+ PyGICallableCache *callable_cache,
+ PyGIArgCache *arg_cache,
+ GIArgument *arg)
+{
+ if (arg_cache->is_pointer) {
+ return PyLong_FromVoidPtr (arg->v_pointer);
+ }
+ Py_RETURN_NONE;
+}
+
+static PyObject *
+_pygi_marshal_to_py_unichar (GIArgument *arg)
+{
+ PyObject *py_obj = NULL;
+
+ /* Preserve the bidirectional mapping between 0 and "" */
+ if (arg->v_uint32 == 0) {
+ py_obj = PYGLIB_PyUnicode_FromString ("");
+ } else if (g_unichar_validate (arg->v_uint32)) {
+ gchar utf8[6];
+ gint bytes;
+
+ bytes = g_unichar_to_utf8 (arg->v_uint32, utf8);
+ py_obj = PYGLIB_PyUnicode_FromStringAndSize ((char*)utf8, bytes);
+ } else {
+ /* TODO: Convert the error to an exception. */
+ PyErr_Format (PyExc_TypeError,
+ "Invalid unicode codepoint %" G_GUINT32_FORMAT,
+ arg->v_uint32);
+ }
+
+ return py_obj;
+}
+
+static PyObject *
+_pygi_marshal_to_py_utf8 (GIArgument *arg)
+{
+ PyObject *py_obj = NULL;
+ if (arg->v_string == NULL) {
+ Py_RETURN_NONE;
+ }
+
+ py_obj = PYGLIB_PyUnicode_FromString (arg->v_string);
+ return py_obj;
+}
+
+static PyObject *
+_pygi_marshal_to_py_filename (GIArgument *arg)
+{
+ gchar *string = NULL;
+ PyObject *py_obj = NULL;
+ GError *error = NULL;
+
+ if (arg->v_string == NULL) {
+ Py_RETURN_NONE;
+ }
+
+ string = g_filename_to_utf8 (arg->v_string, -1, NULL, NULL, &error);
+ if (string == NULL) {
+ PyErr_SetString (PyExc_Exception, error->message);
+ /* TODO: Convert the error to an exception. */
+ return NULL;
+ }
+
+ py_obj = PYGLIB_PyUnicode_FromString (string);
+ g_free (string);
+
+ return py_obj;
+}
+
+
+/**
+ * _pygi_marshal_to_py_basic_type:
+ * @arg: The argument to convert to an object.
+ * @type_tag: Type tag for @arg
+ * @transfer: Transfer annotation
+ *
+ * Convert the given argument to a Python object. This function
+ * is restricted to simple types that only require the GITypeTag
+ * and GITransfer. For a more complete conversion routine, use:
+ * _pygi_argument_to_object.
+ *
+ * Returns: A PyObject representing @arg or NULL if it cannot convert
+ * the argument.
+ */
+PyObject *
+_pygi_marshal_to_py_basic_type (GIArgument *arg,
+ GITypeTag type_tag,
+ GITransfer transfer)
+{
+ switch (type_tag) {
+ case GI_TYPE_TAG_BOOLEAN:
+ return PyBool_FromLong (arg->v_boolean);
+
+ case GI_TYPE_TAG_INT8:
+ return PYGLIB_PyLong_FromLong (arg->v_int8);
+
+ case GI_TYPE_TAG_UINT8:
+ return PYGLIB_PyLong_FromLong (arg->v_uint8);
+
+ case GI_TYPE_TAG_INT16:
+ return PYGLIB_PyLong_FromLong (arg->v_int16);
+
+ case GI_TYPE_TAG_UINT16:
+ return PYGLIB_PyLong_FromLong (arg->v_uint16);
+
+ case GI_TYPE_TAG_INT32:
+ return PYGLIB_PyLong_FromLong (arg->v_int32);
+
+ case GI_TYPE_TAG_UINT32:
+ return PyLong_FromLongLong (arg->v_uint32);
+
+ case GI_TYPE_TAG_INT64:
+ return PyLong_FromLongLong (arg->v_int64);
+
+ case GI_TYPE_TAG_UINT64:
+ return PyLong_FromUnsignedLongLong (arg->v_uint64);
+
+ case GI_TYPE_TAG_FLOAT:
+ return PyFloat_FromDouble (arg->v_float);
+
+ case GI_TYPE_TAG_DOUBLE:
+ return PyFloat_FromDouble (arg->v_double);
+
+ case GI_TYPE_TAG_GTYPE:
+ return pyg_type_wrapper_new ( (GType) arg->v_long);
+
+ case GI_TYPE_TAG_UNICHAR:
+ return _pygi_marshal_to_py_unichar (arg);
+
+ case GI_TYPE_TAG_UTF8:
+ return _pygi_marshal_to_py_utf8 (arg);
+
+ case GI_TYPE_TAG_FILENAME:
+ return _pygi_marshal_to_py_filename (arg);
+
+ default:
+ return NULL;
+ }
+ return NULL;
+}
+
+static PyObject *
+_pygi_marshal_to_py_basic_type_cache_adapter (PyGIInvokeState *state,
+ PyGICallableCache *callable_cache,
+ PyGIArgCache *arg_cache,
+ GIArgument *arg)
+{
+ return _pygi_marshal_to_py_basic_type (arg,
+ arg_cache->type_tag,
+ arg_cache->transfer);
+}
+
+static void
+_pygi_marshal_cleanup_to_py_utf8 (PyGIInvokeState *state,
+ PyGIArgCache *arg_cache,
+ PyObject *dummy,
+ gpointer data,
+ gboolean was_processed)
+{
+ /* Python copies the string so we need to free it
+ if the interface is transfering ownership,
+ whether or not it has been processed yet */
+ if (arg_cache->transfer == GI_TRANSFER_EVERYTHING)
+ g_free (data);
+}
+
+
+
+static void
+_arg_cache_to_py_basic_type_setup (PyGIArgCache *arg_cache)
+{
+ arg_cache->to_py_marshaller = _pygi_marshal_to_py_basic_type_cache_adapter;
+}
+
+static void
+_arg_cache_to_py_void_setup (PyGIArgCache *arg_cache)
+{
+ arg_cache->to_py_marshaller = _pygi_marshal_to_py_void;
+}
+
+static void
+_arg_cache_to_py_utf8_setup (PyGIArgCache *arg_cache,
+ GITransfer transfer)
+{
+ arg_cache->to_py_marshaller = _pygi_marshal_to_py_basic_type_cache_adapter;
+ arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_utf8;
+}
+
+/*
+ * Basic Type Interface
+ */
+
+static gboolean
+pygi_arg_basic_type_setup_from_info (PyGIArgCache *arg_cache,
+ GITypeInfo *type_info,
+ GIArgInfo *arg_info,
+ GITransfer transfer,
+ PyGIDirection direction)
+{
+ GITypeTag type_tag = g_type_info_get_tag (type_info);
+
+ if (!pygi_arg_base_setup (arg_cache, type_info, arg_info, transfer, direction))
+ return FALSE;
+
+ switch (type_tag) {
+ case GI_TYPE_TAG_VOID:
+ if (direction & PYGI_DIRECTION_FROM_PYTHON)
+ _arg_cache_from_py_void_setup (arg_cache);
+
+ if (direction & PYGI_DIRECTION_TO_PYTHON)
+ _arg_cache_to_py_void_setup (arg_cache);
+
+ break;
+ case GI_TYPE_TAG_BOOLEAN:
+ case GI_TYPE_TAG_INT8:
+ case GI_TYPE_TAG_UINT8:
+ case GI_TYPE_TAG_INT16:
+ case GI_TYPE_TAG_UINT16:
+ case GI_TYPE_TAG_INT32:
+ case GI_TYPE_TAG_UINT32:
+ case GI_TYPE_TAG_INT64:
+ case GI_TYPE_TAG_UINT64:
+ case GI_TYPE_TAG_FLOAT:
+ case GI_TYPE_TAG_DOUBLE:
+ case GI_TYPE_TAG_UNICHAR:
+ case GI_TYPE_TAG_GTYPE:
+ if (direction & PYGI_DIRECTION_FROM_PYTHON)
+ _arg_cache_from_py_basic_type_setup (arg_cache);
+
+ if (direction & PYGI_DIRECTION_TO_PYTHON)
+ _arg_cache_to_py_basic_type_setup (arg_cache);
+
+ break;
+ case GI_TYPE_TAG_UTF8:
+ case GI_TYPE_TAG_FILENAME:
+ if (direction & PYGI_DIRECTION_FROM_PYTHON)
+ _arg_cache_from_py_utf8_setup (arg_cache, transfer);
+
+ if (direction & PYGI_DIRECTION_TO_PYTHON)
+ _arg_cache_to_py_utf8_setup (arg_cache, transfer);
+
+ break;
+ default:
+ g_assert_not_reached ();
+ }
+
+ return TRUE;
+}
+
+PyGIArgCache *
+pygi_arg_basic_type_new_from_info (GITypeInfo *type_info,
+ GIArgInfo *arg_info,
+ GITransfer transfer,
+ PyGIDirection direction)
+{
+ gboolean res = FALSE;
+ PyGIArgCache *arg_cache = pygi_arg_cache_alloc ();
+ if (arg_cache == NULL)
+ return NULL;
+
+ res = pygi_arg_basic_type_setup_from_info (arg_cache,
+ type_info,
+ arg_info,
+ transfer,
+ direction);
+ if (res) {
+ return arg_cache;
+ } else {
+ pygi_arg_cache_free (arg_cache);
+ return NULL;
+ }
+}
diff --git a/gi/pygi-basictype.h b/gi/pygi-basictype.h
new file mode 100644
index 0000000..7207e54
--- /dev/null
+++ b/gi/pygi-basictype.h
@@ -0,0 +1,42 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * Copyright (C) 2014 Simon Feltman <sfeltman@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, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __PYGI_ARG_BASICTYPE_H__
+#define __PYGI_ARG_BASICTYPE_H__
+
+#include <girepository.h>
+#include "pygi-cache.h"
+
+G_BEGIN_DECLS
+
+gboolean _pygi_marshal_from_py_basic_type (PyObject *object, /* in */
+ GIArgument *arg, /* out */
+ GITypeTag type_tag,
+ GITransfer transfer,
+ gpointer *cleanup_data);
+PyObject *_pygi_marshal_to_py_basic_type (GIArgument *arg, /* in */
+ GITypeTag type_tag,
+ GITransfer transfer);
+PyGIArgCache *pygi_arg_basic_type_new_from_info (GITypeInfo *type_info,
+ GIArgInfo *arg_info, /* may be null */
+ GITransfer transfer,
+ PyGIDirection direction);
+G_END_DECLS
+
+#endif /*__PYGI_ARG_BASICTYPE_H__*/
diff --git a/gi/pygi-boxed.c b/gi/pygi-boxed.c
index ea798ff..a9b39c1 100644
--- a/gi/pygi-boxed.c
+++ b/gi/pygi-boxed.c
@@ -22,8 +22,8 @@
*/
#include "pygi-private.h"
+#include "pygobject-private.h"
-#include <pygobject.h>
#include <girepository.h>
#include <pyglib-python-compat.h>
diff --git a/gi/pygi-cache.c b/gi/pygi-cache.c
index 14d69b1..8055c15 100644
--- a/gi/pygi-cache.c
+++ b/gi/pygi-cache.c
@@ -2,6 +2,7 @@
* vim: tabstop=4 shiftwidth=4 expandtab
*
* Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>
+ * Copyright (C) 2013 Simon Feltman <sfeltman@gnome.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -19,90 +20,106 @@
* USA
*/
+#include <girepository.h>
+
#include "pygi-info.h"
#include "pygi-cache.h"
-#include "pygi-marshal-to-py.h"
-#include "pygi-marshal-from-py.h"
#include "pygi-marshal-cleanup.h"
#include "pygi-type.h"
-#include <girepository.h>
+#include "pygi-hashtable.h"
+#include "pygi-basictype.h"
+#include "pygi-list.h"
+#include "pygi-array.h"
+#include "pygi-closure.h"
+#include "pygi-error.h"
+#include "pygi-object.h"
+#include "pygi-struct-marshal.h"
+#include "pygi-enum-marshal.h"
-PyGIArgCache * _arg_cache_new (GITypeInfo *type_info,
- PyGICallableCache *callable_cache,
- GIArgInfo *arg_info,
- GITransfer transfer,
- PyGIDirection direction,
- gssize c_arg_index,
- gssize py_arg_index);
-
-PyGIArgCache * _arg_cache_new_for_interface (GIInterfaceInfo *iface_info,
- PyGICallableCache *callable_cache,
- GIArgInfo *arg_info,
- GITransfer transfer,
- PyGIDirection direction,
- gssize c_arg_index,
- gssize py_arg_index);
-
-/* cleanup */
-static void
-_pygi_arg_cache_free (PyGIArgCache *cache)
-{
- if (cache == NULL)
- return;
- if (cache->type_info != NULL)
- g_base_info_unref ( (GIBaseInfo *)cache->type_info);
- if (cache->destroy_notify)
- cache->destroy_notify (cache);
- else
- g_slice_free (PyGIArgCache, cache);
-}
-
-static void
-_interface_cache_free_func (PyGIInterfaceCache *cache)
+/* _arg_info_default_value
+ * info:
+ * arg: (out): GIArgument to fill in with default value.
+ *
+ * This is currently a place holder API which only supports "allow-none" pointer args.
+ * Once defaults are part of the GI API, we can replace this with: g_arg_info_default_value
+ * https://bugzilla.gnome.org/show_bug.cgi?id=558620
+ *
+ * Returns: TRUE if the given argument supports a default value and was filled in.
+ */
+static gboolean
+_arg_info_default_value (GIArgInfo *info, GIArgument *arg)
{
- if (cache != NULL) {
- Py_XDECREF (cache->py_type);
- if (cache->type_name != NULL)
- g_free (cache->type_name);
- if (cache->interface_info != NULL)
- g_base_info_unref ( (GIBaseInfo *)cache->interface_info);
- g_slice_free (PyGIInterfaceCache, cache);
+ if (g_arg_info_may_be_null (info)) {
+ arg->v_pointer = NULL;
+ return TRUE;
}
+ return FALSE;
}
-static void
-_hash_cache_free_func (PyGIHashCache *cache)
-{
- if (cache != NULL) {
- _pygi_arg_cache_free (cache->key_cache);
- _pygi_arg_cache_free (cache->value_cache);
- g_slice_free (PyGIHashCache, cache);
+/* pygi_arg_base_setup:
+ * arg_cache: argument cache to initialize
+ * type_info: source for type related attributes to cache
+ * arg_info: (allow-none): source for argument related attributes to cache
+ * transfer: transfer mode to store in the argument cache
+ * direction: marshaling direction to store in the cache
+ *
+ * Initializer for PyGIArgCache
+ *
+ * Returns: TRUE on success and FALSE on failure
+ */
+gboolean
+pygi_arg_base_setup (PyGIArgCache *arg_cache,
+ GITypeInfo *type_info,
+ GIArgInfo *arg_info, /* may be NULL for return arguments */
+ GITransfer transfer,
+ PyGIDirection direction)
+{
+ arg_cache->direction = direction;
+ arg_cache->transfer = transfer;
+ arg_cache->py_arg_index = -1;
+ arg_cache->c_arg_index = -1;
+
+ if (type_info != NULL) {
+ arg_cache->is_pointer = g_type_info_is_pointer (type_info);
+ arg_cache->type_tag = g_type_info_get_tag (type_info);
+ g_base_info_ref ( (GIBaseInfo *) type_info);
+ arg_cache->type_info = type_info;
}
-}
-static void
-_sequence_cache_free_func (PyGISequenceCache *cache)
-{
- if (cache != NULL) {
- _pygi_arg_cache_free (cache->item_cache);
- g_slice_free (PyGISequenceCache, cache);
+ if (arg_info != NULL) {
+ if (!arg_cache->has_default) {
+ /* It is possible has_default was set somewhere else */
+ arg_cache->has_default = _arg_info_default_value (arg_info,
+ &arg_cache->default_value);
+ }
+ arg_cache->arg_name = g_base_info_get_name ((GIBaseInfo *) arg_info);
+ arg_cache->allow_none = g_arg_info_may_be_null (arg_info);
+
+ if (arg_cache->type_tag == GI_TYPE_TAG_INTERFACE || arg_cache->type_tag == GI_TYPE_TAG_ARRAY)
+ arg_cache->is_caller_allocates = g_arg_info_is_caller_allocates (arg_info);
+ else
+ arg_cache->is_caller_allocates = FALSE;
}
+ return TRUE;
}
-static void
-_callback_cache_free_func (PyGICallbackCache *cache)
+void
+pygi_arg_cache_free (PyGIArgCache *cache)
{
- if (cache != NULL) {
- if (cache->interface_info != NULL)
- g_base_info_unref ( (GIBaseInfo *)cache->interface_info);
+ if (cache == NULL)
+ return;
- g_slice_free (PyGICallbackCache, cache);
- }
+ if (cache->type_info != NULL)
+ g_base_info_unref ( (GIBaseInfo *)cache->type_info);
+ if (cache->destroy_notify)
+ cache->destroy_notify (cache);
+ else
+ g_slice_free (PyGIArgCache, cache);
}
void
-_pygi_callable_cache_free (PyGICallableCache *cache)
+pygi_callable_cache_free (PyGICallableCache *cache)
{
if (cache == NULL)
return;
@@ -113,639 +130,233 @@ _pygi_callable_cache_free (PyGICallableCache *cache)
g_ptr_array_unref (cache->args_cache);
if (cache->return_cache != NULL)
- _pygi_arg_cache_free (cache->return_cache);
+ pygi_arg_cache_free (cache->return_cache);
g_slice_free (PyGICallableCache, cache);
}
-/* cache generation */
-static PyGIInterfaceCache *
-_interface_cache_new (GIInterfaceInfo *iface_info)
-{
- PyGIInterfaceCache *ic;
-
- ic = g_slice_new0 (PyGIInterfaceCache);
- ( (PyGIArgCache *)ic)->destroy_notify = (GDestroyNotify)_interface_cache_free_func;
- ic->g_type = g_registered_type_info_get_g_type ( (GIRegisteredTypeInfo *)iface_info);
- ic->py_type = _pygi_type_import_by_gi_info ( (GIBaseInfo *) iface_info);
-
- if (ic->py_type == NULL)
- return NULL;
-
- ic->type_name = _pygi_g_base_info_get_fullname (iface_info);
- return ic;
-}
+/* PyGIInterfaceCache */
-static PyGISequenceCache *
-_sequence_cache_new (GITypeInfo *type_info,
- GIDirection direction,
- GITransfer transfer,
- gssize child_offset)
+static void
+_interface_cache_free_func (PyGIInterfaceCache *cache)
{
- PyGISequenceCache *sc;
- GITypeInfo *item_type_info;
- GITransfer item_transfer;
-
- sc = g_slice_new0 (PyGISequenceCache);
- ( (PyGIArgCache *)sc)->destroy_notify = (GDestroyNotify)_sequence_cache_free_func;
-
- sc->is_zero_terminated = g_type_info_is_zero_terminated (type_info);
- sc->fixed_size = g_type_info_get_array_fixed_size (type_info);
- sc->len_arg_index = g_type_info_get_array_length (type_info);
- if (sc->len_arg_index >= 0)
- sc->len_arg_index += child_offset;
-
- item_type_info = g_type_info_get_param_type (type_info, 0);
-
- item_transfer =
- transfer == GI_TRANSFER_CONTAINER ? GI_TRANSFER_NOTHING : transfer;
-
- sc->item_cache = _arg_cache_new (item_type_info,
- NULL,
- NULL,
- item_transfer,
- direction,
- 0, 0);
-
- if (sc->item_cache == NULL) {
- _pygi_arg_cache_free ( (PyGIArgCache *)sc);
- return NULL;
+ if (cache != NULL) {
+ Py_XDECREF (cache->py_type);
+ if (cache->type_name != NULL)
+ g_free (cache->type_name);
+ if (cache->interface_info != NULL)
+ g_base_info_unref ( (GIBaseInfo *)cache->interface_info);
+ g_slice_free (PyGIInterfaceCache, cache);
}
-
- sc->item_size = _pygi_g_type_info_size (item_type_info);
- g_base_info_unref ( (GIBaseInfo *)item_type_info);
-
- return sc;
}
-static PyGIHashCache *
-_hash_cache_new (GITypeInfo *type_info,
- GIDirection direction,
- GITransfer transfer)
-{
- PyGIHashCache *hc;
- GITypeInfo *key_type_info;
- GITypeInfo *value_type_info;
- GITransfer item_transfer;
- hc = g_slice_new0 (PyGIHashCache);
- ( (PyGIArgCache *)hc)->destroy_notify = (GDestroyNotify)_hash_cache_free_func;
- key_type_info = g_type_info_get_param_type (type_info, 0);
- value_type_info = g_type_info_get_param_type (type_info, 1);
-
- item_transfer =
- transfer == GI_TRANSFER_CONTAINER ? GI_TRANSFER_NOTHING : transfer;
-
- hc->key_cache = _arg_cache_new (key_type_info,
- NULL,
- NULL,
- item_transfer,
- direction,
- 0, 0);
-
- if (hc->key_cache == NULL) {
- _pygi_arg_cache_free ( (PyGIArgCache *)hc);
- return NULL;
- }
-
- hc->value_cache = _arg_cache_new (value_type_info,
- NULL,
- NULL,
- item_transfer,
- direction,
- 0, 0);
-
- if (hc->value_cache == NULL) {
- _pygi_arg_cache_free ( (PyGIArgCache *)hc);
- return NULL;
+/* pygi_arg_interface_setup:
+ * arg_cache: argument cache to initialize
+ * type_info: source for type related attributes to cache
+ * arg_info: (allow-none): source for argument related attributes to cache
+ * transfer: transfer mode to store in the argument cache
+ * direction: marshaling direction to store in the cache
+ * iface_info: interface info to cache
+ *
+ * Initializer for PyGIInterfaceCache
+ *
+ * Returns: TRUE on success and FALSE on failure
+ */
+gboolean
+pygi_arg_interface_setup (PyGIInterfaceCache *iface_cache,
+ GITypeInfo *type_info,
+ GIArgInfo *arg_info, /* may be NULL for return arguments */
+ GITransfer transfer,
+ PyGIDirection direction,
+ GIInterfaceInfo *iface_info)
+{
+ if (!pygi_arg_base_setup ((PyGIArgCache *)iface_cache,
+ type_info,
+ arg_info,
+ transfer,
+ direction)) {
+ return FALSE;
}
- g_base_info_unref( (GIBaseInfo *)key_type_info);
- g_base_info_unref( (GIBaseInfo *)value_type_info);
-
- return hc;
-}
+ ( (PyGIArgCache *)iface_cache)->destroy_notify = (GDestroyNotify)_interface_cache_free_func;
-static PyGICallbackCache *
-_callback_cache_new (GIArgInfo *arg_info,
- GIInterfaceInfo *iface_info,
- gssize child_offset)
-{
- PyGICallbackCache *cc;
-
- cc = g_slice_new0 (PyGICallbackCache);
- ( (PyGIArgCache *)cc)->destroy_notify = (GDestroyNotify)_callback_cache_free_func;
-
- cc->user_data_index = g_arg_info_get_closure (arg_info);
- if (cc->user_data_index != -1)
- cc->user_data_index += child_offset;
- cc->destroy_notify_index = g_arg_info_get_destroy (arg_info);
- if (cc->destroy_notify_index != -1)
- cc->destroy_notify_index += child_offset;
- cc->scope = g_arg_info_get_scope (arg_info);
- g_base_info_ref( (GIBaseInfo *)iface_info);
- cc->interface_info = iface_info;
- return cc;
-}
+ g_base_info_ref ( (GIBaseInfo *)iface_info);
+ iface_cache->interface_info = iface_info;
+ iface_cache->arg_cache.type_tag = GI_TYPE_TAG_INTERFACE;
+ iface_cache->type_name = _pygi_g_base_info_get_fullname (iface_info);
+ iface_cache->g_type = g_registered_type_info_get_g_type ( (GIRegisteredTypeInfo *)iface_info);
+ iface_cache->py_type = _pygi_type_import_by_gi_info ( (GIBaseInfo *) iface_info);
-static PyGIArgCache *
-_arg_cache_alloc (void)
-{
- return g_slice_new0 (PyGIArgCache);
-}
-
-static void
-_arg_cache_from_py_basic_type_setup (PyGIArgCache *arg_cache)
-{
- arg_cache->from_py_marshaller = _pygi_marshal_from_py_basic_type_cache_adapter;
-}
-
-static void
-_arg_cache_to_py_basic_type_setup (PyGIArgCache *arg_cache)
-{
- arg_cache->to_py_marshaller = _pygi_marshal_to_py_basic_type_cache_adapter;
-}
-
-static void
-_arg_cache_from_py_void_setup (PyGIArgCache *arg_cache)
-{
- arg_cache->from_py_marshaller = _pygi_marshal_from_py_void;
-}
-
-static void
-_arg_cache_to_py_void_setup (PyGIArgCache *arg_cache)
-{
- arg_cache->to_py_marshaller = _pygi_marshal_to_py_void;
-}
-
-static void
-_arg_cache_from_py_utf8_setup (PyGIArgCache *arg_cache,
- GITransfer transfer)
-{
- arg_cache->from_py_marshaller = _pygi_marshal_from_py_basic_type_cache_adapter;
- arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_utf8;
-}
-
-static void
-_arg_cache_to_py_utf8_setup (PyGIArgCache *arg_cache,
- GITransfer transfer)
-{
- arg_cache->to_py_marshaller = _pygi_marshal_to_py_basic_type_cache_adapter;
- arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_utf8;
-}
-
-static PyGIArgCache*
-_arg_cache_array_len_arg_setup (PyGIArgCache *arg_cache,
- PyGICallableCache *callable_cache,
- PyGIDirection direction,
- gssize arg_index,
- gssize *py_arg_index)
-{
- PyGISequenceCache *seq_cache = (PyGISequenceCache *)arg_cache;
- if (seq_cache->len_arg_index >= 0) {
- PyGIArgCache *child_cache = NULL;
-
- child_cache = _pygi_callable_cache_get_arg (callable_cache,
- seq_cache->len_arg_index);
- if (child_cache == NULL) {
- child_cache = _arg_cache_alloc ();
- } else {
- /* If the "length" arg cache already exists (the length comes before
- * the array in the argument list), remove it from the to_py_args list
- * because it does not belong in "to python" return tuple. The length
- * will implicitly be a part of the returned Python list.
- */
- if (direction & PYGI_DIRECTION_TO_PYTHON) {
- callable_cache->to_py_args =
- g_slist_remove (callable_cache->to_py_args, child_cache);
- }
-
- /* This is a case where the arg cache already exists and has been
- * setup by another array argument sharing the same length argument.
- * See: gi_marshalling_tests_multi_array_key_value_in
- */
- if (child_cache->meta_type == PYGI_META_ARG_TYPE_CHILD)
- return child_cache;
- }
-
- /* There is a length argument for this array, so increment the number
- * of "to python" child arguments when applicable.
- */
- if (direction & PYGI_DIRECTION_TO_PYTHON)
- callable_cache->n_to_py_child_args++;
-
- child_cache->meta_type = PYGI_META_ARG_TYPE_CHILD;
- child_cache->direction = direction;
- child_cache->to_py_marshaller = NULL;
- child_cache->from_py_marshaller = NULL;
-
- /* ugly edge case code:
- *
- * When the length comes before the array parameter we need to update
- * indexes of arguments after the index argument.
- */
- if (seq_cache->len_arg_index < arg_index && direction & PYGI_DIRECTION_FROM_PYTHON) {
- gssize i;
- (*py_arg_index) -= 1;
- callable_cache->n_py_args -= 1;
-
- for (i = seq_cache->len_arg_index + 1;
- i < _pygi_callable_cache_args_len (callable_cache); i++) {
- PyGIArgCache *update_cache = _pygi_callable_cache_get_arg (callable_cache, i);
- if (update_cache == NULL)
- break;
-
- update_cache->py_arg_index -= 1;
- }
- }
-
- _pygi_callable_cache_set_arg (callable_cache, seq_cache->len_arg_index, child_cache);
- return child_cache;
+ if (iface_cache->py_type == NULL) {
+ return FALSE;
}
- return NULL;
-}
-
-static gboolean
-_arg_cache_from_py_array_setup (PyGIArgCache *arg_cache,
- PyGICallableCache *callable_cache,
- GITypeInfo *type_info,
- GITransfer transfer,
- PyGIDirection direction,
- gssize arg_index)
-{
- PyGISequenceCache *seq_cache = (PyGISequenceCache *)arg_cache;
- seq_cache->array_type = g_type_info_get_array_type (type_info);
- arg_cache->from_py_marshaller = _pygi_marshal_from_py_array;
- arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_array;
return TRUE;
}
-static gboolean
-_arg_cache_to_py_array_setup (PyGIArgCache *arg_cache,
- PyGICallableCache *callable_cache,
- GITypeInfo *type_info,
- GITransfer transfer,
- PyGIDirection direction,
- gssize arg_index)
-{
- PyGISequenceCache *seq_cache = (PyGISequenceCache *)arg_cache;
- seq_cache->array_type = g_type_info_get_array_type (type_info);
- arg_cache->to_py_marshaller = _pygi_marshal_to_py_array;
- arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_array;
- return TRUE;
-}
-
-static void
-_arg_cache_from_py_glist_setup (PyGIArgCache *arg_cache,
- GITransfer transfer)
-{
- arg_cache->from_py_marshaller = _pygi_marshal_from_py_glist;
- arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_glist;
-}
-
-static void
-_arg_cache_to_py_glist_setup (PyGIArgCache *arg_cache,
- GITransfer transfer)
-{
- arg_cache->to_py_marshaller = _pygi_marshal_to_py_glist;
- arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_glist;
-}
-
-static void
-_arg_cache_from_py_gslist_setup (PyGIArgCache *arg_cache,
- GITransfer transfer)
-{
- arg_cache->from_py_marshaller = _pygi_marshal_from_py_gslist;
- arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_glist;
-}
-
-static void
-_arg_cache_to_py_gslist_setup (PyGIArgCache *arg_cache,
- GITransfer transfer)
-{
- arg_cache->to_py_marshaller = _pygi_marshal_to_py_gslist;
- arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_glist;
-}
-
-static void
-_arg_cache_from_py_ghash_setup (PyGIArgCache *arg_cache)
-{
- arg_cache->from_py_marshaller = _pygi_marshal_from_py_ghash;
- arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_ghash;
-}
-
-static void
-_arg_cache_to_py_ghash_setup (PyGIArgCache *arg_cache)
-{
- arg_cache->to_py_marshaller = _pygi_marshal_to_py_ghash;
- arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_ghash;
-}
-
-static void
-_arg_cache_from_py_gerror_setup (PyGIArgCache *arg_cache)
-{
- arg_cache->from_py_marshaller = _pygi_marshal_from_py_gerror;
- arg_cache->meta_type = PYGI_META_ARG_TYPE_CHILD;
-}
-
-static void
-_arg_cache_to_py_gerror_setup (PyGIArgCache *arg_cache)
-{
- arg_cache->to_py_marshaller = _pygi_marshal_to_py_gerror;
- arg_cache->meta_type = PYGI_META_ARG_TYPE_CHILD;
-}
-
-static void
-_arg_cache_from_py_interface_union_setup (PyGIArgCache *arg_cache,
- GITransfer transfer)
+PyGIArgCache *
+pygi_arg_interface_new_from_info (GITypeInfo *type_info,
+ GIArgInfo *arg_info, /* may be NULL for return arguments */
+ GITransfer transfer,
+ PyGIDirection direction,
+ GIInterfaceInfo *iface_info)
{
- arg_cache->from_py_marshaller = _pygi_marshal_from_py_interface_struct_cache_adapter;
-}
+ PyGIInterfaceCache *ic;
-static void
-_arg_cache_to_py_interface_union_setup (PyGIArgCache *arg_cache,
- GITransfer transfer)
-{
- arg_cache->to_py_marshaller = _pygi_marshal_to_py_interface_struct_cache_adapter;
-}
+ ic = g_slice_new0 (PyGIInterfaceCache);
+ if (!pygi_arg_interface_setup (ic,
+ type_info,
+ arg_info,
+ transfer,
+ direction,
+ iface_info)) {
+ pygi_arg_cache_free ((PyGIArgCache *)ic);
+ return NULL;
+ }
-static void
-_arg_cache_from_py_interface_struct_setup (PyGIArgCache *arg_cache,
- GIInterfaceInfo *iface_info,
- GITransfer transfer)
-{
- PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
- iface_cache->is_foreign = g_struct_info_is_foreign ( (GIStructInfo*)iface_info);
- arg_cache->from_py_marshaller = _pygi_marshal_from_py_interface_struct_cache_adapter;
-
- if (iface_cache->g_type == G_TYPE_VALUE)
- arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_interface_struct_gvalue;
- else if (iface_cache->is_foreign)
- arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_interface_struct_foreign;
+ return (PyGIArgCache *)ic;
}
-static void
-_arg_cache_to_py_interface_struct_setup (PyGIArgCache *arg_cache,
- GIInterfaceInfo *iface_info,
- GITransfer transfer)
-{
- PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
- iface_cache->is_foreign = g_struct_info_is_foreign ( (GIStructInfo*)iface_info);
- arg_cache->to_py_marshaller = _pygi_marshal_to_py_interface_struct_cache_adapter;
-
- if (iface_cache->is_foreign)
- arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_interface_struct_foreign;
-}
+/* PyGISequenceCache */
static void
-_arg_cache_from_py_interface_object_setup (PyGIArgCache *arg_cache,
- GITransfer transfer)
+_sequence_cache_free_func (PyGISequenceCache *cache)
{
- arg_cache->from_py_marshaller = _pygi_marshal_from_py_interface_object;
- arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_interface_object;
+ if (cache != NULL) {
+ pygi_arg_cache_free (cache->item_cache);
+ g_slice_free (PyGISequenceCache, cache);
+ }
}
-static void
-_arg_cache_to_py_interface_object_setup (PyGIArgCache *arg_cache,
- GITransfer transfer)
+/* pygi_arg_sequence_setup:
+ * sc: sequence cache to initialize
+ * type_info: source for type related attributes to cache
+ * arg_info: (allow-none): source for argument related attributes to cache
+ * transfer: transfer mode to store in the argument cache
+ * direction: marshaling direction to store in the cache
+ * iface_info: interface info to cache
+ *
+ * Initializer for PyGISequenceCache used for holding list and array argument
+ * caches.
+ *
+ * Returns: TRUE on success and FALSE on failure
+ */
+gboolean
+pygi_arg_sequence_setup (PyGISequenceCache *sc,
+ GITypeInfo *type_info,
+ GIArgInfo *arg_info, /* may be NULL for return arguments */
+ GITransfer transfer,
+ PyGIDirection direction)
{
- arg_cache->to_py_marshaller = _pygi_marshal_to_py_interface_object_cache_adapter;
- arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_interface_object;
-}
+ GITypeInfo *item_type_info;
+ GITransfer item_transfer;
-static void
-_arg_cache_from_py_interface_callback_setup (PyGIArgCache *arg_cache,
- PyGICallableCache *callable_cache)
-{
- PyGICallbackCache *callback_cache = (PyGICallbackCache *)arg_cache;
- if (callback_cache->user_data_index >= 0) {
- PyGIArgCache *user_data_arg_cache = _arg_cache_alloc ();
- user_data_arg_cache->meta_type = PYGI_META_ARG_TYPE_CHILD_WITH_PYARG;
- user_data_arg_cache->direction = PYGI_DIRECTION_FROM_PYTHON;
- user_data_arg_cache->has_default = TRUE; /* always allow user data with a NULL default. */
- _pygi_callable_cache_set_arg (callable_cache, callback_cache->user_data_index,
- user_data_arg_cache);
+ if (!pygi_arg_base_setup ((PyGIArgCache *)sc,
+ type_info,
+ arg_info,
+ transfer,
+ direction)) {
+ return FALSE;
}
- if (callback_cache->destroy_notify_index >= 0) {
- PyGIArgCache *destroy_arg_cache = _arg_cache_alloc ();
- destroy_arg_cache->meta_type = PYGI_META_ARG_TYPE_CHILD;
- destroy_arg_cache->direction = PYGI_DIRECTION_FROM_PYTHON;
- _pygi_callable_cache_set_arg (callable_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;
-}
+ sc->arg_cache.destroy_notify = (GDestroyNotify)_sequence_cache_free_func;
+ item_type_info = g_type_info_get_param_type (type_info, 0);
+ item_transfer =
+ transfer == GI_TRANSFER_CONTAINER ? GI_TRANSFER_NOTHING : transfer;
-static void
-_arg_cache_to_py_interface_callback_setup (void)
-{
- PyErr_Format(PyExc_NotImplementedError,
- "Callback returns are not supported");
-}
+ sc->item_cache = pygi_arg_cache_new (item_type_info,
+ NULL,
+ item_transfer,
+ direction,
+ 0, 0,
+ NULL);
-static void
-_arg_cache_from_py_interface_enum_setup (PyGIArgCache *arg_cache,
- GITransfer transfer)
-{
- arg_cache->from_py_marshaller = _pygi_marshal_from_py_interface_enum;
-}
+ g_base_info_unref ( (GIBaseInfo *)item_type_info);
-static void
-_arg_cache_to_py_interface_enum_setup (PyGIArgCache *arg_cache,
- GITransfer transfer)
-{
- arg_cache->to_py_marshaller = _pygi_marshal_to_py_interface_enum;
-}
+ if (sc->item_cache == NULL) {
+ return FALSE;
+ }
-static void
-_arg_cache_from_py_interface_flags_setup (PyGIArgCache *arg_cache,
- GITransfer transfer)
-{
- arg_cache->from_py_marshaller = _pygi_marshal_from_py_interface_flags;
+ return TRUE;
}
-static void
-_arg_cache_to_py_interface_flags_setup (PyGIArgCache *arg_cache,
- GITransfer transfer)
+PyGIArgCache *
+pygi_arg_cache_alloc (void)
{
- arg_cache->to_py_marshaller = _pygi_marshal_to_py_interface_flags;
+ return g_slice_new0 (PyGIArgCache);
}
-PyGIArgCache *
-_arg_cache_new_for_interface (GIInterfaceInfo *iface_info,
- PyGICallableCache *callable_cache,
- GIArgInfo *arg_info,
- GITransfer transfer,
- PyGIDirection direction,
- gssize c_arg_index,
- gssize py_arg_index)
+static PyGIArgCache *
+_arg_cache_new_for_interface (GIInterfaceInfo *iface_info,
+ GITypeInfo *type_info,
+ GIArgInfo *arg_info,
+ GITransfer transfer,
+ PyGIDirection direction,
+ PyGICallableCache *callable_cache)
{
- PyGIInterfaceCache *iface_cache = NULL;
- PyGIArgCache *arg_cache = NULL;
- gssize child_offset = 0;
GIInfoType info_type;
- if (callable_cache != NULL)
- child_offset =
- (callable_cache->function_type == PYGI_FUNCTION_TYPE_METHOD ||
- callable_cache->function_type == PYGI_FUNCTION_TYPE_VFUNC) ? 1: 0;
-
info_type = g_base_info_get_type ( (GIBaseInfo *)iface_info);
- /* Callbacks are special cased */
- if (info_type != GI_INFO_TYPE_CALLBACK) {
- iface_cache = _interface_cache_new (iface_info);
-
- arg_cache = (PyGIArgCache *)iface_cache;
- if (arg_cache == NULL)
- return NULL;
- }
-
switch (info_type) {
- case GI_INFO_TYPE_UNION:
- if (direction & PYGI_DIRECTION_FROM_PYTHON)
- _arg_cache_from_py_interface_union_setup (arg_cache, transfer);
-
- if (direction & PYGI_DIRECTION_TO_PYTHON)
- _arg_cache_to_py_interface_union_setup (arg_cache, transfer);
-
- break;
- case GI_INFO_TYPE_BOXED:
- case GI_INFO_TYPE_STRUCT:
- if (direction & PYGI_DIRECTION_FROM_PYTHON)
- _arg_cache_from_py_interface_struct_setup (arg_cache,
- iface_info,
- transfer);
-
- if (direction & PYGI_DIRECTION_TO_PYTHON)
- _arg_cache_to_py_interface_struct_setup (arg_cache,
- iface_info,
- transfer);
- break;
+ case GI_INFO_TYPE_CALLBACK:
+ return pygi_arg_callback_new_from_info (type_info,
+ arg_info,
+ transfer,
+ direction,
+ iface_info,
+ callable_cache);
case GI_INFO_TYPE_OBJECT:
case GI_INFO_TYPE_INTERFACE:
- if (direction & PYGI_DIRECTION_FROM_PYTHON)
- _arg_cache_from_py_interface_object_setup (arg_cache, transfer);
-
- if (direction & PYGI_DIRECTION_TO_PYTHON)
- _arg_cache_to_py_interface_object_setup (arg_cache, transfer);
-
- break;
- case GI_INFO_TYPE_CALLBACK:
- {
- PyGICallbackCache *callback_cache;
-
- if (direction & PYGI_DIRECTION_TO_PYTHON) {
- _arg_cache_to_py_interface_callback_setup ();
- return NULL;
- }
-
- callback_cache =
- _callback_cache_new (arg_info,
- iface_info,
- child_offset);
-
- arg_cache = (PyGIArgCache *)callback_cache;
- if (arg_cache == NULL)
- return NULL;
-
- if (direction & PYGI_DIRECTION_FROM_PYTHON)
- _arg_cache_from_py_interface_callback_setup (arg_cache, callable_cache);
-
- break;
- }
+ return pygi_arg_gobject_new_from_info (type_info,
+ arg_info,
+ transfer,
+ direction,
+ iface_info);
+ case GI_INFO_TYPE_BOXED:
+ case GI_INFO_TYPE_STRUCT:
+ case GI_INFO_TYPE_UNION:
+ return pygi_arg_struct_new_from_info (type_info,
+ arg_info,
+ transfer,
+ direction,
+ iface_info);
case GI_INFO_TYPE_ENUM:
- if (direction & PYGI_DIRECTION_FROM_PYTHON)
- _arg_cache_from_py_interface_enum_setup (arg_cache, transfer);
-
- if (direction & PYGI_DIRECTION_TO_PYTHON)
- _arg_cache_to_py_interface_enum_setup (arg_cache, transfer);
-
- break;
+ return pygi_arg_enum_new_from_info (type_info,
+ arg_info,
+ transfer,
+ direction,
+ iface_info);
case GI_INFO_TYPE_FLAGS:
- if (direction & PYGI_DIRECTION_FROM_PYTHON)
- _arg_cache_from_py_interface_flags_setup (arg_cache, transfer);
-
- if (direction & PYGI_DIRECTION_TO_PYTHON)
- _arg_cache_to_py_interface_flags_setup (arg_cache, transfer);
-
- break;
+ return pygi_arg_flags_new_from_info (type_info,
+ arg_info,
+ transfer,
+ direction,
+ iface_info);
default:
g_assert_not_reached ();
}
- if (arg_cache != NULL) {
- arg_cache->direction = direction;
- arg_cache->transfer = transfer;
- arg_cache->type_tag = GI_TYPE_TAG_INTERFACE;
- arg_cache->py_arg_index = py_arg_index;
- arg_cache->c_arg_index = c_arg_index;
-
- if (iface_cache != NULL) {
- g_base_info_ref ( (GIBaseInfo *)iface_info);
- iface_cache->interface_info = iface_info;
- }
- }
-
- return arg_cache;
-}
-
-/* _arg_info_default_value
- * info:
- * arg: (out): GIArgument to fill in with default value.
- *
- * This is currently a place holder API which only supports "allow-none" pointer args.
- * Once defaults are part of the GI API, we can replace this with: g_arg_info_default_value
- * https://bugzilla.gnome.org/show_bug.cgi?id=558620
- *
- * Returns: TRUE if the given argument supports a default value and was filled in.
- */
-static gboolean
-_arg_info_default_value (GIArgInfo *info, GIArgument *arg)
-{
- if (g_arg_info_may_be_null (info)) {
- arg->v_pointer = NULL;
- return TRUE;
- }
- return FALSE;
+ return NULL;
}
PyGIArgCache *
-_arg_cache_new (GITypeInfo *type_info,
- PyGICallableCache *callable_cache,
- GIArgInfo *arg_info, /* may be null */
- GITransfer transfer,
- PyGIDirection direction,
- gssize c_arg_index,
- gssize py_arg_index)
+pygi_arg_cache_new (GITypeInfo *type_info,
+ GIArgInfo *arg_info, /* may be null */
+ GITransfer transfer,
+ PyGIDirection direction,
+ gssize c_arg_index,
+ gssize py_arg_index,
+ PyGICallableCache *callable_cache)
{
PyGIArgCache *arg_cache = NULL;
- gssize child_offset = 0;
GITypeTag type_tag;
type_tag = g_type_info_get_tag (type_info);
- if (callable_cache != NULL)
- child_offset =
- (callable_cache->function_type == PYGI_FUNCTION_TYPE_METHOD ||
- callable_cache->function_type == PYGI_FUNCTION_TYPE_VFUNC) ? 1: 0;
-
switch (type_tag) {
case GI_TYPE_TAG_VOID:
- arg_cache = _arg_cache_alloc ();
- if (arg_cache == NULL)
- break;
-
- if (direction & PYGI_DIRECTION_FROM_PYTHON)
- _arg_cache_from_py_void_setup (arg_cache);
-
- if (direction & PYGI_DIRECTION_TO_PYTHON)
- _arg_cache_to_py_void_setup (arg_cache);
-
- break;
case GI_TYPE_TAG_BOOLEAN:
case GI_TYPE_TAG_INT8:
case GI_TYPE_TAG_UINT8:
@@ -759,176 +370,78 @@ _arg_cache_new (GITypeInfo *type_info,
case GI_TYPE_TAG_DOUBLE:
case GI_TYPE_TAG_UNICHAR:
case GI_TYPE_TAG_GTYPE:
- arg_cache = _arg_cache_alloc ();
- if (arg_cache == NULL)
- break;
-
- if (direction & PYGI_DIRECTION_FROM_PYTHON)
- _arg_cache_from_py_basic_type_setup (arg_cache);
-
- if (direction & PYGI_DIRECTION_TO_PYTHON)
- _arg_cache_to_py_basic_type_setup (arg_cache);
-
- break;
case GI_TYPE_TAG_UTF8:
case GI_TYPE_TAG_FILENAME:
- arg_cache = _arg_cache_alloc ();
- if (arg_cache == NULL)
- break;
-
- if (direction & PYGI_DIRECTION_FROM_PYTHON)
- _arg_cache_from_py_utf8_setup (arg_cache, transfer);
-
- if (direction & PYGI_DIRECTION_TO_PYTHON)
- _arg_cache_to_py_utf8_setup (arg_cache, transfer);
-
+ arg_cache = pygi_arg_basic_type_new_from_info (type_info,
+ arg_info,
+ transfer,
+ direction);
break;
+
case GI_TYPE_TAG_ARRAY:
{
- PyGISequenceCache *seq_cache =
- _sequence_cache_new (type_info,
- direction,
- transfer,
- child_offset);
-
- arg_cache = (PyGIArgCache *)seq_cache;
+ arg_cache = pygi_arg_garray_new_from_info (type_info,
+ arg_info,
+ transfer,
+ direction);
if (arg_cache == NULL)
- break;
-
- if (direction & PYGI_DIRECTION_FROM_PYTHON)
- _arg_cache_from_py_array_setup (arg_cache,
- callable_cache,
- type_info,
- transfer,
- direction,
- c_arg_index);
-
- if (direction & PYGI_DIRECTION_TO_PYTHON)
- _arg_cache_to_py_array_setup (arg_cache,
- callable_cache,
- type_info,
- transfer,
- direction,
- c_arg_index);
-
- _arg_cache_array_len_arg_setup (arg_cache,
- callable_cache,
- direction,
- c_arg_index,
- &py_arg_index);
-
- break;
+ return NULL;
+
+ pygi_arg_garray_len_arg_setup (arg_cache,
+ type_info,
+ callable_cache,
+ direction,
+ c_arg_index,
+ &py_arg_index);
}
- case GI_TYPE_TAG_GLIST:
- {
- PyGISequenceCache *seq_cache =
- _sequence_cache_new (type_info,
- direction,
- transfer,
- child_offset);
-
- arg_cache = (PyGIArgCache *)seq_cache;
- if (arg_cache == NULL)
- break;
-
- if (direction & PYGI_DIRECTION_FROM_PYTHON)
- _arg_cache_from_py_glist_setup (arg_cache, transfer);
-
- if (direction & PYGI_DIRECTION_TO_PYTHON)
- _arg_cache_to_py_glist_setup (arg_cache, transfer);
+ break;
+ case GI_TYPE_TAG_GLIST:
+ arg_cache = pygi_arg_glist_new_from_info (type_info,
+ arg_info,
+ transfer,
+ direction);
+ break;
- break;
- }
case GI_TYPE_TAG_GSLIST:
- {
- PyGISequenceCache *seq_cache =
- _sequence_cache_new (type_info,
- direction,
- transfer,
- child_offset);
-
- arg_cache = (PyGIArgCache *)seq_cache;
- if (arg_cache == NULL)
- break;
-
- if (direction & PYGI_DIRECTION_FROM_PYTHON)
- _arg_cache_from_py_gslist_setup (arg_cache, transfer);
-
- if (direction & PYGI_DIRECTION_TO_PYTHON)
- _arg_cache_to_py_gslist_setup (arg_cache, transfer);
+ arg_cache = pygi_arg_gslist_new_from_info (type_info,
+ arg_info,
+ transfer,
+ direction);
+ break;
- break;
- }
case GI_TYPE_TAG_GHASH:
- arg_cache =
- (PyGIArgCache *)_hash_cache_new (type_info,
- direction,
- transfer);
-
- if (arg_cache == NULL)
- break;
-
- if (direction & PYGI_DIRECTION_FROM_PYTHON)
- _arg_cache_from_py_ghash_setup (arg_cache);
-
- if (direction & PYGI_DIRECTION_TO_PYTHON) {
- _arg_cache_to_py_ghash_setup (arg_cache);
- }
-
+ arg_cache = pygi_arg_hash_table_new_from_info (type_info,
+ arg_info,
+ transfer,
+ direction);
break;
+
case GI_TYPE_TAG_INTERFACE:
{
GIInterfaceInfo *interface_info = g_type_info_get_interface (type_info);
arg_cache = _arg_cache_new_for_interface (interface_info,
- callable_cache,
+ type_info,
arg_info,
transfer,
direction,
- c_arg_index,
- py_arg_index);
+ callable_cache);
g_base_info_unref ( (GIBaseInfo *)interface_info);
- break;
}
- case GI_TYPE_TAG_ERROR:
- arg_cache = _arg_cache_alloc ();
- if (arg_cache == NULL)
- break;
-
- if (direction & PYGI_DIRECTION_FROM_PYTHON)
- _arg_cache_from_py_gerror_setup (arg_cache);
-
- if (direction & PYGI_DIRECTION_TO_PYTHON)
- _arg_cache_to_py_gerror_setup (arg_cache);
+ break;
+ case GI_TYPE_TAG_ERROR:
+ arg_cache = pygi_arg_gerror_new_from_info (type_info,
+ arg_info,
+ transfer,
+ direction);
break;
}
if (arg_cache != NULL) {
- arg_cache->direction = direction;
- arg_cache->transfer = transfer;
- arg_cache->type_tag = type_tag;
arg_cache->py_arg_index = py_arg_index;
arg_cache->c_arg_index = c_arg_index;
- arg_cache->is_pointer = g_type_info_is_pointer (type_info);
- g_base_info_ref ( (GIBaseInfo *) type_info);
- arg_cache->type_info = type_info;
-
- if (arg_info != NULL) {
- if (!arg_cache->has_default) {
- /* It is possible has_default was set somewhere else */
- arg_cache->has_default = _arg_info_default_value (arg_info,
- &arg_cache->default_value);
- }
- arg_cache->arg_name = g_base_info_get_name ((GIBaseInfo *) arg_info);
- arg_cache->allow_none = g_arg_info_may_be_null (arg_info);
-
- if (type_tag == GI_TYPE_TAG_INTERFACE || type_tag == GI_TYPE_TAG_ARRAY)
- arg_cache->is_caller_allocates = g_arg_info_is_caller_allocates (arg_info);
- else
- arg_cache->is_caller_allocates = FALSE;
- }
}
return arg_cache;
@@ -972,13 +485,13 @@ _args_cache_generate (GICallableInfo *callable_info,
return_transfer =
g_callable_info_get_caller_owns (callable_info);
return_cache =
- _arg_cache_new (return_info,
- callable_cache,
- NULL,
- return_transfer,
- return_direction,
- -1,
- -1);
+ pygi_arg_cache_new (return_info,
+ NULL,
+ return_transfer,
+ return_direction,
+ -1,
+ -1,
+ callable_cache);
if (return_cache == NULL)
return FALSE;
@@ -996,12 +509,11 @@ _args_cache_generate (GICallableInfo *callable_info,
instance_cache =
_arg_cache_new_for_interface (interface_info,
- callable_cache,
+ NULL,
NULL,
GI_TRANSFER_NOTHING,
PYGI_DIRECTION_FROM_PYTHON,
- arg_index,
- 0);
+ callable_cache);
g_base_info_unref ( (GIBaseInfo *)interface_info);
@@ -1011,6 +523,8 @@ _args_cache_generate (GICallableInfo *callable_info,
/* Because we are not supplied a GITypeInfo for instance arguments,
* assume some defaults. */
instance_cache->is_pointer = TRUE;
+ instance_cache->py_arg_index = 0;
+ instance_cache->c_arg_index = 0;
_pygi_callable_cache_set_arg (callable_cache, arg_index, instance_cache);
@@ -1029,7 +543,7 @@ _args_cache_generate (GICallableInfo *callable_info,
if (g_arg_info_get_closure (arg_info) == i) {
- arg_cache = _arg_cache_alloc ();
+ arg_cache = pygi_arg_cache_alloc ();
_pygi_callable_cache_set_arg (callable_cache, arg_index, arg_cache);
direction = PYGI_DIRECTION_FROM_PYTHON;
@@ -1080,13 +594,13 @@ _args_cache_generate (GICallableInfo *callable_info,
}
arg_cache =
- _arg_cache_new (type_info,
- callable_cache,
- arg_info,
- transfer,
- direction,
- arg_index,
- py_arg_index);
+ pygi_arg_cache_new (type_info,
+ arg_info,
+ transfer,
+ direction,
+ arg_index,
+ py_arg_index,
+ callable_cache);
if (arg_cache == NULL) {
g_base_info_unref( (GIBaseInfo *)type_info);
@@ -1172,7 +686,7 @@ _args_cache_generate (GICallableInfo *callable_info,
}
PyGICallableCache *
-_pygi_callable_cache_new (GICallableInfo *callable_info, gboolean is_ccallback)
+pygi_callable_cache_new (GICallableInfo *callable_info, gboolean is_ccallback)
{
gint n_args;
PyGICallableCache *cache;
@@ -1227,7 +741,7 @@ _pygi_callable_cache_new (GICallableInfo *callable_info, gboolean is_ccallback)
n_args++;
if (n_args >= 0) {
- cache->args_cache = g_ptr_array_new_full (n_args, (GDestroyNotify) _pygi_arg_cache_free);
+ cache->args_cache = g_ptr_array_new_full (n_args, (GDestroyNotify) pygi_arg_cache_free);
g_ptr_array_set_size (cache->args_cache, n_args);
}
@@ -1236,6 +750,6 @@ _pygi_callable_cache_new (GICallableInfo *callable_info, gboolean is_ccallback)
return cache;
err:
- _pygi_callable_cache_free (cache);
+ pygi_callable_cache_free (cache);
return NULL;
}
diff --git a/gi/pygi-cache.h b/gi/pygi-cache.h
index 745d0a1..5521605 100644
--- a/gi/pygi-cache.h
+++ b/gi/pygi-cache.h
@@ -2,6 +2,7 @@
* vim: tabstop=4 shiftwidth=4 expandtab
*
* Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>
+ * Copyright (C) 2013 Simon Feltman <sfeltman@gnome.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -132,13 +133,18 @@ struct _PyGIArgCache
typedef struct _PyGISequenceCache
{
PyGIArgCache arg_cache;
+ PyGIArgCache *item_cache;
+} PyGISequenceCache;
+
+typedef struct _PyGIArgGArray
+{
+ PyGISequenceCache seq_cache;
gssize fixed_size;
gssize len_arg_index;
gboolean is_zero_terminated;
gsize item_size;
GIArrayType array_type;
- PyGIArgCache *item_cache;
-} PyGISequenceCache;
+} PyGIArgGArray;
typedef struct _PyGIInterfaceCache
{
@@ -150,22 +156,6 @@ typedef struct _PyGIInterfaceCache
gchar *type_name;
} PyGIInterfaceCache;
-typedef struct _PyGIHashCache
-{
- PyGIArgCache arg_cache;
- PyGIArgCache *key_cache;
- PyGIArgCache *value_cache;
-} PyGIHashCache;
-
-typedef struct _PyGICallbackCache
-{
- PyGIArgCache arg_cache;
- gssize user_data_index;
- gssize destroy_notify_index;
- GIScopeType scope;
- GIInterfaceInfo *interface_info;
-} PyGICallbackCache;
-
struct _PyGICallableCache
{
const gchar *name;
@@ -203,11 +193,57 @@ struct _PyGICallableCache
gssize n_py_required_args;
};
-void _pygi_arg_cache_clear (PyGIArgCache *cache);
-void _pygi_callable_cache_free (PyGICallableCache *cache);
-
-PyGICallableCache *_pygi_callable_cache_new (GICallableInfo *callable_info,
- gboolean is_ccallback);
+gboolean
+pygi_arg_base_setup (PyGIArgCache *arg_cache,
+ GITypeInfo *type_info,
+ GIArgInfo *arg_info, /* may be NULL for return arguments */
+ GITransfer transfer,
+ PyGIDirection direction);
+
+gboolean
+pygi_arg_interface_setup (PyGIInterfaceCache *iface_cache,
+ GITypeInfo *type_info,
+ GIArgInfo *arg_info, /* may be NULL for return arguments */
+ GITransfer transfer,
+ PyGIDirection direction,
+ GIInterfaceInfo *iface_info);
+
+gboolean
+pygi_arg_sequence_setup (PyGISequenceCache *sc,
+ GITypeInfo *type_info,
+ GIArgInfo *arg_info, /* may be NULL for return arguments */
+ GITransfer transfer,
+ PyGIDirection direction);
+
+PyGIArgCache *
+pygi_arg_interface_new_from_info (GITypeInfo *type_info,
+ GIArgInfo *arg_info, /* may be NULL for return arguments */
+ GITransfer transfer,
+ PyGIDirection direction,
+ GIInterfaceInfo *iface_info);
+
+PyGIArgCache *
+pygi_arg_cache_alloc (void);
+
+PyGIArgCache *
+pygi_arg_cache_new (GITypeInfo *type_info,
+ GIArgInfo *arg_info,
+ GITransfer transfer,
+ PyGIDirection direction,
+ /* will be removed */
+ gssize c_arg_index,
+ gssize py_arg_index,
+ PyGICallableCache *callable_cache);
+
+void
+pygi_arg_cache_free (PyGIArgCache *cache);
+
+void
+pygi_callable_cache_free (PyGICallableCache *cache);
+
+PyGICallableCache *
+pygi_callable_cache_new (GICallableInfo *callable_info,
+ gboolean is_ccallback);
#define _pygi_callable_cache_args_len(cache) ((cache)->args_cache)->len
diff --git a/gi/pygi-ccallback.c b/gi/pygi-ccallback.c
index 82777fb..01e109b 100644
--- a/gi/pygi-ccallback.c
+++ b/gi/pygi-ccallback.c
@@ -22,8 +22,8 @@
*/
#include "pygi-private.h"
+#include "pygobject-private.h"
-#include <pygobject.h>
#include <girepository.h>
#include <pyglib-python-compat.h>
@@ -34,7 +34,7 @@ _ccallback_call(PyGICCallback *self, PyObject *args, PyObject *kwargs)
PyObject *result;
if (self->cache == NULL) {
- self->cache = _pygi_callable_cache_new (self->info, TRUE);
+ self->cache = pygi_callable_cache_new (self->info, TRUE);
if (self->cache == NULL)
return NULL;
}
diff --git a/gi/pygi-closure.c b/gi/pygi-closure.c
index 5df4713..a30363f 100644
--- a/gi/pygi-closure.c
+++ b/gi/pygi-closure.c
@@ -14,12 +14,23 @@
* 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
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
*/
#include "pygi-private.h"
+#include "pygi-closure.h"
+
+
+typedef struct _PyGICallbackCache
+{
+ PyGIArgCache arg_cache;
+ gssize user_data_index;
+ gssize destroy_notify_index;
+ GIScopeType scope;
+ GIInterfaceInfo *interface_info;
+} PyGICallbackCache;
+
+static PyGICClosure *global_destroy_notify;
/* This maintains a list of closures which can be free'd whenever
as they have been called. We will free them on the next
@@ -669,3 +680,300 @@ _pygi_make_native_closure (GICallableInfo* info,
return closure;
}
+
+/* _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 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);
+ GIBaseInfo* glib_destroy_notify;
+
+ g_assert (destroy_notify);
+
+ 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;
+}
+
+static gboolean
+_pygi_marshal_from_py_interface_callback (PyGIInvokeState *state,
+ PyGICallableCache *callable_cache,
+ PyGIArgCache *arg_cache,
+ PyObject *py_arg,
+ GIArgument *arg,
+ gpointer *cleanup_data)
+{
+ GICallableInfo *callable_info;
+ PyGICClosure *closure;
+ PyGIArgCache *user_data_cache = NULL;
+ PyGIArgCache *destroy_cache = NULL;
+ PyGICallbackCache *callback_cache;
+ PyObject *py_user_data = NULL;
+
+ callback_cache = (PyGICallbackCache *)arg_cache;
+
+ if (callback_cache->user_data_index > 0) {
+ user_data_cache = _pygi_callable_cache_get_arg (callable_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;
+ /* NULL out user_data if it was not supplied and the default arg placeholder
+ * was used instead.
+ */
+ if (py_user_data == _PyGIDefaultArgPlaceholder) {
+ py_user_data = NULL;
+ } else if (callable_cache->user_data_varargs_index < 0) {
+ /* For non-variable length user data, place the user data in a
+ * single item tuple which is concatenated to the callbacks arguments.
+ * This allows callback input arg marshaling to always expect a
+ * tuple for user data. Note the
+ */
+ py_user_data = Py_BuildValue("(O)", py_user_data, NULL);
+ } else {
+ /* increment the ref borrowed from PyTuple_GetItem above */
+ Py_INCREF (py_user_data);
+ }
+ }
+ }
+
+ if (py_arg == Py_None) {
+ return TRUE;
+ }
+
+ if (!PyCallable_Check (py_arg)) {
+ PyErr_Format (PyExc_TypeError,
+ "Callback needs to be a function or method not %s",
+ py_arg->ob_type->tp_name);
+
+ return FALSE;
+ }
+
+ 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;
+
+ /* always decref the user data as _pygi_make_native_closure adds its own ref */
+ Py_XDECREF (py_user_data);
+
+ /* 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 = _pygi_callable_cache_get_arg (callable_cache, callback_cache->destroy_notify_index);
+ }
+
+ if (destroy_cache) {
+ 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;
+ }
+ }
+
+ /* Use the PyGIClosure as data passed to cleanup for GI_SCOPE_TYPE_CALL. */
+ *cleanup_data = closure;
+
+ return TRUE;
+}
+
+static PyObject *
+_pygi_marshal_to_py_interface_callback (PyGIInvokeState *state,
+ PyGICallableCache *callable_cache,
+ PyGIArgCache *arg_cache,
+ GIArgument *arg)
+{
+ PyObject *py_obj = NULL;
+
+ PyErr_Format (PyExc_NotImplementedError,
+ "Marshalling a callback to PyObject is not supported");
+ return py_obj;
+}
+
+static void
+_callback_cache_free_func (PyGICallbackCache *cache)
+{
+ if (cache != NULL) {
+ if (cache->interface_info != NULL)
+ g_base_info_unref ( (GIBaseInfo *)cache->interface_info);
+
+ g_slice_free (PyGICallbackCache, cache);
+ }
+}
+
+static void
+_pygi_marshal_cleanup_from_py_interface_callback (PyGIInvokeState *state,
+ PyGIArgCache *arg_cache,
+ PyObject *py_arg,
+ 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 (data);
+ }
+}
+
+static void
+_arg_cache_from_py_interface_callback_setup (PyGIArgCache *arg_cache,
+ PyGICallableCache *callable_cache)
+{
+ PyGICallbackCache *callback_cache = (PyGICallbackCache *)arg_cache;
+ if (callback_cache->user_data_index >= 0) {
+ PyGIArgCache *user_data_arg_cache = pygi_arg_cache_alloc ();
+ user_data_arg_cache->meta_type = PYGI_META_ARG_TYPE_CHILD_WITH_PYARG;
+ user_data_arg_cache->direction = PYGI_DIRECTION_FROM_PYTHON;
+ user_data_arg_cache->has_default = TRUE; /* always allow user data with a NULL default. */
+ _pygi_callable_cache_set_arg (callable_cache, callback_cache->user_data_index,
+ user_data_arg_cache);
+ }
+
+ if (callback_cache->destroy_notify_index >= 0) {
+ PyGIArgCache *destroy_arg_cache = pygi_arg_cache_alloc ();
+ destroy_arg_cache->meta_type = PYGI_META_ARG_TYPE_CHILD;
+ destroy_arg_cache->direction = PYGI_DIRECTION_FROM_PYTHON;
+ _pygi_callable_cache_set_arg (callable_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 gboolean
+pygi_arg_callback_setup_from_info (PyGICallbackCache *arg_cache,
+ GITypeInfo *type_info,
+ GIArgInfo *arg_info, /* may be null */
+ GITransfer transfer,
+ PyGIDirection direction,
+ GIInterfaceInfo *iface_info,
+ PyGICallableCache *callable_cache)
+{
+ gssize child_offset = 0;
+
+ if (!pygi_arg_base_setup ((PyGIArgCache *)arg_cache,
+ type_info,
+ arg_info,
+ transfer,
+ direction)) {
+ return FALSE;
+ }
+
+ if (direction & PYGI_DIRECTION_TO_PYTHON) {
+ ((PyGIArgCache *)arg_cache)->to_py_marshaller = _pygi_marshal_to_py_interface_callback;
+ }
+
+ if (callable_cache != NULL)
+ child_offset =
+ (callable_cache->function_type == PYGI_FUNCTION_TYPE_METHOD ||
+ callable_cache->function_type == PYGI_FUNCTION_TYPE_VFUNC) ? 1: 0;
+
+ ( (PyGIArgCache *)arg_cache)->destroy_notify = (GDestroyNotify)_callback_cache_free_func;
+
+ arg_cache->user_data_index = g_arg_info_get_closure (arg_info);
+ if (arg_cache->user_data_index != -1)
+ arg_cache->user_data_index += child_offset;
+ arg_cache->destroy_notify_index = g_arg_info_get_destroy (arg_info);
+ if (arg_cache->destroy_notify_index != -1)
+ arg_cache->destroy_notify_index += child_offset;
+ arg_cache->scope = g_arg_info_get_scope (arg_info);
+ g_base_info_ref( (GIBaseInfo *)iface_info);
+ arg_cache->interface_info = iface_info;
+
+ if (direction & PYGI_DIRECTION_FROM_PYTHON)
+ _arg_cache_from_py_interface_callback_setup ((PyGIArgCache *)arg_cache, callable_cache);
+
+ return TRUE;
+}
+
+PyGIArgCache *
+pygi_arg_callback_new_from_info (GITypeInfo *type_info,
+ GIArgInfo *arg_info, /* may be null */
+ GITransfer transfer,
+ PyGIDirection direction,
+ GIInterfaceInfo *iface_info,
+ PyGICallableCache *callable_cache)
+{
+ gboolean res = FALSE;
+ PyGICallbackCache *callback_cache;
+
+ callback_cache = g_slice_new0 (PyGICallbackCache);
+ if (callback_cache == NULL)
+ return NULL;
+
+ res = pygi_arg_callback_setup_from_info (callback_cache,
+ type_info,
+ arg_info,
+ transfer,
+ direction,
+ iface_info,
+ callable_cache);
+ if (res) {
+ return (PyGIArgCache *)callback_cache;
+ } else {
+ pygi_arg_cache_free ((PyGIArgCache *)callback_cache);
+ return NULL;
+ }
+}
diff --git a/gi/pygi-closure.h b/gi/pygi-closure.h
index 6f98339..0620dc7 100644
--- a/gi/pygi-closure.h
+++ b/gi/pygi-closure.h
@@ -12,9 +12,7 @@
* 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
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __PYGI_CLOSURE_H__
@@ -24,6 +22,8 @@
#include <girffi.h>
#include <ffi.h>
+#include "pygi-cache.h"
+
G_BEGIN_DECLS
@@ -52,6 +52,13 @@ PyGICClosure* _pygi_make_native_closure (GICallableInfo* info,
PyObject *function,
gpointer user_data);
+PyGIArgCache *pygi_arg_callback_new_from_info (GITypeInfo *type_info,
+ GIArgInfo *arg_info, /* may be null */
+ GITransfer transfer,
+ PyGIDirection direction,
+ GIInterfaceInfo *iface_info,
+ PyGICallableCache *callable_cache);
+
G_END_DECLS
#endif /* __PYGI_CLOSURE_H__ */
diff --git a/gi/pygi-enum-marshal.c b/gi/pygi-enum-marshal.c
new file mode 100644
index 0000000..dec5924
--- /dev/null
+++ b/gi/pygi-enum-marshal.c
@@ -0,0 +1,408 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>
+ * Copyright (C) 2014 Simon Feltman <sfeltman@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, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <glib.h>
+#include <Python.h>
+#include <pyglib-python-compat.h>
+
+#include "pygi-enum-marshal.h"
+#include "pygi-private.h"
+
+#ifdef _WIN32
+#ifdef _MSC_VER
+#include <math.h>
+
+#ifndef NAN
+static const unsigned long __nan[2] = {0xffffffff, 0x7fffffff};
+#define NAN (*(const float *) __nan)
+#endif
+
+#ifndef INFINITY
+#define INFINITY HUGE_VAL
+#endif
+
+#endif
+#endif
+
+static gboolean
+gi_argument_from_c_long (GIArgument *arg_out,
+ long c_long_in,
+ GITypeTag type_tag)
+{
+ switch (type_tag) {
+ case GI_TYPE_TAG_INT8:
+ arg_out->v_int8 = c_long_in;
+ return TRUE;
+ case GI_TYPE_TAG_UINT8:
+ arg_out->v_uint8 = c_long_in;
+ return TRUE;
+ case GI_TYPE_TAG_INT16:
+ arg_out->v_int16 = c_long_in;
+ return TRUE;
+ case GI_TYPE_TAG_UINT16:
+ arg_out->v_uint16 = c_long_in;
+ return TRUE;
+ case GI_TYPE_TAG_INT32:
+ arg_out->v_int32 = c_long_in;
+ return TRUE;
+ case GI_TYPE_TAG_UINT32:
+ arg_out->v_uint32 = c_long_in;
+ return TRUE;
+ case GI_TYPE_TAG_INT64:
+ arg_out->v_int64 = c_long_in;
+ return TRUE;
+ case GI_TYPE_TAG_UINT64:
+ arg_out->v_uint64 = c_long_in;
+ return TRUE;
+ default:
+ PyErr_Format (PyExc_TypeError,
+ "Unable to marshal C long %ld to %s",
+ c_long_in,
+ g_type_tag_to_string (type_tag));
+ return FALSE;
+ }
+}
+
+static gboolean
+gi_argument_to_c_long (GIArgument *arg_in,
+ long *c_long_out,
+ GITypeTag type_tag)
+{
+ switch (type_tag) {
+ case GI_TYPE_TAG_INT8:
+ *c_long_out = arg_in->v_int8;
+ return TRUE;
+ case GI_TYPE_TAG_UINT8:
+ *c_long_out = arg_in->v_uint8;
+ return TRUE;
+ case GI_TYPE_TAG_INT16:
+ *c_long_out = arg_in->v_int16;
+ return TRUE;
+ case GI_TYPE_TAG_UINT16:
+ *c_long_out = arg_in->v_uint16;
+ return TRUE;
+ case GI_TYPE_TAG_INT32:
+ *c_long_out = arg_in->v_int32;
+ return TRUE;
+ case GI_TYPE_TAG_UINT32:
+ *c_long_out = arg_in->v_uint32;
+ return TRUE;
+ case GI_TYPE_TAG_INT64:
+ *c_long_out = arg_in->v_int64;
+ return TRUE;
+ case GI_TYPE_TAG_UINT64:
+ *c_long_out = arg_in->v_uint64;
+ return TRUE;
+ default:
+ PyErr_Format (PyExc_TypeError,
+ "Unable to marshal %s to C long",
+ g_type_tag_to_string (type_tag));
+ return FALSE;
+ }
+}
+
+static gboolean
+_pygi_marshal_from_py_interface_enum (PyGIInvokeState *state,
+ PyGICallableCache *callable_cache,
+ PyGIArgCache *arg_cache,
+ PyObject *py_arg,
+ GIArgument *arg,
+ gpointer *cleanup_data)
+{
+ PyObject *py_long;
+ long c_long;
+ gint is_instance;
+ PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
+ GIBaseInfo *interface = NULL;
+
+ is_instance = PyObject_IsInstance (py_arg, iface_cache->py_type);
+
+ py_long = PYGLIB_PyNumber_Long (py_arg);
+ if (py_long == NULL) {
+ PyErr_Clear();
+ goto err;
+ }
+
+ c_long = PYGLIB_PyLong_AsLong (py_long);
+ Py_DECREF (py_long);
+
+ /* Write c_long into arg */
+ interface = g_type_info_get_interface (arg_cache->type_info);
+ assert(g_base_info_get_type (interface) == GI_INFO_TYPE_ENUM);
+ if (!gi_argument_from_c_long(arg,
+ c_long,
+ g_enum_info_get_storage_type ((GIEnumInfo *)interface))) {
+ g_assert_not_reached();
+ g_base_info_unref (interface);
+ return FALSE;
+ }
+
+ /* If this is not an instance of the Enum type that we want
+ * we need to check if the value is equivilant to one of the
+ * Enum's memebers */
+ if (!is_instance) {
+ int i;
+ gboolean is_found = FALSE;
+
+ for (i = 0; i < g_enum_info_get_n_values (iface_cache->interface_info); i++) {
+ GIValueInfo *value_info =
+ g_enum_info_get_value (iface_cache->interface_info, i);
+ glong enum_value = g_value_info_get_value (value_info);
+ g_base_info_unref ( (GIBaseInfo *)value_info);
+ if (c_long == enum_value) {
+ is_found = TRUE;
+ break;
+ }
+ }
+
+ if (!is_found)
+ goto err;
+ }
+
+ g_base_info_unref (interface);
+ return TRUE;
+
+err:
+ if (interface)
+ g_base_info_unref (interface);
+ PyErr_Format (PyExc_TypeError, "Expected a %s, but got %s",
+ iface_cache->type_name, py_arg->ob_type->tp_name);
+ return FALSE;
+}
+
+static gboolean
+_pygi_marshal_from_py_interface_flags (PyGIInvokeState *state,
+ PyGICallableCache *callable_cache,
+ PyGIArgCache *arg_cache,
+ PyObject *py_arg,
+ GIArgument *arg,
+ gpointer *cleanup_data)
+{
+ PyObject *py_long;
+ long c_long;
+ gint is_instance;
+ PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
+ GIBaseInfo *interface;
+
+ is_instance = PyObject_IsInstance (py_arg, iface_cache->py_type);
+
+ py_long = PYGLIB_PyNumber_Long (py_arg);
+ if (py_long == NULL) {
+ PyErr_Clear ();
+ goto err;
+ }
+
+ c_long = PYGLIB_PyLong_AsLong (py_long);
+ Py_DECREF (py_long);
+
+ /* only 0 or argument of type Flag is allowed */
+ if (!is_instance && c_long != 0)
+ goto err;
+
+ /* Write c_long into arg */
+ interface = g_type_info_get_interface (arg_cache->type_info);
+ g_assert (g_base_info_get_type (interface) == GI_INFO_TYPE_FLAGS);
+ if (!gi_argument_from_c_long(arg, c_long,
+ g_enum_info_get_storage_type ((GIEnumInfo *)interface))) {
+ g_base_info_unref (interface);
+ return FALSE;
+ }
+
+ g_base_info_unref (interface);
+ return TRUE;
+
+err:
+ PyErr_Format (PyExc_TypeError, "Expected a %s, but got %s",
+ iface_cache->type_name, py_arg->ob_type->tp_name);
+ return FALSE;
+
+}
+
+static PyObject *
+_pygi_marshal_to_py_interface_enum (PyGIInvokeState *state,
+ PyGICallableCache *callable_cache,
+ PyGIArgCache *arg_cache,
+ GIArgument *arg)
+{
+ PyObject *py_obj = NULL;
+ PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
+ GIBaseInfo *interface;
+ long c_long;
+
+ interface = g_type_info_get_interface (arg_cache->type_info);
+ g_assert (g_base_info_get_type (interface) == GI_INFO_TYPE_ENUM);
+
+ if (!gi_argument_to_c_long(arg, &c_long,
+ g_enum_info_get_storage_type ((GIEnumInfo *)interface))) {
+ return NULL;
+ }
+
+ if (iface_cache->g_type == G_TYPE_NONE) {
+ py_obj = PyObject_CallFunction (iface_cache->py_type, "l", c_long);
+ } else {
+ py_obj = pyg_enum_from_gtype (iface_cache->g_type, c_long);
+ }
+ g_base_info_unref (interface);
+ return py_obj;
+}
+
+static PyObject *
+_pygi_marshal_to_py_interface_flags (PyGIInvokeState *state,
+ PyGICallableCache *callable_cache,
+ PyGIArgCache *arg_cache,
+ GIArgument *arg)
+{
+ PyObject *py_obj = NULL;
+ PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
+ GIBaseInfo *interface;
+ long c_long;
+
+ interface = g_type_info_get_interface (arg_cache->type_info);
+ g_assert (g_base_info_get_type (interface) == GI_INFO_TYPE_FLAGS);
+
+ if (!gi_argument_to_c_long(arg, &c_long,
+ g_enum_info_get_storage_type ((GIEnumInfo *)interface))) {
+ g_base_info_unref (interface);
+ return NULL;
+ }
+
+ g_base_info_unref (interface);
+ if (iface_cache->g_type == G_TYPE_NONE) {
+ /* An enum with a GType of None is an enum without GType */
+
+ PyObject *py_type = _pygi_type_import_by_gi_info (iface_cache->interface_info);
+ PyObject *py_args = NULL;
+
+ if (!py_type)
+ return NULL;
+
+ py_args = PyTuple_New (1);
+ if (PyTuple_SetItem (py_args, 0, PyLong_FromLong (c_long)) != 0) {
+ Py_DECREF (py_args);
+ Py_DECREF (py_type);
+ return NULL;
+ }
+
+ py_obj = PyObject_CallFunction (py_type, "l", c_long);
+
+ Py_DECREF (py_args);
+ Py_DECREF (py_type);
+ } else {
+ py_obj = pyg_flags_from_gtype (iface_cache->g_type, c_long);
+ }
+
+ return py_obj;
+}
+
+static gboolean
+pygi_arg_enum_setup_from_info (PyGIArgCache *arg_cache,
+ GITypeInfo *type_info,
+ GIArgInfo *arg_info,
+ GITransfer transfer,
+ PyGIDirection direction)
+{
+ if (direction & PYGI_DIRECTION_FROM_PYTHON)
+ arg_cache->from_py_marshaller = _pygi_marshal_from_py_interface_enum;
+
+ if (direction & PYGI_DIRECTION_TO_PYTHON)
+ arg_cache->to_py_marshaller = _pygi_marshal_to_py_interface_enum;
+
+ return TRUE;
+}
+
+
+PyGIArgCache *
+pygi_arg_enum_new_from_info (GITypeInfo *type_info,
+ GIArgInfo *arg_info,
+ GITransfer transfer,
+ PyGIDirection direction,
+ GIInterfaceInfo *iface_info)
+{
+ gboolean res = FALSE;
+ PyGIArgCache *cache = NULL;
+
+ cache = pygi_arg_interface_new_from_info (type_info,
+ arg_info,
+ transfer,
+ direction,
+ iface_info);
+ if (cache == NULL)
+ return NULL;
+
+ res = pygi_arg_enum_setup_from_info (cache,
+ type_info,
+ arg_info,
+ transfer,
+ direction);
+ if (res) {
+ return cache;
+ } else {
+ pygi_arg_cache_free (cache);
+ return NULL;
+ }
+}
+
+static gboolean
+pygi_arg_flags_setup_from_info (PyGIArgCache *arg_cache,
+ GITypeInfo *type_info,
+ GIArgInfo *arg_info,
+ GITransfer transfer,
+ PyGIDirection direction)
+{
+ if (direction & PYGI_DIRECTION_FROM_PYTHON)
+ arg_cache->from_py_marshaller = _pygi_marshal_from_py_interface_flags;
+
+ if (direction & PYGI_DIRECTION_TO_PYTHON)
+ arg_cache->to_py_marshaller = _pygi_marshal_to_py_interface_flags;
+
+ return TRUE;
+}
+
+
+PyGIArgCache *
+pygi_arg_flags_new_from_info (GITypeInfo *type_info,
+ GIArgInfo *arg_info,
+ GITransfer transfer,
+ PyGIDirection direction,
+ GIInterfaceInfo *iface_info)
+{
+ gboolean res = FALSE;
+ PyGIArgCache *cache = NULL;
+
+ cache = pygi_arg_interface_new_from_info (type_info,
+ arg_info,
+ transfer,
+ direction,
+ iface_info);
+ if (cache == NULL)
+ return NULL;
+
+ res = pygi_arg_flags_setup_from_info (cache,
+ type_info,
+ arg_info,
+ transfer,
+ direction);
+ if (res) {
+ return cache;
+ } else {
+ pygi_arg_cache_free (cache);
+ return NULL;
+ }
+}
diff --git a/gi/pygi-enum-marshal.h b/gi/pygi-enum-marshal.h
new file mode 100644
index 0000000..2fdcbc4
--- /dev/null
+++ b/gi/pygi-enum-marshal.h
@@ -0,0 +1,42 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * Copyright (C) 2014 Simon Feltman <sfeltman@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, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __PYGI_ENUM_MARSHAL_H__
+#define __PYGI_ENUM_MARSHAL_H__
+
+#include <girepository.h>
+#include "pygi-cache.h"
+
+G_BEGIN_DECLS
+
+PyGIArgCache *pygi_arg_enum_new_from_info (GITypeInfo *type_info,
+ GIArgInfo *arg_info, /* may be null */
+ GITransfer transfer,
+ PyGIDirection direction,
+ GIInterfaceInfo *iface_info);
+
+PyGIArgCache *pygi_arg_flags_new_from_info (GITypeInfo *type_info,
+ GIArgInfo *arg_info, /* may be null */
+ GITransfer transfer,
+ PyGIDirection direction,
+ GIInterfaceInfo *iface_info);
+
+G_END_DECLS
+
+#endif /*__PYGI_ENUM_MARSHAL_H__*/
diff --git a/gi/pygi-error.c b/gi/pygi-error.c
new file mode 100644
index 0000000..349bb7e
--- /dev/null
+++ b/gi/pygi-error.c
@@ -0,0 +1,109 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>
+ * Copyright (C) 2014 Simon Feltman <sfeltman@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, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "pyglib.h"
+#include "pygi-private.h"
+#include "pygi-error.h"
+
+
+static gboolean
+_pygi_marshal_from_py_gerror (PyGIInvokeState *state,
+ PyGICallableCache *callable_cache,
+ PyGIArgCache *arg_cache,
+ PyObject *py_arg,
+ GIArgument *arg,
+ gpointer *cleanup_data)
+{
+ PyErr_Format (PyExc_NotImplementedError,
+ "Marshalling for GErrors is not implemented");
+ return FALSE;
+}
+
+static PyObject *
+_pygi_marshal_to_py_gerror (PyGIInvokeState *state,
+ PyGICallableCache *callable_cache,
+ PyGIArgCache *arg_cache,
+ GIArgument *arg)
+{
+ GError *error = arg->v_pointer;
+ PyObject *py_obj = NULL;
+
+ py_obj = pyglib_error_marshal(&error);
+
+ if (arg_cache->transfer == GI_TRANSFER_EVERYTHING && error != NULL) {
+ g_error_free (error);
+ }
+
+ if (py_obj != NULL) {
+ return py_obj;
+ } else {
+ Py_RETURN_NONE;
+ }
+}
+
+static gboolean
+pygi_arg_gerror_setup_from_info (PyGIArgCache *arg_cache,
+ GITypeInfo *type_info,
+ GIArgInfo *arg_info,
+ GITransfer transfer,
+ PyGIDirection direction)
+{
+ if (!pygi_arg_base_setup (arg_cache, type_info, arg_info, transfer, direction)) {
+ return FALSE;
+ }
+
+ if (direction & PYGI_DIRECTION_FROM_PYTHON) {
+ arg_cache->from_py_marshaller = _pygi_marshal_from_py_gerror;
+ arg_cache->meta_type = PYGI_META_ARG_TYPE_CHILD;
+ }
+
+ if (direction & PYGI_DIRECTION_TO_PYTHON) {
+ arg_cache->to_py_marshaller = _pygi_marshal_to_py_gerror;
+ arg_cache->meta_type = PYGI_META_ARG_TYPE_CHILD;
+ }
+
+ return TRUE;
+}
+
+PyGIArgCache *
+pygi_arg_gerror_new_from_info (GITypeInfo *type_info,
+ GIArgInfo *arg_info,
+ GITransfer transfer,
+ PyGIDirection direction)
+{
+ gboolean res = FALSE;
+ PyGIArgCache *arg_cache = NULL;
+
+ arg_cache = pygi_arg_cache_alloc ();
+ if (arg_cache == NULL)
+ return NULL;
+
+ res = pygi_arg_gerror_setup_from_info (arg_cache,
+ type_info,
+ arg_info,
+ transfer,
+ direction);
+ if (res) {
+ return arg_cache;
+ } else {
+ pygi_arg_cache_free (arg_cache);
+ return NULL;
+ }
+}
diff --git a/gi/pygi-error.h b/gi/pygi-error.h
new file mode 100644
index 0000000..fdeb32f
--- /dev/null
+++ b/gi/pygi-error.h
@@ -0,0 +1,35 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * Copyright (C) 2014 Simon Feltman <sfeltman@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, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __PYGI_ERROR_H__
+#define __PYGI_ERROR_H__
+
+#include <girepository.h>
+#include "pygi-cache.h"
+
+G_BEGIN_DECLS
+
+PyGIArgCache *pygi_arg_gerror_new_from_info (GITypeInfo *type_info,
+ GIArgInfo *arg_info, /* may be null */
+ GITransfer transfer,
+ PyGIDirection direction);
+
+G_END_DECLS
+
+#endif /*__PYGI_ERROR_H__*/
diff --git a/gi/pygi-foreign.c b/gi/pygi-foreign.c
index 7537399..c046d0f 100644
--- a/gi/pygi-foreign.c
+++ b/gi/pygi-foreign.c
@@ -26,7 +26,7 @@
# include <config.h>
#endif
-#include "pygobject.h"
+#include "pygobject-private.h"
#include "pygi-foreign.h"
#include <girepository.h>
diff --git a/gi/pygi-hashtable.c b/gi/pygi-hashtable.c
new file mode 100644
index 0000000..f7d5e74
--- /dev/null
+++ b/gi/pygi-hashtable.c
@@ -0,0 +1,413 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>
+ * Copyright (C) 2014 Simon Feltman <sfeltman@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, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "pygi-hashtable.h"
+#include "pygi-argument.h"
+#include "pygi-private.h"
+
+typedef struct _PyGIHashCache
+{
+ PyGIArgCache arg_cache;
+ PyGIArgCache *key_cache;
+ PyGIArgCache *value_cache;
+} PyGIHashCache;
+
+
+static void
+_hash_cache_free_func (PyGIHashCache *cache)
+{
+ if (cache != NULL) {
+ pygi_arg_cache_free (cache->key_cache);
+ pygi_arg_cache_free (cache->value_cache);
+ g_slice_free (PyGIHashCache, cache);
+ }
+}
+
+static gboolean
+_pygi_marshal_from_py_ghash (PyGIInvokeState *state,
+ PyGICallableCache *callable_cache,
+ PyGIArgCache *arg_cache,
+ PyObject *py_arg,
+ GIArgument *arg,
+ gpointer *cleanup_data)
+{
+ PyGIMarshalFromPyFunc key_from_py_marshaller;
+ PyGIMarshalFromPyFunc value_from_py_marshaller;
+
+ int i;
+ Py_ssize_t length;
+ PyObject *py_keys, *py_values;
+
+ GHashFunc hash_func;
+ GEqualFunc equal_func;
+
+ GHashTable *hash_ = NULL;
+ PyGIHashCache *hash_cache = (PyGIHashCache *)arg_cache;
+
+ if (py_arg == Py_None) {
+ arg->v_pointer = NULL;
+ return TRUE;
+ }
+
+ py_keys = PyMapping_Keys (py_arg);
+ if (py_keys == NULL) {
+ PyErr_Format (PyExc_TypeError, "Must be mapping, not %s",
+ py_arg->ob_type->tp_name);
+ return FALSE;
+ }
+
+ length = PyMapping_Length (py_arg);
+ if (length < 0) {
+ Py_DECREF (py_keys);
+ return FALSE;
+ }
+
+ py_values = PyMapping_Values (py_arg);
+ if (py_values == NULL) {
+ Py_DECREF (py_keys);
+ return FALSE;
+ }
+
+ key_from_py_marshaller = hash_cache->key_cache->from_py_marshaller;
+ value_from_py_marshaller = hash_cache->value_cache->from_py_marshaller;
+
+ switch (hash_cache->key_cache->type_tag) {
+ case GI_TYPE_TAG_UTF8:
+ case GI_TYPE_TAG_FILENAME:
+ hash_func = g_str_hash;
+ equal_func = g_str_equal;
+ break;
+ default:
+ hash_func = NULL;
+ equal_func = NULL;
+ }
+
+ hash_ = g_hash_table_new (hash_func, equal_func);
+ if (hash_ == NULL) {
+ PyErr_NoMemory ();
+ Py_DECREF (py_keys);
+ Py_DECREF (py_values);
+ return FALSE;
+ }
+
+ for (i = 0; i < length; i++) {
+ GIArgument key, value;
+ gpointer key_cleanup_data = NULL;
+ gpointer value_cleanup_data = NULL;
+ PyObject *py_key = PyList_GET_ITEM (py_keys, i);
+ PyObject *py_value = PyList_GET_ITEM (py_values, i);
+ if (py_key == NULL || py_value == NULL)
+ goto err;
+
+ if (!key_from_py_marshaller ( state,
+ callable_cache,
+ hash_cache->key_cache,
+ py_key,
+ &key,
+ &key_cleanup_data))
+ goto err;
+
+ if (!value_from_py_marshaller ( state,
+ callable_cache,
+ hash_cache->value_cache,
+ py_value,
+ &value,
+ &value_cleanup_data))
+ goto err;
+
+ g_hash_table_insert (hash_,
+ _pygi_arg_to_hash_pointer (&key, hash_cache->key_cache->type_tag),
+ _pygi_arg_to_hash_pointer (&value, hash_cache->value_cache->type_tag));
+ continue;
+err:
+ /* FIXME: cleanup hash keys and values */
+ Py_XDECREF (py_key);
+ Py_XDECREF (py_value);
+ Py_DECREF (py_keys);
+ Py_DECREF (py_values);
+ g_hash_table_unref (hash_);
+ _PyGI_ERROR_PREFIX ("Item %i: ", i);
+ return FALSE;
+ }
+
+ arg->v_pointer = hash_;
+
+ if (arg_cache->transfer == GI_TRANSFER_NOTHING) {
+ /* Free everything in cleanup. */
+ *cleanup_data = arg->v_pointer;
+ } else if (arg_cache->transfer == GI_TRANSFER_CONTAINER) {
+ /* Make a shallow copy so we can free the elements later in cleanup
+ * because it is possible invoke will free the list before our cleanup. */
+ *cleanup_data = g_hash_table_ref (arg->v_pointer);
+ } else { /* GI_TRANSFER_EVERYTHING */
+ /* No cleanup, everything is given to the callee.
+ * Note that the keys and values will leak for transfer everything because
+ * we do not use g_hash_table_new_full and set key/value_destroy_func. */
+ *cleanup_data = NULL;
+ }
+
+ return TRUE;
+}
+
+static void
+_pygi_marshal_cleanup_from_py_ghash (PyGIInvokeState *state,
+ PyGIArgCache *arg_cache,
+ PyObject *py_arg,
+ gpointer data,
+ gboolean was_processed)
+{
+ if (data == NULL)
+ return;
+
+ if (was_processed) {
+ GHashTable *hash_;
+ PyGIHashCache *hash_cache = (PyGIHashCache *)arg_cache;
+
+ hash_ = (GHashTable *)data;
+
+ /* clean up keys and values first */
+ if (hash_cache->key_cache->from_py_cleanup != NULL ||
+ hash_cache->value_cache->from_py_cleanup != NULL) {
+ GHashTableIter hiter;
+ gpointer key;
+ gpointer value;
+
+ PyGIMarshalCleanupFunc key_cleanup_func =
+ hash_cache->key_cache->from_py_cleanup;
+ PyGIMarshalCleanupFunc value_cleanup_func =
+ hash_cache->value_cache->from_py_cleanup;
+
+ g_hash_table_iter_init (&hiter, hash_);
+ while (g_hash_table_iter_next (&hiter, &key, &value)) {
+ if (key != NULL && key_cleanup_func != NULL)
+ key_cleanup_func (state,
+ hash_cache->key_cache,
+ NULL,
+ key,
+ TRUE);
+ if (value != NULL && value_cleanup_func != NULL)
+ value_cleanup_func (state,
+ hash_cache->value_cache,
+ NULL,
+ value,
+ TRUE);
+ }
+ }
+
+ g_hash_table_unref (hash_);
+ }
+}
+
+static PyObject *
+_pygi_marshal_to_py_ghash (PyGIInvokeState *state,
+ PyGICallableCache *callable_cache,
+ PyGIArgCache *arg_cache,
+ GIArgument *arg)
+{
+ GHashTable *hash_;
+ GHashTableIter hash_table_iter;
+
+ PyGIMarshalToPyFunc key_to_py_marshaller;
+ PyGIMarshalToPyFunc value_to_py_marshaller;
+
+ PyGIArgCache *key_arg_cache;
+ PyGIArgCache *value_arg_cache;
+ PyGIHashCache *hash_cache = (PyGIHashCache *)arg_cache;
+
+ GIArgument key_arg;
+ GIArgument value_arg;
+
+ PyObject *py_obj = NULL;
+
+ hash_ = arg->v_pointer;
+
+ if (hash_ == NULL) {
+ py_obj = Py_None;
+ Py_INCREF (py_obj);
+ return py_obj;
+ }
+
+ py_obj = PyDict_New ();
+ if (py_obj == NULL)
+ return NULL;
+
+ key_arg_cache = hash_cache->key_cache;
+ key_to_py_marshaller = key_arg_cache->to_py_marshaller;
+
+ value_arg_cache = hash_cache->value_cache;
+ value_to_py_marshaller = value_arg_cache->to_py_marshaller;
+
+ g_hash_table_iter_init (&hash_table_iter, hash_);
+ while (g_hash_table_iter_next (&hash_table_iter,
+ &key_arg.v_pointer,
+ &value_arg.v_pointer)) {
+ PyObject *py_key;
+ PyObject *py_value;
+ int retval;
+
+
+ _pygi_hash_pointer_to_arg (&key_arg, hash_cache->key_cache->type_tag);
+ py_key = key_to_py_marshaller ( state,
+ callable_cache,
+ key_arg_cache,
+ &key_arg);
+
+ if (py_key == NULL) {
+ Py_CLEAR (py_obj);
+ return NULL;
+ }
+
+ _pygi_hash_pointer_to_arg (&value_arg, hash_cache->value_cache->type_tag);
+ py_value = value_to_py_marshaller ( state,
+ callable_cache,
+ value_arg_cache,
+ &value_arg);
+
+ if (py_value == NULL) {
+ Py_CLEAR (py_obj);
+ Py_DECREF(py_key);
+ return NULL;
+ }
+
+ retval = PyDict_SetItem (py_obj, py_key, py_value);
+
+ Py_DECREF (py_key);
+ Py_DECREF (py_value);
+
+ if (retval < 0) {
+ Py_CLEAR (py_obj);
+ return NULL;
+ }
+ }
+
+ return py_obj;
+}
+
+static void
+_pygi_marshal_cleanup_to_py_ghash (PyGIInvokeState *state,
+ PyGIArgCache *arg_cache,
+ PyObject *dummy,
+ gpointer data,
+ gboolean was_processed)
+{
+ if (data == NULL)
+ return;
+
+ /* assume hashtable has boxed key and value */
+ if (arg_cache->transfer == GI_TRANSFER_EVERYTHING || arg_cache->transfer == GI_TRANSFER_CONTAINER)
+ g_hash_table_unref ( (GHashTable *)data);
+}
+
+static void
+_arg_cache_from_py_ghash_setup (PyGIArgCache *arg_cache)
+{
+ arg_cache->from_py_marshaller = _pygi_marshal_from_py_ghash;
+ arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_ghash;
+}
+
+static void
+_arg_cache_to_py_ghash_setup (PyGIArgCache *arg_cache)
+{
+ arg_cache->to_py_marshaller = _pygi_marshal_to_py_ghash;
+ arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_ghash;
+}
+
+static gboolean
+pygi_arg_hash_table_setup_from_info (PyGIHashCache *hc,
+ GITypeInfo *type_info,
+ GIArgInfo *arg_info,
+ GITransfer transfer,
+ PyGIDirection direction)
+{
+ GITypeInfo *key_type_info;
+ GITypeInfo *value_type_info;
+ GITransfer item_transfer;
+
+ if (!pygi_arg_base_setup ((PyGIArgCache *)hc, type_info, arg_info, transfer, direction))
+ return FALSE;
+
+ ( (PyGIArgCache *)hc)->destroy_notify = (GDestroyNotify)_hash_cache_free_func;
+ key_type_info = g_type_info_get_param_type (type_info, 0);
+ value_type_info = g_type_info_get_param_type (type_info, 1);
+
+ item_transfer =
+ transfer == GI_TRANSFER_CONTAINER ? GI_TRANSFER_NOTHING : transfer;
+
+ hc->key_cache = pygi_arg_cache_new (key_type_info,
+ NULL,
+ item_transfer,
+ direction,
+ 0, 0,
+ NULL);
+
+ if (hc->key_cache == NULL) {
+ return FALSE;
+ }
+
+ hc->value_cache = pygi_arg_cache_new (value_type_info,
+ NULL,
+ item_transfer,
+ direction,
+ 0, 0,
+ NULL);
+
+ if (hc->value_cache == NULL) {
+ return FALSE;
+ }
+
+ g_base_info_unref( (GIBaseInfo *)key_type_info);
+ g_base_info_unref( (GIBaseInfo *)value_type_info);
+
+ if (direction & PYGI_DIRECTION_FROM_PYTHON) {
+ _arg_cache_from_py_ghash_setup ((PyGIArgCache *)hc);
+ }
+
+ if (direction & PYGI_DIRECTION_TO_PYTHON) {
+ _arg_cache_to_py_ghash_setup ((PyGIArgCache *)hc);
+ }
+
+ return TRUE;
+}
+
+PyGIArgCache *
+pygi_arg_hash_table_new_from_info (GITypeInfo *type_info,
+ GIArgInfo *arg_info,
+ GITransfer transfer,
+ PyGIDirection direction)
+{
+ gboolean res = FALSE;
+ PyGIHashCache *hc = NULL;
+
+ hc = g_slice_new0 (PyGIHashCache);
+ if (hc == NULL)
+ return NULL;
+
+ res = pygi_arg_hash_table_setup_from_info (hc,
+ type_info,
+ arg_info,
+ transfer,
+ direction);
+ if (res) {
+ return (PyGIArgCache *)hc;
+ } else {
+ pygi_arg_cache_free ((PyGIArgCache *)hc);
+ return NULL;
+ }
+}
diff --git a/gi/pygi-hashtable.h b/gi/pygi-hashtable.h
new file mode 100644
index 0000000..a42aaf0
--- /dev/null
+++ b/gi/pygi-hashtable.h
@@ -0,0 +1,35 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * Copyright (C) 2013 Simon Feltman <sfeltman@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, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __PYGI_HASHTABLE_H__
+#define __PYGI_HASHTABLE_H__
+
+#include <girepository.h>
+#include "pygi-cache.h"
+
+G_BEGIN_DECLS
+
+PyGIArgCache *pygi_arg_hash_table_new_from_info (GITypeInfo *type_info,
+ GIArgInfo *arg_info, /* may be null */
+ GITransfer transfer,
+ PyGIDirection direction);
+
+G_END_DECLS
+
+#endif /*__PYGI_HASHTABLE_H__*/
diff --git a/gi/pygi-info.c b/gi/pygi-info.c
index af893ec..ffc9d4f 100644
--- a/gi/pygi-info.c
+++ b/gi/pygi-info.c
@@ -24,8 +24,8 @@
#include "pygi-private.h"
#include "pygi-cache.h"
+#include "pygobject-private.h"
-#include <pygobject.h>
#include <pyglib-python-compat.h>
@@ -177,7 +177,7 @@ _base_info_dealloc (PyGIBaseInfo *self)
g_base_info_unref (self->info);
- _pygi_callable_cache_free(self->cache);
+ pygi_callable_cache_free(self->cache);
Py_TYPE( (PyObject *) self)->tp_free ( (PyObject *) self);
}
diff --git a/gi/pygi-invoke.c b/gi/pygi-invoke.c
index 675b0ef..1d89912 100644
--- a/gi/pygi-invoke.c
+++ b/gi/pygi-invoke.c
@@ -422,9 +422,9 @@ static gboolean _caller_alloc (PyGIInvokeState *state,
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;
+ PyGIArgGArray *array_cache = (PyGIArgGArray *)arg_cache;
- state->out_args[out_count].v_pointer = g_array_new (TRUE, TRUE, seq_cache->item_size);
+ state->out_args[out_count].v_pointer = g_array_new (TRUE, TRUE, array_cache->item_size);
state->args[arg_count] = &state->out_args[out_count];
} else {
return FALSE;
@@ -720,7 +720,7 @@ _wrap_g_callable_info_invoke (PyGIBaseInfo *self, PyObject *py_args,
PyObject *kwargs)
{
if (self->cache == NULL) {
- self->cache = _pygi_callable_cache_new (self->info, FALSE);
+ self->cache = pygi_callable_cache_new (self->info, FALSE);
if (self->cache == NULL)
return NULL;
}
diff --git a/gi/pygi-list.c b/gi/pygi-list.c
new file mode 100644
index 0000000..af2afd8
--- /dev/null
+++ b/gi/pygi-list.c
@@ -0,0 +1,466 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>
+ * Copyright (C) 2014 Simon Feltman <sfeltman@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, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "pygi-list.h"
+#include "pygi-argument.h"
+#include "pygi-private.h"
+
+typedef PyGISequenceCache PyGIArgGList;
+
+/*
+ * GList and GSList from Python
+ */
+static gboolean
+_pygi_marshal_from_py_glist (PyGIInvokeState *state,
+ PyGICallableCache *callable_cache,
+ PyGIArgCache *arg_cache,
+ PyObject *py_arg,
+ GIArgument *arg,
+ gpointer *cleanup_data)
+{
+ PyGIMarshalFromPyFunc from_py_marshaller;
+ int i;
+ Py_ssize_t length;
+ GList *list_ = NULL;
+ PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
+
+
+ if (py_arg == Py_None) {
+ arg->v_pointer = NULL;
+ return TRUE;
+ }
+
+ if (!PySequence_Check (py_arg)) {
+ PyErr_Format (PyExc_TypeError, "Must be sequence, not %s",
+ py_arg->ob_type->tp_name);
+ return FALSE;
+ }
+
+ length = PySequence_Length (py_arg);
+ if (length < 0)
+ return FALSE;
+
+ from_py_marshaller = sequence_cache->item_cache->from_py_marshaller;
+ for (i = 0; i < length; i++) {
+ GIArgument item = {0};
+ gpointer item_cleanup_data = NULL;
+ PyObject *py_item = PySequence_GetItem (py_arg, i);
+ if (py_item == NULL)
+ goto err;
+
+ if (!from_py_marshaller ( state,
+ callable_cache,
+ sequence_cache->item_cache,
+ py_item,
+ &item,
+ &item_cleanup_data))
+ goto err;
+
+ Py_DECREF (py_item);
+ list_ = g_list_prepend (list_, _pygi_arg_to_hash_pointer (&item, sequence_cache->item_cache->type_tag));
+ continue;
+err:
+ /* FIXME: clean up list
+ if (sequence_cache->item_cache->from_py_cleanup != NULL) {
+ PyGIMarshalCleanupFunc cleanup = sequence_cache->item_cache->from_py_cleanup;
+ }
+ */
+ Py_DECREF (py_item);
+ g_list_free (list_);
+ _PyGI_ERROR_PREFIX ("Item %i: ", i);
+ return FALSE;
+ }
+
+ arg->v_pointer = g_list_reverse (list_);
+
+ if (arg_cache->transfer == GI_TRANSFER_NOTHING) {
+ /* Free everything in cleanup. */
+ *cleanup_data = arg->v_pointer;
+ } else if (arg_cache->transfer == GI_TRANSFER_CONTAINER) {
+ /* Make a shallow copy so we can free the elements later in cleanup
+ * because it is possible invoke will free the list before our cleanup. */
+ *cleanup_data = g_list_copy (arg->v_pointer);
+ } else { /* GI_TRANSFER_EVERYTHING */
+ /* No cleanup, everything is given to the callee. */
+ *cleanup_data = NULL;
+ }
+ return TRUE;
+}
+
+
+static gboolean
+_pygi_marshal_from_py_gslist (PyGIInvokeState *state,
+ PyGICallableCache *callable_cache,
+ PyGIArgCache *arg_cache,
+ PyObject *py_arg,
+ GIArgument *arg,
+ gpointer *cleanup_data)
+{
+ PyGIMarshalFromPyFunc from_py_marshaller;
+ int i;
+ Py_ssize_t length;
+ GSList *list_ = NULL;
+ PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
+
+ if (py_arg == Py_None) {
+ arg->v_pointer = NULL;
+ return TRUE;
+ }
+
+ if (!PySequence_Check (py_arg)) {
+ PyErr_Format (PyExc_TypeError, "Must be sequence, not %s",
+ py_arg->ob_type->tp_name);
+ return FALSE;
+ }
+
+ length = PySequence_Length (py_arg);
+ if (length < 0)
+ return FALSE;
+
+ from_py_marshaller = sequence_cache->item_cache->from_py_marshaller;
+ for (i = 0; i < length; i++) {
+ GIArgument item = {0};
+ gpointer item_cleanup_data = NULL;
+ PyObject *py_item = PySequence_GetItem (py_arg, i);
+ if (py_item == NULL)
+ goto err;
+
+ if (!from_py_marshaller ( state,
+ callable_cache,
+ sequence_cache->item_cache,
+ py_item,
+ &item,
+ &item_cleanup_data))
+ goto err;
+
+ Py_DECREF (py_item);
+ list_ = g_slist_prepend (list_, _pygi_arg_to_hash_pointer (&item, sequence_cache->item_cache->type_tag));
+ continue;
+err:
+ /* FIXME: Clean up list
+ if (sequence_cache->item_cache->from_py_cleanup != NULL) {
+ PyGIMarshalCleanupFunc cleanup = sequence_cache->item_cache->from_py_cleanup;
+ }
+ */
+
+ Py_DECREF (py_item);
+ g_slist_free (list_);
+ _PyGI_ERROR_PREFIX ("Item %i: ", i);
+ return FALSE;
+ }
+
+ arg->v_pointer = g_slist_reverse (list_);
+
+ if (arg_cache->transfer == GI_TRANSFER_NOTHING) {
+ /* Free everything in cleanup. */
+ *cleanup_data = arg->v_pointer;
+ } else if (arg_cache->transfer == GI_TRANSFER_CONTAINER) {
+ /* Make a shallow copy so we can free the elements later in cleanup
+ * because it is possible invoke will free the list before our cleanup. */
+ *cleanup_data = g_slist_copy (arg->v_pointer);
+ } else { /* GI_TRANSFER_EVERYTHING */
+ /* No cleanup, everything is given to the callee. */
+ *cleanup_data = NULL;
+ }
+
+ return TRUE;
+}
+
+static void
+_pygi_marshal_cleanup_from_py_glist (PyGIInvokeState *state,
+ PyGIArgCache *arg_cache,
+ PyObject *py_arg,
+ gpointer data,
+ gboolean was_processed)
+{
+ if (was_processed) {
+ GSList *list_;
+ PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
+
+ list_ = (GSList *)data;
+
+ /* clean up items first */
+ if (sequence_cache->item_cache->from_py_cleanup != NULL) {
+ PyGIMarshalCleanupFunc cleanup_func =
+ sequence_cache->item_cache->from_py_cleanup;
+ GSList *node = list_;
+ gsize i = 0;
+ while (node != NULL) {
+ PyObject *py_item = PySequence_GetItem (py_arg, i);
+ cleanup_func (state,
+ sequence_cache->item_cache,
+ py_item,
+ node->data,
+ TRUE);
+ Py_XDECREF (py_item);
+ node = node->next;
+ i++;
+ }
+ }
+
+ if (arg_cache->type_tag == GI_TYPE_TAG_GLIST) {
+ g_list_free ( (GList *)list_);
+ } else if (arg_cache->type_tag == GI_TYPE_TAG_GSLIST) {
+ g_slist_free (list_);
+ } else {
+ g_assert_not_reached();
+ }
+ }
+}
+
+
+/*
+ * GList and GSList to Python
+ */
+static PyObject *
+_pygi_marshal_to_py_glist (PyGIInvokeState *state,
+ PyGICallableCache *callable_cache,
+ PyGIArgCache *arg_cache,
+ GIArgument *arg)
+{
+ GList *list_;
+ gsize length;
+ gsize i;
+
+ PyGIMarshalToPyFunc item_to_py_marshaller;
+ PyGIArgCache *item_arg_cache;
+ PyGISequenceCache *seq_cache = (PyGISequenceCache *)arg_cache;
+
+ PyObject *py_obj = NULL;
+
+ list_ = arg->v_pointer;
+ length = g_list_length (list_);
+
+ py_obj = PyList_New (length);
+ if (py_obj == NULL)
+ return NULL;
+
+ item_arg_cache = seq_cache->item_cache;
+ item_to_py_marshaller = item_arg_cache->to_py_marshaller;
+
+ for (i = 0; list_ != NULL; list_ = g_list_next (list_), i++) {
+ GIArgument item_arg;
+ PyObject *py_item;
+
+ item_arg.v_pointer = list_->data;
+ _pygi_hash_pointer_to_arg (&item_arg, item_arg_cache->type_tag);
+ py_item = item_to_py_marshaller (state,
+ callable_cache,
+ item_arg_cache,
+ &item_arg);
+
+ if (py_item == NULL) {
+ Py_CLEAR (py_obj);
+ _PyGI_ERROR_PREFIX ("Item %zu: ", i);
+ return NULL;
+ }
+
+ PyList_SET_ITEM (py_obj, i, py_item);
+ }
+
+ return py_obj;
+}
+
+static PyObject *
+_pygi_marshal_to_py_gslist (PyGIInvokeState *state,
+ PyGICallableCache *callable_cache,
+ PyGIArgCache *arg_cache,
+ GIArgument *arg)
+{
+ GSList *list_;
+ gsize length;
+ gsize i;
+
+ PyGIMarshalToPyFunc item_to_py_marshaller;
+ PyGIArgCache *item_arg_cache;
+ PyGISequenceCache *seq_cache = (PyGISequenceCache *)arg_cache;
+
+ PyObject *py_obj = NULL;
+
+ list_ = arg->v_pointer;
+ length = g_slist_length (list_);
+
+ py_obj = PyList_New (length);
+ if (py_obj == NULL)
+ return NULL;
+
+ item_arg_cache = seq_cache->item_cache;
+ item_to_py_marshaller = item_arg_cache->to_py_marshaller;
+
+ for (i = 0; list_ != NULL; list_ = g_slist_next (list_), i++) {
+ GIArgument item_arg;
+ PyObject *py_item;
+
+ item_arg.v_pointer = list_->data;
+ _pygi_hash_pointer_to_arg (&item_arg, item_arg_cache->type_tag);
+ py_item = item_to_py_marshaller (state,
+ callable_cache,
+ item_arg_cache,
+ &item_arg);
+
+ if (py_item == NULL) {
+ Py_CLEAR (py_obj);
+ _PyGI_ERROR_PREFIX ("Item %zu: ", i);
+ return NULL;
+ }
+
+ PyList_SET_ITEM (py_obj, i, py_item);
+ }
+
+ return py_obj;
+}
+
+static void
+_pygi_marshal_cleanup_to_py_glist (PyGIInvokeState *state,
+ PyGIArgCache *arg_cache,
+ PyObject *dummy,
+ gpointer data,
+ gboolean was_processed)
+{
+ PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
+ if (arg_cache->transfer == GI_TRANSFER_EVERYTHING ||
+ arg_cache->transfer == GI_TRANSFER_CONTAINER) {
+ GSList *list_ = (GSList *)data;
+
+ if (sequence_cache->item_cache->to_py_cleanup != NULL) {
+ PyGIMarshalCleanupFunc cleanup_func =
+ sequence_cache->item_cache->to_py_cleanup;
+ GSList *node = list_;
+
+ while (node != NULL) {
+ cleanup_func (state,
+ sequence_cache->item_cache,
+ NULL,
+ node->data,
+ was_processed);
+ node = node->next;
+ }
+ }
+
+ if (arg_cache->type_tag == GI_TYPE_TAG_GLIST) {
+ g_list_free ( (GList *)list_);
+ } else if (arg_cache->type_tag == GI_TYPE_TAG_GSLIST) {
+ g_slist_free (list_);
+ } else {
+ g_assert_not_reached();
+ }
+ }
+}
+
+static void
+_arg_cache_from_py_glist_setup (PyGIArgCache *arg_cache,
+ GITransfer transfer)
+{
+ arg_cache->from_py_marshaller = _pygi_marshal_from_py_glist;
+ arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_glist;
+}
+
+static void
+_arg_cache_to_py_glist_setup (PyGIArgCache *arg_cache,
+ GITransfer transfer)
+{
+ arg_cache->to_py_marshaller = _pygi_marshal_to_py_glist;
+ arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_glist;
+}
+
+static void
+_arg_cache_from_py_gslist_setup (PyGIArgCache *arg_cache,
+ GITransfer transfer)
+{
+ arg_cache->from_py_marshaller = _pygi_marshal_from_py_gslist;
+ arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_glist;
+}
+
+static void
+_arg_cache_to_py_gslist_setup (PyGIArgCache *arg_cache,
+ GITransfer transfer)
+{
+ arg_cache->to_py_marshaller = _pygi_marshal_to_py_gslist;
+ arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_glist;
+}
+
+
+/*
+ * GList/GSList Interface
+ */
+
+static gboolean
+pygi_arg_glist_setup_from_info (PyGIArgCache *arg_cache,
+ GITypeInfo *type_info,
+ GIArgInfo *arg_info,
+ GITransfer transfer,
+ PyGIDirection direction)
+{
+ GITypeTag type_tag = g_type_info_get_tag (type_info);
+
+ if (!pygi_arg_sequence_setup ((PyGISequenceCache *)arg_cache, type_info, arg_info, transfer, direction))
+ return FALSE;
+
+ switch (type_tag) {
+ case GI_TYPE_TAG_GLIST:
+ {
+ if (direction & PYGI_DIRECTION_FROM_PYTHON)
+ _arg_cache_from_py_glist_setup (arg_cache, transfer);
+
+ if (direction & PYGI_DIRECTION_TO_PYTHON)
+ _arg_cache_to_py_glist_setup (arg_cache, transfer);
+ break;
+ }
+ case GI_TYPE_TAG_GSLIST:
+ {
+ if (direction & PYGI_DIRECTION_FROM_PYTHON)
+ _arg_cache_from_py_gslist_setup (arg_cache, transfer);
+
+ if (direction & PYGI_DIRECTION_TO_PYTHON)
+ _arg_cache_to_py_gslist_setup (arg_cache, transfer);
+
+ break;
+ }
+ default:
+ g_assert_not_reached ();
+ }
+
+ return TRUE;
+}
+
+PyGIArgCache *
+pygi_arg_glist_new_from_info (GITypeInfo *type_info,
+ GIArgInfo *arg_info,
+ GITransfer transfer,
+ PyGIDirection direction)
+{
+ gboolean res = FALSE;
+
+ PyGIArgCache *arg_cache = (PyGIArgCache *) g_slice_new0 (PyGIArgGList);
+ if (arg_cache == NULL)
+ return NULL;
+
+ res = pygi_arg_glist_setup_from_info (arg_cache,
+ type_info,
+ arg_info,
+ transfer,
+ direction);
+ if (res) {
+ return arg_cache;
+ } else {
+ pygi_arg_cache_free (arg_cache);
+ return NULL;
+ }
+}
diff --git a/gi/pygi-list.h b/gi/pygi-list.h
new file mode 100644
index 0000000..59f03b2
--- /dev/null
+++ b/gi/pygi-list.h
@@ -0,0 +1,38 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * Copyright (C) 2014 Simon Feltman <sfeltman@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, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __PYGI_LIST_H__
+#define __PYGI_LIST_H__
+
+#include <girepository.h>
+#include "pygi-cache.h"
+
+G_BEGIN_DECLS
+
+PyGIArgCache *pygi_arg_glist_new_from_info (GITypeInfo *type_info,
+ GIArgInfo *arg_info, /* may be null */
+ GITransfer transfer,
+ PyGIDirection direction);
+
+/* Internally dispatches GList and GSList */
+#define pygi_arg_gslist_new_from_info pygi_arg_glist_new_from_info
+
+G_END_DECLS
+
+#endif /*__PYGI_LIST_H__*/
diff --git a/gi/pygi-marshal-cleanup.c b/gi/pygi-marshal-cleanup.c
index 33d0339..3d82601 100644
--- a/gi/pygi-marshal-cleanup.c
+++ b/gi/pygi-marshal-cleanup.c
@@ -205,409 +205,3 @@ pygi_marshal_cleanup_args_to_py_parameter_fail (PyGIInvokeState *state,
{
state->failed = TRUE;
}
-
-void
-_pygi_marshal_cleanup_from_py_utf8 (PyGIInvokeState *state,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- gpointer data,
- gboolean was_processed)
-{
- /* We strdup strings so free unless ownership is transferred to C. */
- if (was_processed && arg_cache->transfer == GI_TRANSFER_NOTHING)
- g_free (data);
-}
-
-void
-_pygi_marshal_cleanup_to_py_utf8 (PyGIInvokeState *state,
- PyGIArgCache *arg_cache,
- PyObject *dummy,
- gpointer data,
- gboolean was_processed)
-{
- /* Python copies the string so we need to free it
- if the interface is transfering ownership,
- whether or not it has been processed yet */
- if (arg_cache->transfer == GI_TRANSFER_EVERYTHING)
- g_free (data);
-}
-
-void
-_pygi_marshal_cleanup_from_py_interface_object (PyGIInvokeState *state,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- gpointer data,
- gboolean was_processed)
-{
- /* If we processed the parameter but fail before invoking the method,
- we need to remove the ref we added */
- if (was_processed && state->failed && data != NULL &&
- arg_cache->transfer == GI_TRANSFER_EVERYTHING)
- g_object_unref (G_OBJECT(data));
-}
-
-void
-_pygi_marshal_cleanup_to_py_interface_object (PyGIInvokeState *state,
- PyGIArgCache *arg_cache,
- PyObject *dummy,
- gpointer data,
- gboolean was_processed)
-{
- /* If we error out and the object is not marshalled into a PyGObject
- we must take care of removing the ref */
- if (!was_processed && arg_cache->transfer == GI_TRANSFER_EVERYTHING)
- g_object_unref (G_OBJECT(data));
-}
-
-
-void
-_pygi_marshal_cleanup_from_py_interface_callback (PyGIInvokeState *state,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- 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 (data);
- }
-}
-
-void
-_pygi_marshal_cleanup_from_py_interface_struct_gvalue (PyGIInvokeState *state,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- gpointer data,
- gboolean was_processed)
-{
- /* Note py_arg can be NULL for hash table which is a bug. */
- if (was_processed && py_arg != NULL) {
- GType py_object_type =
- pyg_type_from_object_strict ( (PyObject *) py_arg->ob_type, FALSE);
-
- /* When a GValue was not passed, it means the marshalers created a new
- * one to pass in, clean this up.
- */
- if (py_object_type != G_TYPE_VALUE) {
- g_value_unset ((GValue *) data);
- g_slice_free (GValue, data);
- }
- }
-}
-
-void
-_pygi_marshal_cleanup_from_py_interface_struct_foreign (PyGIInvokeState *state,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- gpointer data,
- gboolean was_processed)
-{
- if (state->failed && was_processed)
- pygi_struct_foreign_release (
- ( (PyGIInterfaceCache *)arg_cache)->interface_info,
- data);
-}
-
-void
-_pygi_marshal_cleanup_to_py_interface_struct_foreign (PyGIInvokeState *state,
- PyGIArgCache *arg_cache,
- PyObject *dummy,
- gpointer data,
- gboolean was_processed)
-{
- if (!was_processed && arg_cache->transfer == GI_TRANSFER_EVERYTHING)
- pygi_struct_foreign_release (
- ( (PyGIInterfaceCache *)arg_cache)->interface_info,
- data);
-}
-
-static GArray*
-_wrap_c_array (PyGIInvokeState *state,
- PyGISequenceCache *sequence_cache,
- gpointer data)
-{
- GArray *array_;
- gsize len = 0;
-
- if (sequence_cache->fixed_size >= 0) {
- len = sequence_cache->fixed_size;
- } else if (sequence_cache->is_zero_terminated) {
- len = g_strv_length ((gchar **)data);
- } else if (sequence_cache->len_arg_index >= 0) {
- GIArgument *len_arg = state->args[sequence_cache->len_arg_index];
- len = len_arg->v_long;
- }
-
- array_ = g_array_new (FALSE,
- FALSE,
- sequence_cache->item_size);
-
- if (array_ == NULL)
- return NULL;
-
- g_free (array_->data);
- array_->data = data;
- array_->len = len;
-
- return array_;
-}
-
-void
-_pygi_marshal_cleanup_from_py_array (PyGIInvokeState *state,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- gpointer data,
- gboolean was_processed)
-{
- if (was_processed) {
- GArray *array_ = NULL;
- GPtrArray *ptr_array_ = NULL;
- PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
-
- if (sequence_cache->array_type == GI_ARRAY_TYPE_PTR_ARRAY) {
- ptr_array_ = (GPtrArray *) data;
- } else {
- array_ = (GArray *) data;
- }
-
- /* clean up items first */
- if (sequence_cache->item_cache->from_py_cleanup != NULL) {
- gsize i;
- guint len = (array_ != NULL) ? array_->len : ptr_array_->len;
- PyGIMarshalCleanupFunc cleanup_func =
- sequence_cache->item_cache->from_py_cleanup;
-
- for (i = 0; i < len; i++) {
- gpointer item;
- PyObject *py_item = NULL;
-
- /* case 1: GPtrArray */
- if (ptr_array_ != NULL)
- item = g_ptr_array_index (ptr_array_, i);
- /* case 2: C array or GArray with object pointers */
- else if (sequence_cache->item_cache->is_pointer)
- item = g_array_index (array_, gpointer, i);
- /* case 3: C array or GArray with simple types or structs */
- else {
- item = array_->data + i * sequence_cache->item_size;
- /* special-case hack: GValue array items do not get slice
- * allocated in _pygi_marshal_from_py_array(), so we must
- * not try to deallocate it as a slice and thus
- * short-circuit cleanup_func. */
- if (cleanup_func == _pygi_marshal_cleanup_from_py_interface_struct_gvalue) {
- g_value_unset ((GValue*) item);
- continue;
- }
- }
-
- py_item = PySequence_GetItem (py_arg, i);
- cleanup_func (state, sequence_cache->item_cache, py_item, item, TRUE);
- Py_XDECREF (py_item);
- }
- }
-
- /* Only free the array when we didn't transfer ownership */
- if (sequence_cache->array_type == GI_ARRAY_TYPE_C) {
- /* always free the GArray wrapper created in from_py marshaling and
- * passed back as cleanup_data
- */
- g_array_free (array_, arg_cache->transfer == GI_TRANSFER_NOTHING);
- } else {
- if (array_ != NULL)
- g_array_unref (array_);
- else
- g_ptr_array_unref (ptr_array_);
- }
- }
-}
-
-void
-_pygi_marshal_cleanup_to_py_array (PyGIInvokeState *state,
- PyGIArgCache *arg_cache,
- PyObject *dummy,
- gpointer data,
- gboolean was_processed)
-{
- if (arg_cache->transfer == GI_TRANSFER_EVERYTHING ||
- arg_cache->transfer == GI_TRANSFER_CONTAINER) {
- GArray *array_ = NULL;
- GPtrArray *ptr_array_ = NULL;
- PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
-
- /* If this isn't a garray create one to help process variable sized
- array elements */
- if (sequence_cache->array_type == GI_ARRAY_TYPE_C) {
- array_ = _wrap_c_array (state, sequence_cache, data);
-
- if (array_ == NULL)
- return;
-
- } else if (sequence_cache->array_type == GI_ARRAY_TYPE_PTR_ARRAY) {
- ptr_array_ = (GPtrArray *) data;
- } else {
- array_ = (GArray *) data;
- }
-
- if (sequence_cache->item_cache->to_py_cleanup != NULL) {
- gsize i;
- guint len = (array_ != NULL) ? array_->len : ptr_array_->len;
-
- PyGIMarshalCleanupFunc cleanup_func = sequence_cache->item_cache->to_py_cleanup;
- for (i = 0; i < len; i++) {
- cleanup_func (state,
- sequence_cache->item_cache,
- NULL,
- (array_ != NULL) ? g_array_index (array_, gpointer, i) : g_ptr_array_index (ptr_array_, i),
- was_processed);
- }
- }
-
- if (array_ != NULL)
- g_array_free (array_, TRUE);
- else
- g_ptr_array_free (ptr_array_, TRUE);
- }
-}
-
-void
-_pygi_marshal_cleanup_from_py_glist (PyGIInvokeState *state,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- gpointer data,
- gboolean was_processed)
-{
- if (was_processed) {
- GSList *list_;
- PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
-
- list_ = (GSList *)data;
-
- /* clean up items first */
- if (sequence_cache->item_cache->from_py_cleanup != NULL) {
- PyGIMarshalCleanupFunc cleanup_func =
- sequence_cache->item_cache->from_py_cleanup;
- GSList *node = list_;
- gsize i = 0;
- while (node != NULL) {
- PyObject *py_item = PySequence_GetItem (py_arg, i);
- cleanup_func (state,
- sequence_cache->item_cache,
- py_item,
- node->data,
- TRUE);
- Py_XDECREF (py_item);
- node = node->next;
- i++;
- }
- }
-
- if (arg_cache->type_tag == GI_TYPE_TAG_GLIST) {
- g_list_free ( (GList *)list_);
- } else if (arg_cache->type_tag == GI_TYPE_TAG_GSLIST) {
- g_slist_free (list_);
- } else {
- g_assert_not_reached();
- }
- }
-}
-
-void
-_pygi_marshal_cleanup_to_py_glist (PyGIInvokeState *state,
- PyGIArgCache *arg_cache,
- PyObject *dummy,
- gpointer data,
- gboolean was_processed)
-{
- PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
- if (arg_cache->transfer == GI_TRANSFER_EVERYTHING ||
- arg_cache->transfer == GI_TRANSFER_CONTAINER) {
- GSList *list_ = (GSList *)data;
-
- if (sequence_cache->item_cache->to_py_cleanup != NULL) {
- PyGIMarshalCleanupFunc cleanup_func =
- sequence_cache->item_cache->to_py_cleanup;
- GSList *node = list_;
-
- while (node != NULL) {
- cleanup_func (state,
- sequence_cache->item_cache,
- NULL,
- node->data,
- was_processed);
- node = node->next;
- }
- }
-
- if (arg_cache->type_tag == GI_TYPE_TAG_GLIST) {
- g_list_free ( (GList *)list_);
- } else if (arg_cache->type_tag == GI_TYPE_TAG_GSLIST) {
- g_slist_free (list_);
- } else {
- g_assert_not_reached();
- }
- }
-}
-
-void
-_pygi_marshal_cleanup_from_py_ghash (PyGIInvokeState *state,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- gpointer data,
- gboolean was_processed)
-{
- if (data == NULL)
- return;
-
- if (was_processed) {
- GHashTable *hash_;
- PyGIHashCache *hash_cache = (PyGIHashCache *)arg_cache;
-
- hash_ = (GHashTable *)data;
-
- /* clean up keys and values first */
- if (hash_cache->key_cache->from_py_cleanup != NULL ||
- hash_cache->value_cache->from_py_cleanup != NULL) {
- GHashTableIter hiter;
- gpointer key;
- gpointer value;
-
- PyGIMarshalCleanupFunc key_cleanup_func =
- hash_cache->key_cache->from_py_cleanup;
- PyGIMarshalCleanupFunc value_cleanup_func =
- hash_cache->value_cache->from_py_cleanup;
-
- g_hash_table_iter_init (&hiter, hash_);
- while (g_hash_table_iter_next (&hiter, &key, &value)) {
- if (key != NULL && key_cleanup_func != NULL)
- key_cleanup_func (state,
- hash_cache->key_cache,
- NULL,
- key,
- TRUE);
- if (value != NULL && value_cleanup_func != NULL)
- value_cleanup_func (state,
- hash_cache->value_cache,
- NULL,
- value,
- TRUE);
- }
- }
-
- g_hash_table_unref (hash_);
- }
-}
-
-void
-_pygi_marshal_cleanup_to_py_ghash (PyGIInvokeState *state,
- PyGIArgCache *arg_cache,
- PyObject *dummy,
- gpointer data,
- gboolean was_processed)
-{
- if (data == NULL)
- return;
-
- /* assume hashtable has boxed key and value */
- if (arg_cache->transfer == GI_TRANSFER_EVERYTHING || arg_cache->transfer == GI_TRANSFER_CONTAINER)
- g_hash_table_unref ( (GHashTable *)data);
-}
diff --git a/gi/pygi-marshal-cleanup.h b/gi/pygi-marshal-cleanup.h
index 3acfbeb..e895f37 100644
--- a/gi/pygi-marshal-cleanup.h
+++ b/gi/pygi-marshal-cleanup.h
@@ -39,77 +39,6 @@ void pygi_marshal_cleanup_args_return_fail (PyGIInvokeState *state,
void pygi_marshal_cleanup_args_to_py_parameter_fail (PyGIInvokeState *state,
PyGICallableCache *cache,
gssize failed_to_py_arg_index);
-
-void _pygi_marshal_cleanup_from_py_utf8 (PyGIInvokeState *state,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- gpointer data,
- gboolean was_processed);
-void _pygi_marshal_cleanup_to_py_utf8 (PyGIInvokeState *state,
- PyGIArgCache *arg_cache,
- PyObject *dummy,
- gpointer data,
- gboolean was_processed);
-void _pygi_marshal_cleanup_from_py_interface_struct_gvalue (PyGIInvokeState *state,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- gpointer data,
- gboolean was_processed);
-void _pygi_marshal_cleanup_from_py_interface_struct_foreign (PyGIInvokeState *state,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- gpointer data,
- gboolean was_processed);
-void _pygi_marshal_cleanup_to_py_interface_struct_foreign (PyGIInvokeState *state,
- PyGIArgCache *arg_cache,
- PyObject *dummy,
- gpointer data,
- gboolean was_processed);
-void _pygi_marshal_cleanup_from_py_interface_object (PyGIInvokeState *state,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- gpointer data,
- gboolean was_processed);
-void _pygi_marshal_cleanup_to_py_interface_object (PyGIInvokeState *state,
- PyGIArgCache *arg_cache,
- PyObject *dummy,
- gpointer data,
- gboolean was_processed);
-void _pygi_marshal_cleanup_from_py_interface_callback (PyGIInvokeState *state,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- gpointer data,
- gboolean was_processed);
-void _pygi_marshal_cleanup_from_py_array (PyGIInvokeState *state,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- gpointer data,
- gboolean was_processed);
-void _pygi_marshal_cleanup_to_py_array (PyGIInvokeState *state,
- PyGIArgCache *arg_cache,
- PyObject *dummy,
- gpointer data,
- gboolean was_processed);
-void _pygi_marshal_cleanup_from_py_glist (PyGIInvokeState *state,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- gpointer data,
- gboolean was_processed);
-void _pygi_marshal_cleanup_to_py_glist (PyGIInvokeState *state,
- PyGIArgCache *arg_cache,
- PyObject *dummy,
- gpointer data,
- gboolean was_processed);
-void _pygi_marshal_cleanup_from_py_ghash (PyGIInvokeState *state,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- gpointer data,
- gboolean was_processed);
-void _pygi_marshal_cleanup_to_py_ghash (PyGIInvokeState *state,
- PyGIArgCache *arg_cache,
- PyObject *dummy,
- gpointer data,
- gboolean was_processed);
G_END_DECLS
#endif /* __PYGI_MARSHAL_CLEANUP_H__ */
diff --git a/gi/pygi-marshal-from-py.c b/gi/pygi-marshal-from-py.c
deleted file mode 100644
index 41dcf54..0000000
--- a/gi/pygi-marshal-from-py.c
+++ /dev/null
@@ -1,1918 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * vim: tabstop=4 shiftwidth=4 expandtab
- *
- * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>, Red Hat, Inc.
- *
- * pygi-marshal-from-py.c: Functions to convert PyObjects to C types.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-
-#include "pygi-private.h"
-
-#include <string.h>
-#include <time.h>
-#include <pygobject.h>
-#include <pyglib-python-compat.h>
-
-#include "pygi-cache.h"
-#include "pygi-marshal-cleanup.h"
-#include "pygi-marshal-from-py.h"
-
-#ifdef _WIN32
-#ifdef _MSC_VER
-#include <math.h>
-
-#ifndef NAN
-static const unsigned long __nan[2] = {0xffffffff, 0x7fffffff};
-#define NAN (*(const float *) __nan)
-#endif
-
-#ifndef INFINITY
-#define INFINITY HUGE_VAL
-#endif
-
-#endif
-#endif
-
-static gboolean
-gi_argument_from_py_ssize_t (GIArgument *arg_out,
- Py_ssize_t size_in,
- GITypeTag type_tag)
-{
- switch (type_tag) {
- case GI_TYPE_TAG_VOID:
- case GI_TYPE_TAG_BOOLEAN:
- 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:
- 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:
- if (size_in >= G_MININT32 && size_in <= G_MAXINT32) {
- arg_out->v_int32 = size_in;
- return TRUE;
- } else {
- goto overflow;
- }
-
- case GI_TYPE_TAG_UINT32:
- if (size_in >= 0 && size_in <= G_MAXUINT32) {
- arg_out->v_uint32 = size_in;
- return TRUE;
- } else {
- goto overflow;
- }
-
- case GI_TYPE_TAG_INT64:
- arg_out->v_int64 = size_in;
- return TRUE;
-
- case GI_TYPE_TAG_UINT64:
- if (size_in >= 0) {
- arg_out->v_uint64 = size_in;
- return TRUE;
- } else {
- goto overflow;
- }
-
- case GI_TYPE_TAG_FLOAT:
- case GI_TYPE_TAG_DOUBLE:
- case GI_TYPE_TAG_GTYPE:
- case GI_TYPE_TAG_UTF8:
- case GI_TYPE_TAG_FILENAME:
- case GI_TYPE_TAG_ARRAY:
- case GI_TYPE_TAG_INTERFACE:
- case GI_TYPE_TAG_GLIST:
- case GI_TYPE_TAG_GSLIST:
- case GI_TYPE_TAG_GHASH:
- case GI_TYPE_TAG_ERROR:
- case GI_TYPE_TAG_UNICHAR:
- default:
- goto unhandled_type;
- }
-
- overflow:
- PyErr_Format (PyExc_OverflowError,
- "Unable to marshal C Py_ssize_t %zd to %s",
- size_in,
- g_type_tag_to_string (type_tag));
- return FALSE;
-
- unhandled_type:
- PyErr_Format (PyExc_TypeError,
- "Unable to marshal C Py_ssize_t %zd to %s",
- size_in,
- g_type_tag_to_string (type_tag));
- return FALSE;
-}
-
-static gboolean
-gi_argument_from_c_long (GIArgument *arg_out,
- long c_long_in,
- GITypeTag type_tag)
-{
- switch (type_tag) {
- case GI_TYPE_TAG_INT8:
- arg_out->v_int8 = c_long_in;
- return TRUE;
- case GI_TYPE_TAG_UINT8:
- arg_out->v_uint8 = c_long_in;
- return TRUE;
- case GI_TYPE_TAG_INT16:
- arg_out->v_int16 = c_long_in;
- return TRUE;
- case GI_TYPE_TAG_UINT16:
- arg_out->v_uint16 = c_long_in;
- return TRUE;
- case GI_TYPE_TAG_INT32:
- arg_out->v_int32 = c_long_in;
- return TRUE;
- case GI_TYPE_TAG_UINT32:
- arg_out->v_uint32 = c_long_in;
- return TRUE;
- case GI_TYPE_TAG_INT64:
- arg_out->v_int64 = c_long_in;
- return TRUE;
- case GI_TYPE_TAG_UINT64:
- arg_out->v_uint64 = c_long_in;
- return TRUE;
- default:
- PyErr_Format (PyExc_TypeError,
- "Unable to marshal C long %ld to %s",
- c_long_in,
- g_type_tag_to_string (type_tag));
- return FALSE;
- }
-}
-
-/*
- * _is_union_member - check to see if the py_arg is actually a member of the
- * expected C union
- */
-static gboolean
-_is_union_member (GIInterfaceInfo *interface_info, PyObject *py_arg) {
- gint i;
- gint n_fields;
- GIUnionInfo *union_info;
- GIInfoType info_type;
- gboolean is_member = FALSE;
-
- info_type = g_base_info_get_type (interface_info);
-
- if (info_type != GI_INFO_TYPE_UNION)
- return FALSE;
-
- union_info = (GIUnionInfo *) interface_info;
- n_fields = g_union_info_get_n_fields (union_info);
-
- for (i = 0; i < n_fields; i++) {
- GIFieldInfo *field_info;
- GITypeInfo *field_type_info;
-
- field_info = g_union_info_get_field (union_info, i);
- field_type_info = g_field_info_get_type (field_info);
-
- /* we can only check if the members are interfaces */
- if (g_type_info_get_tag (field_type_info) == GI_TYPE_TAG_INTERFACE) {
- GIInterfaceInfo *field_iface_info;
- PyObject *py_type;
-
- field_iface_info = g_type_info_get_interface (field_type_info);
- py_type = _pygi_type_import_by_gi_info ((GIBaseInfo *) field_iface_info);
-
- if (py_type != NULL && PyObject_IsInstance (py_arg, py_type)) {
- is_member = TRUE;
- }
-
- Py_XDECREF (py_type);
- g_base_info_unref ( ( GIBaseInfo *) field_iface_info);
- }
-
- g_base_info_unref ( ( GIBaseInfo *) field_type_info);
- g_base_info_unref ( ( GIBaseInfo *) field_info);
-
- if (is_member)
- break;
- }
-
- return is_member;
-}
-
-gboolean
-_pygi_marshal_from_py_void (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- GIArgument *arg,
- gpointer *cleanup_data)
-{
- g_warn_if_fail (arg_cache->transfer == GI_TRANSFER_NOTHING);
-
- if (py_arg == Py_None) {
- arg->v_pointer = NULL;
- } else if (PYGLIB_CPointer_Check(py_arg)) {
- arg->v_pointer = PYGLIB_CPointer_GetPointer (py_arg, NULL);
- } else if (PYGLIB_PyLong_Check(py_arg) || PyLong_Check(py_arg)) {
- arg->v_pointer = PyLong_AsVoidPtr (py_arg);
- } else {
- PyErr_SetString(PyExc_ValueError,
- "Pointer arguments are restricted to integers, capsules, and None. "
- "See: https://bugzilla.gnome.org/show_bug.cgi?id=683599");
- return FALSE;
- }
-
- *cleanup_data = arg->v_pointer;
- return TRUE;
-}
-
-static gboolean
-check_valid_double (double x, double min, double max)
-{
- char buf[100];
-
- if ((x < min || x > max) && x != INFINITY && x != -INFINITY && x != NAN) {
- if (PyErr_Occurred())
- PyErr_Clear ();
-
- /* we need this as PyErr_Format() does not support float types */
- snprintf (buf, sizeof (buf), "%g not in range %g to %g", x, min, max);
- PyErr_SetString (PyExc_OverflowError, buf);
- return FALSE;
- }
- return TRUE;
-}
-
-static gboolean
-_pygi_py_arg_to_double (PyObject *py_arg, double *double_)
-{
- PyObject *py_float;
-
- if (!PyNumber_Check (py_arg)) {
- PyErr_Format (PyExc_TypeError, "Must be number, not %s",
- py_arg->ob_type->tp_name);
- return FALSE;
- }
-
- py_float = PyNumber_Float (py_arg);
- if (!py_float)
- return FALSE;
-
- *double_ = PyFloat_AsDouble (py_float);
- Py_DECREF (py_float);
-
-
- return TRUE;
-}
-
-static gboolean
-_pygi_marshal_from_py_float (PyObject *py_arg,
- GIArgument *arg)
-{
- double double_;
-
- if (!_pygi_py_arg_to_double (py_arg, &double_))
- return FALSE;
-
- if (PyErr_Occurred () || !check_valid_double (double_, -G_MAXFLOAT, G_MAXFLOAT))
- return FALSE;
-
- arg->v_float = double_;
- return TRUE;
-}
-
-static gboolean
-_pygi_marshal_from_py_double (PyObject *py_arg,
- GIArgument *arg)
-{
- double double_;
-
- if (!_pygi_py_arg_to_double (py_arg, &double_))
- return FALSE;
-
- if (PyErr_Occurred () || !check_valid_double (double_, -G_MAXDOUBLE, G_MAXDOUBLE))
- return FALSE;
-
- arg->v_double = double_;
- return TRUE;
-}
-
-static gboolean
-_pygi_marshal_from_py_unichar (PyObject *py_arg,
- GIArgument *arg)
-{
- Py_ssize_t size;
- gchar *string_;
-
- if (py_arg == Py_None) {
- arg->v_uint32 = 0;
- return FALSE;
- }
-
- if (PyUnicode_Check (py_arg)) {
- PyObject *py_bytes;
-
- size = PyUnicode_GET_SIZE (py_arg);
- py_bytes = PyUnicode_AsUTF8String (py_arg);
- if (!py_bytes)
- return FALSE;
-
- string_ = g_strdup(PYGLIB_PyBytes_AsString (py_bytes));
- Py_DECREF (py_bytes);
-
-#if PY_VERSION_HEX < 0x03000000
- } else if (PyString_Check (py_arg)) {
- PyObject *pyuni = PyUnicode_FromEncodedObject (py_arg, "UTF-8", "strict");
- if (!pyuni)
- return FALSE;
-
- size = PyUnicode_GET_SIZE (pyuni);
- string_ = g_strdup (PyString_AsString(py_arg));
- Py_DECREF (pyuni);
-#endif
- } else {
- PyErr_Format (PyExc_TypeError, "Must be string, not %s",
- py_arg->ob_type->tp_name);
- return FALSE;
- }
-
- if (size != 1) {
- PyErr_Format (PyExc_TypeError, "Must be a one character string, not %lld characters",
- (long long) size);
- g_free (string_);
- return FALSE;
- }
-
- arg->v_uint32 = g_utf8_get_char (string_);
- g_free (string_);
-
- return TRUE;
-}
-
-static gboolean
-_pygi_marshal_from_py_gtype (PyObject *py_arg,
- GIArgument *arg)
-{
- long type_ = pyg_type_from_object (py_arg);
-
- if (type_ == 0) {
- PyErr_Format (PyExc_TypeError, "Must be gobject.GType, not %s",
- py_arg->ob_type->tp_name);
- return FALSE;
- }
-
- arg->v_long = type_;
- return TRUE;
-}
-
-static gboolean
-_pygi_marshal_from_py_utf8 (PyObject *py_arg,
- GIArgument *arg,
- gpointer *cleanup_data)
-{
- gchar *string_;
-
- if (py_arg == Py_None) {
- arg->v_pointer = NULL;
- return TRUE;
- }
-
- if (PyUnicode_Check (py_arg)) {
- PyObject *pystr_obj = PyUnicode_AsUTF8String (py_arg);
- if (!pystr_obj)
- return FALSE;
-
- string_ = g_strdup (PYGLIB_PyBytes_AsString (pystr_obj));
- Py_DECREF (pystr_obj);
- }
-#if PY_VERSION_HEX < 0x03000000
- else if (PyString_Check (py_arg)) {
- string_ = g_strdup (PyString_AsString (py_arg));
- }
-#endif
- else {
- PyErr_Format (PyExc_TypeError, "Must be string, not %s",
- py_arg->ob_type->tp_name);
- return FALSE;
- }
-
- arg->v_string = string_;
- *cleanup_data = arg->v_string;
- return TRUE;
-}
-
-static gboolean
-_pygi_marshal_from_py_filename (PyObject *py_arg,
- GIArgument *arg,
- gpointer *cleanup_data)
-{
- gchar *string_;
- GError *error = NULL;
-
- if (PyUnicode_Check (py_arg)) {
- PyObject *pystr_obj = PyUnicode_AsUTF8String (py_arg);
- if (!pystr_obj)
- return FALSE;
-
- string_ = g_strdup (PYGLIB_PyBytes_AsString (pystr_obj));
- Py_DECREF (pystr_obj);
- }
-#if PY_VERSION_HEX < 0x03000000
- else if (PyString_Check (py_arg)) {
- string_ = g_strdup (PyString_AsString (py_arg));
- }
-#endif
- else {
- PyErr_Format (PyExc_TypeError, "Must be string, not %s",
- py_arg->ob_type->tp_name);
- return FALSE;
- }
-
- arg->v_string = g_filename_from_utf8 (string_, -1, NULL, NULL, &error);
- g_free (string_);
-
- if (arg->v_string == NULL) {
- PyErr_SetString (PyExc_Exception, error->message);
- g_error_free (error);
- /* TODO: Convert the error to an exception. */
- return FALSE;
- }
-
- *cleanup_data = arg->v_string;
- return TRUE;
-}
-
-static gboolean
-_pygi_marshal_from_py_long (PyObject *object, /* in */
- GIArgument *arg, /* out */
- GITypeTag type_tag,
- GITransfer transfer)
-{
- PyObject *number;
-
- if (!PyNumber_Check (object)) {
- PyErr_Format (PyExc_TypeError, "Must be number, not %s",
- object->ob_type->tp_name);
- return FALSE;
- }
-
-#if PY_MAJOR_VERSION < 3
- {
- PyObject *tmp = PyNumber_Int (object);
- if (tmp) {
- number = PyNumber_Long (tmp);
- Py_DECREF (tmp);
- } else {
- number = PyNumber_Long (object);
- }
- }
-#else
- number = PyNumber_Long (object);
-#endif
-
- if (number == NULL) {
- PyErr_SetString (PyExc_TypeError, "expected int argument");
- return FALSE;
- }
-
- switch (type_tag) {
- case GI_TYPE_TAG_INT8:
- {
- long long_value = PyLong_AsLong (number);
- if (PyErr_Occurred()) {
- break;
- } else if (long_value < G_MININT8 || long_value > G_MAXINT8) {
- PyErr_Format (PyExc_OverflowError, "%ld not in range %ld to %ld",
- long_value, (long)G_MININT8, (long)G_MAXINT8);
- } else {
- arg->v_int8 = long_value;
- }
- break;
- }
-
- case GI_TYPE_TAG_UINT8:
- {
- long long_value = PyLong_AsLong (number);
- if (PyErr_Occurred()) {
- break;
- } else if (long_value < 0 || long_value > G_MAXUINT8) {
- PyErr_Format (PyExc_OverflowError, "%ld not in range %ld to %ld",
- long_value, (long)0, (long)G_MAXUINT8);
- } else {
- arg->v_uint8 = long_value;
- }
- break;
- }
-
- case GI_TYPE_TAG_INT16:
- {
- long long_value = PyLong_AsLong (number);
- if (PyErr_Occurred()) {
- break;
- } else if (long_value < G_MININT16 || long_value > G_MAXINT16) {
- PyErr_Format (PyExc_OverflowError, "%ld not in range %ld to %ld",
- long_value, (long)G_MININT16, (long)G_MAXINT16);
- } else {
- arg->v_int16 = long_value;
- }
- break;
- }
-
- case GI_TYPE_TAG_UINT16:
- {
- long long_value = PyLong_AsLong (number);
- if (PyErr_Occurred()) {
- break;
- } else if (long_value < 0 || long_value > G_MAXUINT16) {
- PyErr_Format (PyExc_OverflowError, "%ld not in range %ld to %ld",
- long_value, (long)0, (long)G_MAXUINT16);
- } else {
- arg->v_uint16 = long_value;
- }
- break;
- }
-
- case GI_TYPE_TAG_INT32:
- {
- long long_value = PyLong_AsLong (number);
- if (PyErr_Occurred()) {
- break;
- } else if (long_value < G_MININT32 || long_value > G_MAXINT32) {
- PyErr_Format (PyExc_OverflowError, "%ld not in range %ld to %ld",
- long_value, (long)G_MININT32, (long)G_MAXINT32);
- } else {
- arg->v_int32 = long_value;
- }
- break;
- }
-
- case GI_TYPE_TAG_UINT32:
- {
- PY_LONG_LONG long_value = PyLong_AsLongLong (number);
- if (PyErr_Occurred()) {
- break;
- } else if (long_value < 0 || long_value > G_MAXUINT32) {
- PyErr_Format (PyExc_OverflowError, "%lld not in range %ld to %lu",
- long_value, (long)0, (unsigned long)G_MAXUINT32);
- } else {
- arg->v_uint32 = long_value;
- }
- break;
- }
-
- case GI_TYPE_TAG_INT64:
- {
- /* Rely on Python overflow error and convert to ValueError for 64 bit values */
- arg->v_int64 = PyLong_AsLongLong (number);
- break;
- }
-
- case GI_TYPE_TAG_UINT64:
- {
- /* Rely on Python overflow error and convert to ValueError for 64 bit values */
- arg->v_uint64 = PyLong_AsUnsignedLongLong (number);
- break;
- }
-
- default:
- g_assert_not_reached ();
- }
-
- Py_DECREF (number);
-
- if (PyErr_Occurred())
- return FALSE;
- return TRUE;
-}
-
-gboolean
-_pygi_marshal_from_py_basic_type (PyObject *object, /* in */
- GIArgument *arg, /* out */
- GITypeTag type_tag,
- GITransfer transfer,
- gpointer *cleanup_data /* out */)
-{
- switch (type_tag) {
- case GI_TYPE_TAG_VOID:
- g_warn_if_fail (transfer == GI_TRANSFER_NOTHING);
- 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);
- *cleanup_data = arg->v_pointer;
- }
- break;
- case GI_TYPE_TAG_INT8:
- case GI_TYPE_TAG_UINT8:
- if (PYGLIB_PyBytes_Check (object)) {
- if (PYGLIB_PyBytes_Size (object) != 1) {
- PyErr_Format (PyExc_TypeError, "Must be a single character");
- return FALSE;
- }
- if (type_tag == GI_TYPE_TAG_INT8) {
- arg->v_int8 = (gint8)(PYGLIB_PyBytes_AsString (object)[0]);
- } else {
- arg->v_uint8 = (guint8)(PYGLIB_PyBytes_AsString (object)[0]);
- }
- } else {
- return _pygi_marshal_from_py_long (object, arg, type_tag, transfer);
- }
- break;
- 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:
- return _pygi_marshal_from_py_long (object, arg, type_tag, transfer);
-
- case GI_TYPE_TAG_BOOLEAN:
- arg->v_boolean = PyObject_IsTrue (object);
- break;
-
- case GI_TYPE_TAG_FLOAT:
- return _pygi_marshal_from_py_float (object, arg);
-
- case GI_TYPE_TAG_DOUBLE:
- return _pygi_marshal_from_py_double (object, arg);
-
- case GI_TYPE_TAG_GTYPE:
- return _pygi_marshal_from_py_gtype (object, arg);
-
- case GI_TYPE_TAG_UNICHAR:
- return _pygi_marshal_from_py_unichar (object, arg);
-
- case GI_TYPE_TAG_UTF8:
- return _pygi_marshal_from_py_utf8 (object, arg, cleanup_data);
-
- case GI_TYPE_TAG_FILENAME:
- return _pygi_marshal_from_py_filename (object, arg, cleanup_data);
-
- default:
- return FALSE;
- }
-
- if (PyErr_Occurred())
- return FALSE;
-
- return TRUE;
-}
-
-gboolean
-_pygi_marshal_from_py_basic_type_cache_adapter (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- GIArgument *arg,
- gpointer *cleanup_data)
-{
- return _pygi_marshal_from_py_basic_type (py_arg,
- arg,
- arg_cache->type_tag,
- arg_cache->transfer,
- cleanup_data);
-}
-
-gboolean
-_pygi_marshal_from_py_array (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- GIArgument *arg,
- gpointer *cleanup_data)
-{
- PyGIMarshalFromPyFunc from_py_marshaller;
- int i = 0;
- int success_count = 0;
- Py_ssize_t length;
- gssize item_size;
- gboolean is_ptr_array;
- GArray *array_ = NULL;
- PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
-
-
- if (py_arg == Py_None) {
- arg->v_pointer = NULL;
- return TRUE;
- }
-
- if (!PySequence_Check (py_arg)) {
- PyErr_Format (PyExc_TypeError, "Must be sequence, not %s",
- py_arg->ob_type->tp_name);
- return FALSE;
- }
-
- length = PySequence_Length (py_arg);
- if (length < 0)
- return FALSE;
-
- if (sequence_cache->fixed_size >= 0 &&
- sequence_cache->fixed_size != length) {
- PyErr_Format (PyExc_ValueError, "Must contain %zd items, not %zd",
- sequence_cache->fixed_size, length);
-
- return FALSE;
- }
-
- item_size = sequence_cache->item_size;
- is_ptr_array = (sequence_cache->array_type == GI_ARRAY_TYPE_PTR_ARRAY);
- if (is_ptr_array) {
- array_ = (GArray *)g_ptr_array_sized_new (length);
- } else {
- array_ = g_array_sized_new (sequence_cache->is_zero_terminated,
- TRUE,
- item_size,
- length);
- }
-
- if (array_ == NULL) {
- PyErr_NoMemory ();
- return FALSE;
- }
-
- if (sequence_cache->item_cache->type_tag == GI_TYPE_TAG_UINT8 &&
- PYGLIB_PyBytes_Check (py_arg)) {
- memcpy(array_->data, PYGLIB_PyBytes_AsString (py_arg), length);
- 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. */
- array_->data[length] = '\0';
- }
- goto array_success;
- }
-
- from_py_marshaller = sequence_cache->item_cache->from_py_marshaller;
- for (i = 0, success_count = 0; i < length; i++) {
- GIArgument item = {0};
- gpointer item_cleanup_data = NULL;
- PyObject *py_item = PySequence_GetItem (py_arg, i);
- if (py_item == NULL)
- goto err;
-
- if (!from_py_marshaller ( state,
- callable_cache,
- sequence_cache->item_cache,
- py_item,
- &item,
- &item_cleanup_data)) {
- Py_DECREF (py_item);
- goto err;
- }
- Py_DECREF (py_item);
-
- if (item_cleanup_data != NULL && item_cleanup_data != item.v_pointer) {
- /* We only support one level of data discrepancy between an items
- * data and its cleanup data. This is because we only track a single
- * extra cleanup data pointer per-argument and cannot track the entire
- * array of items differing data and cleanup_data.
- * For example, this would fail if trying to marshal an array of
- * callback closures marked with SCOPE call type where the cleanup data
- * is different from the items v_pointer, likewise an array of arrays.
- */
- PyErr_SetString(PyExc_RuntimeError, "Cannot cleanup item data for array due to "
- "the items data its cleanup data being different.");
- goto err;
- }
-
- /* FIXME: it is much more efficent to have seperate marshaller
- * for ptr arrays than doing the evaluation
- * and casting each loop iteration
- */
- if (is_ptr_array) {
- g_ptr_array_add((GPtrArray *)array_, item.v_pointer);
- } else if (sequence_cache->item_cache->is_pointer) {
- /* if the item is a pointer, simply copy the pointer */
- g_assert (item_size == sizeof (item.v_pointer));
- g_array_insert_val (array_, i, item);
- } else if (sequence_cache->item_cache->type_tag == GI_TYPE_TAG_INTERFACE) {
- /* Special case handling of flat arrays of gvalue/boxed/struct */
- PyGIInterfaceCache *item_iface_cache = (PyGIInterfaceCache *) sequence_cache->item_cache;
- GIBaseInfo *base_info = (GIBaseInfo *) item_iface_cache->interface_info;
- GIInfoType info_type = g_base_info_get_type (base_info);
-
- switch (info_type) {
- case GI_INFO_TYPE_UNION:
- case GI_INFO_TYPE_STRUCT:
- {
- PyGIArgCache *item_arg_cache = (PyGIArgCache *)item_iface_cache;
- PyGIMarshalCleanupFunc from_py_cleanup = item_arg_cache->from_py_cleanup;
-
- if (g_type_is_a (item_iface_cache->g_type, G_TYPE_VALUE)) {
- /* Special case GValue flat arrays to properly init and copy the contents. */
- GValue* dest = (GValue*) (array_->data + (i * item_size));
- if (item.v_pointer != NULL) {
- memset (dest, 0, item_size);
- g_value_init (dest, G_VALUE_TYPE ((GValue*) item.v_pointer));
- g_value_copy ((GValue*) item.v_pointer, dest);
- }
- /* Manually increment the length because we are manually setting the memory. */
- array_->len++;
-
- } else {
- /* Handles flat arrays of boxed or struct types. */
- g_array_insert_vals (array_, i, item.v_pointer, 1);
- }
-
- /* Cleanup any memory left by the per-item marshaler because
- * _pygi_marshal_cleanup_from_py_array will not know about this
- * due to "item" being a temporarily marshaled value done on the stack.
- */
- if (from_py_cleanup)
- from_py_cleanup (state, item_arg_cache, py_item, item_cleanup_data, TRUE);
-
- break;
- }
- default:
- g_array_insert_val (array_, i, item);
- }
- } else {
- /* default value copy of a simple type */
- g_array_insert_val (array_, i, item);
- }
-
- success_count++;
- continue;
-err:
- if (sequence_cache->item_cache->from_py_cleanup != NULL) {
- gsize j;
- PyGIMarshalCleanupFunc cleanup_func =
- sequence_cache->item_cache->from_py_cleanup;
-
- /* Only attempt per item cleanup on pointer items */
- if (sequence_cache->item_cache->is_pointer) {
- for(j = 0; j < success_count; j++) {
- PyObject *py_item = PySequence_GetItem (py_arg, j);
- cleanup_func (state,
- sequence_cache->item_cache,
- py_item,
- is_ptr_array ?
- g_ptr_array_index ((GPtrArray *)array_, j) :
- g_array_index (array_, gpointer, j),
- TRUE);
- Py_DECREF (py_item);
- }
- }
- }
-
- if (is_ptr_array)
- g_ptr_array_free ( ( GPtrArray *)array_, TRUE);
- else
- g_array_free (array_, TRUE);
- _PyGI_ERROR_PREFIX ("Item %i: ", i);
- return FALSE;
- }
-
-array_success:
- if (sequence_cache->len_arg_index >= 0) {
- /* we have an child arg to handle */
- PyGIArgCache *child_cache =
- _pygi_callable_cache_get_arg (callable_cache, sequence_cache->len_arg_index);
-
- if (child_cache->direction == PYGI_DIRECTION_BIDIRECTIONAL) {
- gint *len_arg = (gint *)state->in_args[child_cache->c_arg_index].v_pointer;
- /* if we are not setup yet just set the in arg */
- if (len_arg == NULL) {
- if (!gi_argument_from_py_ssize_t (&state->in_args[child_cache->c_arg_index],
- length,
- child_cache->type_tag)) {
- goto err;
- }
- } else {
- *len_arg = length;
- }
- } else {
- if (!gi_argument_from_py_ssize_t (&state->in_args[child_cache->c_arg_index],
- length,
- child_cache->type_tag)) {
- goto err;
- }
- }
- }
-
- if (sequence_cache->array_type == GI_ARRAY_TYPE_C) {
- /* In the case of GI_ARRAY_C, we give the data directly as the argument
- * but keep the array_ wrapper as cleanup data so we don't have to find
- * it's length again.
- */
- arg->v_pointer = array_->data;
-
- if (arg_cache->transfer == GI_TRANSFER_EVERYTHING) {
- g_array_free (array_, FALSE);
- *cleanup_data = NULL;
- } else {
- *cleanup_data = array_;
- }
- } else {
- arg->v_pointer = array_;
-
- if (arg_cache->transfer == GI_TRANSFER_NOTHING) {
- /* Free everything in cleanup. */
- *cleanup_data = array_;
- } else if (arg_cache->transfer == GI_TRANSFER_CONTAINER) {
- /* Make a shallow copy so we can free the elements later in cleanup
- * because it is possible invoke will free the list before our cleanup. */
- *cleanup_data = is_ptr_array ?
- (gpointer)g_ptr_array_ref ((GPtrArray *)array_) :
- (gpointer)g_array_ref (array_);
- } else { /* GI_TRANSFER_EVERYTHING */
- /* No cleanup, everything is given to the callee. */
- *cleanup_data = NULL;
- }
- }
-
- return TRUE;
-}
-
-gboolean
-_pygi_marshal_from_py_glist (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- GIArgument *arg,
- gpointer *cleanup_data)
-{
- PyGIMarshalFromPyFunc from_py_marshaller;
- int i;
- Py_ssize_t length;
- GList *list_ = NULL;
- PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
-
-
- if (py_arg == Py_None) {
- arg->v_pointer = NULL;
- return TRUE;
- }
-
- if (!PySequence_Check (py_arg)) {
- PyErr_Format (PyExc_TypeError, "Must be sequence, not %s",
- py_arg->ob_type->tp_name);
- return FALSE;
- }
-
- length = PySequence_Length (py_arg);
- if (length < 0)
- return FALSE;
-
- if (sequence_cache->fixed_size >= 0 &&
- sequence_cache->fixed_size != length) {
- PyErr_Format (PyExc_ValueError, "Must contain %zd items, not %zd",
- sequence_cache->fixed_size, length);
-
- return FALSE;
- }
-
- from_py_marshaller = sequence_cache->item_cache->from_py_marshaller;
- for (i = 0; i < length; i++) {
- GIArgument item = {0};
- gpointer item_cleanup_data = NULL;
- PyObject *py_item = PySequence_GetItem (py_arg, i);
- if (py_item == NULL)
- goto err;
-
- if (!from_py_marshaller ( state,
- callable_cache,
- sequence_cache->item_cache,
- py_item,
- &item,
- &item_cleanup_data))
- goto err;
-
- Py_DECREF (py_item);
- list_ = g_list_prepend (list_, _pygi_arg_to_hash_pointer (&item, sequence_cache->item_cache->type_tag));
- continue;
-err:
- /* FIXME: clean up list
- if (sequence_cache->item_cache->from_py_cleanup != NULL) {
- PyGIMarshalCleanupFunc cleanup = sequence_cache->item_cache->from_py_cleanup;
- }
- */
- Py_DECREF (py_item);
- g_list_free (list_);
- _PyGI_ERROR_PREFIX ("Item %i: ", i);
- return FALSE;
- }
-
- arg->v_pointer = g_list_reverse (list_);
-
- if (arg_cache->transfer == GI_TRANSFER_NOTHING) {
- /* Free everything in cleanup. */
- *cleanup_data = arg->v_pointer;
- } else if (arg_cache->transfer == GI_TRANSFER_CONTAINER) {
- /* Make a shallow copy so we can free the elements later in cleanup
- * because it is possible invoke will free the list before our cleanup. */
- *cleanup_data = g_list_copy (arg->v_pointer);
- } else { /* GI_TRANSFER_EVERYTHING */
- /* No cleanup, everything is given to the callee. */
- *cleanup_data = NULL;
- }
- return TRUE;
-}
-
-gboolean
-_pygi_marshal_from_py_gslist (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- GIArgument *arg,
- gpointer *cleanup_data)
-{
- PyGIMarshalFromPyFunc from_py_marshaller;
- int i;
- Py_ssize_t length;
- GSList *list_ = NULL;
- PyGISequenceCache *sequence_cache = (PyGISequenceCache *)arg_cache;
-
- if (py_arg == Py_None) {
- arg->v_pointer = NULL;
- return TRUE;
- }
-
- if (!PySequence_Check (py_arg)) {
- PyErr_Format (PyExc_TypeError, "Must be sequence, not %s",
- py_arg->ob_type->tp_name);
- return FALSE;
- }
-
- length = PySequence_Length (py_arg);
- if (length < 0)
- return FALSE;
-
- if (sequence_cache->fixed_size >= 0 &&
- sequence_cache->fixed_size != length) {
- PyErr_Format (PyExc_ValueError, "Must contain %zd items, not %zd",
- sequence_cache->fixed_size, length);
-
- return FALSE;
- }
-
- from_py_marshaller = sequence_cache->item_cache->from_py_marshaller;
- for (i = 0; i < length; i++) {
- GIArgument item = {0};
- gpointer item_cleanup_data = NULL;
- PyObject *py_item = PySequence_GetItem (py_arg, i);
- if (py_item == NULL)
- goto err;
-
- if (!from_py_marshaller ( state,
- callable_cache,
- sequence_cache->item_cache,
- py_item,
- &item,
- &item_cleanup_data))
- goto err;
-
- Py_DECREF (py_item);
- list_ = g_slist_prepend (list_, _pygi_arg_to_hash_pointer (&item, sequence_cache->item_cache->type_tag));
- continue;
-err:
- /* FIXME: Clean up list
- if (sequence_cache->item_cache->from_py_cleanup != NULL) {
- PyGIMarshalCleanupFunc cleanup = sequence_cache->item_cache->from_py_cleanup;
- }
- */
-
- Py_DECREF (py_item);
- g_slist_free (list_);
- _PyGI_ERROR_PREFIX ("Item %i: ", i);
- return FALSE;
- }
-
- arg->v_pointer = g_slist_reverse (list_);
-
- if (arg_cache->transfer == GI_TRANSFER_NOTHING) {
- /* Free everything in cleanup. */
- *cleanup_data = arg->v_pointer;
- } else if (arg_cache->transfer == GI_TRANSFER_CONTAINER) {
- /* Make a shallow copy so we can free the elements later in cleanup
- * because it is possible invoke will free the list before our cleanup. */
- *cleanup_data = g_slist_copy (arg->v_pointer);
- } else { /* GI_TRANSFER_EVERYTHING */
- /* No cleanup, everything is given to the callee. */
- *cleanup_data = NULL;
- }
-
- return TRUE;
-}
-
-gboolean
-_pygi_marshal_from_py_ghash (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- GIArgument *arg,
- gpointer *cleanup_data)
-{
- PyGIMarshalFromPyFunc key_from_py_marshaller;
- PyGIMarshalFromPyFunc value_from_py_marshaller;
-
- int i;
- Py_ssize_t length;
- PyObject *py_keys, *py_values;
-
- GHashFunc hash_func;
- GEqualFunc equal_func;
-
- GHashTable *hash_ = NULL;
- PyGIHashCache *hash_cache = (PyGIHashCache *)arg_cache;
-
- if (py_arg == Py_None) {
- arg->v_pointer = NULL;
- return TRUE;
- }
-
- py_keys = PyMapping_Keys (py_arg);
- if (py_keys == NULL) {
- PyErr_Format (PyExc_TypeError, "Must be mapping, not %s",
- py_arg->ob_type->tp_name);
- return FALSE;
- }
-
- length = PyMapping_Length (py_arg);
- if (length < 0) {
- Py_DECREF (py_keys);
- return FALSE;
- }
-
- py_values = PyMapping_Values (py_arg);
- if (py_values == NULL) {
- Py_DECREF (py_keys);
- return FALSE;
- }
-
- key_from_py_marshaller = hash_cache->key_cache->from_py_marshaller;
- value_from_py_marshaller = hash_cache->value_cache->from_py_marshaller;
-
- switch (hash_cache->key_cache->type_tag) {
- case GI_TYPE_TAG_UTF8:
- case GI_TYPE_TAG_FILENAME:
- hash_func = g_str_hash;
- equal_func = g_str_equal;
- break;
- default:
- hash_func = NULL;
- equal_func = NULL;
- }
-
- hash_ = g_hash_table_new (hash_func, equal_func);
- if (hash_ == NULL) {
- PyErr_NoMemory ();
- Py_DECREF (py_keys);
- Py_DECREF (py_values);
- return FALSE;
- }
-
- for (i = 0; i < length; i++) {
- GIArgument key, value;
- gpointer key_cleanup_data = NULL;
- gpointer value_cleanup_data = NULL;
- PyObject *py_key = PyList_GET_ITEM (py_keys, i);
- PyObject *py_value = PyList_GET_ITEM (py_values, i);
- if (py_key == NULL || py_value == NULL)
- goto err;
-
- if (!key_from_py_marshaller ( state,
- callable_cache,
- hash_cache->key_cache,
- py_key,
- &key,
- &key_cleanup_data))
- goto err;
-
- if (!value_from_py_marshaller ( state,
- callable_cache,
- hash_cache->value_cache,
- py_value,
- &value,
- &value_cleanup_data))
- goto err;
-
- g_hash_table_insert (hash_,
- _pygi_arg_to_hash_pointer (&key, hash_cache->key_cache->type_tag),
- _pygi_arg_to_hash_pointer (&value, hash_cache->value_cache->type_tag));
- continue;
-err:
- /* FIXME: cleanup hash keys and values */
- Py_XDECREF (py_key);
- Py_XDECREF (py_value);
- Py_DECREF (py_keys);
- Py_DECREF (py_values);
- g_hash_table_unref (hash_);
- _PyGI_ERROR_PREFIX ("Item %i: ", i);
- return FALSE;
- }
-
- arg->v_pointer = hash_;
-
- if (arg_cache->transfer == GI_TRANSFER_NOTHING) {
- /* Free everything in cleanup. */
- *cleanup_data = arg->v_pointer;
- } else if (arg_cache->transfer == GI_TRANSFER_CONTAINER) {
- /* Make a shallow copy so we can free the elements later in cleanup
- * because it is possible invoke will free the list before our cleanup. */
- *cleanup_data = g_hash_table_ref (arg->v_pointer);
- } else { /* GI_TRANSFER_EVERYTHING */
- /* No cleanup, everything is given to the callee.
- * Note that the keys and values will leak for transfer everything because
- * we do not use g_hash_table_new_full and set key/value_destroy_func. */
- *cleanup_data = NULL;
- }
-
- return TRUE;
-}
-
-gboolean
-_pygi_marshal_from_py_gerror (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- GIArgument *arg,
- gpointer *cleanup_data)
-{
- PyErr_Format (PyExc_NotImplementedError,
- "Marshalling for GErrors is not implemented");
- 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);
- GIBaseInfo* glib_destroy_notify;
-
- g_assert (destroy_notify);
-
- 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,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- GIArgument *arg,
- gpointer *cleanup_data)
-{
- GICallableInfo *callable_info;
- PyGICClosure *closure;
- PyGIArgCache *user_data_cache = NULL;
- PyGIArgCache *destroy_cache = NULL;
- PyGICallbackCache *callback_cache;
- PyObject *py_user_data = NULL;
-
- callback_cache = (PyGICallbackCache *)arg_cache;
-
- if (callback_cache->user_data_index > 0) {
- user_data_cache = _pygi_callable_cache_get_arg (callable_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;
- /* NULL out user_data if it was not supplied and the default arg placeholder
- * was used instead.
- */
- if (py_user_data == _PyGIDefaultArgPlaceholder) {
- py_user_data = NULL;
- } else if (callable_cache->user_data_varargs_index < 0) {
- /* For non-variable length user data, place the user data in a
- * single item tuple which is concatenated to the callbacks arguments.
- * This allows callback input arg marshaling to always expect a
- * tuple for user data. Note the
- */
- py_user_data = Py_BuildValue("(O)", py_user_data, NULL);
- } else {
- /* increment the ref borrowed from PyTuple_GetItem above */
- Py_INCREF (py_user_data);
- }
- }
- }
-
- if (py_arg == Py_None) {
- return TRUE;
- }
-
- if (!PyCallable_Check (py_arg)) {
- PyErr_Format (PyExc_TypeError,
- "Callback needs to be a function or method not %s",
- py_arg->ob_type->tp_name);
-
- return FALSE;
- }
-
- 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;
-
- /* always decref the user data as _pygi_make_native_closure adds its own ref */
- Py_XDECREF (py_user_data);
-
- /* 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 = _pygi_callable_cache_get_arg (callable_cache, callback_cache->destroy_notify_index);
- }
-
- if (destroy_cache) {
- 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;
- }
- }
-
- /* Use the PyGIClosure as data passed to cleanup for GI_SCOPE_TYPE_CALL. */
- *cleanup_data = closure;
-
- return TRUE;
-}
-
-gboolean
-_pygi_marshal_from_py_interface_enum (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- GIArgument *arg,
- gpointer *cleanup_data)
-{
- PyObject *py_long;
- long c_long;
- gint is_instance;
- PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
- GIBaseInfo *interface = NULL;
-
- is_instance = PyObject_IsInstance (py_arg, iface_cache->py_type);
-
- py_long = PYGLIB_PyNumber_Long (py_arg);
- if (py_long == NULL) {
- PyErr_Clear();
- goto err;
- }
-
- c_long = PYGLIB_PyLong_AsLong (py_long);
- Py_DECREF (py_long);
-
- /* Write c_long into arg */
- interface = g_type_info_get_interface (arg_cache->type_info);
- assert(g_base_info_get_type (interface) == GI_INFO_TYPE_ENUM);
- if (!gi_argument_from_c_long(arg,
- c_long,
- g_enum_info_get_storage_type ((GIEnumInfo *)interface))) {
- g_assert_not_reached();
- g_base_info_unref (interface);
- return FALSE;
- }
-
- /* If this is not an instance of the Enum type that we want
- * we need to check if the value is equivilant to one of the
- * Enum's memebers */
- if (!is_instance) {
- int i;
- gboolean is_found = FALSE;
-
- for (i = 0; i < g_enum_info_get_n_values (iface_cache->interface_info); i++) {
- GIValueInfo *value_info =
- g_enum_info_get_value (iface_cache->interface_info, i);
- glong enum_value = g_value_info_get_value (value_info);
- g_base_info_unref ( (GIBaseInfo *)value_info);
- if (c_long == enum_value) {
- is_found = TRUE;
- break;
- }
- }
-
- if (!is_found)
- goto err;
- }
-
- g_base_info_unref (interface);
- return TRUE;
-
-err:
- if (interface)
- g_base_info_unref (interface);
- PyErr_Format (PyExc_TypeError, "Expected a %s, but got %s",
- iface_cache->type_name, py_arg->ob_type->tp_name);
- return FALSE;
-}
-
-gboolean
-_pygi_marshal_from_py_interface_flags (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- GIArgument *arg,
- gpointer *cleanup_data)
-{
- PyObject *py_long;
- long c_long;
- gint is_instance;
- PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
- GIBaseInfo *interface;
-
- is_instance = PyObject_IsInstance (py_arg, iface_cache->py_type);
-
- py_long = PYGLIB_PyNumber_Long (py_arg);
- if (py_long == NULL) {
- PyErr_Clear ();
- goto err;
- }
-
- c_long = PYGLIB_PyLong_AsLong (py_long);
- Py_DECREF (py_long);
-
- /* only 0 or argument of type Flag is allowed */
- if (!is_instance && c_long != 0)
- goto err;
-
- /* Write c_long into arg */
- interface = g_type_info_get_interface (arg_cache->type_info);
- g_assert (g_base_info_get_type (interface) == GI_INFO_TYPE_FLAGS);
- if (!gi_argument_from_c_long(arg, c_long,
- g_enum_info_get_storage_type ((GIEnumInfo *)interface))) {
- g_base_info_unref (interface);
- return FALSE;
- }
-
- g_base_info_unref (interface);
- return TRUE;
-
-err:
- PyErr_Format (PyExc_TypeError, "Expected a %s, but got %s",
- iface_cache->type_name, py_arg->ob_type->tp_name);
- return FALSE;
-
-}
-
-gboolean
-_pygi_marshal_from_py_interface_struct_cache_adapter (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- GIArgument *arg,
- gpointer *cleanup_data)
-{
- PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
-
- gboolean res = _pygi_marshal_from_py_interface_struct (py_arg,
- arg,
- arg_cache->arg_name,
- iface_cache->interface_info,
- iface_cache->g_type,
- iface_cache->py_type,
- arg_cache->transfer,
- TRUE, /*copy_reference*/
- iface_cache->is_foreign,
- arg_cache->is_pointer);
-
- /* Assume struct marshaling is always a pointer and assign cleanup_data
- * here rather than passing it further down the chain.
- */
- *cleanup_data = arg->v_pointer;
- return res;
-}
-
-gboolean
-_pygi_marshal_from_py_interface_boxed (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- GIArgument *arg,
- gpointer *cleanup_data)
-{
- PyErr_Format (PyExc_NotImplementedError,
- "Marshalling for this type is not implemented yet");
- return FALSE;
-}
-
-gboolean
-_pygi_marshal_from_py_interface_object (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- GIArgument *arg,
- gpointer *cleanup_data)
-{
- gboolean res = FALSE;
-
- if (py_arg == Py_None) {
- arg->v_pointer = NULL;
- return TRUE;
- }
-
- if (!PyObject_IsInstance (py_arg, ( (PyGIInterfaceCache *)arg_cache)->py_type)) {
- PyObject *module = PyObject_GetAttrString(py_arg, "__module__");
-
- PyErr_Format (PyExc_TypeError, "argument %s: Expected %s, but got %s%s%s",
- arg_cache->arg_name ? arg_cache->arg_name : "self",
- ( (PyGIInterfaceCache *)arg_cache)->type_name,
- module ? PYGLIB_PyUnicode_AsString(module) : "",
- module ? "." : "",
- py_arg->ob_type->tp_name);
- if (module)
- Py_DECREF (module);
- return FALSE;
- }
-
- res = _pygi_marshal_from_py_gobject (py_arg, arg, arg_cache->transfer);
- *cleanup_data = arg->v_pointer;
- return res;
-}
-
-gboolean
-_pygi_marshal_from_py_interface_union (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- GIArgument *arg,
- gpointer *cleanup_data)
-{
- PyErr_Format(PyExc_NotImplementedError,
- "Marshalling for this type is not implemented yet");
- return FALSE;
-}
-
-/* _pygi_marshal_from_py_gobject:
- * py_arg: (in):
- * arg: (out):
- */
-gboolean
-_pygi_marshal_from_py_gobject (PyObject *py_arg, /*in*/
- GIArgument *arg, /*out*/
- GITransfer transfer) {
- GObject *gobj;
-
- if (py_arg == Py_None) {
- arg->v_pointer = NULL;
- return TRUE;
- }
-
- if (!pygobject_check (py_arg, &PyGObject_Type)) {
- PyObject *repr = PyObject_Repr (py_arg);
- PyErr_Format(PyExc_TypeError, "expected GObject but got %s",
- PYGLIB_PyUnicode_AsString (repr));
- Py_DECREF (repr);
- return FALSE;
- }
-
- gobj = pygobject_get (py_arg);
- if (transfer == GI_TRANSFER_EVERYTHING) {
- /* For transfer everything, add a new ref that the callee will take ownership of.
- * Pythons existing ref to the GObject will be managed with the PyGObject wrapper.
- */
- g_object_ref (gobj);
- }
-
- arg->v_pointer = gobj;
- return TRUE;
-}
-
-/* _pygi_marshal_from_py_gobject_out_arg:
- * py_arg: (in):
- * arg: (out):
- *
- * A specialization for marshaling Python GObjects used for out/return values
- * from a Python implemented vfuncs, signals, or an assignment to a GObject property.
- */
-gboolean
-_pygi_marshal_from_py_gobject_out_arg (PyObject *py_arg, /*in*/
- GIArgument *arg, /*out*/
- GITransfer transfer) {
- GObject *gobj;
- if (!_pygi_marshal_from_py_gobject (py_arg, arg, transfer)) {
- return FALSE;
- }
-
- /* HACK: At this point the basic marshaling of the GObject was successful
- * but we add some special case hacks for vfunc returns due to buggy APIs:
- * https://bugzilla.gnome.org/show_bug.cgi?id=693393
- */
- gobj = arg->v_pointer;
- if (py_arg->ob_refcnt == 1 && gobj->ref_count == 1) {
- /* If both object ref counts are only 1 at this point (the reference held
- * in a return tuple), we assume the GObject will be free'd before reaching
- * its target and become invalid. So instead of getting invalid object errors
- * we add a new GObject ref.
- */
- g_object_ref (gobj);
-
- if (((PyGObject *)py_arg)->private_flags.flags & PYGOBJECT_GOBJECT_WAS_FLOATING) {
- /*
- * We want to re-float instances that were floating and the Python
- * wrapper assumed ownership. With the additional caveat that there
- * are not any strong references beyond the return tuple.
- */
- g_object_force_floating (gobj);
-
- } else {
- PyObject *repr = PyObject_Repr (py_arg);
- gchar *msg = g_strdup_printf ("Expecting to marshal a borrowed reference for %s, "
- "but nothing in Python is holding a reference to this object. "
- "See: https://bugzilla.gnome.org/show_bug.cgi?id=687522",
- PYGLIB_PyUnicode_AsString(repr));
- Py_DECREF (repr);
- if (PyErr_WarnEx (PyExc_RuntimeWarning, msg, 2)) {
- g_free (msg);
- return FALSE;
- }
- g_free (msg);
- }
- }
-
- return TRUE;
-}
-
-/* _pygi_marshal_from_py_gvalue:
- * py_arg: (in):
- * arg: (out):
- * transfer:
- * copy_reference: TRUE if arg should use the pointer reference held by py_arg
- * when it is already holding a GValue vs. copying the value.
- */
-gboolean
-_pygi_marshal_from_py_gvalue (PyObject *py_arg,
- GIArgument *arg,
- GITransfer transfer,
- gboolean copy_reference) {
- GValue *value;
- GType object_type;
-
- object_type = pyg_type_from_object_strict ( (PyObject *) py_arg->ob_type, FALSE);
- if (object_type == G_TYPE_INVALID) {
- PyErr_SetString (PyExc_RuntimeError, "unable to retrieve object's GType");
- return FALSE;
- }
-
- /* if already a gvalue, use that, else marshal into gvalue */
- if (object_type == G_TYPE_VALUE) {
- GValue *source_value = pyg_boxed_get (py_arg, GValue);
- if (copy_reference) {
- value = source_value;
- } else {
- value = g_slice_new0 (GValue);
- g_value_init (value, G_VALUE_TYPE (source_value));
- g_value_copy (source_value, value);
- }
- } else {
- value = g_slice_new0 (GValue);
- g_value_init (value, object_type);
- if (pyg_value_from_pyobject (value, py_arg) < 0) {
- g_slice_free (GValue, value);
- PyErr_SetString (PyExc_RuntimeError, "PyObject conversion to GValue failed");
- return FALSE;
- }
- }
-
- arg->v_pointer = value;
- return TRUE;
-}
-
-/* _pygi_marshal_from_py_gclosure:
- * py_arg: (in):
- * arg: (out):
- */
-gboolean
-_pygi_marshal_from_py_gclosure(PyObject *py_arg,
- GIArgument *arg)
-{
- GClosure *closure;
- GType object_gtype = pyg_type_from_object_strict (py_arg, FALSE);
-
- if ( !(PyCallable_Check(py_arg) ||
- g_type_is_a (object_gtype, G_TYPE_CLOSURE))) {
- PyErr_Format (PyExc_TypeError, "Must be callable, not %s",
- py_arg->ob_type->tp_name);
- return FALSE;
- }
-
- if (g_type_is_a (object_gtype, G_TYPE_CLOSURE))
- closure = (GClosure *)pyg_boxed_get (py_arg, void);
- else
- closure = pyg_closure_new (py_arg, NULL, NULL);
-
- if (closure == NULL) {
- PyErr_SetString (PyExc_RuntimeError, "PyObject conversion to GClosure failed");
- return FALSE;
- }
-
- arg->v_pointer = closure;
- return TRUE;
-}
-
-gboolean
-_pygi_marshal_from_py_interface_struct (PyObject *py_arg,
- GIArgument *arg,
- const gchar *arg_name,
- GIBaseInfo *interface_info,
- GType g_type,
- PyObject *py_type,
- GITransfer transfer,
- gboolean copy_reference,
- gboolean is_foreign,
- gboolean is_pointer)
-{
- gboolean is_union = FALSE;
-
- if (py_arg == Py_None) {
- arg->v_pointer = NULL;
- return TRUE;
- }
-
- /* FIXME: handle this large if statement in the cache
- * and set the correct marshaller
- */
-
- if (g_type_is_a (g_type, G_TYPE_CLOSURE)) {
- return _pygi_marshal_from_py_gclosure (py_arg, arg);
- } else if (g_type_is_a (g_type, G_TYPE_VALUE)) {
- return _pygi_marshal_from_py_gvalue(py_arg,
- arg,
- transfer,
- copy_reference);
- } else if (is_foreign) {
- PyObject *success;
- success = pygi_struct_foreign_convert_to_g_argument (py_arg,
- interface_info,
- transfer,
- arg);
-
- return (success == Py_None);
- } else if (!PyObject_IsInstance (py_arg, py_type)) {
- /* first check to see if this is a member of the expected union */
- is_union = _is_union_member (interface_info, py_arg);
- if (!is_union) {
- goto type_error;
- }
- }
-
- if (g_type_is_a (g_type, G_TYPE_BOXED)) {
- /* Additionally use pyg_type_from_object to pull the stashed __gtype__
- * attribute off of the input argument for type checking. This is needed
- * to work around type discrepancies in cases with aliased (typedef) types.
- * e.g. GtkAllocation, GdkRectangle.
- * See: https://bugzilla.gnomethere are .org/show_bug.cgi?id=707140
- */
- if (is_union || pyg_boxed_check (py_arg, g_type) ||
- g_type_is_a (pyg_type_from_object (py_arg), g_type)) {
- arg->v_pointer = pyg_boxed_get (py_arg, void);
- if (transfer == GI_TRANSFER_EVERYTHING) {
- arg->v_pointer = g_boxed_copy (g_type, arg->v_pointer);
- }
- } else {
- goto type_error;
- }
-
- } else if (g_type_is_a (g_type, G_TYPE_POINTER) ||
- g_type_is_a (g_type, G_TYPE_VARIANT) ||
- g_type == G_TYPE_NONE) {
- g_warn_if_fail (g_type_is_a (g_type, G_TYPE_VARIANT) || !is_pointer || transfer == GI_TRANSFER_NOTHING);
-
- if (g_type_is_a (g_type, G_TYPE_VARIANT) &&
- pyg_type_from_object (py_arg) != G_TYPE_VARIANT) {
- PyErr_SetString (PyExc_TypeError, "expected GLib.Variant");
- return FALSE;
- }
- arg->v_pointer = pyg_pointer_get (py_arg, void);
- if (transfer == GI_TRANSFER_EVERYTHING) {
- g_variant_ref ((GVariant *)arg->v_pointer);
- }
-
- } else {
- PyErr_Format (PyExc_NotImplementedError,
- "structure type '%s' is not supported yet",
- g_type_name(g_type));
- return FALSE;
- }
- return TRUE;
-
-type_error:
- {
- gchar *type_name = _pygi_g_base_info_get_fullname (interface_info);
- PyObject *module = PyObject_GetAttrString(py_arg, "__module__");
-
- PyErr_Format (PyExc_TypeError, "argument %s: Expected %s, but got %s%s%s",
- arg_name ? arg_name : "self",
- type_name,
- module ? PYGLIB_PyUnicode_AsString(module) : "",
- module ? "." : "",
- py_arg->ob_type->tp_name);
- if (module)
- Py_DECREF (module);
- g_free (type_name);
- return FALSE;
- }
-}
diff --git a/gi/pygi-marshal-from-py.h b/gi/pygi-marshal-from-py.h
deleted file mode 100644
index f8e4699..0000000
--- a/gi/pygi-marshal-from-py.h
+++ /dev/null
@@ -1,156 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * vim: tabstop=4 shiftwidth=4 expandtab
- *
- * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>, Red Hat, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-
-#ifndef __PYGI_MARSHAL_from_py_PY_H__
-#define __PYGI_MARSHAL_from_py_PY_H__
-
-#include <Python.h>
-
-#include <girepository.h>
-
-#include "pygi-private.h"
-
-G_BEGIN_DECLS
-
-gboolean _pygi_marshal_from_py_ssize_t (PyGIArgCache *arg_cache,
- Py_ssize_t size,
- GIArgument *arg);
-gboolean _pygi_marshal_from_py_void (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- GIArgument *arg,
- gpointer *cleanup_data);
-gboolean _pygi_marshal_from_py_array (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- GIArgument *arg,
- gpointer *cleanup_data);
-gboolean _pygi_marshal_from_py_glist (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- GIArgument *arg,
- gpointer *cleanup_data);
-gboolean _pygi_marshal_from_py_gslist (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- GIArgument *arg,
- gpointer *cleanup_data);
-gboolean _pygi_marshal_from_py_ghash (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- GIArgument *arg,
- gpointer *cleanup_data);
-gboolean _pygi_marshal_from_py_gerror (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- GIArgument *arg,
- gpointer *cleanup_data);
-gboolean _pygi_marshal_from_py_interface_callback (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- GIArgument *arg,
- gpointer *cleanup_data);
-gboolean _pygi_marshal_from_py_interface_enum (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- GIArgument *arg,
- gpointer *cleanup_data);
-gboolean _pygi_marshal_from_py_interface_flags (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- GIArgument *arg,
- gpointer *cleanup_data);
-gboolean _pygi_marshal_from_py_interface_struct_cache_adapter (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- GIArgument *arg,
- gpointer *cleanup_data);
-gboolean _pygi_marshal_from_py_interface_boxed (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- GIArgument *arg,
- gpointer *cleanup_data);
-gboolean _pygi_marshal_from_py_interface_object (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- GIArgument *arg,
- gpointer *cleanup_data);
-gboolean _pygi_marshal_from_py_interface_union (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- GIArgument *arg,
- gpointer *cleanup_data);
-
-/* Simplified marshalers shared between vfunc/closure and direct function calls. */
-gboolean _pygi_marshal_from_py_basic_type (PyObject *object, /* in */
- GIArgument *arg, /* out */
- GITypeTag type_tag,
- GITransfer transfer,
- gpointer *cleanup_data);
-gboolean _pygi_marshal_from_py_basic_type_cache_adapter (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- PyObject *py_arg,
- GIArgument *arg,
- gpointer *cleanup_data);
-
-gboolean _pygi_marshal_from_py_gobject (PyObject *py_arg, /*in*/
- GIArgument *arg, /*out*/
- GITransfer transfer);
-gboolean _pygi_marshal_from_py_gobject_out_arg (PyObject *py_arg, /*in*/
- GIArgument *arg, /*out*/
- GITransfer transfer);
-
-gboolean _pygi_marshal_from_py_gvalue (PyObject *py_arg, /*in*/
- GIArgument *arg, /*out*/
- GITransfer transfer,
- gboolean is_allocated);
-
-gboolean _pygi_marshal_from_py_gclosure(PyObject *py_arg, /*in*/
- GIArgument *arg); /*out*/
-
-gboolean _pygi_marshal_from_py_interface_struct (PyObject *py_arg,
- GIArgument *arg,
- const gchar *arg_name,
- GIBaseInfo *interface_info,
- GType g_type,
- PyObject *py_type,
- GITransfer transfer,
- gboolean is_allocated,
- gboolean is_foreign,
- gboolean is_pointer);
-
-G_END_DECLS
-
-#endif /* __PYGI_MARSHAL_from_py_PY__ */
diff --git a/gi/pygi-marshal-to-py.c b/gi/pygi-marshal-to-py.c
deleted file mode 100644
index 2c7a8de..0000000
--- a/gi/pygi-marshal-to-py.c
+++ /dev/null
@@ -1,884 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * vim: tabstop=4 shiftwidth=4 expandtab
- *
- * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>, Red Hat, Inc.
- *
- * pygi-marshal-from-py.c: functions for converting C types to PyObject
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-
-#include "pygi-private.h"
-
-#include <string.h>
-#include <time.h>
-
-#include <pyglib.h>
-#include <pygobject.h>
-#include <pyglib-python-compat.h>
-
-#include "pygi-cache.h"
-#include "pygi-marshal-cleanup.h"
-#include "pygi-marshal-to-py.h"
-#include "pygi-argument.h"
-
-static gboolean
-gi_argument_to_c_long (GIArgument *arg_in,
- long *c_long_out,
- GITypeTag type_tag)
-{
- switch (type_tag) {
- case GI_TYPE_TAG_INT8:
- *c_long_out = arg_in->v_int8;
- return TRUE;
- case GI_TYPE_TAG_UINT8:
- *c_long_out = arg_in->v_uint8;
- return TRUE;
- case GI_TYPE_TAG_INT16:
- *c_long_out = arg_in->v_int16;
- return TRUE;
- case GI_TYPE_TAG_UINT16:
- *c_long_out = arg_in->v_uint16;
- return TRUE;
- case GI_TYPE_TAG_INT32:
- *c_long_out = arg_in->v_int32;
- return TRUE;
- case GI_TYPE_TAG_UINT32:
- *c_long_out = arg_in->v_uint32;
- return TRUE;
- case GI_TYPE_TAG_INT64:
- *c_long_out = arg_in->v_int64;
- return TRUE;
- case GI_TYPE_TAG_UINT64:
- *c_long_out = arg_in->v_uint64;
- return TRUE;
- default:
- PyErr_Format (PyExc_TypeError,
- "Unable to marshal %s to C long",
- g_type_tag_to_string (type_tag));
- return FALSE;
- }
-}
-
-static gboolean
-gi_argument_to_gsize (GIArgument *arg_in,
- gsize *gsize_out,
- GITypeTag type_tag)
-{
- switch (type_tag) {
- case GI_TYPE_TAG_INT8:
- *gsize_out = arg_in->v_int8;
- return TRUE;
- case GI_TYPE_TAG_UINT8:
- *gsize_out = arg_in->v_uint8;
- return TRUE;
- case GI_TYPE_TAG_INT16:
- *gsize_out = arg_in->v_int16;
- return TRUE;
- case GI_TYPE_TAG_UINT16:
- *gsize_out = arg_in->v_uint16;
- return TRUE;
- case GI_TYPE_TAG_INT32:
- *gsize_out = arg_in->v_int32;
- return TRUE;
- case GI_TYPE_TAG_UINT32:
- *gsize_out = arg_in->v_uint32;
- return TRUE;
- case GI_TYPE_TAG_INT64:
- *gsize_out = arg_in->v_int64;
- return TRUE;
- case GI_TYPE_TAG_UINT64:
- *gsize_out = arg_in->v_uint64;
- return TRUE;
- default:
- PyErr_Format (PyExc_TypeError,
- "Unable to marshal %s to gsize",
- g_type_tag_to_string (type_tag));
- return FALSE;
- }
-}
-
-PyObject *
-_pygi_marshal_to_py_void (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- GIArgument *arg)
-{
- if (arg_cache->is_pointer) {
- return PyLong_FromVoidPtr (arg->v_pointer);
- }
- Py_RETURN_NONE;
-}
-
-static PyObject *
-_pygi_marshal_to_py_unichar (GIArgument *arg)
-{
- PyObject *py_obj = NULL;
-
- /* Preserve the bidirectional mapping between 0 and "" */
- if (arg->v_uint32 == 0) {
- py_obj = PYGLIB_PyUnicode_FromString ("");
- } else if (g_unichar_validate (arg->v_uint32)) {
- gchar utf8[6];
- gint bytes;
-
- bytes = g_unichar_to_utf8 (arg->v_uint32, utf8);
- py_obj = PYGLIB_PyUnicode_FromStringAndSize ((char*)utf8, bytes);
- } else {
- /* TODO: Convert the error to an exception. */
- PyErr_Format (PyExc_TypeError,
- "Invalid unicode codepoint %" G_GUINT32_FORMAT,
- arg->v_uint32);
- }
-
- return py_obj;
-}
-
-static PyObject *
-_pygi_marshal_to_py_utf8 (GIArgument *arg)
-{
- PyObject *py_obj = NULL;
- if (arg->v_string == NULL) {
- Py_RETURN_NONE;
- }
-
- py_obj = PYGLIB_PyUnicode_FromString (arg->v_string);
- return py_obj;
-}
-
-static PyObject *
-_pygi_marshal_to_py_filename (GIArgument *arg)
-{
- gchar *string = NULL;
- PyObject *py_obj = NULL;
- GError *error = NULL;
-
- if (arg->v_string == NULL) {
- Py_RETURN_NONE;
- }
-
- string = g_filename_to_utf8 (arg->v_string, -1, NULL, NULL, &error);
- if (string == NULL) {
- PyErr_SetString (PyExc_Exception, error->message);
- /* TODO: Convert the error to an exception. */
- return NULL;
- }
-
- py_obj = PYGLIB_PyUnicode_FromString (string);
- g_free (string);
-
- return py_obj;
-}
-
-
-/**
- * _pygi_marshal_to_py_basic_type:
- * @arg: The argument to convert to an object.
- * @type_tag: Type tag for @arg
- * @transfer: Transfer annotation
- *
- * Convert the given argument to a Python object. This function
- * is restricted to simple types that only require the GITypeTag
- * and GITransfer. For a more complete conversion routine, use:
- * _pygi_argument_to_object.
- *
- * Returns: A PyObject representing @arg or NULL if it cannot convert
- * the argument.
- */
-PyObject *
-_pygi_marshal_to_py_basic_type (GIArgument *arg,
- GITypeTag type_tag,
- GITransfer transfer)
-{
- switch (type_tag) {
- case GI_TYPE_TAG_BOOLEAN:
- return PyBool_FromLong (arg->v_boolean);
-
- case GI_TYPE_TAG_INT8:
- return PYGLIB_PyLong_FromLong (arg->v_int8);
-
- case GI_TYPE_TAG_UINT8:
- return PYGLIB_PyLong_FromLong (arg->v_uint8);
-
- case GI_TYPE_TAG_INT16:
- return PYGLIB_PyLong_FromLong (arg->v_int16);
-
- case GI_TYPE_TAG_UINT16:
- return PYGLIB_PyLong_FromLong (arg->v_uint16);
-
- case GI_TYPE_TAG_INT32:
- return PYGLIB_PyLong_FromLong (arg->v_int32);
-
- case GI_TYPE_TAG_UINT32:
- return PyLong_FromLongLong (arg->v_uint32);
-
- case GI_TYPE_TAG_INT64:
- return PyLong_FromLongLong (arg->v_int64);
-
- case GI_TYPE_TAG_UINT64:
- return PyLong_FromUnsignedLongLong (arg->v_uint64);
-
- case GI_TYPE_TAG_FLOAT:
- return PyFloat_FromDouble (arg->v_float);
-
- case GI_TYPE_TAG_DOUBLE:
- return PyFloat_FromDouble (arg->v_double);
-
- case GI_TYPE_TAG_GTYPE:
- return pyg_type_wrapper_new ( (GType) arg->v_long);
-
- case GI_TYPE_TAG_UNICHAR:
- return _pygi_marshal_to_py_unichar (arg);
-
- case GI_TYPE_TAG_UTF8:
- return _pygi_marshal_to_py_utf8 (arg);
-
- case GI_TYPE_TAG_FILENAME:
- return _pygi_marshal_to_py_filename (arg);
-
- default:
- return NULL;
- }
- return NULL;
-}
-
-PyObject *
-_pygi_marshal_to_py_basic_type_cache_adapter (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- GIArgument *arg)
-{
- return _pygi_marshal_to_py_basic_type (arg,
- arg_cache->type_tag,
- arg_cache->transfer);
-}
-
-PyObject *
-_pygi_marshal_to_py_array (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- GIArgument *arg)
-{
- GArray *array_;
- PyObject *py_obj = NULL;
- PyGISequenceCache *seq_cache = (PyGISequenceCache *)arg_cache;
- gsize processed_items = 0;
-
- /* GArrays make it easier to iterate over arrays
- * with different element sizes but requires that
- * we allocate a GArray if the argument was a C array
- */
- if (seq_cache->array_type == GI_ARRAY_TYPE_C) {
- gsize len;
- if (seq_cache->fixed_size >= 0) {
- g_assert(arg->v_pointer != NULL);
- len = seq_cache->fixed_size;
- } else if (seq_cache->is_zero_terminated) {
- if (arg->v_pointer == NULL) {
- len = 0;
- } else if (seq_cache->item_cache->type_tag == GI_TYPE_TAG_UINT8) {
- len = strlen (arg->v_pointer);
- } else {
- len = g_strv_length ((gchar **)arg->v_pointer);
- }
- } else {
- GIArgument *len_arg = state->args[seq_cache->len_arg_index];
- PyGIArgCache *arg_cache = _pygi_callable_cache_get_arg (callable_cache,
- seq_cache->len_arg_index);
-
- if (!gi_argument_to_gsize (len_arg, &len, arg_cache->type_tag)) {
- return NULL;
- }
- }
-
- array_ = g_array_new (FALSE,
- FALSE,
- seq_cache->item_size);
- if (array_ == NULL) {
- PyErr_NoMemory ();
-
- if (arg_cache->transfer == GI_TRANSFER_EVERYTHING && arg->v_pointer != NULL)
- g_free (arg->v_pointer);
-
- return NULL;
- }
-
- if (array_->data != NULL)
- g_free (array_->data);
- array_->data = arg->v_pointer;
- array_->len = len;
- } else {
- array_ = arg->v_pointer;
- }
-
- if (seq_cache->item_cache->type_tag == GI_TYPE_TAG_UINT8) {
- if (arg->v_pointer == NULL) {
- py_obj = PYGLIB_PyBytes_FromString ("");
- } else {
- py_obj = PYGLIB_PyBytes_FromStringAndSize (array_->data, array_->len);
- }
- } else {
- if (arg->v_pointer == NULL) {
- py_obj = PyList_New (0);
- } else {
- int i;
-
- gsize item_size;
- PyGIMarshalToPyFunc item_to_py_marshaller;
- PyGIArgCache *item_arg_cache;
-
- py_obj = PyList_New (array_->len);
- if (py_obj == NULL)
- goto err;
-
-
- item_arg_cache = seq_cache->item_cache;
- item_to_py_marshaller = item_arg_cache->to_py_marshaller;
-
- item_size = g_array_get_element_size (array_);
-
- for (i = 0; i < array_->len; i++) {
- GIArgument item_arg = {0};
- PyObject *py_item;
-
- /* If we are receiving an array of pointers, simply assign the pointer
- * and move on, letting the per-item marshaler deal with the
- * various transfer modes and ref counts (e.g. g_variant_ref_sink).
- */
- if (seq_cache->array_type == GI_ARRAY_TYPE_PTR_ARRAY) {
- item_arg.v_pointer = g_ptr_array_index ( ( GPtrArray *)array_, i);
-
- } else if (item_arg_cache->is_pointer) {
- item_arg.v_pointer = g_array_index (array_, gpointer, i);
-
- } else if (item_arg_cache->type_tag == GI_TYPE_TAG_INTERFACE) {
- PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *) item_arg_cache;
-
- // FIXME: This probably doesn't work with boxed types or gvalues. See fx. _pygi_marshal_from_py_array()
- switch (g_base_info_get_type (iface_cache->interface_info)) {
- case GI_INFO_TYPE_STRUCT:
- if (arg_cache->transfer == GI_TRANSFER_EVERYTHING &&
- !g_type_is_a (iface_cache->g_type, G_TYPE_BOXED)) {
- /* array elements are structs */
- gpointer *_struct = g_malloc (item_size);
- memcpy (_struct, array_->data + i * item_size,
- item_size);
- item_arg.v_pointer = _struct;
- } else {
- item_arg.v_pointer = array_->data + i * item_size;
- }
- break;
- default:
- item_arg.v_pointer = g_array_index (array_, gpointer, i);
- break;
- }
- } else {
- memcpy (&item_arg, array_->data + i * item_size, item_size);
- }
-
- py_item = item_to_py_marshaller ( state,
- callable_cache,
- item_arg_cache,
- &item_arg);
-
- if (py_item == NULL) {
- Py_CLEAR (py_obj);
-
- if (seq_cache->array_type == GI_ARRAY_TYPE_C)
- g_array_unref (array_);
-
- goto err;
- }
- PyList_SET_ITEM (py_obj, i, py_item);
- processed_items++;
- }
- }
- }
-
- if (seq_cache->array_type == GI_ARRAY_TYPE_C)
- g_array_free (array_, FALSE);
-
- return py_obj;
-
-err:
- if (seq_cache->array_type == GI_ARRAY_TYPE_C) {
- g_array_free (array_, arg_cache->transfer == GI_TRANSFER_EVERYTHING);
- } else {
- /* clean up unprocessed items */
- if (seq_cache->item_cache->to_py_cleanup != NULL) {
- int j;
- PyGIMarshalCleanupFunc cleanup_func = seq_cache->item_cache->to_py_cleanup;
- for (j = processed_items; j < array_->len; j++) {
- cleanup_func (state,
- seq_cache->item_cache,
- NULL,
- g_array_index (array_, gpointer, j),
- FALSE);
- }
- }
-
- if (arg_cache->transfer == GI_TRANSFER_EVERYTHING)
- g_array_free (array_, TRUE);
- }
-
- return NULL;
-}
-
-PyObject *
-_pygi_marshal_to_py_glist (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- GIArgument *arg)
-{
- GList *list_;
- gsize length;
- gsize i;
-
- PyGIMarshalToPyFunc item_to_py_marshaller;
- PyGIArgCache *item_arg_cache;
- PyGISequenceCache *seq_cache = (PyGISequenceCache *)arg_cache;
-
- PyObject *py_obj = NULL;
-
- list_ = arg->v_pointer;
- length = g_list_length (list_);
-
- py_obj = PyList_New (length);
- if (py_obj == NULL)
- return NULL;
-
- item_arg_cache = seq_cache->item_cache;
- item_to_py_marshaller = item_arg_cache->to_py_marshaller;
-
- for (i = 0; list_ != NULL; list_ = g_list_next (list_), i++) {
- GIArgument item_arg;
- PyObject *py_item;
-
- item_arg.v_pointer = list_->data;
- _pygi_hash_pointer_to_arg (&item_arg, item_arg_cache->type_tag);
- py_item = item_to_py_marshaller (state,
- callable_cache,
- item_arg_cache,
- &item_arg);
-
- if (py_item == NULL) {
- Py_CLEAR (py_obj);
- _PyGI_ERROR_PREFIX ("Item %zu: ", i);
- return NULL;
- }
-
- PyList_SET_ITEM (py_obj, i, py_item);
- }
-
- return py_obj;
-}
-
-PyObject *
-_pygi_marshal_to_py_gslist (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- GIArgument *arg)
-{
- GSList *list_;
- gsize length;
- gsize i;
-
- PyGIMarshalToPyFunc item_to_py_marshaller;
- PyGIArgCache *item_arg_cache;
- PyGISequenceCache *seq_cache = (PyGISequenceCache *)arg_cache;
-
- PyObject *py_obj = NULL;
-
- list_ = arg->v_pointer;
- length = g_slist_length (list_);
-
- py_obj = PyList_New (length);
- if (py_obj == NULL)
- return NULL;
-
- item_arg_cache = seq_cache->item_cache;
- item_to_py_marshaller = item_arg_cache->to_py_marshaller;
-
- for (i = 0; list_ != NULL; list_ = g_slist_next (list_), i++) {
- GIArgument item_arg;
- PyObject *py_item;
-
- item_arg.v_pointer = list_->data;
- _pygi_hash_pointer_to_arg (&item_arg, item_arg_cache->type_tag);
- py_item = item_to_py_marshaller (state,
- callable_cache,
- item_arg_cache,
- &item_arg);
-
- if (py_item == NULL) {
- Py_CLEAR (py_obj);
- _PyGI_ERROR_PREFIX ("Item %zu: ", i);
- return NULL;
- }
-
- PyList_SET_ITEM (py_obj, i, py_item);
- }
-
- return py_obj;
-}
-
-PyObject *
-_pygi_marshal_to_py_ghash (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- GIArgument *arg)
-{
- GHashTable *hash_;
- GHashTableIter hash_table_iter;
-
- PyGIMarshalToPyFunc key_to_py_marshaller;
- PyGIMarshalToPyFunc value_to_py_marshaller;
-
- PyGIArgCache *key_arg_cache;
- PyGIArgCache *value_arg_cache;
- PyGIHashCache *hash_cache = (PyGIHashCache *)arg_cache;
-
- GIArgument key_arg;
- GIArgument value_arg;
-
- PyObject *py_obj = NULL;
-
- hash_ = arg->v_pointer;
-
- if (hash_ == NULL) {
- py_obj = Py_None;
- Py_INCREF (py_obj);
- return py_obj;
- }
-
- py_obj = PyDict_New ();
- if (py_obj == NULL)
- return NULL;
-
- key_arg_cache = hash_cache->key_cache;
- key_to_py_marshaller = key_arg_cache->to_py_marshaller;
-
- value_arg_cache = hash_cache->value_cache;
- value_to_py_marshaller = value_arg_cache->to_py_marshaller;
-
- g_hash_table_iter_init (&hash_table_iter, hash_);
- while (g_hash_table_iter_next (&hash_table_iter,
- &key_arg.v_pointer,
- &value_arg.v_pointer)) {
- PyObject *py_key;
- PyObject *py_value;
- int retval;
-
-
- _pygi_hash_pointer_to_arg (&key_arg, hash_cache->key_cache->type_tag);
- py_key = key_to_py_marshaller ( state,
- callable_cache,
- key_arg_cache,
- &key_arg);
-
- if (py_key == NULL) {
- Py_CLEAR (py_obj);
- return NULL;
- }
-
- _pygi_hash_pointer_to_arg (&value_arg, hash_cache->value_cache->type_tag);
- py_value = value_to_py_marshaller ( state,
- callable_cache,
- value_arg_cache,
- &value_arg);
-
- if (py_value == NULL) {
- Py_CLEAR (py_obj);
- Py_DECREF(py_key);
- return NULL;
- }
-
- retval = PyDict_SetItem (py_obj, py_key, py_value);
-
- Py_DECREF (py_key);
- Py_DECREF (py_value);
-
- if (retval < 0) {
- Py_CLEAR (py_obj);
- return NULL;
- }
- }
-
- return py_obj;
-}
-
-PyObject *
-_pygi_marshal_to_py_gerror (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- GIArgument *arg)
-{
- GError *error = arg->v_pointer;
- PyObject *py_obj = NULL;
-
- py_obj = pyglib_error_marshal(&error);
-
- if (arg_cache->transfer == GI_TRANSFER_EVERYTHING && error != NULL) {
- g_error_free (error);
- }
-
- if (py_obj != NULL) {
- return py_obj;
- } else {
- Py_RETURN_NONE;
- }
-}
-
-PyObject *
-_pygi_marshal_to_py_interface_callback (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- GIArgument *arg)
-{
- PyObject *py_obj = NULL;
-
- PyErr_Format (PyExc_NotImplementedError,
- "Marshalling a callback to PyObject is not supported");
- return py_obj;
-}
-
-PyObject *
-_pygi_marshal_to_py_interface_enum (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- GIArgument *arg)
-{
- PyObject *py_obj = NULL;
- PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
- GIBaseInfo *interface;
- long c_long;
-
- interface = g_type_info_get_interface (arg_cache->type_info);
- g_assert (g_base_info_get_type (interface) == GI_INFO_TYPE_ENUM);
-
- if (!gi_argument_to_c_long(arg, &c_long,
- g_enum_info_get_storage_type ((GIEnumInfo *)interface))) {
- return NULL;
- }
-
- if (iface_cache->g_type == G_TYPE_NONE) {
- py_obj = PyObject_CallFunction (iface_cache->py_type, "l", c_long);
- } else {
- py_obj = pyg_enum_from_gtype (iface_cache->g_type, c_long);
- }
- g_base_info_unref (interface);
- return py_obj;
-}
-
-PyObject *
-_pygi_marshal_to_py_interface_flags (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- GIArgument *arg)
-{
- PyObject *py_obj = NULL;
- PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
- GIBaseInfo *interface;
- long c_long;
-
- interface = g_type_info_get_interface (arg_cache->type_info);
- g_assert (g_base_info_get_type (interface) == GI_INFO_TYPE_FLAGS);
-
- if (!gi_argument_to_c_long(arg, &c_long,
- g_enum_info_get_storage_type ((GIEnumInfo *)interface))) {
- g_base_info_unref (interface);
- return NULL;
- }
-
- g_base_info_unref (interface);
- if (iface_cache->g_type == G_TYPE_NONE) {
- /* An enum with a GType of None is an enum without GType */
-
- PyObject *py_type = _pygi_type_import_by_gi_info (iface_cache->interface_info);
- PyObject *py_args = NULL;
-
- if (!py_type)
- return NULL;
-
- py_args = PyTuple_New (1);
- if (PyTuple_SetItem (py_args, 0, PyLong_FromLong (c_long)) != 0) {
- Py_DECREF (py_args);
- Py_DECREF (py_type);
- return NULL;
- }
-
- py_obj = PyObject_CallFunction (py_type, "l", c_long);
-
- Py_DECREF (py_args);
- Py_DECREF (py_type);
- } else {
- py_obj = pyg_flags_from_gtype (iface_cache->g_type, c_long);
- }
-
- return py_obj;
-}
-
-PyObject *
-_pygi_marshal_to_py_interface_struct_cache_adapter (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- GIArgument *arg)
-{
- PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
-
- return _pygi_marshal_to_py_interface_struct (arg,
- iface_cache->interface_info,
- iface_cache->g_type,
- iface_cache->py_type,
- arg_cache->transfer,
- arg_cache->is_caller_allocates,
- iface_cache->is_foreign);
-}
-
-PyObject *
-_pygi_marshal_to_py_interface_interface (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- GIArgument *arg)
-{
- PyObject *py_obj = NULL;
-
- PyErr_Format (PyExc_NotImplementedError,
- "Marshalling for this type is not implemented yet");
- return py_obj;
-}
-
-PyObject *
-_pygi_marshal_to_py_interface_boxed (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- GIArgument *arg)
-{
- PyObject *py_obj = NULL;
-
- PyErr_Format (PyExc_NotImplementedError,
- "Marshalling for this type is not implemented yet");
- return py_obj;
-}
-
-PyObject *
-_pygi_marshal_to_py_interface_object_cache_adapter (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- GIArgument *arg)
-{
- return _pygi_marshal_to_py_object(arg, arg_cache->transfer);
-}
-
-PyObject *
-_pygi_marshal_to_py_interface_union (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- GIArgument *arg)
-{
- PyObject *py_obj = NULL;
-
- PyErr_Format (PyExc_NotImplementedError,
- "Marshalling for this type is not implemented yet");
- return py_obj;
-}
-
-PyObject *
-_pygi_marshal_to_py_object (GIArgument *arg, GITransfer transfer) {
- PyObject *pyobj;
-
- if (arg->v_pointer == NULL) {
- pyobj = Py_None;
- Py_INCREF (pyobj);
-
- } else if (G_IS_PARAM_SPEC(arg->v_pointer)) {
- pyobj = pyg_param_spec_new (arg->v_pointer);
- if (transfer == GI_TRANSFER_EVERYTHING)
- g_param_spec_unref (arg->v_pointer);
-
- } else {
- pyobj = pygobject_new_full (arg->v_pointer,
- /*steal=*/ transfer == GI_TRANSFER_EVERYTHING,
- /*type=*/ NULL);
- }
-
- return pyobj;
-}
-
-PyObject *
-_pygi_marshal_to_py_interface_struct (GIArgument *arg,
- GIInterfaceInfo *interface_info,
- GType g_type,
- PyObject *py_type,
- GITransfer transfer,
- gboolean is_allocated,
- gboolean is_foreign)
-{
- PyObject *py_obj = NULL;
-
- if (arg->v_pointer == NULL) {
- Py_RETURN_NONE;
- }
-
- if (g_type_is_a (g_type, G_TYPE_VALUE)) {
- py_obj = pyg_value_as_pyobject (arg->v_pointer, FALSE);
- } else if (is_foreign) {
- py_obj = pygi_struct_foreign_convert_from_g_argument (interface_info,
- arg->v_pointer);
- } else if (g_type_is_a (g_type, G_TYPE_BOXED)) {
- if (py_type) {
- py_obj = _pygi_boxed_new ((PyTypeObject *) py_type,
- arg->v_pointer,
- transfer == GI_TRANSFER_EVERYTHING || is_allocated,
- is_allocated ?
- g_struct_info_get_size(interface_info) : 0);
- }
- } else if (g_type_is_a (g_type, G_TYPE_POINTER)) {
- if (py_type == NULL ||
- !PyType_IsSubtype ((PyTypeObject *) py_type, &PyGIStruct_Type)) {
- g_warn_if_fail (transfer == GI_TRANSFER_NOTHING);
- py_obj = pyg_pointer_new (g_type, arg->v_pointer);
- } else {
- py_obj = _pygi_struct_new ( (PyTypeObject *) py_type,
- arg->v_pointer,
- transfer == GI_TRANSFER_EVERYTHING);
- }
- } else if (g_type_is_a (g_type, G_TYPE_VARIANT)) {
- /* Note: sink the variant (add a ref) only if we are not transfered ownership.
- * GLib.Variant overrides __del__ which will then call "g_variant_unref" for
- * cleanup in either case. */
- if (py_type) {
- if (transfer == GI_TRANSFER_NOTHING) {
- g_variant_ref_sink (arg->v_pointer);
- }
- py_obj = _pygi_struct_new ((PyTypeObject *) py_type,
- arg->v_pointer,
- FALSE);
- }
- } else if (g_type == G_TYPE_NONE) {
- if (py_type) {
- py_obj = _pygi_struct_new ((PyTypeObject *) py_type,
- arg->v_pointer,
- transfer == GI_TRANSFER_EVERYTHING);
- }
- } else {
- PyErr_Format (PyExc_NotImplementedError,
- "structure type '%s' is not supported yet",
- g_type_name (g_type));
- }
-
- return py_obj;
-}
diff --git a/gi/pygi-marshal-to-py.h b/gi/pygi-marshal-to-py.h
deleted file mode 100644
index 1378630..0000000
--- a/gi/pygi-marshal-to-py.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/* -*- Mode: C; c-basic-offset: 4 -*-
- * vim: tabstop=4 shiftwidth=4 expandtab
- *
- * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>, Red Hat, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
- * USA
- */
-
-#ifndef __PYGI_MARSHAL_TO_PY_H__
-#define __PYGI_MARSHAL_TO_PY_H__
-
-PyObject *_pygi_marshal_to_py_basic_type (GIArgument *arg,
- GITypeTag type_tag,
- GITransfer transfer);
-PyObject *_pygi_marshal_to_py_basic_type_cache_adapter (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- GIArgument *arg);
-PyObject *_pygi_marshal_to_py_void (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- GIArgument *arg);
-PyObject *_pygi_marshal_to_py_array (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- GIArgument *arg);
-PyObject *_pygi_marshal_to_py_glist (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- GIArgument *arg);
-PyObject *_pygi_marshal_to_py_gslist (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- GIArgument *arg);
-PyObject *_pygi_marshal_to_py_ghash (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- GIArgument *arg);
-PyObject *_pygi_marshal_to_py_gerror (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- GIArgument *arg);
-PyObject *_pygi_marshal_to_py_interface_callback(PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- GIArgument *arg);
-PyObject *_pygi_marshal_to_py_interface_enum (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- GIArgument *arg);
-PyObject *_pygi_marshal_to_py_interface_flags (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- GIArgument *arg);
-PyObject *_pygi_marshal_to_py_interface_struct_cache_adapter (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- GIArgument *arg);
-PyObject *_pygi_marshal_to_py_interface_interface(PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- GIArgument *arg);
-PyObject *_pygi_marshal_to_py_interface_boxed (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- GIArgument *arg);
-PyObject *_pygi_marshal_to_py_interface_object_cache_adapter (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- GIArgument *arg);
-PyObject *_pygi_marshal_to_py_interface_union (PyGIInvokeState *state,
- PyGICallableCache *callable_cache,
- PyGIArgCache *arg_cache,
- GIArgument *arg);
-
-/* Simplified marshalers shared between vfunc/closure and direct function calls. */
-
-PyObject *_pygi_marshal_to_py_object (GIArgument *arg,
- GITransfer transfer);
-
-PyObject *_pygi_marshal_to_py_interface_struct (GIArgument *arg,
- GIInterfaceInfo *interface_info,
- GType g_type,
- PyObject *py_type,
- GITransfer transfer,
- gboolean is_allocated,
- gboolean is_foreign);
-
-G_END_DECLS
-
-#endif /* __PYGI_MARSHAL_TO_PY_H__ */
diff --git a/gi/pygi-object.c b/gi/pygi-object.c
new file mode 100644
index 0000000..2aefee1
--- /dev/null
+++ b/gi/pygi-object.c
@@ -0,0 +1,273 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>
+ * Copyright (C) 2014 Simon Feltman <sfeltman@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, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <glib.h>
+#include <Python.h>
+#include <pyglib-python-compat.h>
+
+#include "pygi-object.h"
+#include "pygi-private.h"
+#include "pygparamspec.h"
+
+/*
+ * GObject from Python
+ */
+
+/* _pygi_marshal_from_py_gobject:
+ * py_arg: (in):
+ * arg: (out):
+ */
+static gboolean
+_pygi_marshal_from_py_gobject (PyObject *py_arg, /*in*/
+ GIArgument *arg, /*out*/
+ GITransfer transfer) {
+ GObject *gobj;
+
+ if (py_arg == Py_None) {
+ arg->v_pointer = NULL;
+ return TRUE;
+ }
+
+ if (!pygobject_check (py_arg, &PyGObject_Type)) {
+ PyObject *repr = PyObject_Repr (py_arg);
+ PyErr_Format(PyExc_TypeError, "expected GObject but got %s",
+ PYGLIB_PyUnicode_AsString (repr));
+ Py_DECREF (repr);
+ return FALSE;
+ }
+
+ gobj = pygobject_get (py_arg);
+ if (transfer == GI_TRANSFER_EVERYTHING) {
+ /* For transfer everything, add a new ref that the callee will take ownership of.
+ * Pythons existing ref to the GObject will be managed with the PyGObject wrapper.
+ */
+ g_object_ref (gobj);
+ }
+
+ arg->v_pointer = gobj;
+ return TRUE;
+}
+
+/* pygi_arg_gobject_out_arg_from_py:
+ * py_arg: (in):
+ * arg: (out):
+ *
+ * A specialization for marshaling Python GObjects used for out/return values
+ * from a Python implemented vfuncs, signals, or an assignment to a GObject property.
+ */
+gboolean
+pygi_arg_gobject_out_arg_from_py (PyObject *py_arg, /*in*/
+ GIArgument *arg, /*out*/
+ GITransfer transfer) {
+ GObject *gobj;
+ if (!_pygi_marshal_from_py_gobject (py_arg, arg, transfer)) {
+ return FALSE;
+ }
+
+ /* HACK: At this point the basic marshaling of the GObject was successful
+ * but we add some special case hacks for vfunc returns due to buggy APIs:
+ * https://bugzilla.gnome.org/show_bug.cgi?id=693393
+ */
+ gobj = arg->v_pointer;
+ if (py_arg->ob_refcnt == 1 && gobj->ref_count == 1) {
+ /* If both object ref counts are only 1 at this point (the reference held
+ * in a return tuple), we assume the GObject will be free'd before reaching
+ * its target and become invalid. So instead of getting invalid object errors
+ * we add a new GObject ref.
+ */
+ g_object_ref (gobj);
+
+ if (((PyGObject *)py_arg)->private_flags.flags & PYGOBJECT_GOBJECT_WAS_FLOATING) {
+ /*
+ * We want to re-float instances that were floating and the Python
+ * wrapper assumed ownership. With the additional caveat that there
+ * are not any strong references beyond the return tuple.
+ */
+ g_object_force_floating (gobj);
+
+ } else {
+ PyObject *repr = PyObject_Repr (py_arg);
+ gchar *msg = g_strdup_printf ("Expecting to marshal a borrowed reference for %s, "
+ "but nothing in Python is holding a reference to this object. "
+ "See: https://bugzilla.gnome.org/show_bug.cgi?id=687522",
+ PYGLIB_PyUnicode_AsString(repr));
+ Py_DECREF (repr);
+ if (PyErr_WarnEx (PyExc_RuntimeWarning, msg, 2)) {
+ g_free (msg);
+ return FALSE;
+ }
+ g_free (msg);
+ }
+ }
+
+ return TRUE;
+}
+
+static gboolean
+_pygi_marshal_from_py_interface_object (PyGIInvokeState *state,
+ PyGICallableCache *callable_cache,
+ PyGIArgCache *arg_cache,
+ PyObject *py_arg,
+ GIArgument *arg,
+ gpointer *cleanup_data)
+{
+ gboolean res = FALSE;
+
+ if (py_arg == Py_None) {
+ arg->v_pointer = NULL;
+ return TRUE;
+ }
+
+ if (!PyObject_IsInstance (py_arg, ( (PyGIInterfaceCache *)arg_cache)->py_type)) {
+ PyObject *module = PyObject_GetAttrString(py_arg, "__module__");
+
+ PyErr_Format (PyExc_TypeError, "argument %s: Expected %s, but got %s%s%s",
+ arg_cache->arg_name ? arg_cache->arg_name : "self",
+ ( (PyGIInterfaceCache *)arg_cache)->type_name,
+ module ? PYGLIB_PyUnicode_AsString(module) : "",
+ module ? "." : "",
+ py_arg->ob_type->tp_name);
+ if (module)
+ Py_DECREF (module);
+ return FALSE;
+ }
+
+ res = _pygi_marshal_from_py_gobject (py_arg, arg, arg_cache->transfer);
+ *cleanup_data = arg->v_pointer;
+ return res;
+}
+
+static void
+_pygi_marshal_cleanup_from_py_interface_object (PyGIInvokeState *state,
+ PyGIArgCache *arg_cache,
+ PyObject *py_arg,
+ gpointer data,
+ gboolean was_processed)
+{
+ /* If we processed the parameter but fail before invoking the method,
+ we need to remove the ref we added */
+ if (was_processed && state->failed && data != NULL &&
+ arg_cache->transfer == GI_TRANSFER_EVERYTHING)
+ g_object_unref (G_OBJECT(data));
+}
+
+
+/*
+ * GObject to Python
+ */
+
+PyObject *
+pygi_arg_gobject_to_py (GIArgument *arg, GITransfer transfer) {
+ PyObject *pyobj;
+
+ if (arg->v_pointer == NULL) {
+ pyobj = Py_None;
+ Py_INCREF (pyobj);
+
+ } else if (G_IS_PARAM_SPEC(arg->v_pointer)) {
+ pyobj = pyg_param_spec_new (arg->v_pointer);
+ if (transfer == GI_TRANSFER_EVERYTHING)
+ g_param_spec_unref (arg->v_pointer);
+
+ } else {
+ pyobj = pygobject_new_full (arg->v_pointer,
+ /*steal=*/ transfer == GI_TRANSFER_EVERYTHING,
+ /*type=*/ NULL);
+ }
+
+ return pyobj;
+}
+
+static PyObject *
+_pygi_marshal_to_py_interface_object_cache_adapter (PyGIInvokeState *state,
+ PyGICallableCache *callable_cache,
+ PyGIArgCache *arg_cache,
+ GIArgument *arg)
+{
+ return pygi_arg_gobject_to_py(arg, arg_cache->transfer);
+}
+
+static void
+_pygi_marshal_cleanup_to_py_interface_object (PyGIInvokeState *state,
+ PyGIArgCache *arg_cache,
+ PyObject *dummy,
+ gpointer data,
+ gboolean was_processed)
+{
+ /* If we error out and the object is not marshalled into a PyGObject
+ we must take care of removing the ref */
+ if (!was_processed && arg_cache->transfer == GI_TRANSFER_EVERYTHING)
+ g_object_unref (G_OBJECT(data));
+}
+
+static gboolean
+pygi_arg_gobject_setup_from_info (PyGIArgCache *arg_cache,
+ GITypeInfo *type_info,
+ GIArgInfo *arg_info,
+ GITransfer transfer,
+ PyGIDirection direction)
+{
+ /* NOTE: usage of pygi_arg_interface_new_from_info already calls
+ * pygi_arg_interface_setup so no need to do it here.
+ */
+
+ if (direction & PYGI_DIRECTION_FROM_PYTHON) {
+ arg_cache->from_py_marshaller = _pygi_marshal_from_py_interface_object;
+ arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_interface_object;
+ }
+
+ if (direction & PYGI_DIRECTION_TO_PYTHON) {
+ arg_cache->to_py_marshaller = _pygi_marshal_to_py_interface_object_cache_adapter;
+ arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_interface_object;
+ }
+
+ return TRUE;
+}
+
+PyGIArgCache *
+pygi_arg_gobject_new_from_info (GITypeInfo *type_info,
+ GIArgInfo *arg_info,
+ GITransfer transfer,
+ PyGIDirection direction,
+ GIInterfaceInfo *iface_info)
+{
+ gboolean res = FALSE;
+ PyGIArgCache *cache = NULL;
+
+ cache = pygi_arg_interface_new_from_info (type_info,
+ arg_info,
+ transfer,
+ direction,
+ iface_info);
+ if (cache == NULL)
+ return NULL;
+
+ res = pygi_arg_gobject_setup_from_info (cache,
+ type_info,
+ arg_info,
+ transfer,
+ direction);
+ if (res) {
+ return cache;
+ } else {
+ pygi_arg_cache_free (cache);
+ return NULL;
+ }
+}
diff --git a/gi/pygi-object.h b/gi/pygi-object.h
new file mode 100644
index 0000000..4a8800e
--- /dev/null
+++ b/gi/pygi-object.h
@@ -0,0 +1,46 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * Copyright (C) 2014 Simon Feltman <sfeltman@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, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __PYGI_OBJECT_H__
+#define __PYGI_OBJECT_H__
+
+#include <girepository.h>
+#include "pygi-cache.h"
+
+G_BEGIN_DECLS
+
+gboolean
+pygi_arg_gobject_out_arg_from_py (PyObject *py_arg, /* in */
+ GIArgument *arg, /* out */
+ GITransfer transfer);
+
+PyObject *
+pygi_arg_gobject_to_py (GIArgument *arg,
+ GITransfer transfer);
+
+PyGIArgCache *
+pygi_arg_gobject_new_from_info (GITypeInfo *type_info,
+ GIArgInfo *arg_info, /* may be null */
+ GITransfer transfer,
+ PyGIDirection direction,
+ GIInterfaceInfo *iface_info);
+
+G_END_DECLS
+
+#endif /*__PYGI_OBJECT_H__*/
diff --git a/gi/pygi-private.h b/gi/pygi-private.h
index 97eced5..af12f1c 100644
--- a/gi/pygi-private.h
+++ b/gi/pygi-private.h
@@ -16,7 +16,7 @@
#include "pygi.h"
-#include "pygobject-external.h"
+#include "pygobject-private.h"
#include "pygi-repository.h"
#include "pygi-info.h"
diff --git a/gi/pygi-signal-closure.c b/gi/pygi-signal-closure.c
index bcd1320..60f6657 100644
--- a/gi/pygi-signal-closure.c
+++ b/gi/pygi-signal-closure.c
@@ -19,6 +19,7 @@
*/
#include "pygi-private.h"
+#include "pygi-value.h"
static GISignalInfo *
_pygi_lookup_signal_from_g_type (GType g_type,
diff --git a/gi/pygi-source.c b/gi/pygi-source.c
index 66bbc3c..d2f39c6 100644
--- a/gi/pygi-source.c
+++ b/gi/pygi-source.c
@@ -23,8 +23,7 @@
* IN THE SOFTWARE.
*/
-#define NO_IMPORT
-#include "pygobject.h"
+#include "pygobject-private.h"
#include "pygi-private.h"
#include "pyglib.h"
diff --git a/gi/pygi-struct-marshal.c b/gi/pygi-struct-marshal.c
new file mode 100644
index 0000000..338f2be
--- /dev/null
+++ b/gi/pygi-struct-marshal.c
@@ -0,0 +1,517 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>
+ * Copyright (C) 2014 Simon Feltman <sfeltman@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, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <glib.h>
+#include <Python.h>
+#include <pyglib-python-compat.h>
+
+#include "pygi-struct-marshal.h"
+#include "pygi-private.h"
+#include "pygi-value.h"
+
+/*
+ * _is_union_member - check to see if the py_arg is actually a member of the
+ * expected C union
+ */
+static gboolean
+_is_union_member (GIInterfaceInfo *interface_info, PyObject *py_arg) {
+ gint i;
+ gint n_fields;
+ GIUnionInfo *union_info;
+ GIInfoType info_type;
+ gboolean is_member = FALSE;
+
+ info_type = g_base_info_get_type (interface_info);
+
+ if (info_type != GI_INFO_TYPE_UNION)
+ return FALSE;
+
+ union_info = (GIUnionInfo *) interface_info;
+ n_fields = g_union_info_get_n_fields (union_info);
+
+ for (i = 0; i < n_fields; i++) {
+ GIFieldInfo *field_info;
+ GITypeInfo *field_type_info;
+
+ field_info = g_union_info_get_field (union_info, i);
+ field_type_info = g_field_info_get_type (field_info);
+
+ /* we can only check if the members are interfaces */
+ if (g_type_info_get_tag (field_type_info) == GI_TYPE_TAG_INTERFACE) {
+ GIInterfaceInfo *field_iface_info;
+ PyObject *py_type;
+
+ field_iface_info = g_type_info_get_interface (field_type_info);
+ py_type = _pygi_type_import_by_gi_info ((GIBaseInfo *) field_iface_info);
+
+ if (py_type != NULL && PyObject_IsInstance (py_arg, py_type)) {
+ is_member = TRUE;
+ }
+
+ Py_XDECREF (py_type);
+ g_base_info_unref ( ( GIBaseInfo *) field_iface_info);
+ }
+
+ g_base_info_unref ( ( GIBaseInfo *) field_type_info);
+ g_base_info_unref ( ( GIBaseInfo *) field_info);
+
+ if (is_member)
+ break;
+ }
+
+ return is_member;
+}
+
+
+/*
+ * GValue from Python
+ */
+
+/* _pygi_marshal_from_py_gvalue:
+ * py_arg: (in):
+ * arg: (out):
+ * transfer:
+ * copy_reference: TRUE if arg should use the pointer reference held by py_arg
+ * when it is already holding a GValue vs. copying the value.
+ */
+gboolean
+_pygi_marshal_from_py_gvalue (PyObject *py_arg,
+ GIArgument *arg,
+ GITransfer transfer,
+ gboolean copy_reference) {
+ GValue *value;
+ GType object_type;
+
+ object_type = pyg_type_from_object_strict ( (PyObject *) py_arg->ob_type, FALSE);
+ if (object_type == G_TYPE_INVALID) {
+ PyErr_SetString (PyExc_RuntimeError, "unable to retrieve object's GType");
+ return FALSE;
+ }
+
+ /* if already a gvalue, use that, else marshal into gvalue */
+ if (object_type == G_TYPE_VALUE) {
+ GValue *source_value = pyg_boxed_get (py_arg, GValue);
+ if (copy_reference) {
+ value = source_value;
+ } else {
+ value = g_slice_new0 (GValue);
+ g_value_init (value, G_VALUE_TYPE (source_value));
+ g_value_copy (source_value, value);
+ }
+ } else {
+ value = g_slice_new0 (GValue);
+ g_value_init (value, object_type);
+ if (pyg_value_from_pyobject (value, py_arg) < 0) {
+ g_slice_free (GValue, value);
+ PyErr_SetString (PyExc_RuntimeError, "PyObject conversion to GValue failed");
+ return FALSE;
+ }
+ }
+
+ arg->v_pointer = value;
+ return TRUE;
+}
+
+void
+_pygi_marshal_cleanup_from_py_interface_struct_gvalue (PyGIInvokeState *state,
+ PyGIArgCache *arg_cache,
+ PyObject *py_arg,
+ gpointer data,
+ gboolean was_processed)
+{
+ /* Note py_arg can be NULL for hash table which is a bug. */
+ if (was_processed && py_arg != NULL) {
+ GType py_object_type =
+ pyg_type_from_object_strict ( (PyObject *) py_arg->ob_type, FALSE);
+
+ /* When a GValue was not passed, it means the marshalers created a new
+ * one to pass in, clean this up.
+ */
+ if (py_object_type != G_TYPE_VALUE) {
+ g_value_unset ((GValue *) data);
+ g_slice_free (GValue, data);
+ }
+ }
+}
+
+/* _pygi_marshal_from_py_gclosure:
+ * py_arg: (in):
+ * arg: (out):
+ */
+gboolean
+_pygi_marshal_from_py_gclosure(PyObject *py_arg,
+ GIArgument *arg)
+{
+ GClosure *closure;
+ GType object_gtype = pyg_type_from_object_strict (py_arg, FALSE);
+
+ if ( !(PyCallable_Check(py_arg) ||
+ g_type_is_a (object_gtype, G_TYPE_CLOSURE))) {
+ PyErr_Format (PyExc_TypeError, "Must be callable, not %s",
+ py_arg->ob_type->tp_name);
+ return FALSE;
+ }
+
+ if (g_type_is_a (object_gtype, G_TYPE_CLOSURE))
+ closure = (GClosure *)pyg_boxed_get (py_arg, void);
+ else
+ closure = pyg_closure_new (py_arg, NULL, NULL);
+
+ if (closure == NULL) {
+ PyErr_SetString (PyExc_RuntimeError, "PyObject conversion to GClosure failed");
+ return FALSE;
+ }
+
+ arg->v_pointer = closure;
+ return TRUE;
+}
+
+/* _pygi_marshal_from_py_interface_struct:
+ *
+ * Dispatcher to various sub marshalers
+ */
+gboolean
+_pygi_marshal_from_py_interface_struct (PyObject *py_arg,
+ GIArgument *arg,
+ const gchar *arg_name,
+ GIBaseInfo *interface_info,
+ GType g_type,
+ PyObject *py_type,
+ GITransfer transfer,
+ gboolean copy_reference,
+ gboolean is_foreign,
+ gboolean is_pointer)
+{
+ gboolean is_union = FALSE;
+
+ if (py_arg == Py_None) {
+ arg->v_pointer = NULL;
+ return TRUE;
+ }
+
+ /* FIXME: handle this large if statement in the cache
+ * and set the correct marshaller
+ */
+
+ if (g_type_is_a (g_type, G_TYPE_CLOSURE)) {
+ return _pygi_marshal_from_py_gclosure (py_arg, arg);
+ } else if (g_type_is_a (g_type, G_TYPE_VALUE)) {
+ return _pygi_marshal_from_py_gvalue(py_arg,
+ arg,
+ transfer,
+ copy_reference);
+ } else if (is_foreign) {
+ PyObject *success;
+ success = pygi_struct_foreign_convert_to_g_argument (py_arg,
+ interface_info,
+ transfer,
+ arg);
+
+ return (success == Py_None);
+ } else if (!PyObject_IsInstance (py_arg, py_type)) {
+ /* first check to see if this is a member of the expected union */
+ is_union = _is_union_member (interface_info, py_arg);
+ if (!is_union) {
+ goto type_error;
+ }
+ }
+
+ if (g_type_is_a (g_type, G_TYPE_BOXED)) {
+ /* Additionally use pyg_type_from_object to pull the stashed __gtype__
+ * attribute off of the input argument for type checking. This is needed
+ * to work around type discrepancies in cases with aliased (typedef) types.
+ * e.g. GtkAllocation, GdkRectangle.
+ * See: https://bugzilla.gnomethere are .org/show_bug.cgi?id=707140
+ */
+ if (is_union || pyg_boxed_check (py_arg, g_type) ||
+ g_type_is_a (pyg_type_from_object (py_arg), g_type)) {
+ arg->v_pointer = pyg_boxed_get (py_arg, void);
+ if (transfer == GI_TRANSFER_EVERYTHING) {
+ arg->v_pointer = g_boxed_copy (g_type, arg->v_pointer);
+ }
+ } else {
+ goto type_error;
+ }
+
+ } else if (g_type_is_a (g_type, G_TYPE_POINTER) ||
+ g_type_is_a (g_type, G_TYPE_VARIANT) ||
+ g_type == G_TYPE_NONE) {
+ g_warn_if_fail (g_type_is_a (g_type, G_TYPE_VARIANT) || !is_pointer || transfer == GI_TRANSFER_NOTHING);
+
+ if (g_type_is_a (g_type, G_TYPE_VARIANT) &&
+ pyg_type_from_object (py_arg) != G_TYPE_VARIANT) {
+ PyErr_SetString (PyExc_TypeError, "expected GLib.Variant");
+ return FALSE;
+ }
+ arg->v_pointer = pyg_pointer_get (py_arg, void);
+ if (transfer == GI_TRANSFER_EVERYTHING) {
+ g_variant_ref ((GVariant *)arg->v_pointer);
+ }
+
+ } else {
+ PyErr_Format (PyExc_NotImplementedError,
+ "structure type '%s' is not supported yet",
+ g_type_name(g_type));
+ return FALSE;
+ }
+ return TRUE;
+
+type_error:
+ {
+ gchar *type_name = _pygi_g_base_info_get_fullname (interface_info);
+ PyObject *module = PyObject_GetAttrString(py_arg, "__module__");
+
+ PyErr_Format (PyExc_TypeError, "argument %s: Expected %s, but got %s%s%s",
+ arg_name ? arg_name : "self",
+ type_name,
+ module ? PYGLIB_PyUnicode_AsString(module) : "",
+ module ? "." : "",
+ py_arg->ob_type->tp_name);
+ if (module)
+ Py_DECREF (module);
+ g_free (type_name);
+ return FALSE;
+ }
+}
+
+static gboolean
+_pygi_marshal_from_py_interface_struct_cache_adapter (PyGIInvokeState *state,
+ PyGICallableCache *callable_cache,
+ PyGIArgCache *arg_cache,
+ PyObject *py_arg,
+ GIArgument *arg,
+ gpointer *cleanup_data)
+{
+ PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
+
+ gboolean res = _pygi_marshal_from_py_interface_struct (py_arg,
+ arg,
+ arg_cache->arg_name,
+ iface_cache->interface_info,
+ iface_cache->g_type,
+ iface_cache->py_type,
+ arg_cache->transfer,
+ TRUE, /*copy_reference*/
+ iface_cache->is_foreign,
+ arg_cache->is_pointer);
+
+ /* Assume struct marshaling is always a pointer and assign cleanup_data
+ * here rather than passing it further down the chain.
+ */
+ *cleanup_data = arg->v_pointer;
+ return res;
+}
+
+static void
+_pygi_marshal_cleanup_from_py_interface_struct_foreign (PyGIInvokeState *state,
+ PyGIArgCache *arg_cache,
+ PyObject *py_arg,
+ gpointer data,
+ gboolean was_processed)
+{
+ if (state->failed && was_processed)
+ pygi_struct_foreign_release (
+ ( (PyGIInterfaceCache *)arg_cache)->interface_info,
+ data);
+}
+
+
+PyObject *
+_pygi_marshal_to_py_interface_struct (GIArgument *arg,
+ GIInterfaceInfo *interface_info,
+ GType g_type,
+ PyObject *py_type,
+ GITransfer transfer,
+ gboolean is_allocated,
+ gboolean is_foreign)
+{
+ PyObject *py_obj = NULL;
+
+ if (arg->v_pointer == NULL) {
+ Py_RETURN_NONE;
+ }
+
+ if (g_type_is_a (g_type, G_TYPE_VALUE)) {
+ py_obj = pyg_value_as_pyobject (arg->v_pointer, FALSE);
+ } else if (is_foreign) {
+ py_obj = pygi_struct_foreign_convert_from_g_argument (interface_info,
+ arg->v_pointer);
+ } else if (g_type_is_a (g_type, G_TYPE_BOXED)) {
+ if (py_type) {
+ py_obj = _pygi_boxed_new ((PyTypeObject *) py_type,
+ arg->v_pointer,
+ transfer == GI_TRANSFER_EVERYTHING || is_allocated,
+ is_allocated ?
+ g_struct_info_get_size(interface_info) : 0);
+ }
+ } else if (g_type_is_a (g_type, G_TYPE_POINTER)) {
+ if (py_type == NULL ||
+ !PyType_IsSubtype ((PyTypeObject *) py_type, &PyGIStruct_Type)) {
+ g_warn_if_fail (transfer == GI_TRANSFER_NOTHING);
+ py_obj = pyg_pointer_new (g_type, arg->v_pointer);
+ } else {
+ py_obj = _pygi_struct_new ( (PyTypeObject *) py_type,
+ arg->v_pointer,
+ transfer == GI_TRANSFER_EVERYTHING);
+ }
+ } else if (g_type_is_a (g_type, G_TYPE_VARIANT)) {
+ /* Note: sink the variant (add a ref) only if we are not transfered ownership.
+ * GLib.Variant overrides __del__ which will then call "g_variant_unref" for
+ * cleanup in either case. */
+ if (py_type) {
+ if (transfer == GI_TRANSFER_NOTHING) {
+ g_variant_ref_sink (arg->v_pointer);
+ }
+ py_obj = _pygi_struct_new ((PyTypeObject *) py_type,
+ arg->v_pointer,
+ FALSE);
+ }
+ } else if (g_type == G_TYPE_NONE) {
+ if (py_type) {
+ py_obj = _pygi_struct_new ((PyTypeObject *) py_type,
+ arg->v_pointer,
+ transfer == GI_TRANSFER_EVERYTHING);
+ }
+ } else {
+ PyErr_Format (PyExc_NotImplementedError,
+ "structure type '%s' is not supported yet",
+ g_type_name (g_type));
+ }
+
+ return py_obj;
+}
+
+static PyObject *
+_pygi_marshal_to_py_interface_struct_cache_adapter (PyGIInvokeState *state,
+ PyGICallableCache *callable_cache,
+ PyGIArgCache *arg_cache,
+ GIArgument *arg)
+{
+ PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
+
+ return _pygi_marshal_to_py_interface_struct (arg,
+ iface_cache->interface_info,
+ iface_cache->g_type,
+ iface_cache->py_type,
+ arg_cache->transfer,
+ arg_cache->is_caller_allocates,
+ iface_cache->is_foreign);
+}
+
+static void
+_pygi_marshal_cleanup_to_py_interface_struct_foreign (PyGIInvokeState *state,
+ PyGIArgCache *arg_cache,
+ PyObject *dummy,
+ gpointer data,
+ gboolean was_processed)
+{
+ if (!was_processed && arg_cache->transfer == GI_TRANSFER_EVERYTHING)
+ pygi_struct_foreign_release (
+ ( (PyGIInterfaceCache *)arg_cache)->interface_info,
+ data);
+}
+
+
+static void
+_arg_cache_from_py_interface_struct_setup (PyGIArgCache *arg_cache,
+ GIInterfaceInfo *iface_info,
+ GITransfer transfer)
+{
+ PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
+ iface_cache->is_foreign = g_struct_info_is_foreign ( (GIStructInfo*)iface_info);
+ arg_cache->from_py_marshaller = _pygi_marshal_from_py_interface_struct_cache_adapter;
+
+ if (iface_cache->g_type == G_TYPE_VALUE)
+ arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_interface_struct_gvalue;
+ else if (iface_cache->is_foreign)
+ arg_cache->from_py_cleanup = _pygi_marshal_cleanup_from_py_interface_struct_foreign;
+}
+
+static void
+_arg_cache_to_py_interface_struct_setup (PyGIArgCache *arg_cache,
+ GIInterfaceInfo *iface_info,
+ GITransfer transfer)
+{
+ PyGIInterfaceCache *iface_cache = (PyGIInterfaceCache *)arg_cache;
+ iface_cache->is_foreign = g_struct_info_is_foreign ( (GIStructInfo*)iface_info);
+ arg_cache->to_py_marshaller = _pygi_marshal_to_py_interface_struct_cache_adapter;
+
+ if (iface_cache->is_foreign)
+ arg_cache->to_py_cleanup = _pygi_marshal_cleanup_to_py_interface_struct_foreign;
+}
+
+static gboolean
+pygi_arg_struct_setup_from_info (PyGIArgCache *arg_cache,
+ GITypeInfo *type_info,
+ GIArgInfo *arg_info,
+ GITransfer transfer,
+ PyGIDirection direction,
+ GIInterfaceInfo *iface_info)
+{
+ /* NOTE: usage of pygi_arg_interface_new_from_info already calls
+ * pygi_arg_interface_setup so no need to do it here.
+ */
+
+ if (direction & PYGI_DIRECTION_FROM_PYTHON) {
+ _arg_cache_from_py_interface_struct_setup (arg_cache,
+ iface_info,
+ transfer);
+ }
+
+ if (direction & PYGI_DIRECTION_TO_PYTHON) {
+ _arg_cache_to_py_interface_struct_setup (arg_cache,
+ iface_info,
+ transfer);
+ }
+
+ return TRUE;
+}
+
+PyGIArgCache *
+pygi_arg_struct_new_from_info (GITypeInfo *type_info,
+ GIArgInfo *arg_info,
+ GITransfer transfer,
+ PyGIDirection direction,
+ GIInterfaceInfo *iface_info)
+{
+ gboolean res = FALSE;
+ PyGIArgCache *cache = NULL;
+
+ cache = pygi_arg_interface_new_from_info (type_info,
+ arg_info,
+ transfer,
+ direction,
+ iface_info);
+ if (cache == NULL)
+ return NULL;
+
+ res = pygi_arg_struct_setup_from_info (cache,
+ type_info,
+ arg_info,
+ transfer,
+ direction,
+ iface_info);
+ if (res) {
+ return cache;
+ } else {
+ pygi_arg_cache_free (cache);
+ return NULL;
+ }
+}
diff --git a/gi/pygi-struct-marshal.h b/gi/pygi-struct-marshal.h
new file mode 100644
index 0000000..66e3ecf
--- /dev/null
+++ b/gi/pygi-struct-marshal.h
@@ -0,0 +1,73 @@
+/* -*- Mode: C; c-basic-offset: 4 -*-
+ * vim: tabstop=4 shiftwidth=4 expandtab
+ *
+ * Copyright (C) 2011 John (J5) Palmieri <johnp@redhat.com>
+ * Copyright (C) 2014 Simon Feltman <sfeltman@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, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __PYGI_STRUCT_MARSHAL_H__
+#define __PYGI_STRUCT_MARSHAL_H__
+
+#include <girepository.h>
+#include "pygi-cache.h"
+
+G_BEGIN_DECLS
+
+PyGIArgCache *pygi_arg_struct_new_from_info (GITypeInfo *type_info,
+ GIArgInfo *arg_info, /* may be null */
+ GITransfer transfer,
+ PyGIDirection direction,
+ GIInterfaceInfo *iface_info);
+
+
+gboolean _pygi_marshal_from_py_gvalue (PyObject *py_arg, /*in*/
+ GIArgument *arg, /*out*/
+ GITransfer transfer,
+ gboolean is_allocated);
+
+
+gboolean _pygi_marshal_from_py_gclosure(PyObject *py_arg, /*in*/
+ GIArgument *arg); /*out*/
+
+gboolean _pygi_marshal_from_py_interface_struct (PyObject *py_arg,
+ GIArgument *arg,
+ const gchar *arg_name,
+ GIBaseInfo *interface_info,
+ GType g_type,
+ PyObject *py_type,
+ GITransfer transfer,
+ gboolean is_allocated,
+ gboolean is_foreign,
+ gboolean is_pointer);
+
+PyObject *_pygi_marshal_to_py_interface_struct (GIArgument *arg,
+ GIInterfaceInfo *interface_info,
+ GType g_type,
+ PyObject *py_type,
+ GITransfer transfer,
+ gboolean is_allocated,
+ gboolean is_foreign);
+
+/* Needed for hack in pygi-arg-garray.c */
+void _pygi_marshal_cleanup_from_py_interface_struct_gvalue (PyGIInvokeState *state,
+ PyGIArgCache *arg_cache,
+ PyObject *py_arg,
+ gpointer data,
+ gboolean was_processed);
+
+G_END_DECLS
+
+#endif /*__PYGI_STRUCT_MARSHAL_H__*/
diff --git a/gi/pygi-struct.c b/gi/pygi-struct.c
index 296c47c..40bfb6d 100644
--- a/gi/pygi-struct.c
+++ b/gi/pygi-struct.c
@@ -22,8 +22,8 @@
*/
#include "pygi-private.h"
+#include "pygobject-private.h"
-#include <pygobject.h>
#include <girepository.h>
#include <pyglib-python-compat.h>
diff --git a/gi/pygi-value.c b/gi/pygi-value.c
new file mode 100644
index 0000000..f2cc27b
--- /dev/null
+++ b/gi/pygi-value.c
@@ -0,0 +1,862 @@
+
+/* -*- 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, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "pygi-value.h"
+#include "pyglib-python-compat.h"
+#include "pygobject-private.h"
+#include "pygtype.h"
+#include "pygparamspec.h"
+
+GIArgument
+_pygi_argument_from_g_value(const GValue *value,
+ GITypeInfo *type_info)
+{
+ 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);
+ break;
+ case GI_TYPE_TAG_INT8:
+ case GI_TYPE_TAG_INT16:
+ case GI_TYPE_TAG_INT32:
+ 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:
+ 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:
+ 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:
+ 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);
+ break;
+ case GI_TYPE_TAG_FLOAT:
+ arg.v_float = g_value_get_float (value);
+ break;
+ case GI_TYPE_TAG_DOUBLE:
+ arg.v_double = g_value_get_double (value);
+ break;
+ case GI_TYPE_TAG_GTYPE:
+ arg.v_long = g_value_get_gtype (value);
+ break;
+ case GI_TYPE_TAG_UTF8:
+ case GI_TYPE_TAG_FILENAME:
+ arg.v_string = g_value_dup_string (value);
+ break;
+ case GI_TYPE_TAG_GLIST:
+ case GI_TYPE_TAG_GSLIST:
+ arg.v_pointer = g_value_get_pointer (value);
+ break;
+ case GI_TYPE_TAG_ARRAY:
+ case GI_TYPE_TAG_GHASH:
+ if (G_VALUE_HOLDS_BOXED (value))
+ arg.v_pointer = g_value_get_boxed (value);
+ else
+ /* e. g. GSettings::change-event */
+ arg.v_pointer = g_value_get_pointer (value);
+ break;
+ case GI_TYPE_TAG_INTERFACE:
+ {
+ GIBaseInfo *info;
+ GIInfoType info_type;
+
+ info = g_type_info_get_interface (type_info);
+ info_type = g_base_info_get_type (info);
+
+ g_base_info_unref (info);
+
+ switch (info_type) {
+ case GI_INFO_TYPE_FLAGS:
+ arg.v_uint = g_value_get_flags (value);
+ break;
+ case GI_INFO_TYPE_ENUM:
+ arg.v_int = g_value_get_enum (value);
+ break;
+ case GI_INFO_TYPE_INTERFACE:
+ case GI_INFO_TYPE_OBJECT:
+ if (G_VALUE_HOLDS_PARAM (value))
+ arg.v_pointer = g_value_get_param (value);
+ else
+ arg.v_pointer = g_value_get_object (value);
+ break;
+ case GI_INFO_TYPE_BOXED:
+ case GI_INFO_TYPE_STRUCT:
+ case GI_INFO_TYPE_UNION:
+ if (G_VALUE_HOLDS(value, G_TYPE_BOXED)) {
+ arg.v_pointer = g_value_get_boxed (value);
+ } else if (G_VALUE_HOLDS(value, G_TYPE_VARIANT)) {
+ arg.v_pointer = g_value_get_variant (value);
+ } else {
+ arg.v_pointer = g_value_get_pointer (value);
+ }
+ break;
+ default:
+ g_warning("Converting of type '%s' is not implemented", g_info_type_to_string(info_type));
+ g_assert_not_reached();
+ }
+ break;
+ }
+ case GI_TYPE_TAG_ERROR:
+ arg.v_pointer = g_value_get_boxed (value);
+ break;
+ case GI_TYPE_TAG_VOID:
+ arg.v_pointer = g_value_get_pointer (value);
+ break;
+ }
+
+ return arg;
+}
+
+
+static int
+pyg_value_array_from_pyobject(GValue *value,
+ PyObject *obj,
+ const GParamSpecValueArray *pspec)
+{
+ int len;
+ GValueArray *value_array;
+ int i;
+
+ len = PySequence_Length(obj);
+ if (len == -1) {
+ PyErr_Clear();
+ return -1;
+ }
+
+ if (pspec && pspec->fixed_n_elements > 0 && len != pspec->fixed_n_elements)
+ return -1;
+
+ value_array = g_value_array_new(len);
+
+ for (i = 0; i < len; ++i) {
+ PyObject *item = PySequence_GetItem(obj, i);
+ GType type;
+ GValue item_value = { 0, };
+ int status;
+
+ if (! item) {
+ PyErr_Clear();
+ g_value_array_free(value_array);
+ return -1;
+ }
+
+ if (pspec && pspec->element_spec)
+ type = G_PARAM_SPEC_VALUE_TYPE(pspec->element_spec);
+ else if (item == Py_None)
+ type = G_TYPE_POINTER; /* store None as NULL */
+ else {
+ type = pyg_type_from_object((PyObject*)Py_TYPE(item));
+ if (! type) {
+ PyErr_Clear();
+ g_value_array_free(value_array);
+ Py_DECREF(item);
+ return -1;
+ }
+ }
+
+ g_value_init(&item_value, type);
+ status = (pspec && pspec->element_spec)
+ ? pyg_param_gvalue_from_pyobject(&item_value, item, pspec->element_spec)
+ : pyg_value_from_pyobject(&item_value, item);
+ Py_DECREF(item);
+
+ if (status == -1) {
+ g_value_array_free(value_array);
+ g_value_unset(&item_value);
+ return -1;
+ }
+
+ g_value_array_append(value_array, &item_value);
+ g_value_unset(&item_value);
+ }
+
+ g_value_take_boxed(value, value_array);
+ return 0;
+}
+
+static int
+pyg_array_from_pyobject(GValue *value,
+ PyObject *obj)
+{
+ int len;
+ GArray *array;
+ int i;
+
+ len = PySequence_Length(obj);
+ if (len == -1) {
+ PyErr_Clear();
+ return -1;
+ }
+
+ array = g_array_new(FALSE, TRUE, sizeof(GValue));
+
+ for (i = 0; i < len; ++i) {
+ PyObject *item = PySequence_GetItem(obj, i);
+ GType type;
+ GValue item_value = { 0, };
+ int status;
+
+ if (! item) {
+ PyErr_Clear();
+ g_array_free(array, FALSE);
+ return -1;
+ }
+
+ if (item == Py_None)
+ type = G_TYPE_POINTER; /* store None as NULL */
+ else {
+ type = pyg_type_from_object((PyObject*)Py_TYPE(item));
+ if (! type) {
+ PyErr_Clear();
+ g_array_free(array, FALSE);
+ Py_DECREF(item);
+ return -1;
+ }
+ }
+
+ g_value_init(&item_value, type);
+ status = pyg_value_from_pyobject(&item_value, item);
+ Py_DECREF(item);
+
+ if (status == -1) {
+ g_array_free(array, FALSE);
+ g_value_unset(&item_value);
+ return -1;
+ }
+
+ g_array_append_val(array, item_value);
+ }
+
+ g_value_take_boxed(value, array);
+ return 0;
+}
+
+/**
+ * pyg_value_from_pyobject_with_error:
+ * @value: the GValue object to store the converted value in.
+ * @obj: the Python object to convert.
+ *
+ * This function converts a Python object and stores the result in a
+ * GValue. The GValue must be initialised in advance with
+ * g_value_init(). If the Python object can't be converted to the
+ * type of the GValue, then an error is returned.
+ *
+ * Returns: 0 on success, -1 on error.
+ */
+int
+pyg_value_from_pyobject_with_error(GValue *value, PyObject *obj)
+{
+ PyObject *tmp;
+ GType value_type = G_VALUE_TYPE(value);
+
+ switch (G_TYPE_FUNDAMENTAL(value_type)) {
+ case G_TYPE_INTERFACE:
+ /* we only handle interface types that have a GObject prereq */
+ if (g_type_is_a(value_type, G_TYPE_OBJECT)) {
+ if (obj == Py_None)
+ g_value_set_object(value, NULL);
+ else {
+ if (!PyObject_TypeCheck(obj, &PyGObject_Type)) {
+ PyErr_SetString(PyExc_TypeError, "GObject is required");
+ return -1;
+ }
+ if (!G_TYPE_CHECK_INSTANCE_TYPE(pygobject_get(obj),
+ value_type)) {
+ PyErr_SetString(PyExc_TypeError, "Invalid GObject type for assignment");
+ return -1;
+ }
+ g_value_set_object(value, pygobject_get(obj));
+ }
+ } else {
+ PyErr_SetString(PyExc_TypeError, "Unsupported conversion");
+ return -1;
+ }
+ break;
+ case G_TYPE_CHAR:
+ if (PYGLIB_PyLong_Check(obj)) {
+ glong val;
+ val = PYGLIB_PyLong_AsLong(obj);
+ if (val >= -128 && val <= 127)
+ g_value_set_schar(value, (gchar) val);
+ else
+ return -1;
+ }
+#if PY_VERSION_HEX < 0x03000000
+ else if (PyString_Check(obj)) {
+ g_value_set_schar(value, PyString_AsString(obj)[0]);
+ }
+#endif
+ else if (PyUnicode_Check(obj)) {
+ tmp = PyUnicode_AsUTF8String(obj);
+ g_value_set_schar(value, PYGLIB_PyBytes_AsString(tmp)[0]);
+ Py_DECREF(tmp);
+ } else {
+ PyErr_SetString(PyExc_TypeError, "Cannot convert to TYPE_CHAR");
+ return -1;
+ }
+
+ break;
+ case G_TYPE_UCHAR:
+ if (PYGLIB_PyLong_Check(obj)) {
+ glong val;
+ val = PYGLIB_PyLong_AsLong(obj);
+ if (val >= 0 && val <= 255)
+ g_value_set_uchar(value, (guchar) val);
+ else
+ return -1;
+#if PY_VERSION_HEX < 0x03000000
+ } else if (PyString_Check(obj)) {
+ g_value_set_uchar(value, PyString_AsString(obj)[0]);
+#endif
+ } else if (PyUnicode_Check(obj)) {
+ tmp = PyUnicode_AsUTF8String(obj);
+ g_value_set_uchar(value, PYGLIB_PyBytes_AsString(tmp)[0]);
+ Py_DECREF(tmp);
+ } else {
+ PyErr_Clear();
+ return -1;
+ }
+ break;
+ case G_TYPE_BOOLEAN:
+ g_value_set_boolean(value, PyObject_IsTrue(obj));
+ break;
+ case G_TYPE_INT:
+ g_value_set_int(value, PYGLIB_PyLong_AsLong(obj));
+ break;
+ case G_TYPE_UINT:
+ {
+ if (PYGLIB_PyLong_Check(obj)) {
+ guint val;
+
+ /* check that number is not negative */
+ if (PyLong_AsLongLong(obj) < 0)
+ return -1;
+
+ val = PyLong_AsUnsignedLong(obj);
+ if (val <= G_MAXUINT)
+ g_value_set_uint(value, val);
+ else
+ return -1;
+ } else {
+ g_value_set_uint(value, PyLong_AsUnsignedLong(obj));
+ }
+ }
+ break;
+ case G_TYPE_LONG:
+ g_value_set_long(value, PYGLIB_PyLong_AsLong(obj));
+ break;
+ case G_TYPE_ULONG:
+#if PY_VERSION_HEX < 0x03000000
+ if (PyInt_Check(obj)) {
+ long val;
+
+ val = PYGLIB_PyLong_AsLong(obj);
+ if (val < 0) {
+ PyErr_SetString(PyExc_OverflowError, "negative value not allowed for uint64 property");
+ return -1;
+ }
+ g_value_set_ulong(value, (gulong)val);
+ } else
+#endif
+ if (PyLong_Check(obj))
+ g_value_set_ulong(value, PyLong_AsUnsignedLong(obj));
+ else
+ return -1;
+ break;
+ case G_TYPE_INT64:
+ g_value_set_int64(value, PyLong_AsLongLong(obj));
+ break;
+ case G_TYPE_UINT64:
+#if PY_VERSION_HEX < 0x03000000
+ if (PyInt_Check(obj)) {
+ long v = PyInt_AsLong(obj);
+ if (v < 0) {
+ PyErr_SetString(PyExc_OverflowError, "negative value not allowed for uint64 property");
+ return -1;
+ }
+ g_value_set_uint64(value, v);
+ } else
+#endif
+ if (PyLong_Check(obj))
+ g_value_set_uint64(value, PyLong_AsUnsignedLongLong(obj));
+ else
+ return -1;
+ break;
+ case G_TYPE_ENUM:
+ {
+ gint val = 0;
+ if (pyg_enum_get_value(G_VALUE_TYPE(value), obj, &val) < 0) {
+ return -1;
+ }
+ g_value_set_enum(value, val);
+ }
+ break;
+ case G_TYPE_FLAGS:
+ {
+ guint val = 0;
+ if (pyg_flags_get_value(G_VALUE_TYPE(value), obj, &val) < 0) {
+ return -1;
+ }
+ g_value_set_flags(value, val);
+ }
+ break;
+ case G_TYPE_FLOAT:
+ g_value_set_float(value, PyFloat_AsDouble(obj));
+ break;
+ case G_TYPE_DOUBLE:
+ g_value_set_double(value, PyFloat_AsDouble(obj));
+ break;
+ case G_TYPE_STRING:
+ if (obj == Py_None) {
+ g_value_set_string(value, NULL);
+ } else {
+ PyObject* tmp_str = PyObject_Str(obj);
+ if (tmp_str == NULL) {
+ PyErr_Clear();
+ if (PyUnicode_Check(obj)) {
+ tmp = PyUnicode_AsUTF8String(obj);
+ g_value_set_string(value, PYGLIB_PyBytes_AsString(tmp));
+ Py_DECREF(tmp);
+ } else {
+ PyErr_SetString(PyExc_TypeError, "Expected string");
+ return -1;
+ }
+ } else {
+#if PY_VERSION_HEX < 0x03000000
+ g_value_set_string(value, PyString_AsString(tmp_str));
+#else
+ tmp = PyUnicode_AsUTF8String(tmp_str);
+ g_value_set_string(value, PyBytes_AsString(tmp));
+ Py_DECREF(tmp);
+#endif
+ }
+ Py_XDECREF(tmp_str);
+ }
+ break;
+ case G_TYPE_POINTER:
+ if (obj == Py_None)
+ g_value_set_pointer(value, NULL);
+ else if (PyObject_TypeCheck(obj, &PyGPointer_Type) &&
+ G_VALUE_HOLDS(value, ((PyGPointer *)obj)->gtype))
+ g_value_set_pointer(value, pyg_pointer_get(obj, gpointer));
+ else if (PYGLIB_CPointer_Check(obj))
+ g_value_set_pointer(value, PYGLIB_CPointer_GetPointer(obj, NULL));
+ else if (G_VALUE_HOLDS_GTYPE (value))
+ g_value_set_gtype (value, pyg_type_from_object (obj));
+ else {
+ PyErr_SetString(PyExc_TypeError, "Expected pointer");
+ return -1;
+ }
+ break;
+ case G_TYPE_BOXED: {
+ PyGTypeMarshal *bm;
+
+ if (obj == Py_None)
+ g_value_set_boxed(value, NULL);
+ else if (G_VALUE_HOLDS(value, PY_TYPE_OBJECT))
+ g_value_set_boxed(value, obj);
+ else if (PyObject_TypeCheck(obj, &PyGBoxed_Type) &&
+ G_VALUE_HOLDS(value, ((PyGBoxed *)obj)->gtype))
+ g_value_set_boxed(value, pyg_boxed_get(obj, gpointer));
+ else if (G_VALUE_HOLDS(value, G_TYPE_VALUE)) {
+ GType type;
+ GValue *n_value;
+
+ type = pyg_type_from_object((PyObject*)Py_TYPE(obj));
+ if (G_UNLIKELY (! type)) {
+ return -1;
+ }
+ n_value = g_new0 (GValue, 1);
+ g_value_init (n_value, type);
+ g_value_take_boxed (value, n_value);
+ return pyg_value_from_pyobject_with_error (n_value, obj);
+ }
+ else if (PySequence_Check(obj) &&
+ G_VALUE_HOLDS(value, G_TYPE_VALUE_ARRAY))
+ return pyg_value_array_from_pyobject(value, obj, NULL);
+ else if (PySequence_Check(obj) &&
+ G_VALUE_HOLDS(value, G_TYPE_ARRAY))
+ return pyg_array_from_pyobject(value, obj);
+ else if (PYGLIB_PyUnicode_Check(obj) &&
+ G_VALUE_HOLDS(value, G_TYPE_GSTRING)) {
+ GString *string;
+ char *buffer;
+ Py_ssize_t len;
+ if (PYGLIB_PyUnicode_AsStringAndSize(obj, &buffer, &len))
+ return -1;
+ string = g_string_new_len(buffer, len);
+ g_value_set_boxed(value, string);
+ g_string_free (string, TRUE);
+ break;
+ }
+ else if ((bm = pyg_type_lookup(G_VALUE_TYPE(value))) != NULL)
+ return bm->tovalue(value, obj);
+ else if (PYGLIB_CPointer_Check(obj))
+ g_value_set_boxed(value, PYGLIB_CPointer_GetPointer(obj, NULL));
+ else {
+ PyErr_SetString(PyExc_TypeError, "Expected Boxed");
+ return -1;
+ }
+ break;
+ }
+ case G_TYPE_PARAM:
+ /* we need to support both the wrapped _gobject.GParamSpec and the GI
+ * GObject.ParamSpec */
+ if (G_IS_PARAM_SPEC (pygobject_get (obj)))
+ g_value_set_param(value, G_PARAM_SPEC (pygobject_get (obj)));
+ else if (PyGParamSpec_Check(obj))
+ g_value_set_param(value, PYGLIB_CPointer_GetPointer(obj, NULL));
+ else {
+ PyErr_SetString(PyExc_TypeError, "Expected ParamSpec");
+ return -1;
+ }
+ break;
+ case G_TYPE_OBJECT:
+ if (obj == Py_None) {
+ g_value_set_object(value, NULL);
+ } else if (PyObject_TypeCheck(obj, &PyGObject_Type) &&
+ G_TYPE_CHECK_INSTANCE_TYPE(pygobject_get(obj),
+ G_VALUE_TYPE(value))) {
+ g_value_set_object(value, pygobject_get(obj));
+ } else {
+ PyErr_SetString(PyExc_TypeError, "Expected GObject");
+ return -1;
+ }
+ break;
+ case G_TYPE_VARIANT:
+ {
+ if (obj == Py_None)
+ g_value_set_variant(value, NULL);
+ else if (pyg_type_from_object_strict(obj, FALSE) == G_TYPE_VARIANT)
+ g_value_set_variant(value, pyg_boxed_get(obj, GVariant));
+ else {
+ PyErr_SetString(PyExc_TypeError, "Expected Variant");
+ return -1;
+ }
+ break;
+ }
+ default:
+ {
+ PyGTypeMarshal *bm;
+ if ((bm = pyg_type_lookup(G_VALUE_TYPE(value))) != NULL) {
+ return bm->tovalue(value, obj);
+ } else {
+ PyErr_SetString(PyExc_TypeError, "Unknown value type");
+ return -1;
+ }
+ break;
+ }
+ }
+
+ /* If an error occurred, unset the GValue but don't clear the Python error. */
+ if (PyErr_Occurred()) {
+ g_value_unset(value);
+ return -1;
+ }
+
+ return 0;
+}
+
+/**
+ * pyg_value_from_pyobject:
+ * @value: the GValue object to store the converted value in.
+ * @obj: the Python object to convert.
+ *
+ * Same basic function as pyg_value_from_pyobject_with_error but clears
+ * any Python errors before returning.
+ *
+ * Returns: 0 on success, -1 on error.
+ */
+int
+pyg_value_from_pyobject(GValue *value, PyObject *obj)
+{
+ int res = pyg_value_from_pyobject_with_error (value, obj);
+
+ if (PyErr_Occurred()) {
+ PyErr_Clear();
+ return -1;
+ }
+ return res;
+}
+
+/**
+ * pyg_value_as_pyobject:
+ * @value: the GValue object.
+ * @copy_boxed: true if boxed values should be copied.
+ *
+ * This function creates/returns a Python wrapper object that
+ * represents the GValue passed as an argument.
+ *
+ * Returns: a PyObject representing the value.
+ */
+PyObject *
+pyg_value_as_pyobject(const GValue *value, gboolean copy_boxed)
+{
+ gchar buf[128];
+
+ switch (G_TYPE_FUNDAMENTAL(G_VALUE_TYPE(value))) {
+ case G_TYPE_INTERFACE:
+ if (g_type_is_a(G_VALUE_TYPE(value), G_TYPE_OBJECT))
+ return pygobject_new(g_value_get_object(value));
+ else
+ break;
+ case G_TYPE_CHAR: {
+ gint8 val = g_value_get_schar(value);
+ return PYGLIB_PyUnicode_FromStringAndSize((char *)&val, 1);
+ }
+ case G_TYPE_UCHAR: {
+ guint8 val = g_value_get_uchar(value);
+ return PYGLIB_PyBytes_FromStringAndSize((char *)&val, 1);
+ }
+ case G_TYPE_BOOLEAN: {
+ return PyBool_FromLong(g_value_get_boolean(value));
+ }
+ case G_TYPE_INT:
+ return PYGLIB_PyLong_FromLong(g_value_get_int(value));
+ case G_TYPE_UINT:
+ {
+ /* in Python, the Int object is backed by a long. If a
+ long can hold the whole value of an unsigned int, use
+ an Int. Otherwise, use a Long object to avoid overflow.
+ This matches the ULongArg behavior in codegen/argtypes.h */
+#if (G_MAXUINT <= G_MAXLONG)
+ return PYGLIB_PyLong_FromLong((glong) g_value_get_uint(value));
+#else
+ return PyLong_FromUnsignedLong((gulong) g_value_get_uint(value));
+#endif
+ }
+ case G_TYPE_LONG:
+ return PYGLIB_PyLong_FromLong(g_value_get_long(value));
+ case G_TYPE_ULONG:
+ {
+ gulong val = g_value_get_ulong(value);
+
+ if (val <= G_MAXLONG)
+ return PYGLIB_PyLong_FromLong((glong) val);
+ else
+ return PyLong_FromUnsignedLong(val);
+ }
+ case G_TYPE_INT64:
+ {
+ gint64 val = g_value_get_int64(value);
+
+ if (G_MINLONG <= val && val <= G_MAXLONG)
+ return PYGLIB_PyLong_FromLong((glong) val);
+ else
+ return PyLong_FromLongLong(val);
+ }
+ case G_TYPE_UINT64:
+ {
+ guint64 val = g_value_get_uint64(value);
+
+ if (val <= G_MAXLONG)
+ return PYGLIB_PyLong_FromLong((glong) val);
+ else
+ return PyLong_FromUnsignedLongLong(val);
+ }
+ case G_TYPE_ENUM:
+ return pyg_enum_from_gtype(G_VALUE_TYPE(value), g_value_get_enum(value));
+ case G_TYPE_FLAGS:
+ return pyg_flags_from_gtype(G_VALUE_TYPE(value), g_value_get_flags(value));
+ case G_TYPE_FLOAT:
+ return PyFloat_FromDouble(g_value_get_float(value));
+ case G_TYPE_DOUBLE:
+ return PyFloat_FromDouble(g_value_get_double(value));
+ case G_TYPE_STRING:
+ {
+ const gchar *str = g_value_get_string(value);
+
+ if (str)
+ return PYGLIB_PyUnicode_FromString(str);
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+ case G_TYPE_POINTER:
+ if (G_VALUE_HOLDS_GTYPE (value))
+ return pyg_type_wrapper_new (g_value_get_gtype (value));
+ else
+ return pyg_pointer_new(G_VALUE_TYPE(value),
+ g_value_get_pointer(value));
+ case G_TYPE_BOXED: {
+ PyGTypeMarshal *bm;
+
+ if (G_VALUE_HOLDS(value, PY_TYPE_OBJECT)) {
+ PyObject *ret = (PyObject *)g_value_dup_boxed(value);
+ if (ret == NULL) {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+ return ret;
+ } else if (G_VALUE_HOLDS(value, G_TYPE_VALUE)) {
+ GValue *n_value = g_value_get_boxed (value);
+ return pyg_value_as_pyobject(n_value, copy_boxed);
+ } else if (G_VALUE_HOLDS(value, G_TYPE_VALUE_ARRAY)) {
+ GValueArray *array = (GValueArray *) g_value_get_boxed(value);
+ PyObject *ret = PyList_New(array->n_values);
+ int i;
+ for (i = 0; i < array->n_values; ++i)
+ PyList_SET_ITEM(ret, i, pyg_value_as_pyobject
+ (array->values + i, copy_boxed));
+ return ret;
+ } else if (G_VALUE_HOLDS(value, G_TYPE_GSTRING)) {
+ GString *string = (GString *) g_value_get_boxed(value);
+ PyObject *ret = PYGLIB_PyUnicode_FromStringAndSize(string->str, string->len);
+ return ret;
+ }
+ bm = pyg_type_lookup(G_VALUE_TYPE(value));
+ if (bm) {
+ return bm->fromvalue(value);
+ } else {
+ if (copy_boxed)
+ return pyg_boxed_new(G_VALUE_TYPE(value),
+ g_value_get_boxed(value), TRUE, TRUE);
+ else
+ return pyg_boxed_new(G_VALUE_TYPE(value),
+ g_value_get_boxed(value),FALSE,FALSE);
+ }
+ }
+ case G_TYPE_PARAM:
+ return pyg_param_spec_new(g_value_get_param(value));
+ case G_TYPE_OBJECT:
+ return pygobject_new(g_value_get_object(value));
+ case G_TYPE_VARIANT:
+ {
+ GVariant *v = g_value_get_variant(value);
+ if (v == NULL) {
+ Py_INCREF(Py_None);
+ return Py_None;
+ }
+ return pyg_boxed_new(G_TYPE_VARIANT, g_variant_ref(v), FALSE, FALSE);
+ }
+ default:
+ {
+ PyGTypeMarshal *bm;
+ if ((bm = pyg_type_lookup(G_VALUE_TYPE(value))))
+ return bm->fromvalue(value);
+ break;
+ }
+ }
+ g_snprintf(buf, sizeof(buf), "unknown type %s",
+ g_type_name(G_VALUE_TYPE(value)));
+ PyErr_SetString(PyExc_TypeError, buf);
+ return NULL;
+}
+
+
+int
+pyg_param_gvalue_from_pyobject(GValue* value,
+ PyObject* py_obj,
+ const GParamSpec* pspec)
+{
+ if (G_IS_PARAM_SPEC_UNICHAR(pspec)) {
+ gunichar u;
+
+ if (!pyg_pyobj_to_unichar_conv(py_obj, &u)) {
+ PyErr_Clear();
+ return -1;
+ }
+ g_value_set_uint(value, u);
+ return 0;
+ }
+ else if (G_IS_PARAM_SPEC_VALUE_ARRAY(pspec))
+ return pyg_value_array_from_pyobject(value, py_obj,
+ G_PARAM_SPEC_VALUE_ARRAY(pspec));
+ else {
+ return pyg_value_from_pyobject(value, py_obj);
+ }
+}
+
+PyObject*
+pyg_param_gvalue_as_pyobject(const GValue* gvalue,
+ gboolean copy_boxed,
+ const GParamSpec* pspec)
+{
+ if (G_IS_PARAM_SPEC_UNICHAR(pspec)) {
+ gunichar u;
+ Py_UNICODE uni_buffer[2] = { 0, 0 };
+
+ u = g_value_get_uint(gvalue);
+ uni_buffer[0] = u;
+ return PyUnicode_FromUnicode(uni_buffer, 1);
+ }
+ else {
+ return pyg_value_as_pyobject(gvalue, copy_boxed);
+ }
+}
+
+PyObject *
+pyg_strv_from_gvalue(const GValue *value)
+{
+ gchar **argv = (gchar **) g_value_get_boxed(value);
+ int argc = 0, i;
+ PyObject *py_argv;
+
+ if (argv) {
+ while (argv[argc])
+ argc++;
+ }
+ py_argv = PyList_New(argc);
+ for (i = 0; i < argc; ++i)
+ PyList_SET_ITEM(py_argv, i, PYGLIB_PyUnicode_FromString(argv[i]));
+ return py_argv;
+}
+
+int
+pyg_strv_to_gvalue(GValue *value, PyObject *obj)
+{
+ Py_ssize_t argc, i;
+ gchar **argv;
+
+ if (!(PyTuple_Check(obj) || PyList_Check(obj)))
+ return -1;
+
+ argc = PySequence_Length(obj);
+ for (i = 0; i < argc; ++i)
+ if (!PYGLIB_PyUnicode_Check(PySequence_Fast_GET_ITEM(obj, i)))
+ return -1;
+ argv = g_new(gchar *, argc + 1);
+ for (i = 0; i < argc; ++i)
+ argv[i] = g_strdup(PYGLIB_PyUnicode_AsString(PySequence_Fast_GET_ITEM(obj, i)));
+ argv[i] = NULL;
+ g_value_take_boxed(value, argv);
+ return 0;
+}
diff --git a/gi/pygi-value.h b/gi/pygi-value.h
new file mode 100644
index 0000000..544da3c
--- /dev/null
+++ b/gi/pygi-value.h
@@ -0,0 +1,44 @@
+/* -*- 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, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef __PYGI_VALUE_H__
+#define __PYGI_VALUE_H__
+
+#include <glib-object.h>
+#include <girepository.h>
+#include <Python.h>
+
+G_BEGIN_DECLS
+
+GIArgument _pygi_argument_from_g_value(const GValue *value,
+ GITypeInfo *type_info);
+
+int pyg_value_from_pyobject(GValue *value, PyObject *obj);
+int pyg_value_from_pyobject_with_error(GValue *value, PyObject *obj);
+PyObject *pyg_value_as_pyobject(const GValue *value, gboolean copy_boxed);
+int pyg_param_gvalue_from_pyobject(GValue* value,
+ PyObject* py_obj,
+ const GParamSpec* pspec);
+PyObject *pyg_param_gvalue_as_pyobject(const GValue* gvalue,
+ gboolean copy_boxed,
+ const GParamSpec* pspec);
+PyObject *pyg_strv_from_gvalue(const GValue *value);
+int pyg_strv_to_gvalue(GValue *value, PyObject *obj);
+
+G_END_DECLS
+
+#endif /* __PYGI_VALUE_H__ */
diff --git a/gi/pygi.h b/gi/pygi.h
index dcd91b3..3a1591f 100644
--- a/gi/pygi.h
+++ b/gi/pygi.h
@@ -26,8 +26,7 @@
# include <config.h>
#endif
-#define NO_IMPORT_PYGOBJECT
-#include <pygobject.h>
+#include <pygobject-private.h>
#include <girepository.h>
#include "pygi-cache.h"
diff --git a/gi/_gobject/pyginterface.c b/gi/pyginterface.c
index eb76ba0..eb76ba0 100644
--- a/gi/_gobject/pyginterface.c
+++ b/gi/pyginterface.c
diff --git a/gi/_gobject/pyginterface.h b/gi/pyginterface.h
index 0f390c2..0f390c2 100644
--- a/gi/_gobject/pyginterface.h
+++ b/gi/pyginterface.h
diff --git a/gi/_glib/pyglib-private.h b/gi/pyglib-private.h
index 183184f..9f05816 100644
--- a/gi/_glib/pyglib-private.h
+++ b/gi/pyglib-private.h
@@ -25,23 +25,17 @@
#include <Python.h>
#include <glib.h>
+#include <pyglib.h>
#include <pyglib-python-compat.h>
G_BEGIN_DECLS
-struct _PyGLib_Functions {
- gboolean threads_enabled;
- PyObject *gerror_exception;
- PyGLibThreadBlockFunc block_threads;
- PyGLibThreadBlockFunc unblock_threads;
- PyObject* (*main_context_new)(GMainContext *context);
- PyObject* (*option_context_new)(GOptionContext *context);
- PyObject* (*option_group_new)(GOptionGroup *group);
-};
-
gboolean _pyglib_handler_marshal(gpointer user_data);
void _pyglib_destroy_notify(gpointer user_data);
+extern PyObject *PyGError;
+extern PyObject *pyglib__glib_module_create (void);
+
G_END_DECLS
#endif /* __PYGLIB_PRIVATE_H__ */
diff --git a/gi/_glib/pyglib-python-compat.h b/gi/pyglib-python-compat.h
index 844bc55..40e79b4 100644
--- a/gi/_glib/pyglib-python-compat.h
+++ b/gi/pyglib-python-compat.h
@@ -29,50 +29,11 @@
# define PYGLIB_CPointer_Import(module, symbol) \
PyCapsule_Import(##module##.##symbol##, FALSE)
-#if PY_VERSION_HEX < 0x03000000
-
-#define PYGLIB_INIT_FUNCTION(modname, fullpkgname, functions) \
-static int _pyglib_init_##modname(PyObject *module); \
-void init##modname(void) \
-{ \
- PyObject *module = Py_InitModule(fullpkgname, functions); \
- _pyglib_init_##modname(module); \
-} \
-static int _pyglib_init_##modname(PyObject *module)
-
-#else
-
-#define PYGLIB_INIT_FUNCTION(modname, fullpkgname, functions) \
-static struct PyModuleDef _##modname##module = { \
- PyModuleDef_HEAD_INIT, \
- fullpkgname, \
- NULL, \
- -1, \
- functions, \
- NULL, \
- NULL, \
- NULL, \
- NULL \
-}; \
-static int _pyglib_init_##modname(PyObject *module); \
-PyObject *PyInit_##modname(void) \
-{ \
- PyObject *module = PyModule_Create(&_##modname##module); \
- if (module == NULL) \
- return NULL; \
- if (_pyglib_init_##modname(module) != 0 ) {\
- Py_DECREF(module); \
- return NULL; \
- } \
- return module; \
-} \
-static int _pyglib_init_##modname(PyObject *module)
-#endif
+#define PYGLIB_MODULE_ERROR_RETURN NULL
/* Compilation on Python 2.x */
#if PY_VERSION_HEX < 0x03000000
-#define PYGLIB_MODULE_ERROR_RETURN
#define RO READONLY
@@ -121,12 +82,18 @@ static int _pyglib_init_##modname(PyObject *module)
#endif
#define PYGLIB_MODULE_START(symbol, modname) \
-DL_EXPORT(void) init##symbol(void); \
-DL_EXPORT(void) init##symbol(void) \
+PyObject * pyglib_##symbol##_module_create(void); \
+DL_EXPORT(void) init##symbol(void); \
+DL_EXPORT(void) init##symbol(void) { \
+ pyglib_##symbol##_module_create(); \
+}; \
+PyObject * pyglib_##symbol##_module_create(void) \
{ \
PyObject *module; \
module = Py_InitModule(modname, symbol##_functions);
-#define PYGLIB_MODULE_END }
+
+#define PYGLIB_MODULE_END return module; }
+
#define PYGLIB_DEFINE_TYPE(typename, symbol, csymbol) \
PyTypeObject symbol = { \
PyObject_HEAD_INIT(NULL) \
@@ -135,6 +102,7 @@ PyTypeObject symbol = { \
sizeof(csymbol), \
0, \
};
+
#define PYGLIB_REGISTER_TYPE(d, type, name) \
if (!type.tp_alloc) \
type.tp_alloc = PyType_GenericAlloc; \
@@ -146,8 +114,6 @@ PyTypeObject symbol = { \
#else
-#define PYGLIB_MODULE_ERROR_RETURN 0
-
#define PYGLIB_MODULE_START(symbol, modname) \
static struct PyModuleDef _##symbol##module = { \
PyModuleDef_HEAD_INIT, \
@@ -160,18 +126,25 @@ PyTypeObject symbol = { \
NULL, \
NULL \
}; \
+PyObject * pyglib_##symbol##_module_create(void); \
PyMODINIT_FUNC PyInit_##symbol(void); \
-PyMODINIT_FUNC PyInit_##symbol(void) \
+PyMODINIT_FUNC PyInit_##symbol(void) { \
+ return pyglib_##symbol##_module_create(); \
+}; \
+PyObject * pyglib_##symbol##_module_create(void) \
{ \
PyObject *module; \
module = PyModule_Create(&_##symbol##module);
+
#define PYGLIB_MODULE_END return module; }
+
#define PYGLIB_DEFINE_TYPE(typename, symbol, csymbol) \
PyTypeObject symbol = { \
PyVarObject_HEAD_INIT(NULL, 0) \
typename, \
sizeof(csymbol) \
};
+
#define PYGLIB_REGISTER_TYPE(d, type, name) \
if (!type.tp_alloc) \
type.tp_alloc = PyType_GenericAlloc; \
diff --git a/gi/_glib/pyglib.c b/gi/pyglib.c
index 9753a52..15109fd 100644
--- a/gi/_glib/pyglib.c
+++ b/gi/pyglib.c
@@ -30,52 +30,8 @@
#include "pygoptioncontext.h"
#include "pygoptiongroup.h"
-static struct _PyGLib_Functions *_PyGLib_API;
static PyObject *exception_table = NULL;
-void
-pyglib_init(void)
-{
- PyObject *glib, *cobject;
-
- glib = PyImport_ImportModule("gi._glib");
- if (!glib) {
- if (PyErr_Occurred()) {
- PyObject *type, *value, *traceback;
- PyObject *py_orig_exc;
- PyErr_Fetch(&type, &value, &traceback);
- py_orig_exc = PyObject_Repr(value);
- Py_XDECREF(type);
- Py_XDECREF(value);
- Py_XDECREF(traceback);
- PyErr_Format(PyExc_ImportError,
- "could not import gi._glib (error was: %s)",
- PYGLIB_PyUnicode_AsString(py_orig_exc));
- Py_DECREF(py_orig_exc);
- } else {
- PyErr_SetString(PyExc_ImportError,
- "could not import gi._glib (no error given)");
- }
- return;
- }
-
- cobject = PyObject_GetAttrString(glib, "_PyGLib_API");
- if (cobject && PYGLIB_CPointer_Check(cobject))
- _PyGLib_API = (struct _PyGLib_Functions *) PYGLIB_CPointer_GetPointer(cobject, "gi._glib._PyGLib_API");
- else {
- PyErr_SetString(PyExc_ImportError,
- "could not import gi._glib (could not find _PyGLib_API object)");
- Py_DECREF(glib);
- return;
- }
-}
-
-void
-pyglib_init_internal(PyObject *api)
-{
- _PyGLib_API = (struct _PyGLib_Functions *) PYGLIB_CPointer_GetPointer(api, "gi._glib._PyGLib_API");
-}
-
/**
* pyglib_error_marshal:
* @error: a pointer to the GError.
@@ -100,7 +56,7 @@ pyglib_error_marshal (GError **error)
state = pyglib_gil_state_ensure();
- exc_type = _PyGLib_API->gerror_exception;
+ exc_type = PyGError;
if (exception_table != NULL)
{
PyObject *item;
@@ -159,7 +115,7 @@ pyglib_error_check(GError **error)
state = pyglib_gil_state_ensure();
exc_instance = pyglib_error_marshal (error);
- PyErr_SetObject(_PyGLib_API->gerror_exception, exc_instance);
+ PyErr_SetObject(PyGError, exc_instance);
Py_DECREF(exc_instance);
g_clear_error(error);
@@ -197,7 +153,7 @@ pyglib_gerror_exception_check(GError **error)
}
if (!value ||
!PyErr_GivenExceptionMatches(type,
- (PyObject *) _PyGLib_API->gerror_exception)) {
+ (PyObject *) PyGError)) {
PyErr_Restore(type, value, traceback);
PyErr_Print();
return -2;
@@ -262,7 +218,7 @@ pyglib_register_exception_for_domain(gchar *name,
{
PyObject *exception;
- exception = PyErr_NewException(name, _PyGLib_API->gerror_exception, NULL);
+ exception = PyErr_NewException(name, PyGError, NULL);
if (exception_table == NULL)
exception_table = PyDict_New();
@@ -309,33 +265,6 @@ pyglib_option_group_transfer_group(PyObject *obj)
return self->group;
}
-/**
- * pyglib_option_group_new:
- * @group: a GOptionGroup
- *
- * The returned GOptionGroup can't be used to set any hooks, translation domains
- * or add entries. It's only intend is, to use for GOptionContext.add_group().
- *
- * Returns: the GOptionGroup wrapper.
- */
-PyObject *
-pyglib_option_group_new (GOptionGroup *group)
-{
- return _PyGLib_API->option_group_new(group);
-}
-
-/**
- * pyglib_option_context_new:
- * @context: a GOptionContext
- *
- * Returns: A new GOptionContext wrapper.
- */
-PyObject *
-pyglib_option_context_new (GOptionContext *context)
-{
- return _PyGLib_API->option_context_new(context);
-}
-
/****** Private *****/
@@ -352,8 +281,6 @@ _pyglib_destroy_notify(gpointer user_data)
PyObject *obj = (PyObject *)user_data;
PyGILState_STATE state;
- g_return_if_fail (_PyGLib_API != NULL);
-
state = pyglib_gil_state_ensure();
Py_DECREF(obj);
pyglib_gil_state_release(state);
diff --git a/gi/_glib/pyglib.h b/gi/pyglib.h
index 1c62f1d..9c7b22b 100644
--- a/gi/_glib/pyglib.h
+++ b/gi/pyglib.h
@@ -31,9 +31,6 @@ G_BEGIN_DECLS
typedef void (*PyGLibThreadsEnabledFunc) (void);
typedef void (*PyGLibThreadBlockFunc) (void);
-void pyglib_init(void);
-void pyglib_init_internal(PyObject *api);
-
#ifdef DISABLE_THREADING
# define pyglib_gil_state_ensure() PyGILState_LOCKED
# define pyglib_gil_state_release(state) state
@@ -42,18 +39,11 @@ void pyglib_init_internal(PyObject *api);
# define pyglib_gil_state_release PyGILState_Release
#endif
-/* Deprecated, only available for API compatibility. */
-#define pyg_set_thread_block_funcs(a, b)
-#define pyglib_block_threads()
-#define pyglib_unblock_threads()
-
gboolean pyglib_error_check(GError **error);
PyObject *pyglib_error_marshal (GError **error);
gboolean pyglib_gerror_exception_check(GError **error);
PyObject *pyglib_register_exception_for_domain(gchar *name,
gint error_domain);
-PyObject * pyglib_option_context_new(GOptionContext *context);
-PyObject * pyglib_option_group_new(GOptionGroup *group);
GOptionGroup * pyglib_option_group_transfer_group(PyObject *self);
/* Private: for gobject <-> glib interaction only. */
diff --git a/gi/_gobject/pygobject-private.h b/gi/pygobject-private.h
index 294b0f6..be565d6 100644
--- a/gi/_gobject/pygobject-private.h
+++ b/gi/pygobject-private.h
@@ -78,22 +78,6 @@ gint pyg_enum_get_value (GType enum_type, PyObject *obj, gint *val);
gint pyg_flags_get_value (GType flag_type, PyObject *obj, guint *val);
int pyg_pyobj_to_unichar_conv (PyObject* py_obj, void* ptr);
-typedef PyObject *(* fromvaluefunc)(const GValue *value);
-typedef int (*tovaluefunc)(GValue *value, PyObject *obj);
-
-void pyg_register_gtype_custom(GType gtype,
- fromvaluefunc from_func,
- tovaluefunc to_func);
-int pyg_value_from_pyobject(GValue *value, PyObject *obj);
-int pyg_value_from_pyobject_with_error(GValue *value, PyObject *obj);
-PyObject *pyg_value_as_pyobject(const GValue *value, gboolean copy_boxed);
-int pyg_param_gvalue_from_pyobject(GValue* value,
- PyObject* py_obj,
- const GParamSpec* pspec);
-PyObject *pyg_param_gvalue_as_pyobject(const GValue* gvalue,
- gboolean copy_boxed,
- const GParamSpec* pspec);
-
GClosure *pyg_closure_new(PyObject *callback, PyObject *extra_args, PyObject *swap_data);
void pyg_closure_set_exception_handler(GClosure *closure,
PyClosureExceptionHandler handler);
@@ -199,6 +183,7 @@ gboolean pygobject_prepare_construct_properties (GObjectClass *class,
PyObject *kwargs,
guint *n_params,
GParameter **params);
+/* Defined by PYGLIB_MODULE_START */
+extern PyObject *pyglib__gobject_module_create (void);
-
-#endif
+#endif /*_PYGOBJECT_PRIVATE_H_*/
diff --git a/gi/_gobject/pygobject.c b/gi/pygobject.c
index 129f29a..215376b 100644
--- a/gi/_gobject/pygobject.c
+++ b/gi/pygobject.c
@@ -30,7 +30,7 @@
#include "pygparamspec.h"
#include "pygi.h"
-
+#include "pygi-value.h"
static void pygobject_dealloc(PyGObject *self);
static int pygobject_traverse(PyGObject *self, visitproc visit, void *arg);
diff --git a/gi/_gobject/pygobject.h b/gi/pygobject.h
index 76b8b11..76b8b11 100644
--- a/gi/_gobject/pygobject.h
+++ b/gi/pygobject.h
diff --git a/gi/_glib/pygoptioncontext.c b/gi/pygoptioncontext.c
index 8ecbff8..8ecbff8 100644
--- a/gi/_glib/pygoptioncontext.c
+++ b/gi/pygoptioncontext.c
diff --git a/gi/_glib/pygoptioncontext.h b/gi/pygoptioncontext.h
index efe5ffa..efe5ffa 100644
--- a/gi/_glib/pygoptioncontext.h
+++ b/gi/pygoptioncontext.h
diff --git a/gi/_glib/pygoptiongroup.c b/gi/pygoptiongroup.c
index 2990342..2990342 100644
--- a/gi/_glib/pygoptiongroup.c
+++ b/gi/pygoptiongroup.c
diff --git a/gi/_glib/pygoptiongroup.h b/gi/pygoptiongroup.h
index 872b9c6..872b9c6 100644
--- a/gi/_glib/pygoptiongroup.h
+++ b/gi/pygoptiongroup.h
diff --git a/gi/_gobject/pygparamspec.c b/gi/pygparamspec.c
index 938f797..938f797 100644
--- a/gi/_gobject/pygparamspec.c
+++ b/gi/pygparamspec.c
diff --git a/gi/_gobject/pygparamspec.h b/gi/pygparamspec.h
index 64aab0c..b3ba8ca 100644
--- a/gi/_gobject/pygparamspec.h
+++ b/gi/pygparamspec.h
@@ -23,6 +23,8 @@
#ifndef __PYGOBJECT_PARAMSPEC_H__
#define __PYGOBJECT_PARAMSPEC_H__
+#include <glib-object.h>
+
extern PyTypeObject PyGParamSpec_Type;
PyObject * pyg_param_spec_new (GParamSpec *pspec);
diff --git a/gi/_gobject/pygpointer.c b/gi/pygpointer.c
index 575c751..575c751 100644
--- a/gi/_gobject/pygpointer.c
+++ b/gi/pygpointer.c
diff --git a/gi/_gobject/pygpointer.h b/gi/pygpointer.h
index f2923da..f2923da 100644
--- a/gi/_gobject/pygpointer.h
+++ b/gi/pygpointer.h
diff --git a/gi/_glib/pygspawn.c b/gi/pygspawn.c
index 72746b8..72746b8 100644
--- a/gi/_glib/pygspawn.c
+++ b/gi/pygspawn.c
diff --git a/gi/_glib/pygspawn.h b/gi/pygspawn.h
index 2e8dd3c..2e8dd3c 100644
--- a/gi/_glib/pygspawn.h
+++ b/gi/pygspawn.h
diff --git a/gi/_gobject/pygtype.c b/gi/pygtype.c
index 9dc1153..e1fb4e6 100644
--- a/gi/_gobject/pygtype.c
+++ b/gi/pygtype.c
@@ -30,6 +30,8 @@
#include "pygparamspec.h"
#include "pygtype.h"
+#include "pygi-value.h"
+
/* -------------- __gtype__ objects ---------------------------- */
typedef struct {
@@ -449,8 +451,6 @@ pyg_type_from_object(PyObject *obj)
return pyg_type_from_object_strict(obj, TRUE);
}
-/* -------------- GValue marshalling ------------------ */
-
/**
* pyg_enum_get_value:
* @enum_type: the GType of the flag.
@@ -613,13 +613,9 @@ pyg_flags_get_value(GType flag_type, PyObject *obj, guint *val)
return res;
}
-typedef struct {
- fromvaluefunc fromvalue;
- tovaluefunc tovalue;
-} PyGTypeMarshal;
static GQuark pyg_type_marshal_key = 0;
-static PyGTypeMarshal *
+PyGTypeMarshal *
pyg_type_lookup(GType type)
{
GType ptype = type;
@@ -661,640 +657,6 @@ pyg_register_gtype_custom(GType gtype,
g_type_set_qdata(gtype, pyg_type_marshal_key, tm);
}
-static int
-pyg_value_array_from_pyobject(GValue *value,
- PyObject *obj,
- const GParamSpecValueArray *pspec)
-{
- int len;
- GValueArray *value_array;
- int i;
-
- len = PySequence_Length(obj);
- if (len == -1) {
- PyErr_Clear();
- return -1;
- }
-
- if (pspec && pspec->fixed_n_elements > 0 && len != pspec->fixed_n_elements)
- return -1;
-
- value_array = g_value_array_new(len);
-
- for (i = 0; i < len; ++i) {
- PyObject *item = PySequence_GetItem(obj, i);
- GType type;
- GValue item_value = { 0, };
- int status;
-
- if (! item) {
- PyErr_Clear();
- g_value_array_free(value_array);
- return -1;
- }
-
- if (pspec && pspec->element_spec)
- type = G_PARAM_SPEC_VALUE_TYPE(pspec->element_spec);
- else if (item == Py_None)
- type = G_TYPE_POINTER; /* store None as NULL */
- else {
- type = pyg_type_from_object((PyObject*)Py_TYPE(item));
- if (! type) {
- PyErr_Clear();
- g_value_array_free(value_array);
- Py_DECREF(item);
- return -1;
- }
- }
-
- g_value_init(&item_value, type);
- status = (pspec && pspec->element_spec)
- ? pyg_param_gvalue_from_pyobject(&item_value, item, pspec->element_spec)
- : pyg_value_from_pyobject(&item_value, item);
- Py_DECREF(item);
-
- if (status == -1) {
- g_value_array_free(value_array);
- g_value_unset(&item_value);
- return -1;
- }
-
- g_value_array_append(value_array, &item_value);
- g_value_unset(&item_value);
- }
-
- g_value_take_boxed(value, value_array);
- return 0;
-}
-
-static int
-pyg_array_from_pyobject(GValue *value,
- PyObject *obj)
-{
- int len;
- GArray *array;
- int i;
-
- len = PySequence_Length(obj);
- if (len == -1) {
- PyErr_Clear();
- return -1;
- }
-
- array = g_array_new(FALSE, TRUE, sizeof(GValue));
-
- for (i = 0; i < len; ++i) {
- PyObject *item = PySequence_GetItem(obj, i);
- GType type;
- GValue item_value = { 0, };
- int status;
-
- if (! item) {
- PyErr_Clear();
- g_array_free(array, FALSE);
- return -1;
- }
-
- if (item == Py_None)
- type = G_TYPE_POINTER; /* store None as NULL */
- else {
- type = pyg_type_from_object((PyObject*)Py_TYPE(item));
- if (! type) {
- PyErr_Clear();
- g_array_free(array, FALSE);
- Py_DECREF(item);
- return -1;
- }
- }
-
- g_value_init(&item_value, type);
- status = pyg_value_from_pyobject(&item_value, item);
- Py_DECREF(item);
-
- if (status == -1) {
- g_array_free(array, FALSE);
- g_value_unset(&item_value);
- return -1;
- }
-
- g_array_append_val(array, item_value);
- }
-
- g_value_take_boxed(value, array);
- return 0;
-}
-
-/**
- * pyg_value_from_pyobject_with_error:
- * @value: the GValue object to store the converted value in.
- * @obj: the Python object to convert.
- *
- * This function converts a Python object and stores the result in a
- * GValue. The GValue must be initialised in advance with
- * g_value_init(). If the Python object can't be converted to the
- * type of the GValue, then an error is returned.
- *
- * Returns: 0 on success, -1 on error.
- */
-int
-pyg_value_from_pyobject_with_error(GValue *value, PyObject *obj)
-{
- PyObject *tmp;
- GType value_type = G_VALUE_TYPE(value);
-
- switch (G_TYPE_FUNDAMENTAL(value_type)) {
- case G_TYPE_INTERFACE:
- /* we only handle interface types that have a GObject prereq */
- if (g_type_is_a(value_type, G_TYPE_OBJECT)) {
- if (obj == Py_None)
- g_value_set_object(value, NULL);
- else {
- if (!PyObject_TypeCheck(obj, &PyGObject_Type)) {
- PyErr_SetString(PyExc_TypeError, "GObject is required");
- return -1;
- }
- if (!G_TYPE_CHECK_INSTANCE_TYPE(pygobject_get(obj),
- value_type)) {
- PyErr_SetString(PyExc_TypeError, "Invalid GObject type for assignment");
- return -1;
- }
- g_value_set_object(value, pygobject_get(obj));
- }
- } else {
- PyErr_SetString(PyExc_TypeError, "Unsupported conversion");
- return -1;
- }
- break;
- case G_TYPE_CHAR:
- if (PYGLIB_PyLong_Check(obj)) {
- glong val;
- val = PYGLIB_PyLong_AsLong(obj);
- if (val >= -128 && val <= 127)
- g_value_set_schar(value, (gchar) val);
- else
- return -1;
- }
-#if PY_VERSION_HEX < 0x03000000
- else if (PyString_Check(obj)) {
- g_value_set_schar(value, PyString_AsString(obj)[0]);
- }
-#endif
- else if (PyUnicode_Check(obj)) {
- tmp = PyUnicode_AsUTF8String(obj);
- g_value_set_schar(value, PYGLIB_PyBytes_AsString(tmp)[0]);
- Py_DECREF(tmp);
- } else {
- PyErr_SetString(PyExc_TypeError, "Cannot convert to TYPE_CHAR");
- return -1;
- }
-
- break;
- case G_TYPE_UCHAR:
- if (PYGLIB_PyLong_Check(obj)) {
- glong val;
- val = PYGLIB_PyLong_AsLong(obj);
- if (val >= 0 && val <= 255)
- g_value_set_uchar(value, (guchar) val);
- else
- return -1;
-#if PY_VERSION_HEX < 0x03000000
- } else if (PyString_Check(obj)) {
- g_value_set_uchar(value, PyString_AsString(obj)[0]);
-#endif
- } else if (PyUnicode_Check(obj)) {
- tmp = PyUnicode_AsUTF8String(obj);
- g_value_set_uchar(value, PYGLIB_PyBytes_AsString(tmp)[0]);
- Py_DECREF(tmp);
- } else {
- PyErr_Clear();
- return -1;
- }
- break;
- case G_TYPE_BOOLEAN:
- g_value_set_boolean(value, PyObject_IsTrue(obj));
- break;
- case G_TYPE_INT:
- g_value_set_int(value, PYGLIB_PyLong_AsLong(obj));
- break;
- case G_TYPE_UINT:
- {
- if (PYGLIB_PyLong_Check(obj)) {
- guint val;
-
- /* check that number is not negative */
- if (PyLong_AsLongLong(obj) < 0)
- return -1;
-
- val = PyLong_AsUnsignedLong(obj);
- if (val <= G_MAXUINT)
- g_value_set_uint(value, val);
- else
- return -1;
- } else {
- g_value_set_uint(value, PyLong_AsUnsignedLong(obj));
- }
- }
- break;
- case G_TYPE_LONG:
- g_value_set_long(value, PYGLIB_PyLong_AsLong(obj));
- break;
- case G_TYPE_ULONG:
-#if PY_VERSION_HEX < 0x03000000
- if (PyInt_Check(obj)) {
- long val;
-
- val = PYGLIB_PyLong_AsLong(obj);
- if (val < 0) {
- PyErr_SetString(PyExc_OverflowError, "negative value not allowed for uint64 property");
- return -1;
- }
- g_value_set_ulong(value, (gulong)val);
- } else
-#endif
- if (PyLong_Check(obj))
- g_value_set_ulong(value, PyLong_AsUnsignedLong(obj));
- else
- return -1;
- break;
- case G_TYPE_INT64:
- g_value_set_int64(value, PyLong_AsLongLong(obj));
- break;
- case G_TYPE_UINT64:
-#if PY_VERSION_HEX < 0x03000000
- if (PyInt_Check(obj)) {
- long v = PyInt_AsLong(obj);
- if (v < 0) {
- PyErr_SetString(PyExc_OverflowError, "negative value not allowed for uint64 property");
- return -1;
- }
- g_value_set_uint64(value, v);
- } else
-#endif
- if (PyLong_Check(obj))
- g_value_set_uint64(value, PyLong_AsUnsignedLongLong(obj));
- else
- return -1;
- break;
- case G_TYPE_ENUM:
- {
- gint val = 0;
- if (pyg_enum_get_value(G_VALUE_TYPE(value), obj, &val) < 0) {
- return -1;
- }
- g_value_set_enum(value, val);
- }
- break;
- case G_TYPE_FLAGS:
- {
- guint val = 0;
- if (pyg_flags_get_value(G_VALUE_TYPE(value), obj, &val) < 0) {
- return -1;
- }
- g_value_set_flags(value, val);
- }
- break;
- case G_TYPE_FLOAT:
- g_value_set_float(value, PyFloat_AsDouble(obj));
- break;
- case G_TYPE_DOUBLE:
- g_value_set_double(value, PyFloat_AsDouble(obj));
- break;
- case G_TYPE_STRING:
- if (obj == Py_None) {
- g_value_set_string(value, NULL);
- } else {
- PyObject* tmp_str = PyObject_Str(obj);
- if (tmp_str == NULL) {
- PyErr_Clear();
- if (PyUnicode_Check(obj)) {
- tmp = PyUnicode_AsUTF8String(obj);
- g_value_set_string(value, PYGLIB_PyBytes_AsString(tmp));
- Py_DECREF(tmp);
- } else {
- PyErr_SetString(PyExc_TypeError, "Expected string");
- return -1;
- }
- } else {
-#if PY_VERSION_HEX < 0x03000000
- g_value_set_string(value, PyString_AsString(tmp_str));
-#else
- tmp = PyUnicode_AsUTF8String(tmp_str);
- g_value_set_string(value, PyBytes_AsString(tmp));
- Py_DECREF(tmp);
-#endif
- }
- Py_XDECREF(tmp_str);
- }
- break;
- case G_TYPE_POINTER:
- if (obj == Py_None)
- g_value_set_pointer(value, NULL);
- else if (PyObject_TypeCheck(obj, &PyGPointer_Type) &&
- G_VALUE_HOLDS(value, ((PyGPointer *)obj)->gtype))
- g_value_set_pointer(value, pyg_pointer_get(obj, gpointer));
- else if (PYGLIB_CPointer_Check(obj))
- g_value_set_pointer(value, PYGLIB_CPointer_GetPointer(obj, NULL));
- else if (G_VALUE_HOLDS_GTYPE (value))
- g_value_set_gtype (value, pyg_type_from_object (obj));
- else {
- PyErr_SetString(PyExc_TypeError, "Expected pointer");
- return -1;
- }
- break;
- case G_TYPE_BOXED: {
- PyGTypeMarshal *bm;
-
- if (obj == Py_None)
- g_value_set_boxed(value, NULL);
- else if (G_VALUE_HOLDS(value, PY_TYPE_OBJECT))
- g_value_set_boxed(value, obj);
- else if (PyObject_TypeCheck(obj, &PyGBoxed_Type) &&
- G_VALUE_HOLDS(value, ((PyGBoxed *)obj)->gtype))
- g_value_set_boxed(value, pyg_boxed_get(obj, gpointer));
- else if (G_VALUE_HOLDS(value, G_TYPE_VALUE)) {
- GType type;
- GValue *n_value;
-
- type = pyg_type_from_object((PyObject*)Py_TYPE(obj));
- if (G_UNLIKELY (! type)) {
- return -1;
- }
- n_value = g_new0 (GValue, 1);
- g_value_init (n_value, type);
- g_value_take_boxed (value, n_value);
- return pyg_value_from_pyobject_with_error (n_value, obj);
- }
- else if (PySequence_Check(obj) &&
- G_VALUE_HOLDS(value, G_TYPE_VALUE_ARRAY))
- return pyg_value_array_from_pyobject(value, obj, NULL);
- else if (PySequence_Check(obj) &&
- G_VALUE_HOLDS(value, G_TYPE_ARRAY))
- return pyg_array_from_pyobject(value, obj);
- else if (PYGLIB_PyUnicode_Check(obj) &&
- G_VALUE_HOLDS(value, G_TYPE_GSTRING)) {
- GString *string;
- char *buffer;
- Py_ssize_t len;
- if (PYGLIB_PyUnicode_AsStringAndSize(obj, &buffer, &len))
- return -1;
- string = g_string_new_len(buffer, len);
- g_value_set_boxed(value, string);
- g_string_free (string, TRUE);
- break;
- }
- else if ((bm = pyg_type_lookup(G_VALUE_TYPE(value))) != NULL)
- return bm->tovalue(value, obj);
- else if (PYGLIB_CPointer_Check(obj))
- g_value_set_boxed(value, PYGLIB_CPointer_GetPointer(obj, NULL));
- else {
- PyErr_SetString(PyExc_TypeError, "Expected Boxed");
- return -1;
- }
- break;
- }
- case G_TYPE_PARAM:
- /* we need to support both the wrapped _gobject.GParamSpec and the GI
- * GObject.ParamSpec */
- if (G_IS_PARAM_SPEC (pygobject_get (obj)))
- g_value_set_param(value, G_PARAM_SPEC (pygobject_get (obj)));
- else if (PyGParamSpec_Check(obj))
- g_value_set_param(value, PYGLIB_CPointer_GetPointer(obj, NULL));
- else {
- PyErr_SetString(PyExc_TypeError, "Expected ParamSpec");
- return -1;
- }
- break;
- case G_TYPE_OBJECT:
- if (obj == Py_None) {
- g_value_set_object(value, NULL);
- } else if (PyObject_TypeCheck(obj, &PyGObject_Type) &&
- G_TYPE_CHECK_INSTANCE_TYPE(pygobject_get(obj),
- G_VALUE_TYPE(value))) {
- g_value_set_object(value, pygobject_get(obj));
- } else {
- PyErr_SetString(PyExc_TypeError, "Expected GObject");
- return -1;
- }
- break;
- case G_TYPE_VARIANT:
- {
- if (obj == Py_None)
- g_value_set_variant(value, NULL);
- else if (pyg_type_from_object_strict(obj, FALSE) == G_TYPE_VARIANT)
- g_value_set_variant(value, pyg_boxed_get(obj, GVariant));
- else {
- PyErr_SetString(PyExc_TypeError, "Expected Variant");
- return -1;
- }
- break;
- }
- default:
- {
- PyGTypeMarshal *bm;
- if ((bm = pyg_type_lookup(G_VALUE_TYPE(value))) != NULL) {
- return bm->tovalue(value, obj);
- } else {
- PyErr_SetString(PyExc_TypeError, "Unknown value type");
- return -1;
- }
- break;
- }
- }
-
- /* If an error occurred, unset the GValue but don't clear the Python error. */
- if (PyErr_Occurred()) {
- g_value_unset(value);
- return -1;
- }
-
- return 0;
-}
-
-/**
- * pyg_value_from_pyobject:
- * @value: the GValue object to store the converted value in.
- * @obj: the Python object to convert.
- *
- * Same basic function as pyg_value_from_pyobject_with_error but clears
- * any Python errors before returning.
- *
- * Returns: 0 on success, -1 on error.
- */
-int
-pyg_value_from_pyobject(GValue *value, PyObject *obj)
-{
- int res = pyg_value_from_pyobject_with_error (value, obj);
-
- if (PyErr_Occurred()) {
- PyErr_Clear();
- return -1;
- }
- return res;
-}
-
-/**
- * pyg_value_as_pyobject:
- * @value: the GValue object.
- * @copy_boxed: true if boxed values should be copied.
- *
- * This function creates/returns a Python wrapper object that
- * represents the GValue passed as an argument.
- *
- * Returns: a PyObject representing the value.
- */
-PyObject *
-pyg_value_as_pyobject(const GValue *value, gboolean copy_boxed)
-{
- gchar buf[128];
-
- switch (G_TYPE_FUNDAMENTAL(G_VALUE_TYPE(value))) {
- case G_TYPE_INTERFACE:
- if (g_type_is_a(G_VALUE_TYPE(value), G_TYPE_OBJECT))
- return pygobject_new(g_value_get_object(value));
- else
- break;
- case G_TYPE_CHAR: {
- gint8 val = g_value_get_schar(value);
- return PYGLIB_PyUnicode_FromStringAndSize((char *)&val, 1);
- }
- case G_TYPE_UCHAR: {
- guint8 val = g_value_get_uchar(value);
- return PYGLIB_PyBytes_FromStringAndSize((char *)&val, 1);
- }
- case G_TYPE_BOOLEAN: {
- return PyBool_FromLong(g_value_get_boolean(value));
- }
- case G_TYPE_INT:
- return PYGLIB_PyLong_FromLong(g_value_get_int(value));
- case G_TYPE_UINT:
- {
- /* in Python, the Int object is backed by a long. If a
- long can hold the whole value of an unsigned int, use
- an Int. Otherwise, use a Long object to avoid overflow.
- This matches the ULongArg behavior in codegen/argtypes.h */
-#if (G_MAXUINT <= G_MAXLONG)
- return PYGLIB_PyLong_FromLong((glong) g_value_get_uint(value));
-#else
- return PyLong_FromUnsignedLong((gulong) g_value_get_uint(value));
-#endif
- }
- case G_TYPE_LONG:
- return PYGLIB_PyLong_FromLong(g_value_get_long(value));
- case G_TYPE_ULONG:
- {
- gulong val = g_value_get_ulong(value);
-
- if (val <= G_MAXLONG)
- return PYGLIB_PyLong_FromLong((glong) val);
- else
- return PyLong_FromUnsignedLong(val);
- }
- case G_TYPE_INT64:
- {
- gint64 val = g_value_get_int64(value);
-
- if (G_MINLONG <= val && val <= G_MAXLONG)
- return PYGLIB_PyLong_FromLong((glong) val);
- else
- return PyLong_FromLongLong(val);
- }
- case G_TYPE_UINT64:
- {
- guint64 val = g_value_get_uint64(value);
-
- if (val <= G_MAXLONG)
- return PYGLIB_PyLong_FromLong((glong) val);
- else
- return PyLong_FromUnsignedLongLong(val);
- }
- case G_TYPE_ENUM:
- return pyg_enum_from_gtype(G_VALUE_TYPE(value), g_value_get_enum(value));
- case G_TYPE_FLAGS:
- return pyg_flags_from_gtype(G_VALUE_TYPE(value), g_value_get_flags(value));
- case G_TYPE_FLOAT:
- return PyFloat_FromDouble(g_value_get_float(value));
- case G_TYPE_DOUBLE:
- return PyFloat_FromDouble(g_value_get_double(value));
- case G_TYPE_STRING:
- {
- const gchar *str = g_value_get_string(value);
-
- if (str)
- return PYGLIB_PyUnicode_FromString(str);
- Py_INCREF(Py_None);
- return Py_None;
- }
- case G_TYPE_POINTER:
- if (G_VALUE_HOLDS_GTYPE (value))
- return pyg_type_wrapper_new (g_value_get_gtype (value));
- else
- return pyg_pointer_new(G_VALUE_TYPE(value),
- g_value_get_pointer(value));
- case G_TYPE_BOXED: {
- PyGTypeMarshal *bm;
-
- if (G_VALUE_HOLDS(value, PY_TYPE_OBJECT)) {
- PyObject *ret = (PyObject *)g_value_dup_boxed(value);
- if (ret == NULL) {
- Py_INCREF(Py_None);
- return Py_None;
- }
- return ret;
- } else if (G_VALUE_HOLDS(value, G_TYPE_VALUE)) {
- GValue *n_value = g_value_get_boxed (value);
- return pyg_value_as_pyobject(n_value, copy_boxed);
- } else if (G_VALUE_HOLDS(value, G_TYPE_VALUE_ARRAY)) {
- GValueArray *array = (GValueArray *) g_value_get_boxed(value);
- PyObject *ret = PyList_New(array->n_values);
- int i;
- for (i = 0; i < array->n_values; ++i)
- PyList_SET_ITEM(ret, i, pyg_value_as_pyobject
- (array->values + i, copy_boxed));
- return ret;
- } else if (G_VALUE_HOLDS(value, G_TYPE_GSTRING)) {
- GString *string = (GString *) g_value_get_boxed(value);
- PyObject *ret = PYGLIB_PyUnicode_FromStringAndSize(string->str, string->len);
- return ret;
- }
- bm = pyg_type_lookup(G_VALUE_TYPE(value));
- if (bm) {
- return bm->fromvalue(value);
- } else {
- if (copy_boxed)
- return pyg_boxed_new(G_VALUE_TYPE(value),
- g_value_get_boxed(value), TRUE, TRUE);
- else
- return pyg_boxed_new(G_VALUE_TYPE(value),
- g_value_get_boxed(value),FALSE,FALSE);
- }
- }
- case G_TYPE_PARAM:
- return pyg_param_spec_new(g_value_get_param(value));
- case G_TYPE_OBJECT:
- return pygobject_new(g_value_get_object(value));
- case G_TYPE_VARIANT:
- {
- GVariant *v = g_value_get_variant(value);
- if (v == NULL) {
- Py_INCREF(Py_None);
- return Py_None;
- }
- return pyg_boxed_new(G_TYPE_VARIANT, g_variant_ref(v), FALSE, FALSE);
- }
- default:
- {
- PyGTypeMarshal *bm;
- if ((bm = pyg_type_lookup(G_VALUE_TYPE(value))))
- return bm->fromvalue(value);
- break;
- }
- }
- g_snprintf(buf, sizeof(buf), "unknown type %s",
- g_type_name(G_VALUE_TYPE(value)));
- PyErr_SetString(PyExc_TypeError, buf);
- return NULL;
-}
-
/* -------------- PyGClosure ----------------- */
static void
@@ -1817,92 +1179,12 @@ int pyg_pyobj_to_unichar_conv(PyObject* py_obj, void* ptr)
return 0;
}
-
-int
-pyg_param_gvalue_from_pyobject(GValue* value,
- PyObject* py_obj,
- const GParamSpec* pspec)
-{
- if (G_IS_PARAM_SPEC_UNICHAR(pspec)) {
- gunichar u;
-
- if (!pyg_pyobj_to_unichar_conv(py_obj, &u)) {
- PyErr_Clear();
- return -1;
- }
- g_value_set_uint(value, u);
- return 0;
- }
- else if (G_IS_PARAM_SPEC_VALUE_ARRAY(pspec))
- return pyg_value_array_from_pyobject(value, py_obj,
- G_PARAM_SPEC_VALUE_ARRAY(pspec));
- else {
- return pyg_value_from_pyobject(value, py_obj);
- }
-}
-
-PyObject*
-pyg_param_gvalue_as_pyobject(const GValue* gvalue,
- gboolean copy_boxed,
- const GParamSpec* pspec)
-{
- if (G_IS_PARAM_SPEC_UNICHAR(pspec)) {
- gunichar u;
- Py_UNICODE uni_buffer[2] = { 0, 0 };
-
- u = g_value_get_uint(gvalue);
- uni_buffer[0] = u;
- return PyUnicode_FromUnicode(uni_buffer, 1);
- }
- else {
- return pyg_value_as_pyobject(gvalue, copy_boxed);
- }
-}
-
gboolean
pyg_gtype_is_custom(GType gtype)
{
return g_type_get_qdata (gtype, pygobject_custom_key) != NULL;
}
-static PyObject *
-_pyg_strv_from_gvalue(const GValue *value)
-{
- gchar **argv = (gchar **) g_value_get_boxed(value);
- int argc = 0, i;
- PyObject *py_argv;
-
- if (argv) {
- while (argv[argc])
- argc++;
- }
- py_argv = PyList_New(argc);
- for (i = 0; i < argc; ++i)
- PyList_SET_ITEM(py_argv, i, PYGLIB_PyUnicode_FromString(argv[i]));
- return py_argv;
-}
-
-static int
-_pyg_strv_to_gvalue(GValue *value, PyObject *obj)
-{
- Py_ssize_t argc, i;
- gchar **argv;
-
- if (!(PyTuple_Check(obj) || PyList_Check(obj)))
- return -1;
-
- argc = PySequence_Length(obj);
- for (i = 0; i < argc; ++i)
- if (!PYGLIB_PyUnicode_Check(PySequence_Fast_GET_ITEM(obj, i)))
- return -1;
- argv = g_new(gchar *, argc + 1);
- for (i = 0; i < argc; ++i)
- argv[i] = g_strdup(PYGLIB_PyUnicode_AsString(PySequence_Fast_GET_ITEM(obj, i)));
- argv[i] = NULL;
- g_value_take_boxed(value, argv);
- return 0;
-}
-
void
pygobject_type_register_types(PyObject *d)
{
@@ -1922,6 +1204,6 @@ pygobject_type_register_types(PyObject *d)
PyGObjectDoc_Type.tp_descr_get = (descrgetfunc)object_doc_descr_get;
pyg_register_gtype_custom(G_TYPE_STRV,
- _pyg_strv_from_gvalue,
- _pyg_strv_to_gvalue);
+ pyg_strv_from_gvalue,
+ pyg_strv_to_gvalue);
}
diff --git a/gi/_gobject/pygtype.h b/gi/pygtype.h
index 2f9e7ad..204c146 100644
--- a/gi/_gobject/pygtype.h
+++ b/gi/pygtype.h
@@ -23,6 +23,23 @@
#ifndef __PYGOBJECT_TYPE_H__
#define __PYGOBJECT_TYPE_H__
+#include <glib-object.h>
+#include <Python.h>
+
+typedef PyObject *(* fromvaluefunc)(const GValue *value);
+typedef int (*tovaluefunc)(GValue *value, PyObject *obj);
+
+typedef struct {
+ fromvaluefunc fromvalue;
+ tovaluefunc tovalue;
+} PyGTypeMarshal;
+
+PyGTypeMarshal *pyg_type_lookup(GType type);
+
+void pyg_register_gtype_custom(GType gtype,
+ fromvaluefunc from_func,
+ tovaluefunc to_func);
+
void pygobject_type_register_types(PyObject *d);
#endif /* __PYGOBJECT_TYPE_H__ */
diff --git a/gi/types.py b/gi/types.py
index 41efc05..4f0d76e 100644
--- a/gi/types.py
+++ b/gi/types.py
@@ -25,9 +25,7 @@ from __future__ import absolute_import
import sys
import warnings
-from . import _gobject
-from ._gobject._gobject import GInterface
-from ._gobject.constants import TYPE_INVALID
+from ._constants import TYPE_INVALID
from .docstring import generate_doc_string
from ._gi import \
@@ -36,11 +34,16 @@ from ._gi import \
StructInfo, \
VFuncInfo, \
register_interface_info, \
- hook_up_vfunc_implementation
+ hook_up_vfunc_implementation, \
+ _gobject
+GInterface = _gobject.GInterface
StructInfo # pyflakes
+from . import _propertyhelper as propertyhelper
+from . import _signalhelper as signalhelper
+
if (3, 0) <= sys.version_info < (3, 3):
# callable not available for python 3.0 thru 3.2
def callable(obj):
@@ -170,7 +173,30 @@ def find_vfunc_conflict_in_bases(vfunc, bases):
return None
-class GObjectMeta(_gobject.GObjectMeta, MetaClassHelper):
+class _GObjectMetaBase(type):
+ "Metaclass for automatically registering GObject classes"
+ def __init__(cls, name, bases, dict_):
+ type.__init__(cls, name, bases, dict_)
+ propertyhelper.install_properties(cls)
+ signalhelper.install_signals(cls)
+ cls._type_register(cls.__dict__)
+
+ def _type_register(cls, namespace):
+ ## don't register the class if already registered
+ if '__gtype__' in namespace:
+ return
+
+ # Do not register a new GType for the overrides, as this would sort of
+ # defeat the purpose of overrides...
+ if cls.__module__.startswith('gi.overrides.'):
+ return
+
+ _gobject.type_register(cls, namespace.get('__gtype_name__'))
+
+_gobject._install_metaclass(_GObjectMetaBase)
+
+
+class GObjectMeta(_GObjectMetaBase, MetaClassHelper):
def __init__(cls, name, bases, dict_):
super(GObjectMeta, cls).__init__(name, bases, dict_)
diff --git a/pygtkcompat/pygtkcompat.py b/pygtkcompat/pygtkcompat.py
index 67571ac..d5b7b94 100644
--- a/pygtkcompat/pygtkcompat.py
+++ b/pygtkcompat/pygtkcompat.py
@@ -90,8 +90,8 @@ def enable():
# gobject
from gi.repository import GObject
sys.modules['gobject'] = GObject
- from gi._gobject import propertyhelper
- sys.modules['gobject.propertyhelper'] = propertyhelper
+ from gi import _propertyhelper
+ sys.modules['gobject.propertyhelper'] = _propertyhelper
# gio
from gi.repository import Gio
diff --git a/tests/Makefile.am b/tests/Makefile.am
index a7b0323..d69bbad 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -54,7 +54,7 @@ CLEANFILES += Regress-1.0.gir Regress-1.0.typelib GIMarshallingTests-1.0.gir GIM
check_LTLIBRARIES += testhelper.la
-testhelper_la_CFLAGS = -I$(top_srcdir)/gi/_gobject -I$(top_srcdir)/gi/_glib $(PYTHON_INCLUDES) $(GLIB_CFLAGS)
+testhelper_la_CFLAGS = -I$(top_srcdir)/gi $(PYTHON_INCLUDES) $(GLIB_CFLAGS)
testhelper_la_LDFLAGS = -module -avoid-version
testhelper_la_LIBADD = $(GLIB_LIBS)
testhelper_la_SOURCES = \
@@ -134,12 +134,6 @@ RUN_TESTS_ENV_VARS= \
# pygtkcompat tests need to be run in a separate process as they
# clobber global name space
check-local: $(check_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
- @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 $(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=$$?; }; \
@@ -153,12 +147,12 @@ check.nemiver:
EXEC_NAME="nemiver" $(MAKE) check
check.valgrind:
- EXEC_NAME="G_SLICE=always-malloc valgrind --leak-check=full --show-possibly-lost=no --suppressions=python.supp" G_DEBUG=gc-friendly $(MAKE) check
+ EXEC_NAME="G_SLICE=always-malloc valgrind --leak-check=full --show-possibly-lost=no --suppressions=$(top_srcdir)/tests/$(PYTHON_BASENAME).supp" G_DEBUG=gc-friendly $(MAKE) check
check.valgrindlog:
mkdir -p $(top_builddir)/tmp
- EXEC_NAME="G_SLICE=always-malloc valgrind --log-file=$(top_builddir)/tmp/`git rev-parse HEAD | cut -c1-8`-$$TEST_NAMES.log --leak-check=full --show-possibly-lost=no --suppressions=python.supp" G_DEBUG=gc-friendly $(MAKE) check
+ EXEC_NAME="G_SLICE=always-malloc valgrind --log-file=$(top_builddir)/tmp/`git rev-parse HEAD | cut -c1-8`-$$TEST_NAMES.log --leak-check=full --show-possibly-lost=no --suppressions=$(top_srcdir)/tests/$(PYTHON_BASENAME).supp" G_DEBUG=gc-friendly $(MAKE) check
check.valgrindxml:
mkdir -p $(top_builddir)/tmp
- EXEC_NAME="G_SLICE=always-malloc valgrind --xml=yes --xml-file=$(top_builddir)/tmp/`git rev-parse HEAD | cut -c1-8`-$$TEST_NAMES.xml --leak-check=full --show-possibly-lost=no --suppressions=python.supp" G_DEBUG=gc-friendly $(MAKE) check
+ EXEC_NAME="G_SLICE=always-malloc valgrind --xml=yes --xml-file=$(top_builddir)/tmp/`git rev-parse HEAD | cut -c1-8`-$$TEST_NAMES.xml --leak-check=full --show-possibly-lost=no --suppressions=$(top_srcdir)/tests/$(PYTHON_BASENAME).supp" G_DEBUG=gc-friendly $(MAKE) check
diff --git a/tests/Makefile.in b/tests/Makefile.in
index b034f67..d5b1610 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -311,7 +311,7 @@ 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_CFLAGS = -I$(top_srcdir)/gi $(PYTHON_INCLUDES) $(GLIB_CFLAGS)
testhelper_la_LDFLAGS = -module -avoid-version
testhelper_la_LIBADD = $(GLIB_LIBS)
testhelper_la_SOURCES = \
@@ -757,12 +757,6 @@ clean-local:
# pygtkcompat tests need to be run in a separate process as they
# clobber global name space
check-local: $(check_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
- @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 $(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=$$?; }; \
@@ -776,15 +770,15 @@ check.nemiver:
EXEC_NAME="nemiver" $(MAKE) check
check.valgrind:
- EXEC_NAME="G_SLICE=always-malloc valgrind --leak-check=full --show-possibly-lost=no --suppressions=python.supp" G_DEBUG=gc-friendly $(MAKE) check
+ EXEC_NAME="G_SLICE=always-malloc valgrind --leak-check=full --show-possibly-lost=no --suppressions=$(top_srcdir)/tests/$(PYTHON_BASENAME).supp" G_DEBUG=gc-friendly $(MAKE) check
check.valgrindlog:
mkdir -p $(top_builddir)/tmp
- EXEC_NAME="G_SLICE=always-malloc valgrind --log-file=$(top_builddir)/tmp/`git rev-parse HEAD | cut -c1-8`-$$TEST_NAMES.log --leak-check=full --show-possibly-lost=no --suppressions=python.supp" G_DEBUG=gc-friendly $(MAKE) check
+ EXEC_NAME="G_SLICE=always-malloc valgrind --log-file=$(top_builddir)/tmp/`git rev-parse HEAD | cut -c1-8`-$$TEST_NAMES.log --leak-check=full --show-possibly-lost=no --suppressions=$(top_srcdir)/tests/$(PYTHON_BASENAME).supp" G_DEBUG=gc-friendly $(MAKE) check
check.valgrindxml:
mkdir -p $(top_builddir)/tmp
- EXEC_NAME="G_SLICE=always-malloc valgrind --xml=yes --xml-file=$(top_builddir)/tmp/`git rev-parse HEAD | cut -c1-8`-$$TEST_NAMES.xml --leak-check=full --show-possibly-lost=no --suppressions=python.supp" G_DEBUG=gc-friendly $(MAKE) check
+ EXEC_NAME="G_SLICE=always-malloc valgrind --xml=yes --xml-file=$(top_builddir)/tmp/`git rev-parse HEAD | cut -c1-8`-$$TEST_NAMES.xml --leak-check=full --show-possibly-lost=no --suppressions=$(top_srcdir)/tests/$(PYTHON_BASENAME).supp" G_DEBUG=gc-friendly $(MAKE) check
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
diff --git a/tests/test_everything.py b/tests/test_everything.py
index 61b40e1..0cd1804 100644
--- a/tests/test_everything.py
+++ b/tests/test_everything.py
@@ -761,6 +761,54 @@ class TestCallbacks(unittest.TestCase):
self.assertEqual(TestCallbacks.called, 10)
self.assertSequenceEqual(collected_user_data, [1, 2] * 10)
+ def test_callback_user_data_middle_none(self):
+ cb_info = {}
+
+ def callback(userdata):
+ cb_info['called'] = True
+ cb_info['userdata'] = userdata
+ return 1
+
+ (y, z, q) = Everything.test_torture_signature_2(
+ 42, callback, None, 'some string', 3)
+ self.assertEqual(y, 42)
+ self.assertEqual(z, 84)
+ self.assertEqual(q, 14)
+ self.assertTrue(cb_info['called'])
+ self.assertEqual(cb_info['userdata'], None)
+
+ def test_callback_user_data_middle_single(self):
+ cb_info = {}
+
+ def callback(userdata):
+ cb_info['called'] = True
+ cb_info['userdata'] = userdata
+ return 1
+
+ (y, z, q) = Everything.test_torture_signature_2(
+ 42, callback, 'User Data', 'some string', 3)
+ self.assertEqual(y, 42)
+ self.assertEqual(z, 84)
+ self.assertEqual(q, 14)
+ self.assertTrue(cb_info['called'])
+ self.assertEqual(cb_info['userdata'], 'User Data')
+
+ def test_callback_user_data_middle_tuple(self):
+ cb_info = {}
+
+ def callback(userdata):
+ cb_info['called'] = True
+ cb_info['userdata'] = userdata
+ return 1
+
+ (y, z, q) = Everything.test_torture_signature_2(
+ 42, callback, (-5, 'User Data'), 'some string', 3)
+ self.assertEqual(y, 42)
+ self.assertEqual(z, 84)
+ self.assertEqual(q, 14)
+ self.assertTrue(cb_info['called'])
+ self.assertEqual(cb_info['userdata'], (-5, 'User Data'))
+
def test_async_ready_callback(self):
TestCallbacks.called = False
TestCallbacks.main_loop = GLib.MainLoop()
@@ -1138,7 +1186,7 @@ class TestTortureProfile(unittest.TestCase):
sys.stdout.write("\ttorture test 4 (10000 iterations): ")
def callback(userdata):
- pass
+ return 0
userdata = [1, 2, 3, 4]
start_time = time.clock()
diff --git a/tests/test_gi.py b/tests/test_gi.py
index 2411a49..2a6cc3d 100644
--- a/tests/test_gi.py
+++ b/tests/test_gi.py
@@ -2266,6 +2266,20 @@ class TestPythonGObject(unittest.TestCase):
obj = self.ErrorObject()
self.assertEqual(obj.vfunc_return_value_only(), 0)
+ @unittest.skipUnless(hasattr(GIMarshallingTests, 'callback_owned_boxed'),
+ 'requires newer version of GI')
+ @unittest.expectedFailure # bug 722899
+ def test_callback_owned_box(self):
+ def callback(box, data):
+ self.box = box
+
+ def nop_callback(box, data):
+ pass
+
+ GIMarshallingTests.callback_owned_boxed(callback, None)
+ GIMarshallingTests.callback_owned_boxed(nop_callback, None)
+ self.assertEqual(self.box.long_, 1)
+
class TestMultiOutputArgs(unittest.TestCase):
@@ -2406,7 +2420,7 @@ class TestMRO(unittest.TestCase):
pass
expected = (E, D, B, C, A, GIMarshallingTests.Object,
- GObject.Object, GObject.Object.__base__, gi._gobject.GObject,
+ GObject.Object, GObject.Object.__base__, gi._gi._gobject.GObject,
object)
self.assertEqual(expected, E.__mro__)
diff --git a/tests/test_gobject.py b/tests/test_gobject.py
index d49011f..a88a4bc 100644
--- a/tests/test_gobject.py
+++ b/tests/test_gobject.py
@@ -8,7 +8,9 @@ import warnings
from gi.repository import GObject, GLib
from gi import PyGIDeprecationWarning
from gi.module import get_introspection_module
-from gi._gobject import _gobject
+
+import gi
+_gobject = gi._gi._gobject
import testhelper
diff --git a/tests/test_properties.py b/tests/test_properties.py
index ef6b867..d7ceb89 100644
--- a/tests/test_properties.py
+++ b/tests/test_properties.py
@@ -23,7 +23,7 @@ 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
+from gi import _propertyhelper as propertyhelper
if sys.version_info < (3, 0):
TEST_UTF8 = "\xe2\x99\xa5"
diff --git a/tests/test_signal.py b/tests/test_signal.py
index e90264a..429afc9 100644
--- a/tests/test_signal.py
+++ b/tests/test_signal.py
@@ -5,7 +5,7 @@ import unittest
import sys
from gi.repository import GObject, GLib
-from gi._gobject import signalhelper
+from gi import _signalhelper as signalhelper
import testhelper
from compathelper import _long
diff --git a/tests/test_source.py b/tests/test_source.py
index 6f69927..e0910f9 100644
--- a/tests/test_source.py
+++ b/tests/test_source.py
@@ -220,6 +220,51 @@ class TestSource(unittest.TestCase):
del source
self.assertTrue(self.finalized)
+ @unittest.skip('https://bugzilla.gnome.org/show_bug.cgi?id=722387')
+ def test_python_unref_with_active_source(self):
+ # Tests a Python derived Source which is free'd in the context of
+ # Python, but remains active in the MainContext (via source.attach())
+ self.dispatched = False
+ self.finalized = False
+
+ class S(GLib.Source):
+ def prepare(s):
+ return (True, 1)
+
+ def check(s):
+ pass
+
+ def dispatch(s, callback, args):
+ self.dispatched = True
+ return False
+
+ def finalize(s):
+ self.finalized = True
+
+ source = S()
+ id = source.attach()
+ self.assertFalse(self.finalized)
+ self.assertFalse(source.is_destroyed())
+
+ # Delete the source from Python but should still remain
+ # active in the main context.
+ del source
+
+ context = GLib.MainContext.default()
+ while context.iteration(may_block=False):
+ pass
+
+ self.assertTrue(self.dispatched)
+ self.assertFalse(self.finalized)
+
+ source = context.find_source_by_id(id)
+ source.destroy() # Remove from main context.
+ self.assertTrue(source.is_destroyed())
+
+ # Source should be finalized called after del
+ del source
+ self.assertTrue(self.finalized)
+
def test_extra_init_args(self):
class SourceWithInitArgs(GLib.Source):
def __init__(self, arg, kwarg=None):