Discussion:
Inconsistences using GUdev.Client
Javier Hernández Antúnez
2012-04-12 12:18:41 UTC
Permalink
Hi!

I've been porting a python application which uses gudev to use the new
gobject-introspection based bindings, but I encountered an issue. So,
I pulled udev from master and the issue was still there, so I went to
talk with some pygobject developers, and here's a retail of the
conversation.

16:12 < jhernandez> I'm using GUdev with pygobject
16:12 < jhernandez> and, I have some doubts regarding the way I'm using=
it
16:13 < jhernandez> with the old python-gudev, I was used to do like
this: client =3D gudev.Client(subsystems)
16:14 < jhernandez> using the gobject introspected bindings, I'm not
able to get my client object like I was used
16:14 < jhernandez> instead, I need to use the gudev.Client.new method
16:16 < jhernandez> should I report this as a bug? or it is my fault?
16:59 < tomeu> all GObjects should be instantiable with g_object_new
16:59 < tomeu> the problem is people doing things in _new_* that
should be done instead in _init or _construct
16:59 < tomeu> jhernandez: it's a bug that should be reported
17:00 < tomeu> (in GUDev)
17:00 < jhernandez> tomeu: ACK

JFYI, the full conversation log is here [1]

I think the final decision on this is up to udev/gudev developers, and
I'll try (with some help) to provide a patch if it is really needed.

My devel environment consists in:

- openSUSE 12.1 + Official updates
- udev pulled from master (182)


Best regards!


[1]: http://pastebin.com/js7rKh3J


--=20
Javier Hern=E1ndez Ant=FAnez
<***@emergya.com>
--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug=
" in
the body of a message to ***@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Javier Hernández Antúnez
2012-04-12 12:59:40 UTC
Permalink
Hi!

I've been porting a python application which uses gudev to use the new
gobject-introspection based bindings, but I encountered an issue. So,
I pulled udev from master and the issue was still there, so I went to
talk with some pygobject developers, and here's a retail of the
conversation.

16:12 < jhernandez> I'm using GUdev with pygobject
16:12 < jhernandez> and, I have some doubts regarding the way I'm using=
it
16:13 < jhernandez> with the old python-gudev, I was used to do like
this: client =3D gudev.Client(subsystems)
16:14 < jhernandez> using the gobject introspected bindings, I'm not
able to get my client object like I was used
16:14 < jhernandez> instead, I need to use the gudev.Client.new method
16:16 < jhernandez> should I report this as a bug? or it is my fault?
16:59 < tomeu> all GObjects should be instantiable with g_object_new
16:59 < tomeu> the problem is people doing things in _new_* that
should be done instead in _init or _construct
16:59 < tomeu> jhernandez: it's a bug that should be reported
17:00 < tomeu> (in GUDev)
17:00 < jhernandez> tomeu: ACK

JFYI, the full conversation log is here [1]

I think the final decision on this is up to udev/gudev developers, and
I'll try (with some help) to provide a patch if it is really needed.

My devel environment consists in:

- openSUSE 12.1 + Official updates
- udev pulled from master (182)


Best regards!


[1]: http://pastebin.com/js7rKh3J

--=20
Javier Hern=E1ndez Ant=FAnez
<***@emergya.com>
--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug=
" in
the body of a message to ***@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
David Zeuthen
2012-04-12 15:32:19 UTC
Permalink
Hi,

On Thu, Apr 12, 2012 at 8:18 AM, Javier Hern=E1ndez Ant=FAnez
Post by Javier Hernández Antúnez
16:59 < tomeu> the problem is people doing things in _new_* that
should be done instead in _init or _construct
16:59 < tomeu> jhernandez: it's a bug that should be reported
17:00 < tomeu> (in GUDev)
17:00 < jhernandez> tomeu: ACK
I think you are confused, see

http://cgit.freedesktop.org/systemd/systemd/tree/src/udev/gudev/gudevcl=
ient.c#n318

basically, what we do is this

GUdevClient *
g_udev_client_new (const gchar * const *subsystems)
{
return G_UDEV_CLIENT (g_object_new (G_UDEV_TYPE_CLIENT,
"subsystems", subsystems, NULL));
}

I think the python bindings are just buggy - probably they don't
support GStrv GObject properties very well.

David
--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug=
" in
the body of a message to ***@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Martin Pitt
2012-05-05 21:42:02 UTC
Permalink
Post by David Zeuthen
I think the python bindings are just buggy - probably they don't
support GStrv GObject properties very well.
Is that still the case? I just tried this with current PyGObject
3.2.0, and it seems to work:

$ python
Post by David Zeuthen
from gi.repository import GUdev
c = GUdev.Client.new(subsystems=['usb'])
c.props.subsystems
['usb']
I also tested with "GUdev.Client(subsystems=['usb'])", i. e. using the
GObject constructor instead of gudev_client_new(), and it works just
as well.

I am just committing test cases for handling GStrv properties to g-i
and pygobject, and indeed a few cases don't work yet (such as defining
GStrv properties in Python, and _setting_ GStrv properties). I'm
working my way through fixing those.

Thanks,

Martin
--
Martin Pitt | http://www.piware.de
Ubuntu Developer (www.ubuntu.com) | Debian Developer (www.debian.org)
--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in
the body of a message to ***@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Martin Pitt
2012-05-06 12:55:53 UTC
Permalink
Hello again,
Post by Martin Pitt
I am just committing test cases for handling GStrv properties to g-i
and pygobject, and indeed a few cases don't work yet (such as defining
GStrv properties in Python, and _setting_ GStrv properties). I'm
working my way through fixing those.
For the record, all done now:

http://git.gnome.org/browse/pygobject/commit/?id=f2494526e1c
http://git.gnome.org/browse/pygobject/commit/?id=8321af2c7df
http://git.gnome.org/browse/pygobject/commit/?id=9f50fd214e4

However, setting GStrv properties in the constructor has already
worked before.

Martin
--
Martin Pitt | http://www.piware.de
Ubuntu Developer (www.ubuntu.com) | Debian Developer (www.debian.org)
--
To unsubscribe from this list: send the line "unsubscribe linux-hotplug" in
the body of a message to ***@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Loading...