[Telepathy] [Ulc-devs] Accessing Folks from python

Frederik Elwert frederik.elwert at web.de
Mon Dec 5 10:15:34 PST 2011


Hi Xavier,

thanks for the reply.

> Le vendredi 02 décembre 2011 à 10:21 +0100, Frederik Elwert a écrit :
> > Now since we would prefer using python for our application, I was
> > wondering if it is possible to access Folks from python. I could manage
> > to import it from gi.repository, but it then fails during
> > IndividualAggregator.prepare():
> > 
> >         from gi.repository import Folks
> >         agg = Folks.IndividualAggregator()
> >         agg.prepare()
> >         Traceback (most recent call last):
> >           File "<stdin>", line 1, in <module>
> >           File "/usr/lib/python2.7/dist-packages/gi/types.py", line 43,
> >         in function
> >             return info.invoke(*args, **kwargs)
> >         TypeError: prepare() takes exactly 3 arguments (1 given)
> > 
> > I have seen that the generated c code has this function signature:
> > 
> >         void folks_individual_aggregator_prepare
> >         (FolksIndividualAggregator* self, GAsyncReadyCallback
> >         _callback_, gpointer _user_data_);
> 
> I don't think you can omit arguments with g-i/pygobject. The only
> annotation that we can set is (allow-none) but even then you have to
> pass 'None' to it.
> 
> agg.prepare(None, None) should work. otoh, you probably want to set a
> callback to know when you can start using that aggregator...

It somehow seems to do something, but then segfaults:

        agg.prepare(None, None)
        (process:5627): folks-DEBUG: Using built-in backends key file '/home/frederik/.local/share/folks/backends.ini' (override with environment variable FOLKS_BACKEND_STORE_KEY_FILE_PATH)
        Speicherzugriffsfehler [segmentation fault in German]

I also get a segfault when passing a python function as callback.

It might be because I’m rather new to GI, but I am a bit confused by the
API difference between C (prepare taking parameters) and Vala (prepare
as instance method taking no parameters). First, I looked at the Vala
API and assumed that Python would have a similar one.

Regards,
Frederik



More information about the telepathy mailing list