commit eb2ff4362878d0e348c67c606a32e8d332e2454d
Author: Christoph Reiter <creiter@src.gnome.org>
Date:   Fri Dec 8 16:56:10 2017 +0100

    demo: pep8 fixes

    The demo app now gets analyzed by pep8 since it was moved to the
    examples.

 examples/demo/demos/Css/css_accordion.py           |    1 +
 examples/demo/demos/Entry/entry_buffer.py          |    1 +
 examples/demo/demos/Entry/entry_completion.py      |    1 +
 examples/demo/demos/Entry/search_entry.py          |    1 +
 examples/demo/demos/IconView/iconviewbasics.py     |    1 +
 examples/demo/demos/IconView/iconviewedit.py       |    1 +
 examples/demo/demos/TreeView/liststore.py          |    2 +
 examples/demo/demos/TreeView/treemodel_filelist.py |    1 +
 examples/demo/demos/TreeView/treemodel_filetree.py |    1 +
 examples/demo/demos/appwindow.py                   |    1 +
 examples/demo/demos/assistant.py                   |    1 +
 examples/demo/demos/builder.py                     |    1 +
 examples/demo/demos/button_box.py                  |    1 +
 examples/demo/demos/clipboard.py                   |    1 +
 examples/demo/demos/colorselector.py               |    1 +
 examples/demo/demos/combobox.py                    |    1 +
 examples/demo/demos/dialogs.py                     |    1 +
 examples/demo/demos/drawingarea.py                 |   11 +-
 examples/demo/demos/expander.py                    |    1 +
 examples/demo/demos/flowbox.py                     | 1332
 ++++++++++----------
 examples/demo/demos/images.py                      |    1 +
 examples/demo/demos/infobars.py                    |    1 +
 examples/demo/demos/links.py                       |    1 +
 examples/demo/demos/menus.py                       |    1 +
 examples/demo/demos/pickers.py                     |    1 +
 examples/demo/demos/pixbuf.py                      |    1 +
 examples/demo/demos/printing.py                    |    1 +
 examples/demo/demos/rotatedtext.py                 |    1 +
 28 files changed, 700 insertions(+), 670 deletions(-)

commit af9ddf322f7cf377996b8fa29906bd4b254dc001
Author: Christoph Reiter <creiter@src.gnome.org>
Date:   Fri Dec 8 16:40:33 2017 +0100

    Fix ctypes.PyDLL construction under Windows

    We require the ctypes.pythonapi interface but can't use the global one
    since we have to change it which could potentially break other users
    of that interface.

    Turns out simply passing None to PyDLL() only works on Unix to
    load the
    CPython library. Instead copy the logic from the ctypes module in the
    stdlib.

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

 gi/_ossighelper.py | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

commit d19aca693950c0edb02b226db8bcf81a5304870e
Author: Christoph Reiter <creiter@src.gnome.org>
Date:   Fri Dec 8 14:40:58 2017 +0100

    configure.ac: Error out in case autoconf-archive isn't installed

    Check whether the AX_IS_RELEASE macro is defined and if not print
    a proper error message.

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

 configure.ac | 3 +++
 1 file changed, 3 insertions(+)

commit 26001a6ae42f8e10ed4c44bc9414e219b946cee0
Author: Christoph Reiter <creiter@src.gnome.org>
Date:   Wed Dec 6 18:37:45 2017 +0100

    Move pygi-convert.sh into tools

 MANIFEST.in                              | 2 +-
 Makefile.am                              | 2 +-
 pygi-convert.sh => tools/pygi-convert.sh | 0
 3 files changed, 2 insertions(+), 2 deletions(-)

commit dd1507be6c198319304342b73c8ec1ec2a102145
Author: Christoph Reiter <creiter@src.gnome.org>
Date:   Wed Dec 6 18:26:13 2017 +0100

    README: Convert to reST

 MANIFEST.in          |  2 +-
 Makefile.am          |  3 ++-
 README => README.rst | 56
 ++++++++++++++++++++++++++++++++++------------------
 3 files changed, 40 insertions(+), 21 deletions(-)

commit e4a52b9f99667df98806d0c4ee78c2909ead27e1
Author: Christoph Reiter <creiter@src.gnome.org>
Date:   Wed Dec 6 17:53:51 2017 +0100

    demo: Move demo into examples and dist it

    We might want to install it in the future, but until then at least put
    it into the tarball.

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

 MANIFEST.in                                                 |   3 +--
 examples/Makefile.am                                        |   7 ++++++-
 {demo => examples/demo}/demo.py                             |   0
 {demo => examples/demo}/demos/Css/__init__.py               |   0
 {demo => examples/demo}/demos/Css/css_accordion.py          |   0
 {demo => examples/demo}/demos/Css/css_basics.py             |   0
 {demo => examples/demo}/demos/Css/css_multiplebgs.py        |   0
 {demo => examples/demo}/demos/Entry/__init__.py             |   0
 {demo => examples/demo}/demos/Entry/entry_buffer.py         |   0
 {demo => examples/demo}/demos/Entry/entry_completion.py     |   0
 {demo => examples/demo}/demos/Entry/search_entry.py         |   0
 {demo => examples/demo}/demos/IconView/__init__.py          |   0
 {demo => examples/demo}/demos/IconView/iconviewbasics.py    |   0
 {demo => examples/demo}/demos/IconView/iconviewedit.py      |   0
 {demo => examples/demo}/demos/TreeView/__init__.py          |   0
 {demo => examples/demo}/demos/TreeView/liststore.py         |   0
 .../demo}/demos/TreeView/treemodel_filelist.py              |   0
 .../demo}/demos/TreeView/treemodel_filetree.py              |   0
 {demo => examples/demo}/demos/TreeView/treemodel_large.py   |   0
 {demo => examples/demo}/demos/__init__.py                   |   0
 {demo => examples/demo}/demos/appwindow.py                  |   0
 {demo => examples/demo}/demos/assistant.py                  |   0
 {demo => examples/demo}/demos/builder.py                    |   0
 {demo => examples/demo}/demos/button_box.py                 |   0
 {demo => examples/demo}/demos/clipboard.py                  |   0
 {demo => examples/demo}/demos/colorselector.py              |   0
 {demo => examples/demo}/demos/combobox.py                   |   0
 {demo => examples/demo}/demos/data/alphatest.png            | Bin
 {demo => examples/demo}/demos/data/apple-red.png            | Bin
 {demo => examples/demo}/demos/data/background.jpg           | Bin
 {demo => examples/demo}/demos/data/brick.png                | Bin
 {demo => examples/demo}/demos/data/brick2.png               | Bin
 {demo => examples/demo}/demos/data/css_accordion.css        |   0
 {demo => examples/demo}/demos/data/css_basics.css           |   0
 {demo => examples/demo}/demos/data/css_multiplebgs.css      |   0
 {demo => examples/demo}/demos/data/cssview.css              |   0
 {demo => examples/demo}/demos/data/demo.gresource           | Bin
 {demo => examples/demo}/demos/data/demo.gresource.xml       |   0
 {demo => examples/demo}/demos/data/demo.ui                  |   0
 {demo => examples/demo}/demos/data/floppybuddy.gif          | Bin
 {demo => examples/demo}/demos/data/gnome-applets.png        | Bin
 {demo => examples/demo}/demos/data/gnome-calendar.png       | Bin
 {demo => examples/demo}/demos/data/gnome-foot.png           | Bin
 {demo => examples/demo}/demos/data/gnome-fs-directory.png   | Bin
 {demo => examples/demo}/demos/data/gnome-fs-regular.png     | Bin
 {demo => examples/demo}/demos/data/gnome-gimp.png           | Bin
 {demo => examples/demo}/demos/data/gnome-gmush.png          | Bin
 {demo => examples/demo}/demos/data/gnome-gsame.png          | Bin
 {demo => examples/demo}/demos/data/gnu-keys.png             | Bin
 {demo => examples/demo}/demos/data/gtk-logo-rgb.gif         | Bin
 {demo => examples/demo}/demos/data/reset.css                |   0
 {demo => examples/demo}/demos/dialogs.py                    |   0
 {demo => examples/demo}/demos/drawingarea.py                |   0
 {demo => examples/demo}/demos/expander.py                   |   0
 {demo => examples/demo}/demos/flowbox.py                    |   0
 {demo => examples/demo}/demos/images.py                     |   0
 {demo => examples/demo}/demos/infobars.py                   |   0
 {demo => examples/demo}/demos/links.py                      |   0
 {demo => examples/demo}/demos/menus.py                      |   0
 {demo => examples/demo}/demos/pickers.py                    |   0
 {demo => examples/demo}/demos/pixbuf.py                     |   0
 {demo => examples/demo}/demos/printing.py                   |   0
 {demo => examples/demo}/demos/rotatedtext.py                |   0
 {demo => examples/demo}/demos/test.py                       |   0
 64 files changed, 7 insertions(+), 3 deletions(-)

commit f8ff3b5e0e769e6db1509426af28728129780529
Author: Gian Mario Tagliaretti <gianmt@gnome.org>
Date:   Thu Sep 4 08:51:10 2014 +0100

    demo: Add new Gtk.FlowBox example

    Added a new example for the Gtk.FlowBox class added in GTK+ 3.12.
    This example additionally makes use of Gtk.HeaderBar.

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

 demo/demos/flowbox.py | 750
 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 750 insertions(+)

commit 3f4a176c77a8026949c04d85d0a822554c4c661c
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Tue Sep 2 10:53:29 2014 -0700

    demo: Use HeaderBar for main app window

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

 demo/demo.py | 23 +++++++++++------------
 1 file changed, 11 insertions(+), 12 deletions(-)

commit 995f1e72eed0970d56d871ed8452c61f92a40696
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Tue Sep 2 11:10:31 2014 -0700

    demo: PyFlakes and PEP8 fixes

    Since PyFlakes and PEP8 are not currently run on the demo due to it
    not being packaged, manually check and fix this for now.

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

 demo/demo.py                         | 2 +-
 demo/demos/Entry/entry_buffer.py     | 2 +-
 demo/demos/Entry/entry_completion.py | 2 +-
 demo/demos/clipboard.py              | 6 +-----
 demo/demos/combobox.py               | 2 +-
 5 files changed, 5 insertions(+), 9 deletions(-)

commit 5d2ce69ed51aec62872ebb2a129c2b8a6b4256af
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Tue Sep 2 11:01:55 2014 -0700

    demo: Rename gtk-demo.py to demo.py

    Remove GTK+ specificity which also allows the demo app to be used as
    one of the demos itself.

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

 demo/{gtk-demo.py => demo.py} | 0
 1 file changed, 0 insertions(+), 0 deletions(-)

commit 7e48d91a5e1f180cbe4adea41bd41939c26c77b0
Author: Simon Feltman <sfeltman@src.gnome.org>
Date:   Mon Sep 1 22:04:29 2014 -0700

    demo: Rename demos/gtk-demo to simply demo

    Move the entire "pygobject/demos/gtk-demo" folder to "pygobject/demo".
    Since we only have a single demo app which should be used for all
    platform demos we can remove the diectory obfuscation.

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

 {demos/gtk-demo => demo}/demos/Css/__init__.py              |   0
 {demos/gtk-demo => demo}/demos/Css/css_accordion.py         |   0
 {demos/gtk-demo => demo}/demos/Css/css_basics.py            |   0
 {demos/gtk-demo => demo}/demos/Css/css_multiplebgs.py       |   0
 {demos/gtk-demo => demo}/demos/Entry/__init__.py            |   0
 {demos/gtk-demo => demo}/demos/Entry/entry_buffer.py        |   0
 {demos/gtk-demo => demo}/demos/Entry/entry_completion.py    |   0
 {demos/gtk-demo => demo}/demos/Entry/search_entry.py        |   0
 {demos/gtk-demo => demo}/demos/IconView/__init__.py         |   0
 {demos/gtk-demo => demo}/demos/IconView/iconviewbasics.py   |   0
 {demos/gtk-demo => demo}/demos/IconView/iconviewedit.py     |   0
 {demos/gtk-demo => demo}/demos/TreeView/__init__.py         |   0
 {demos/gtk-demo => demo}/demos/TreeView/liststore.py        |   0
 .../gtk-demo => demo}/demos/TreeView/treemodel_filelist.py  |   0
 .../gtk-demo => demo}/demos/TreeView/treemodel_filetree.py  |   0
 {demos/gtk-demo => demo}/demos/TreeView/treemodel_large.py  |   0
 {demos/gtk-demo => demo}/demos/__init__.py                  |   0
 {demos/gtk-demo => demo}/demos/appwindow.py                 |   0
 {demos/gtk-demo => demo}/demos/assistant.py                 |   0
 {demos/gtk-demo => demo}/demos/builder.py                   |   0
 {demos/gtk-demo => demo}/demos/button_box.py                |   0
 {demos/gtk-demo => demo}/demos/clipboard.py                 |   0
 {demos/gtk-demo => demo}/demos/colorselector.py             |   0
 {demos/gtk-demo => demo}/demos/combobox.py                  |   0
 {demos/gtk-demo => demo}/demos/data/alphatest.png           | Bin
 {demos/gtk-demo => demo}/demos/data/apple-red.png           | Bin
 {demos/gtk-demo => demo}/demos/data/background.jpg          | Bin
 {demos/gtk-demo => demo}/demos/data/brick.png               | Bin
 {demos/gtk-demo => demo}/demos/data/brick2.png              | Bin
 {demos/gtk-demo => demo}/demos/data/css_accordion.css       |   0
 {demos/gtk-demo => demo}/demos/data/css_basics.css          |   0
 {demos/gtk-demo => demo}/demos/data/css_multiplebgs.css     |   0
 {demos/gtk-demo => demo}/demos/data/cssview.css             |   0
 {demos/gtk-demo => demo}/demos/data/demo.gresource          | Bin
 {demos/gtk-demo => demo}/demos/data/demo.gresource.xml      |   0
 {demos/gtk-demo => demo}/demos/data/demo.ui                 |   0
 {demos/gtk-demo => demo}/demos/data/floppybuddy.gif         | Bin
 {demos/gtk-demo => demo}/demos/data/gnome-applets.png       | Bin
 {demos/gtk-demo => demo}/demos/data/gnome-calendar.png      | Bin
 {demos/gtk-demo => demo}/demos/data/gnome-foot.png          | Bin
 {demos/gtk-demo => demo}/demos/data/gnome-fs-directory.png  | Bin
 {demos/gtk-demo => demo}/demos/data/gnome-fs-regular.png    | Bin
 {demos/gtk-demo => demo}/demos/data/gnome-gimp.png          | Bin
 {demos/gtk-demo => demo}/demos/data/gnome-gmush.png         | Bin
 {demos/gtk-demo => demo}/demos/data/gnome-gsame.png         | Bin
 {demos/gtk-demo => demo}/demos/data/gnu-keys.png            | Bin
 {demos/gtk-demo => demo}/demos/data/gtk-logo-rgb.gif        | Bin
 {demos/gtk-demo => demo}/demos/data/reset.css               |   0
 {demos/gtk-demo => demo}/demos/dialogs.py                   |   0
 {demos/gtk-demo => demo}/demos/drawingarea.py               |   0
 {demos/gtk-demo => demo}/demos/expander.py                  |   0
 {demos/gtk-demo => demo}/demos/images.py                    |   0
 {demos/gtk-demo => demo}/demos/infobars.py                  |   0
 {demos/gtk-demo => demo}/demos/links.py                     |   0
 {demos/gtk-demo => demo}/demos/menus.py                     |   0
 {demos/gtk-demo => demo}/demos/pickers.py                   |   0
 {demos/gtk-demo => demo}/demos/pixbuf.py                    |   0
 {demos/gtk-demo => demo}/demos/printing.py                  |   0
 {demos/gtk-demo => demo}/demos/rotatedtext.py               |   0
 {demos/gtk-demo => demo}/demos/test.py                      |   0
 {demos/gtk-demo => demo}/gtk-demo.py                        |   0
 61 files changed, 0 insertions(+), 0 deletions(-)

commit 1ea36ccfc755693b9ce4cf28be549704bf5370d3
Author: Christoph Reiter <creiter@src.gnome.org>
Date:   Wed Dec 6 16:54:54 2017 +0100

    Remove AUTHORS file

    No need to duplicate that information over and over.
    It's in the README and .doap file still

 AUTHORS     | 11 -----------
 MANIFEST.in |  1 -
 README      |  4 ++--
 3 files changed, 2 insertions(+), 14 deletions(-)

commit 9462873823a5459276400c0d6cf11e084b681751
Author: Christoph Reiter <creiter@src.gnome.org>
Date:   Wed Dec 6 15:55:54 2017 +0100

    Remove pre-commit.hook

    It was obviously not used in some time as the git command doesn't
    exist anymore.
    If we ever get per pull/merge request CI we can look into bringing
    something
    like this back.

 MANIFEST.in     |  1 -
 pre-commit.hook | 39 ---------------------------------------
 2 files changed, 40 deletions(-)

commit 3e455944f5835c750911d3178a0607201f23f1a8
Author: Christoph Reiter <creiter@src.gnome.org>
Date:   Mon Dec 4 15:33:00 2017 +0100

    setup.py: Port to distutils/setuptools

    Instead of wrapping autotools add a proper setuptools based build
    system.
    Compared to the autotools one this does not install .pc files
    or headers
    and does not allow running tests.

    It uses pkg-config for discovering dependencies and explictely
    searches
    for .pc files in the Python prefix so that pycairo installations in a
    virtualenv are discovered. When using MSVC, pkg-config is skipped and
    it is assumend that INCLUDE and LIB is properly set up.

    Version information and requirements are parsed from configure.ac,
    package
    metadata is parsed from PKG-INFO.in.

    Also adds a "setup.py distcheck" command which makes sure all
    tracked files
    end up in the tarball and that the tarball builds (no tests are
    run atm).

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

 .gitignore   |   1 +
 MANIFEST.in  |  20 +++
 Makefile.am  |   3 +-
 PKG-INFO.in  |   8 +-
 configure.ac |   3 +-
 setup.py     | 409
 +++++++++++++++++++++++++++++++++++++++++++++++------------
 6 files changed, 359 insertions(+), 85 deletions(-)

commit 58f677bfaa0f117465a9e2146c5d83768b5a76ac
Author: Christoph Reiter <creiter@src.gnome.org>
Date:   Fri Nov 24 13:11:26 2017 +0100

    Install a default SIGINT handler for functions which start an
    event loop

    Currently ctrl+c on a program blocked on Gtk.main() will raise
    an exception
    but not return control. While it's easy to set up the proper signal
    handling and
    stop the event loop or execute some other application shutdown code
    it's nice to have a good default behaviour for small
    prototypes/examples
    or when testing some code in an interactive console.

    This adds a context manager which registers a SIGINT handler only
    in case
    the default Python signal handler is active and restores the
    original handle
    afterwards. Since signal handlers registered through
    g_unix_signal_add()
    are not detected by Python's signal module we use PyOS_getsig()
    through ctypes
    to detect if the signal handler is changed from outside.

    In case of nested event loops, all of them will be aborted.
    In case an event loop is started in a thread, nothing will happen.

    The context manager is used in the overrides for Gtk.main(),
    Gtk.Dialog.run(),
    Gio.Application.run() and GLib.MainLoop.run()

    This also fixes GLib.MainLoop.run() replacing a non-default signal
    handler
    and not restoring the default one:
        https://bugzilla.gnome.org/show_bug.cgi?id=698623

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

 gi/_ossighelper.py   | 115
 +++++++++++++++++++++++++++++++++++++++++++++++++++
 gi/overrides/GLib.py |  31 +++-----------
 gi/overrides/Gio.py  |   7 ++--
 gi/overrides/Gtk.py  |  12 +++---
 tests/test_ossig.py  |  73 +++++++++++++++++++++++++++++++-
 5 files changed, 203 insertions(+), 35 deletions(-)

commit a321f6e9d8f5b8e779892eab4ce759b60ff98e39
Author: Christoph Reiter <creiter@src.gnome.org>
Date:   Fri Nov 17 20:05:24 2017 +0100

    Make Python OS signal handlers run when an event loop is idling

    When Python receives a signal such as SIGINT it sets a flag and
    will execute
    the registered signal handler on the next call to
    PyErr_CheckSignals().
    In case the main thread is blocked by an idling event loop (say
    Gtk.main()
    or Gtk.Dialog.run()) the check never happens and the signal handler
    will not get executed.

    To work around the issue use signal.set_wakeup_fd() to wake up
    the active
    event loop when a signal is received, which will invoke a Python
    callback
    which will lead to the signal handler being executed.

    This patch enables it in overrides for Gtk.main(), Gtk.Dialog.run(),
    Gio.Application.run() and GLib.MainLoop.run().

    Works on Unix, and on Windows with Python 3.5+.

    With this fix in place it is possible to have a cross platform way to
    react to SIGINT (GLib.unix_signal_add() worked, but not on Windows),
    for example:

        signal.signal(signal.SIGINT, lambda *args: Gtk.main_quit())
        Gtk.main()

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

 Makefile.am          |   3 +-
 gi/_ossighelper.py   | 137
 +++++++++++++++++++++++++++++++++++++++++++++++++++
 gi/overrides/GLib.py |   4 +-
 gi/overrides/Gio.py  |  12 +++++
 gi/overrides/Gtk.py  |  14 ++++++
 tests/Makefile.am    |   1 +
 tests/test_ossig.py  | 102 ++++++++++++++++++++++++++++++++++++++
 7 files changed, 271 insertions(+), 2 deletions(-)

commit 46a9dade170127006df98d44b1a9fb2035ada86b
Author: Christoph Reiter <creiter@src.gnome.org>
Date:   Fri Nov 24 17:40:11 2017 +0100

    Drop Python 3.3 support

    It's EOL and not used much (https://hynek.me/articles/python3-2016/)

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

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

commit bd165405754ba44dea12fd3f31b841b5c8ba0f1a
Author: Sander Sweers <infirit@gmail.com>
Date:   Sun Aug 20 22:44:15 2017 +0200

    Drop set_value usage in Gtk.List/TreeStore.set override

    this causes multiple updates to the store each emitting a signal.

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

 gi/overrides/Gtk.py         | 48
 ++++++++++++++++++++++++---------------------
 tests/test_overrides_gtk.py | 12 ++++++++++++
 2 files changed, 38 insertions(+), 22 deletions(-)

commit 5f63b8c626eb7f27de346dac2b66f07794e61b07