Control: reassign -1 python3-gi 3.50.0-7
Control: retitle -1 pygobject: GioUnix.DesktopAppInfo requires extraneous
parameter to get_filename() when using GLib 2.84.x
Control: affects -1 + gnome-tweaks
Here is a minimal reproducer for the bug. You need python3-gi and at
least one .desktop file: "apt install python3-gi xterm" is sufficient.
$ python3
>>> from gi.repository import Gio
>>> Gio.app_info_get_all()[0].get_filename()
This works fine with GLib 2.86 from experimental: it tells me the
filename of one of my .desktop files. However, the same fails with GLib
2.84 from testing/unstable:
$ python3
>>> from gi.repository import Gio
>>> Gio.app_info_get_all()[0].get_filename()
Traceback (most recent call last):
File "<python-input-2>", line 1, in <module>
Gio.app_info_get_all()[0].get_filename()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
TypeError: GioUnix.DesktopAppInfo.get_filename() takes exactly 1 argument (0
given)
I think this is a regression in pygobject caused by the patches that
were added to make it forward-compatible with GLib 2.86. Unfortunately
it seems that at least one of those changes is not fully
backward-compatible with GLib 2.84.
One way to resolve this would be if the release team give the go-ahead
to do the GLib 2.86 transition; the other way would be to revert or
improve the pygobject changes (and if they are reverted for now, reapply
them as part of the GLib 2.86 transition).
I am confident that the proposed patch to gnome-tweaks is *not* a valid
solution, because it would introduce the opposite regression when used
with both the new pygobject and the new GLib:
$ python3
>>> from gi.repository import Gio
>>> app = Gio.app_info_get_all()[0]
>>> app.get_filename()
'/usr/share/applications/io.github.fabiangreffrath.Hexen.desktop'
>>> app.get_filename(app)
Traceback (most recent call last):
File "<python-input-3>", line 1, in <module>
app.get_filename(app)
~~~~~~~~~~~~~~~~^^^^^
TypeError: GioUnix.DesktopAppInfo.get_filename() takes exactly 1 argument (2
given)
Instead, I think this needs to be fixed in pygobject.
smcv