Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-gobject for openSUSE:Factory checked in at 2026-03-12 22:20:41 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-gobject (Old) and /work/SRC/openSUSE:Factory/.python-gobject.new.8177 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-gobject" Thu Mar 12 22:20:41 2026 rev:108 rq:1338331 version:3.56.1 Changes: -------- --- /work/SRC/openSUSE:Factory/python-gobject/python-gobject.changes 2026-03-06 18:17:37.293737409 +0100 +++ /work/SRC/openSUSE:Factory/.python-gobject.new.8177/python-gobject.changes 2026-03-12 22:22:14.046178058 +0100 @@ -1,0 +2,7 @@ +Wed Mar 11 10:00:07 UTC 2026 - Bjørn Lie <[email protected]> + +- Update to version 3.56.1: + + Fix `do_dispose` for floating objects + + Updates and fixes for Windows documentation + +------------------------------------------------------------------- Old: ---- pygobject-3.56.0.obscpio New: ---- pygobject-3.56.1.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-gobject.spec ++++++ --- /var/tmp/diff_new_pack.62ruFD/_old 2026-03-12 22:22:14.862211818 +0100 +++ /var/tmp/diff_new_pack.62ruFD/_new 2026-03-12 22:22:14.866211984 +0100 @@ -34,7 +34,7 @@ %define libffi_version 3.0 %{?sle15_python_module_pythons} Name: python-gobject -Version: 3.56.0 +Version: 3.56.1 Release: 0 Summary: Python bindings for GObject License: LGPL-2.1-or-later ++++++ _service ++++++ --- /var/tmp/diff_new_pack.62ruFD/_old 2026-03-12 22:22:14.906213639 +0100 +++ /var/tmp/diff_new_pack.62ruFD/_new 2026-03-12 22:22:14.914213970 +0100 @@ -3,7 +3,7 @@ <service name="obs_scm" mode="manual"> <param name="scm">git</param> <param name="url">https://gitlab.gnome.org/GNOME/pygobject.git</param> - <param name="revision">3.56.0</param> + <param name="revision">3.56.1</param> <param name="versionformat">@PARENT_TAG@+@TAG_OFFSET@</param> <param name="versionrewrite-pattern">v?(.*)\+0</param> <param name="versionrewrite-replacement">\1</param> ++++++ pygobject-3.56.0.obscpio -> pygobject-3.56.1.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygobject-3.56.0/NEWS new/pygobject-3.56.1/NEWS --- old/pygobject-3.56.0/NEWS 2026-02-27 08:58:10.000000000 +0100 +++ new/pygobject-3.56.1/NEWS 2026-03-11 09:50:15.000000000 +0100 @@ -1,3 +1,9 @@ +3.56.1 - 2026-02-27 +------------------- + +* Fix `do_dispose` for floating objects :mr:`527` +* Updates and fixes for Windows documantation :mr:`525` + 3.56.0 - 2026-02-27 ------------------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygobject-3.56.0/docs/_templates/page.html new/pygobject-3.56.1/docs/_templates/page.html --- old/pygobject-3.56.0/docs/_templates/page.html 1970-01-01 01:00:00.000000000 +0100 +++ new/pygobject-3.56.1/docs/_templates/page.html 2026-03-11 09:50:15.000000000 +0100 @@ -0,0 +1,17 @@ +{% extends "layout.html" %} + +{% block body %} + {% if meta is defined and meta and (meta.get("date") or meta.get("author")) %} + {% set page_date = meta.get("date") %} + {% set page_author = meta.get("author") %} + {% set byline %} +<p class="page-docinfo-meta"> + {% if page_date %}{{ page_date }}{% endif %} + {% if page_author %}{% if page_date %} · {% endif %}{{ page_author }}{% endif %} +</p> + {% endset %} + {{ body | replace("</h1>", "</h1>" ~ byline, 1) }} + {% else %} + {{ body }} + {% endif %} +{% endblock %} \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygobject-3.56.0/docs/bugs_repo.rst new/pygobject-3.56.1/docs/bugs_repo.rst --- old/pygobject-3.56.0/docs/bugs_repo.rst 2026-02-27 08:58:10.000000000 +0100 +++ new/pygobject-3.56.1/docs/bugs_repo.rst 2026-03-11 09:50:15.000000000 +0100 @@ -28,4 +28,4 @@ Release tarballs of all releases can be found on the GNOME server: -https://ftp.gnome.org/pub/GNOME/sources/pygobject +https://download.gnome.org/sources/pygobject/ \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygobject-3.56.0/docs/conf.py new/pygobject-3.56.1/docs/conf.py --- old/pygobject-3.56.0/docs/conf.py 2026-02-27 08:58:10.000000000 +0100 +++ new/pygobject-3.56.1/docs/conf.py 2026-03-11 09:50:15.000000000 +0100 @@ -46,6 +46,7 @@ } source_suffix = {".rst": "restructuredtext"} +templates_path = ["_templates"] master_doc = "index" exclude_patterns = ["_build", "README.rst"] @@ -57,9 +58,6 @@ html_title = project html_context = { - "extra_css_files": [ - "_static/extra.css", - ], "display_gitlab": True, "gitlab_user": "GNOME", "gitlab_repo": "pygobject", @@ -69,6 +67,7 @@ } html_static_path = ["images", "."] +html_css_files = ["extra.css"] extlinks = { "bzbug": ("https://bugzilla.gnome.org/show_bug.cgi?id=%s", "bz#%s"), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygobject-3.56.0/docs/extra.css new/pygobject-3.56.1/docs/extra.css --- old/pygobject-3.56.0/docs/extra.css 2026-02-27 08:58:10.000000000 +0100 +++ new/pygobject-3.56.1/docs/extra.css 2026-03-11 09:50:15.000000000 +0100 @@ -1,57 +1,6 @@ -.wy-side-nav-search { - background-color: initial; -} - -.wy-nav-top { - background-color: #171A2F; -} - -.wy-side-nav-search input[type="text"] { - border-color: transparent; -} - -.wy-nav-content { - margin: initial; -} - -.wy-nav-side { - background-color: #171A2F; -} - -.rst-content div[role=navigation], footer { - font-size: 0.85em; - color: #999; -} - -.rst-content div[role=navigation] hr { - margin-top: 6px; -} - -footer hr { - margin-bottom: 6px; -} - -.rst-footer-buttons { - display: none; -} - -a.icon-home, a.icon-home:hover { - display: inline-block; - padding: 4px 4px 4px 21px; - background: transparent url(pygobject-small.svg) center left no-repeat; - background-size: 1.2em; - margin-top: 0.2em; - margin-bottom: 1em; -} - - -.fa-home::before, .icon-home::before { - content: ""; -} - -.wy-nav-top a { - margin: -2em; - background: transparent url(pygobject-small.svg) center left no-repeat; - background-size: 1.2em; - padding: 4px 4px 4px 24px; +.page-docinfo-meta { + margin-top: -0.25rem; + margin-bottom: 1rem; + color: var(--pst-color-text-muted); + font-size: 90%; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygobject-3.56.0/docs/getting_started.rst new/pygobject-3.56.1/docs/getting_started.rst --- old/pygobject-3.56.0/docs/getting_started.rst 2026-02-27 08:58:10.000000000 +0100 +++ new/pygobject-3.56.1/docs/getting_started.rst 2026-03-11 09:50:15.000000000 +0100 @@ -61,10 +61,14 @@ #) Follow the instructions on the page for setting up the basic environment #) Run ``C:\msys64\ucrt64.exe`` - a terminal window should pop up #) Execute ``pacman -Suy`` -#) Execute ``pacman -S mingw-w64-ucrt-x86_64-gtk4 mingw-w64-ucrt-x86_64-python3 mingw-w64-ucrt-x86_64-python3-gobject`` +#) Execute ``pacman -S mingw-w64-ucrt-x86_64-gtk4 mingw-w64-ucrt-x86_64-python mingw-w64-ucrt-x86_64-python-gobject`` + + .. note:: + While some systems may use ``python3`` in the package name, current MSYS2 UCRT64 + environments typically use ``python``. If one fails, try the other (incl. step 8). #) To test that GTK is working you can run ``gtk4-demo`` #) Copy the ``hello.py`` script you created to ``C:\msys64\home\<username>`` -#) In the mingw32 terminal execute ``python3 hello.py`` - a window should appear. +#) In the mingw32 terminal execute ``python hello.py`` - a window should appear. .. figure:: images/start_windows.png :scale: 60% @@ -205,6 +209,14 @@ .. toctree:: :hidden: :maxdepth: 1 + :caption: What's new + + news/pygobject-3-56 + +.. toctree:: + :hidden: + :maxdepth: 1 + :caption: Project Information changelog bugs_repo diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygobject-3.56.0/docs/news/pygobject-3-56.rst new/pygobject-3.56.1/docs/news/pygobject-3-56.rst --- old/pygobject-3.56.0/docs/news/pygobject-3-56.rst 1970-01-01 01:00:00.000000000 +0100 +++ new/pygobject-3.56.1/docs/news/pygobject-3-56.rst 2026-03-11 09:50:15.000000000 +0100 @@ -0,0 +1,51 @@ +:date: Feb 27, 2026 +:author: Arjan Molenaar + +PyGObject 3.56.0 +================ + +PyGObject 3.56.0 has just been released. Major features include: better integration with +GObject's lifecycle (``do_constructed``, ``do_dispose``), a simpler way to deal with +Python wrapper objects, and cleanup of legacy code. + +GObject lifecycle methods +------------------------- + +This release exposes two new GObject lifecycle hooks: ``do_constructed`` and ``do_dispose``. + +* ``do_constructed`` is called after a GObject has been fully constructed. +* ``do_dispose`` is called when the underlying GObject (not just the Python wrapper) is disposed, + for example via :obj:`~gi.repository.GObject.Object.run_dispose`. + +Slots +----- + +Slots (``__slots__``) have never been officially supported in PyGObject, even though it worked in some cases. +With the new wrapping model (see below), using ``__slots__`` can cause issues. +PyGObject now emits a warning when ``__slots__`` is used in classes derived from GObject. + +Shallow wrapper objects +----------------------- + +PyGObject's Python object tracking used to be complex. In 3.56, wrapper lifecycle management has been simplified. + +Previously, PyGObject retained Python wrapper objects when instance attributes existed, +using `toggle references <https://docs.gtk.org/gobject/method.Object.add_toggle_ref.html>`__. +Now, wrapper objects are always discardable. PyGObject preserves the instance dictionary and reapplies it to +new wrapper instances as needed. This behavior is easier to reason about and enables features such as ``do_dispose``. + +Legacy code removal +------------------- + +In 3.56, marshalling for fields, properties, constants, and signal closures has been replaced by the existing +function/method call marshalling logic. Because that path already supports more cases, this change resolves +multiple long-standing issues. + +PyGObject is getting rid of custom wrapper logic. In this release, ``pygtkcompat`` and wrappers for +``GLib.OptionContext/GLib.OptionGroup`` have been fully removed. + +What's next +----------- + +There is still more to improve. We need your help for that: if you spot un-pythonic behavior, create an issue. +Maybe you feel like fixing an issue even. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygobject-3.56.0/docs/tutorials/libadwaita/application.rst new/pygobject-3.56.1/docs/tutorials/libadwaita/application.rst --- old/pygobject-3.56.0/docs/tutorials/libadwaita/application.rst 2026-02-27 08:58:10.000000000 +0100 +++ new/pygobject-3.56.1/docs/tutorials/libadwaita/application.rst 2026-03-11 09:50:15.000000000 +0100 @@ -30,13 +30,4 @@ matching stylesheets depending on the system appearance settings exposed by :class:`Adw.StyleManager`. - -* ``style.css`` contains the base styles. - -* ``style-dark.css`` contains styles only used when :attr:`Adw.StyleManager.props.dark` - is ``True``. - -* ``style-hc.css`` contains styles used when :attr:`Adw.StyleManager.props.high_contrast` is ``True``. - -* ``style-hc-dark.css`` contains styles used when :attr:`Adw.StyleManager.props.high_contrast` - and :attr:`Adw.StyleManager.props.dark` are both ``True``. +Have a look at the `libadwaita styling documentation <https://gnome.pages.gitlab.gnome.org/libadwaita/doc/main/styles-and-appearance.html>`__. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygobject-3.56.0/gi/pygobject-class.c new/pygobject-3.56.1/gi/pygobject-class.c --- old/pygobject-3.56.0/gi/pygobject-class.c 2026-02-27 08:58:10.000000000 +0100 +++ new/pygobject-3.56.1/gi/pygobject-class.c 2026-03-11 09:50:15.000000000 +0100 @@ -650,7 +650,15 @@ object_wrapper = g_object_get_qdata (object, pygobject_wrapper_key); Py_XINCREF (object_wrapper); #else - object_wrapper = pygobject_new_full (object, FALSE, klass); + if (g_object_is_floating (object)) { + g_object_ref (object); + object_wrapper = pygobject_new_full (object, + /*steal=*/TRUE, klass); + g_object_force_floating (object); + } else { + object_wrapper = pygobject_new_full (object, + /*steal=*/FALSE, klass); + } #endif if (object_wrapper != NULL diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygobject-3.56.0/meson.build new/pygobject-3.56.1/meson.build --- old/pygobject-3.56.0/meson.build 2026-02-27 08:58:10.000000000 +0100 +++ new/pygobject-3.56.1/meson.build 2026-03-11 09:50:15.000000000 +0100 @@ -1,7 +1,7 @@ project( 'pygobject', 'c', - version : '3.56.0', + version : '3.56.1', meson_version : '>= 0.64.0', default_options : [ 'warning_level=1', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pygobject-3.56.0/tests/test_gobject.py new/pygobject-3.56.1/tests/test_gobject.py --- old/pygobject-3.56.0/tests/test_gobject.py 2026-02-27 08:58:10.000000000 +0100 +++ new/pygobject-3.56.1/tests/test_gobject.py 2026-03-11 09:50:15.000000000 +0100 @@ -904,6 +904,22 @@ assert dispose_invoked + @unittest.skipIf(platform.python_implementation() == "PyPy", "CPython only") + def test_dispose_on_floating_object(self): + dispose_invoked = False + + class TestObject(GObject.Object): + def do_dispose(self): + nonlocal dispose_invoked + dispose_invoked = True + super().do_dispose() + + with warnings.catch_warnings(record=True): + warnings.simplefilter("always") + TestObject()._force_floating() + + assert dispose_invoked + def test_list_properties(): def find_param(props, name): ++++++ pygobject.obsinfo ++++++ --- /var/tmp/diff_new_pack.62ruFD/_old 2026-03-12 22:22:15.526239290 +0100 +++ /var/tmp/diff_new_pack.62ruFD/_new 2026-03-12 22:22:15.534239621 +0100 @@ -1,5 +1,5 @@ name: pygobject -version: 3.56.0 -mtime: 1772179090 -commit: 4f2a75e20355f1942893a08fc9a0887a61e16998 +version: 3.56.1 +mtime: 1773219015 +commit: 4d4b7152b5de75d1b0de87b423cb7feb6074b82f
