home *** CD-ROM | disk | FTP | other *** search
Wrap
<?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="generator" content="Docutils 0.4.1: http://docutils.sourceforge.net/" /> <title>D-Bus Python bindings - notes for hackers</title> <meta name="author" content="Simon McVittie, Collabora" /> <meta name="date" content="2007-01-24" /> <style type="text/css"> /* :Author: David Goodger :Contact: goodger@users.sourceforge.net :Date: $Date: 2005-12-18 01:56:14 +0100 (Sun, 18 Dec 2005) $ :Revision: $Revision: 4224 $ :Copyright: This stylesheet has been placed in the public domain. Default cascading style sheet for the HTML output of Docutils. See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to customize this style sheet. */ /* used to remove borders from tables and images */ .borderless, table.borderless td, table.borderless th { border: 0 } table.borderless td, table.borderless th { /* Override padding for "table.docutils td" with "! important". The right padding separates the table cells. */ padding: 0 0.5em 0 0 ! important } .first { /* Override more specific margin styles with "! important". */ margin-top: 0 ! important } .last, .with-subtitle { margin-bottom: 0 ! important } .hidden { display: none } a.toc-backref { text-decoration: none ; color: black } blockquote.epigraph { margin: 2em 5em ; } dl.docutils dd { margin-bottom: 0.5em } /* Uncomment (and remove this text!) to get bold-faced definition list terms dl.docutils dt { font-weight: bold } */ div.abstract { margin: 2em 5em } div.abstract p.topic-title { font-weight: bold ; text-align: center } div.admonition, div.attention, div.caution, div.danger, div.error, div.hint, div.important, div.note, div.tip, div.warning { margin: 2em ; border: medium outset ; padding: 1em } div.admonition p.admonition-title, div.hint p.admonition-title, div.important p.admonition-title, div.note p.admonition-title, div.tip p.admonition-title { font-weight: bold ; font-family: sans-serif } div.attention p.admonition-title, div.caution p.admonition-title, div.danger p.admonition-title, div.error p.admonition-title, div.warning p.admonition-title { color: red ; font-weight: bold ; font-family: sans-serif } /* Uncomment (and remove this text!) to get reduced vertical space in compound paragraphs. div.compound .compound-first, div.compound .compound-middle { margin-bottom: 0.5em } div.compound .compound-last, div.compound .compound-middle { margin-top: 0.5em } */ div.dedication { margin: 2em 5em ; text-align: center ; font-style: italic } div.dedication p.topic-title { font-weight: bold ; font-style: normal } div.figure { margin-left: 2em ; margin-right: 2em } div.footer, div.header { clear: both; font-size: smaller } div.line-block { display: block ; margin-top: 1em ; margin-bottom: 1em } div.line-block div.line-block { margin-top: 0 ; margin-bottom: 0 ; margin-left: 1.5em } div.sidebar { margin-left: 1em ; border: medium outset ; padding: 1em ; background-color: #ffffee ; width: 40% ; float: right ; clear: right } div.sidebar p.rubric { font-family: sans-serif ; font-size: medium } div.system-messages { margin: 5em } div.system-messages h1 { color: red } div.system-message { border: medium outset ; padding: 1em } div.system-message p.system-message-title { color: red ; font-weight: bold } div.topic { margin: 2em } h1.section-subtitle, h2.section-subtitle, h3.section-subtitle, h4.section-subtitle, h5.section-subtitle, h6.section-subtitle { margin-top: 0.4em } h1.title { text-align: center } h2.subtitle { text-align: center } hr.docutils { width: 75% } img.align-left { clear: left } img.align-right { clear: right } ol.simple, ul.simple { margin-bottom: 1em } ol.arabic { list-style: decimal } ol.loweralpha { list-style: lower-alpha } ol.upperalpha { list-style: upper-alpha } ol.lowerroman { list-style: lower-roman } ol.upperroman { list-style: upper-roman } p.attribution { text-align: right ; margin-left: 50% } p.caption { font-style: italic } p.credits { font-style: italic ; font-size: smaller } p.label { white-space: nowrap } p.rubric { font-weight: bold ; font-size: larger ; color: maroon ; text-align: center } p.sidebar-title { font-family: sans-serif ; font-weight: bold ; font-size: larger } p.sidebar-subtitle { font-family: sans-serif ; font-weight: bold } p.topic-title { font-weight: bold } pre.address { margin-bottom: 0 ; margin-top: 0 ; font-family: serif ; font-size: 100% } pre.literal-block, pre.doctest-block { margin-left: 2em ; margin-right: 2em ; background-color: #eeeeee } span.classifier { font-family: sans-serif ; font-style: oblique } span.classifier-delimiter { font-family: sans-serif ; font-weight: bold } span.interpreted { font-family: sans-serif } span.option { white-space: nowrap } span.pre { white-space: pre } span.problematic { color: red } span.section-subtitle { /* font-size relative to parent (h1..h6 element) */ font-size: 80% } table.citation { border-left: solid 1px gray; margin-left: 1px } table.docinfo { margin: 2em 4em } table.docutils { margin-top: 0.5em ; margin-bottom: 0.5em } table.footnote { border-left: solid 1px black; margin-left: 1px } table.docutils td, table.docutils th, table.docinfo td, table.docinfo th { padding-left: 0.5em ; padding-right: 0.5em ; vertical-align: top } table.docutils th.field-name, table.docinfo th.docinfo-name { font-weight: bold ; text-align: left ; white-space: nowrap ; padding-left: 0 } h1 tt.docutils, h2 tt.docutils, h3 tt.docutils, h4 tt.docutils, h5 tt.docutils, h6 tt.docutils { font-size: 100% } tt.docutils { background-color: #eeeeee } ul.auto-toc { list-style-type: none } </style> </head> <body> <div class="document" id="d-bus-python-bindings-notes-for-hackers"> <h1 class="title">D-Bus Python bindings - notes for hackers</h1> <table class="docinfo" frame="void" rules="none"> <col class="docinfo-name" /> <col class="docinfo-content" /> <tbody valign="top"> <tr><th class="docinfo-name">Author:</th> <td>Simon McVittie, <a class="last reference" href="http://www.collabora.co.uk/">Collabora</a></td></tr> <tr><th class="docinfo-name">Date:</th> <td>2007-01-24</td></tr> </tbody> </table> <div class="section"> <h1><a id="upstream-development" name="upstream-development">Upstream development</a></h1> <p>dbus-python is developed at freedesktop.org using <tt class="docutils literal"><span class="pre">git</span></tt>. See <a class="reference" href="http://www.freedesktop.org/wiki/UsingGit">UsingGit</a> for some details.</p> <dl class="docutils"> <dt>Anonymous access</dt> <dd><tt class="docutils literal"><span class="pre">git</span> <span class="pre">clone</span> <span class="pre">git://anongit.freedesktop.org/git/dbus/dbus-python</span></tt></dd> <dt>Committer access (requires freedesktop.org shell account)</dt> <dd><tt class="docutils literal"><span class="pre">git</span> <span class="pre">clone</span> <span class="pre">git+ssh://git.freedesktop.org/git/dbus/dbus-python</span></tt></dd> </dl> </div> <div class="section"> <h1><a id="modules" name="modules">Modules</a></h1> <p><tt class="docutils literal"><span class="pre">dbus</span></tt>, <tt class="docutils literal"><span class="pre">dbus.service</span></tt> and <tt class="docutils literal"><span class="pre">dbus.mainloop</span></tt> are core public API.</p> <p><tt class="docutils literal"><span class="pre">dbus.lowlevel</span></tt> provides a lower-level public API for advanced use.</p> <p><tt class="docutils literal"><span class="pre">dbus.mainloop.glib</span></tt> is the public API for the GLib main loop integration.</p> <p><tt class="docutils literal"><span class="pre">dbus.types</span></tt> and <tt class="docutils literal"><span class="pre">dbus.exceptions</span></tt> are mainly for backwards compatibility - use <tt class="docutils literal"><span class="pre">dbus</span></tt> instead in new code. Ditto <tt class="docutils literal"><span class="pre">dbus.glib</span></tt>.</p> <p><tt class="docutils literal"><span class="pre">dbus._dbus</span></tt>, <tt class="docutils literal"><span class="pre">dbus.introspect_parser</span></tt>, <tt class="docutils literal"><span class="pre">dbus.proxies</span></tt> are internal implementation details.</p> <p><tt class="docutils literal"><span class="pre">_dbus_bindings</span></tt> is the real implementation of the Python/libdbus integration, while <tt class="docutils literal"><span class="pre">_dbus_bindings</span></tt> is the real implementation of Python/libdbus-glib integration. Neither is public API, although some of the classes and functions are exposed as public API in other modules.</p> </div> <div class="section"> <h1><a id="threading-locking-model" name="threading-locking-model">Threading/locking model</a></h1> <p>All Python functions must be called with the GIL (obviously).</p> <p>Before calling into any D-Bus function that can block, release the GIL; as well as the usual "be nice to other threads", D-Bus does its own locking and we don't want to deadlock with it. Most Connection methods can block.</p> </div> <div class="section"> <h1><a id="other-notes" name="other-notes">Other notes</a></h1> <p>Code needs to be Python 2.5 compatible - use Py_ssize_t where appropriate. See <a class="reference" href="http://www.python.org/dev/peps/pep-0353/">http://www.python.org/dev/peps/pep-0353/</a> for details.</p> </div> <div class="section"> <h1><a id="indentation-and-other-holy-wars" name="indentation-and-other-holy-wars">Indentation and other holy wars</a></h1> <p>Python code is meant to follow PEP8, and has 4-space indentation, no hard tabs.</p> <p>C code is meant to follow what PEP7 refers to as "Python 3000" style - 4-space indentation, no hard tabs, otherwise consistent with historical Python 2.x code.</p> <p>Docstrings etc. are reStructuredText.</p> </div> </div> <div class="footer"> <hr class="footer" /> Generated on: 2007-02-19 23:39 UTC. Generated by <a class="reference" href="http://docutils.sourceforge.net/">Docutils</a> from <a class="reference" href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source. </div> </body> </html>