Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
  • This project
    • Loading...
  • Sign in / Register
gajim
gajim
  • Overview
    • Overview
    • Details
    • Activity
    • Cycle Analytics
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Charts
  • Issues 506
    • Issues 506
    • List
    • Board
    • Labels
    • Milestones
  • Merge Requests 3
    • Merge Requests 3
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
    • Charts
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • gajim
  • gajimgajim
  • Issues
  • #2784

Closed
Open
Opened Dec 13, 2006 by anonymous@anonymous 
  • Report abuse
  • New issue
Report abuse New issue

D-Bus code is incompatible with forthcoming dbus-python 0.80, and uses non-public API

I'm currently working on a rewrite of the dbus-python bindings, replacing the Pyrex module dbus_bindings with C code and changing the API where necessary to make the bindings more Pythonic. In practice, most Python D-Bus apps will continue to work with my rewrite, which is going to be released as version 0.80 (I released 0.80rc2 today).

However, the D-Bus code in Gajim uses some interfaces which were never meant to be part of the public API; these will stop working with dbus-python 0.80. The attached patches (untested) should at least get you started on porting gajim to dbus-python 0.80, in a way that will still work on dbus-python 0.60.

Specific issues:

  • dbus_bindings is not public API, and will go away. You can address most of this by just replacing "dbus.dbus_bindings.DBusException" with "dbus.DBusException" (this works in something like 0.40 and up).

  • In the remote control, you seem to be emitting signals using a much lower-level interface than is intended. The normal way to do this is by decorating a function of the same name as the signal with dbus.service.signal, then calling it (see my patch).

  • There is no such thing as None in the D-Bus world. You seem to represent it as the integer 0, which seems likely to cause confusion in future!

  • In general, it's unclear what you intend the signature of signals and methods to be. Part of designing a D-Bus interface is specifying the types of the arguments and return values for your methods and signals - see the Galago notifications spec (http://www.galago-project.org/specs/notification/0.9/x408.html) or the Telepathy spec (http://telepathy.freedesktop.org/spec.html) for some good examples.

  • The API for Variants has changed - there's no longer a Variant class, to make method arguments and return values consistent and unambiguous. Marking dicts and arrays with a signature that includes 'v' should achieve what you want to do.

Assignee
Assign to
0.11.1
Milestone
0.11.1
Assign milestone
Time tracking
None
Due date
No due date
2
Labels
defect gajim-remote
Assign labels
  • View labels
Reference: gajim/gajim#2784