dbus.service: Make it possible to unexport objects (fd.o#10457)
[dbus-python-phuang.git] / NEWS
blob56ffb61fe0dfc7e4e1ad2abdaf3bda287fa4ee4c
1 D-Bus Python Bindings 0.81.1 (unreleased)
2 =========================================
4 Features:
6 * When an Error message on the bus is represented as a DBusException, the
7   error name is copied into the exception and can be retrieved by
8   get_dbus_name(). Exception handlers should use this instead of looking at
9   the stringified form of the exception, unless backwards compatibility
10   is needed.
11 * DBusException objects now get all arguments from the Error message, not
12   just the first (although there will usually only be one). Use the 'args'
13   attribute if you need to retrieve them.
14 * The Connection, BusConnection and Bus classes have a method
15   list_exported_child_objects(path: str) -> list of str, which wraps
16   dbus_connection_list_registered()
18 Bug fixes:
20 * Don't deadlock when removing a signal match that tracks name-owner changes.
21   (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=426412)
22 * Include child nodes in introspection using list_exported_child_objects()
24 D-Bus Python Bindings 0.81.0 (9 May 2007)
25 =========================================
27 The 'series of tubes' release
28 -----------------------------
30 This is a feature release with support for non-bus-daemon connections
31 and improved GObject integration.
33 Features:
35 * Bus has a superclass dbus.bus.BusConnection (a connection to a bus daemon,
36   but without the shared-connection semantics or any deprecated API)
37   for the benefit of those wanting to subclass bus daemon connections
39 * BusConnection has a superclass dbus.connection.Connection (a
40   connection without a bus daemon) for use in peer-to-peer situations,
41   or distributed pseudo-bus situations without a bus daemon such as
42   Telepathy's Tubes API
44 * dbus.gobject_service.ExportedGObject is like dbus.service.Object, but
45   is also a subclass of GObject (with the necessary metaclass magic to
46   make this work). Until someone has verified that the GObject side of
47   things works as expected too, I consider this API to be potentially
48   subject to change!
50 * Connection and BusConnection have gained a number of useful methods,
51   including watch_name_owner (track name owner changes asynchronously,
52   avoiding race conditions), call_blocking and call_async (blocking and
53   asynchronous method calls without going via a proxy - note that these
54   are semi-low-level interfaces which don't do introspection), and
55   list_names, list_activatable_names and get_name_owner which are
56   simple wrappers for the corresponding org.freedesktop.DBus methods
58 * dbus.Interface (now also available at dbus.proxies.Interface)
59   and dbus.proxies.ProxyObject now have some reasonably obvious properties.
61 Deprecations:
63 * All keyword arguments called named_service are deprecated in favour of an
64   argument called bus_name (to be compatible with both older and newer
65   dbus-python, you should pass these positional arguments).
67 * The bus keyword argument to dbus.proxies.ProxyObject is deprecated in
68   favour of an argument called conn, because proxies will work on non-bus
69   connections now (again, for maximum compatibility you should use a
70   positional argument for this).
72 * No warning is raised for this, but I consider calling any remote method
73   on a ProxyObject or Interface whose name is either alllowercase or
74   lower_case_with_underscores to be deprecated, and reserve the right
75   to add properties or methods of this form in future releases - use
76   ProxyObject.get_dbus_method if you must call a remote method named in
77   this way. Methods named following TheUsualDBusConvention or
78   theJavaConvention are safe.
80 Bugfixes:
82 * Exceptions in signal handlers print a stack trace to stderr (this can
83   be redirected elsewhere with Python's logging framework). Partially
84   addresses fd.o #9980.
86 * The reserved local interface and object path are properly checked for.
88 * When you return a tuple that is not a Struct from a method with no
89   out_signature, it's interpreted as multiple return values, not a
90   single Struct (closes fd.o #10174).
92 * If send_with_reply() returns TRUE but with pending call NULL, dbus-python
93   no longer crashes. This can happen when unexpectedly disconnected.
95 * Arguments are not examined for functions declared METH_NOARGS (this is
96   unnecessary and can cause a crash).
98 Other notable changes:
100 * dbus-python uses the standard Python logging framework throughout.
101   The first time a WARNING or ERROR is generated, it will configure the
102   logging framework to output to stderr, unless you have already
103   configured logging in your application.
105 * The tutorial now advocates the use of add_signal_receiver if all you
106   want to do is listen for signals: this avoids undesired activation,
107   e.g. of Listen or Rhythmbox (!). Addresses fd.o #10743, fd.o #10568.
109 D-Bus Python Bindings 0.80.2 (13 February 2007)
110 ===============================================
111 - Fix numerous memory and reference leaks
112 - Only use -Werror if the user specifically asks for it
113 - Audit tp_dealloc callbacks to make sure they correctly preserve the
114   exception state
115 - Relicense files solely owned by Collabora Ltd. more permissively (LGPL/AFL
116   rather than GPL/AFL) - this includes the tutorial and all the C code
118 D-Bus Python Bindings 0.80.1 (24 January 2007)
119 ==============================================
120 - The "oops" release
121 - Install dbus/_version.py, so dbus.__version__ exists again
123 D-Bus Python Bindings 0.80.0 (24 January 2007)
124 ==============================================
125 - The "everything changes" release
126 - Rewrite dbus_bindings (Pyrex) as _dbus_bindings (C) - API changes!
127 - Define what's public API
128 - Move low-level but still public API to dbus.lowlevel
129 - Remove Variant class, add variant_level property on all D-Bus types
130 - Make signal matching keep working as expected when name ownership changes
131 - Use unambiguous D-Bus types when transferring from D-Bus to Python
132 - Follow well-defined rules when transferring from Python to D-Bus
133 - Add utf8_strings and byte_arrays options in various places, so a user
134   can tweak the calling conventions to be more efficient
135 - Raise RuntimeError if user tries to use a connection with no main loop
136   to do something that won't work without one
137 - Make asynchronous method calls actually asynchronous when made before
138   introspection results come back
139 - Redo main loop machinery so we can add pure-Python main loops later without
140   API breakage
141 - Allow construction of a dbus.service.Object if you don't have a BusName
142   (or even a Bus)
143 - Port introspection XML parser from libxml2 (external package) to expat
144   (included with Python)
145 - Port build system from distutils to autoconf/automake/libtool
146 - Install a header file for third-party main loop integration
147 - Make compatible with Python 2.5, including on 64-bit platforms
148 - Add docstrings throughout
149 - Add more tests and examples
150 - Add interoperability tests (which interoperate with Java)
151 - Add copyright notices!
153 D-Bus Python Bindings 0.71 (24 July 2006)
154 ==============================================================
155 - Binary modules are now installed in the correct directory
156 - Distutils exports the dbus and dbus-glib cflags
158 D-Bus Python Bindings 0.70 (17 July 2006)
159 ==============================================================
160 - First release of bindings split
161 - Move to a distutils build enviornment
162 - It is possible to now specify sender_keyword="foo", path_keyword="bar" when 
163   adding a signal listener