Re: [Vala] [Bug 677389] New: Can't use Gee in python



This is not just a problem focused on Gee/Python, is that I was using Gee
in GDA to create an extension to access Data base objects and I would like
to use the GObjects classes on Python to use GDA on the web. Then if I
can't use Gee directly on Python then I can't use my GDA's extensions with
Python too.

If Gee can't be used with GObject Introspection, no libraries can be
created to develop other software depending on Gee.

May be some one else in gtk-list or gtk-app-devel-list can help to find how
to use Vala's generics or construct generics classes on
GObject-Introspection, at the end Gee C definitions have constructors
defining the object type to use and some functions to create/free them.


2012/6/4 Maciej Marcin Piechotka <uzytkownik2 gmail com>

Hi,

Unfortunately due to GNOME DB problems the bug was lost. I will try to
reply here.

On Sun, 2012-06-03 at 13:00 +0000, libgee wrote:
I'm trying to use python to use Gee. Gee is primary a Vala library to
be used on software written in Vala, but it defines GIR files, then it
must be usable in any language supporting GObject Introspection.


Unfortunatly no. Libgee uses Vala generics which are not supported by
GIR. This will cause problem when marshalling/demarshalling python
objects.

When try to define a new object in Python, like Gee.ArrayList, I can't
because the following error:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/gi/module.py", line 243, in
__getattr__
    return getattr(self._introspection_module, name)
  File "/usr/lib/python2.7/dist-packages/gi/module.py", line 180, in
__getattr__
    wrapper = metaclass(name, bases, dict_)
  File "/usr/lib/python2.7/dist-packages/gi/types.py", line 232, in
__init__
    register_interface_info(cls.__info__.get_g_type())
TypeError: must be an interface

By reading the code I found that most Gee's Interfaces are not defined
GObject as pre-requisite, then I've added, then found that some other
doesn't put interfaces definition inside a namespace clause. That
doesn't make Vala compiler to rise errors and GIR are correct, but
they must be correctly defined. I'll attach a patch to get your review
and aprobation.


I believe that would be a Vala error while generating GIR as the
pre-requisite exists (indirectly). I don't think it is possible to write
Vala interface without this.

I am not sure what you mean by "GIR are correct, but they must be
correctly defined"

But at the end found that Gee.Traversable is not defined in GIR
repository. I'm trying to find it by:

Gee.Traversable

I spect to get a pointer to an object defined in gir.repository.Gee,
but the following error was rised:
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "/usr/lib/python2.7/dist-packages/gi/module.py", line 243, in
__getattr__
   return getattr(self._introspection_module, name)
 File "/usr/lib/python2.7/dist-packages/gi/module.py", line 105, in
__getattr__
   self.__name__, name))
AttributeError: 'gi.repository.Gee' object has no attribute
'Traversable'

I'm reading the Gee.Traversable and GIR definition in order to find
the problem.

Thanks for looking into this. I am not sure how much time you have - it
would be great if vala and gir played nicely but it would require work
on both sides.

Best regards,
Maciej




-- 
Trabajar, la mejor arma para tu superación
"de grano en grano, se hace la arena" (R) (en trámite, pero para los
cuates: LIBRE)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]