← Back to team overview

zeitgeist team mailing list archive

[Bug 691167] Re: The payload is sometimes mentioned as string and sometimes as array of bytes

 

Manish, is this (esp. the last few lines `"dbus.Array([],
signature=dbus.Signature('y'))"`) something you get somewhere with real
code (if so, please attach a minimal reproducer) or is it *just* loud
thinking?

payload is in fact an array of bytes, as defined in the dbus signature.
You should not care about the weirdness done in zeitgeist, it should
just do the right thing. It does the right thing because a String in
python is in first approximation just an array of bytes (I know this
statement is not 100% true for all python versions, but it is good
enough for our needs)

There are only two possible reasons where this assumtion would fail:
 * we want to support python 2.x and 3.x at the same time, which is a no-go
 * I'm missing something ;) - please prove me wrong with some code.

-- 
You received this bug notification because you are a member of Zeitgeist
Framework Team, which is subscribed to Zeitgeist Framework.
https://bugs.launchpad.net/bugs/691167

Title:
  The payload is sometimes mentioned as string and sometimes as array of bytes

Status in Zeitgeist Framework:
  New

Bug description:
  In the event serialization format, the third array is array of bytes or ay as dbus signature.

When an event enters an extension, it looks like
Event([dbus.Array([u'', u'1292500628312', u'', u'', u'application://foo.desktop'], signature=dbus.Signature('s')), [Subject([u'', u'', u'', u'', u'', u'', u''])], dbus.Array([], signature=dbus.Signature('y'))])

which implies that payload is array of bytes

Now look at _zeitgeist/engine/datamodel.py at line 58
where you get the line
>> popo.append(str(ev[2]))

Really so when you do str() on dbus.Array([], signature=dbus.Signature('y'))
you get "dbus.Array([], signature=dbus.Signature('y'))" instead of the contents of bytes converted to string


Now when you call Event.get_plain on 

Event([dbus.Array([u'', u'1292500628312', u'', u'', u'application://foo.desktop'], signature=dbus.Signature('s')), [Subject([u'', u'', u'', u'', u'', u'', u''])], dbus.Array([], signature=dbus.Signature('y'))])

you get

[[u'', u'1292500628312', u'', u'', u'application://foo.desktop'], [[u'', u'', u'', u'', u'', u'', u'']], "dbus.Array([], signature=dbus.Signature('y'))"]

Now what you expect





Follow ups

References