1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
===============
Developer notes
===============
:Author: Simon McVittie, `Collabora`_
:Date: 2007-01-24
.. _Collabora: http://www.collabora.co.uk/
Upstream development
====================
dbus-python is developed at freedesktop.org using ``git``.
See UsingGit_ for some details.
.. _UsingGit: http://www.freedesktop.org/wiki/UsingGit
Anonymous access
``git clone git://anongit.freedesktop.org/git/dbus/dbus-python``
Committer access (requires freedesktop.org shell account)
``git clone git+ssh://git.freedesktop.org/git/dbus/dbus-python``
dbus-gmain is maintained via `git subtree`. To update, assuming you have
a checkout of the dbus-gmain branch of the dbus-glib repository in
../dbus-gmain::
git subtree pull -P dbus-gmain ../dbus-gmain HEAD
Modules
=======
``dbus``, ``dbus.service`` and ``dbus.mainloop`` are core public API.
``dbus.lowlevel`` provides a lower-level public API for advanced use.
``dbus.mainloop.glib`` is the public API for the GLib main loop integration.
``dbus.types`` and ``dbus.exceptions`` are mainly for backwards
compatibility - use ``dbus`` instead in new code. Ditto ``dbus.glib``.
``dbus._dbus``, ``dbus.introspect_parser``, ``dbus.proxies`` are internal
implementation details.
``_dbus_bindings`` is the real implementation of the Python/libdbus
integration, while ``_dbus_bindings`` 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.
Threading/locking model
=======================
All Python functions must be called with the GIL (obviously).
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.
Other notes
===========
Code needs to be Python 2.5 compatible - use Py_ssize_t where appropriate.
See http://www.python.org/dev/peps/pep-0353/ for details.
Indentation and other holy wars
===============================
Python code is meant to follow PEP8, and has 4-space indentation, no hard tabs.
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.
Docstrings etc. are reStructuredText.
|