altdesktop / python-dbus-next

🚌 The next great DBus library for Python with asyncio support
https://python-dbus-next.readthedocs.io/en/latest/
MIT License
187 stars 58 forks source link

Make client info available #144

Open tom-cook-veea opened 1 year ago

tom-cook-veea commented 1 year ago

The main change here is to make the dbus_next.message.Message object available through the context-local current_message proxy. In client code, the typical usage is:

from dbus_next.message_bus import current_message

@method()
def echo_sender() -> 's':
    return current_message.sender

A unit test demonstrating this usage is also included.

This also changes the @method() decorator so that the method can still be called in a non-dbus context and correctly returns its value.

This also fixes a defect in the unit tests; on my Ubuntu 22.04 system, the default session bus socket is not in the abstract socket namespace. This caused test_tcp_connection_with_forwarding to fail as it assumed that the session bus used a socket in the abstract namespace. I have modified it to make it work with either an abstract namespace socket or a filesystem socket.