:right-sidebar: True DBusProxy =================================================================== .. currentmodule:: gi.repository.Gio .. versionadded:: 2.26 .. class:: DBusProxy(**properties: ~typing.Any) :no-contents-entry: Superclasses: :class:`~gi.repository.GObject.Object` Implemented Interfaces: :class:`~gi.repository.Gio.AsyncInitable`, :class:`~gi.repository.Gio.DBusInterface`, :class:`~gi.repository.Gio.Initable` Provide comfortable and pythonic method calls. This marshalls the method arguments into a GVariant, invokes the call_sync() method on the DBusProxy object, and unmarshalls the result GVariant back into a Python tuple. The first argument always needs to be the D-Bus signature tuple of the method call. Example: proxy = Gio.DBusProxy.new_sync(...) result = proxy.MyMethod('(is)', 42, 'hello') The exception are methods which take no arguments, like proxy.MyMethod('()'). For these you can omit the signature and just write proxy.MyMethod(). Optional keyword arguments: - timeout: timeout for the call in milliseconds (default to D-Bus timeout) - flags: Combination of Gio.DBusCallFlags.* - result_handler: Do an asynchronous method call and invoke result_handler(proxy_object, result, user_data) when it finishes. - error_handler: If the asynchronous call raises an exception, error_handler(proxy_object, exception, user_data) is called when it finishes. If error_handler is not given, result_handler is called with the exception object as result instead. - user_data: Optional user data to pass to result_handler for asynchronous calls. Example for asynchronous calls: def mymethod_done(proxy, result, user_data): if isinstance(result, Exception): # handle error else: # do something with result proxy.MyMethod('(is)', 42, 'hello', result_handler=mymethod_done, user_data='data') Constructors ------------ .. rst-class:: interim-class .. class:: DBusProxy :no-index: .. classmethod:: new_finish(res: ~gi.repository.Gio.AsyncResult) -> ~gi.repository.Gio.DBusProxy Finishes creating a :obj:`~gi.repository.Gio.DBusProxy`. .. versionadded:: 2.26 :param res: A :obj:`~gi.repository.Gio.AsyncResult` obtained from the :obj:`~gi.repository.Gio.AsyncReadyCallback` function passed to :func:`~gi.repository.Gio.DBusProxy.new`. .. classmethod:: new_for_bus_finish(res: ~gi.repository.Gio.AsyncResult) -> ~gi.repository.Gio.DBusProxy Finishes creating a :obj:`~gi.repository.Gio.DBusProxy`. .. versionadded:: 2.26 :param res: A :obj:`~gi.repository.Gio.AsyncResult` obtained from the :obj:`~gi.repository.Gio.AsyncReadyCallback` function passed to :func:`~gi.repository.Gio.DBusProxy.new_for_bus`. .. classmethod:: new_for_bus_sync(bus_type: ~gi.repository.Gio.BusType, flags: ~gi.repository.Gio.DBusProxyFlags, info: ~gi.repository.Gio.DBusInterfaceInfo | None, name: str, object_path: str, interface_name: str, cancellable: ~gi.repository.Gio.Cancellable | None = None) -> ~gi.repository.Gio.DBusProxy Like :func:`~gi.repository.Gio.DBusProxy.new_sync` but takes a :obj:`~gi.repository.Gio.BusType` instead of a :obj:`~gi.repository.Gio.DBusConnection`. :obj:`~gi.repository.Gio.DBusProxy` is used in this [example][gdbus-wellknown-proxy]. .. versionadded:: 2.26 :param bus_type: A :obj:`~gi.repository.Gio.BusType`. :param flags: Flags used when constructing the proxy. :param info: A :obj:`~gi.repository.Gio.DBusInterfaceInfo` specifying the minimal interface that ``proxy`` conforms to or :const:`None`. :param name: A bus name (well-known or unique). :param object_path: An object path. :param interface_name: A D-Bus interface name. :param cancellable: A :obj:`~gi.repository.Gio.Cancellable` or :const:`None`. .. classmethod:: new_sync(connection: ~gi.repository.Gio.DBusConnection, flags: ~gi.repository.Gio.DBusProxyFlags, info: ~gi.repository.Gio.DBusInterfaceInfo | None, name: str | None, object_path: str, interface_name: str, cancellable: ~gi.repository.Gio.Cancellable | None = None) -> ~gi.repository.Gio.DBusProxy Creates a proxy for accessing ``interface_name`` on the remote object at ``object_path`` owned by ``name`` at ``connection`` and synchronously loads D-Bus properties unless the :const:`~gi.repository.Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES` flag is used. If the :const:`~gi.repository.Gio.DBusProxyFlags.DO_NOT_CONNECT_SIGNALS` flag is not set, also sets up match rules for signals. Connect to the :obj:`~gi.repository.Gio.DBusProxy`::g-signal signal to handle signals from the remote object. If both :const:`~gi.repository.Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES` and :const:`~gi.repository.Gio.DBusProxyFlags.DO_NOT_CONNECT_SIGNALS` are set, this constructor is guaranteed to return immediately without blocking. If ``name`` is a well-known name and the :const:`~gi.repository.Gio.DBusProxyFlags.DO_NOT_AUTO_START` and :const:`~gi.repository.Gio.DBusProxyFlags.DO_NOT_AUTO_START_AT_CONSTRUCTION` flags aren't set and no name owner currently exists, the message bus will be requested to launch a name owner for the name. This is a synchronous failable constructor. See :func:`~gi.repository.Gio.DBusProxy.new` and :func:`~gi.repository.Gio.DBusProxy.new_finish` for the asynchronous version. :obj:`~gi.repository.Gio.DBusProxy` is used in this [example][gdbus-wellknown-proxy]. .. versionadded:: 2.26 :param connection: A :obj:`~gi.repository.Gio.DBusConnection`. :param flags: Flags used when constructing the proxy. :param info: A :obj:`~gi.repository.Gio.DBusInterfaceInfo` specifying the minimal interface that ``proxy`` conforms to or :const:`None`. :param name: A bus name (well-known or unique) or :const:`None` if ``connection`` is not a message bus connection. :param object_path: An object path. :param interface_name: A D-Bus interface name. :param cancellable: A :obj:`~gi.repository.Gio.Cancellable` or :const:`None`. Methods ------- .. rst-class:: interim-class .. class:: DBusProxy :no-index: .. method:: call(method_name: str, parameters: ~gi.repository.GLib.Variant | None, flags: ~gi.repository.Gio.DBusCallFlags, timeout_msec: int, cancellable: ~gi.repository.Gio.Cancellable | None = None, callback: ~typing.Callable[[...], None] | None = None, *user_data: ~typing.Any) -> None Asynchronously invokes the ``method_name`` method on ``proxy``. If ``method_name`` contains any dots, then ``name`` is split into interface and method name parts. This allows using ``proxy`` for invoking methods on other interfaces. If the :obj:`~gi.repository.Gio.DBusConnection` associated with ``proxy`` is closed then the operation will fail with :const:`~gi.repository.Gio.IOErrorEnum.CLOSED`. If ``cancellable`` is canceled, the operation will fail with :const:`~gi.repository.Gio.IOErrorEnum.CANCELLED`. If ``parameters`` contains a value not compatible with the D-Bus protocol, the operation fails with :const:`~gi.repository.Gio.IOErrorEnum.INVALID_ARGUMENT`. If the ``parameters`` :obj:`~gi.repository.GLib.Variant` is floating, it is consumed. This allows convenient 'inline' use of :func:`~gi.repository.GLib.Variant.new`, e.g.: .. code-block:: C :dedent: g_dbus_proxy_call (proxy, "TwoStrings", g_variant_new ("(ss)", "Thing One", "Thing Two"), G_DBUS_CALL_FLAGS_NONE, -1, NULL, (GAsyncReadyCallback) two_strings_done, &data); If ``proxy`` has an expected interface (see :obj:`~gi.repository.Gio.DBusProxy`:g-interface-info) and ``method_name`` is referenced by it, then the return value is checked against the return type. This is an asynchronous method. When the operation is finished, ``callback`` will be invoked in the [thread-default main context][g-main-context-push-thread-default] of the thread you are calling this method from. You can then call :func:`~gi.repository.Gio.DBusProxy.call_finish` to get the result of the operation. See :func:`~gi.repository.Gio.DBusProxy.call_sync` for the synchronous version of this method. If ``callback`` is :const:`None` then the D-Bus method call message will be sent with the :const:`~gi.repository.Gio.DBusMessageFlags.NO_REPLY_EXPECTED` flag set. .. versionadded:: 2.26 :param method_name: Name of method to invoke. :param parameters: A :obj:`~gi.repository.GLib.Variant` tuple with parameters for the signal or :const:`None` if not passing parameters. :param flags: Flags from the :obj:`~gi.repository.Gio.DBusCallFlags` enumeration. :param timeout_msec: The timeout in milliseconds (with ``%G_MAXINT`` meaning "infinite") or -1 to use the proxy default timeout. :param cancellable: A :obj:`~gi.repository.Gio.Cancellable` or :const:`None`. :param callback: A :obj:`~gi.repository.Gio.AsyncReadyCallback` to call when the request is satisfied or :const:`None` if you don't care about the result of the method invocation. :param user_data: The data to pass to ``callback``. .. method:: call_finish(res: ~gi.repository.Gio.AsyncResult) -> ~gi.repository.GLib.Variant Finishes an operation started with :func:`~gi.repository.Gio.DBusProxy.call`. .. versionadded:: 2.26 :param res: A :obj:`~gi.repository.Gio.AsyncResult` obtained from the :obj:`~gi.repository.Gio.AsyncReadyCallback` passed to :func:`~gi.repository.Gio.DBusProxy.call`. .. method:: call_sync(method_name: str, parameters: ~gi.repository.GLib.Variant | None, flags: ~gi.repository.Gio.DBusCallFlags, timeout_msec: int, cancellable: ~gi.repository.Gio.Cancellable | None = None) -> ~gi.repository.GLib.Variant Synchronously invokes the ``method_name`` method on ``proxy``. If ``method_name`` contains any dots, then ``name`` is split into interface and method name parts. This allows using ``proxy`` for invoking methods on other interfaces. If the :obj:`~gi.repository.Gio.DBusConnection` associated with ``proxy`` is disconnected then the operation will fail with :const:`~gi.repository.Gio.IOErrorEnum.CLOSED`. If ``cancellable`` is canceled, the operation will fail with :const:`~gi.repository.Gio.IOErrorEnum.CANCELLED`. If ``parameters`` contains a value not compatible with the D-Bus protocol, the operation fails with :const:`~gi.repository.Gio.IOErrorEnum.INVALID_ARGUMENT`. If the ``parameters`` :obj:`~gi.repository.GLib.Variant` is floating, it is consumed. This allows convenient 'inline' use of :func:`~gi.repository.GLib.Variant.new`, e.g.: .. code-block:: C :dedent: g_dbus_proxy_call_sync (proxy, "TwoStrings", g_variant_new ("(ss)", "Thing One", "Thing Two"), G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error); The calling thread is blocked until a reply is received. See :func:`~gi.repository.Gio.DBusProxy.call` for the asynchronous version of this method. If ``proxy`` has an expected interface (see :obj:`~gi.repository.Gio.DBusProxy`:g-interface-info) and ``method_name`` is referenced by it, then the return value is checked against the return type. .. versionadded:: 2.26 :param method_name: Name of method to invoke. :param parameters: A :obj:`~gi.repository.GLib.Variant` tuple with parameters for the signal or :const:`None` if not passing parameters. :param flags: Flags from the :obj:`~gi.repository.Gio.DBusCallFlags` enumeration. :param timeout_msec: The timeout in milliseconds (with ``%G_MAXINT`` meaning "infinite") or -1 to use the proxy default timeout. :param cancellable: A :obj:`~gi.repository.Gio.Cancellable` or :const:`None`. .. method:: call_with_unix_fd_list(method_name: str, parameters: ~gi.repository.GLib.Variant | None, flags: ~gi.repository.Gio.DBusCallFlags, timeout_msec: int, fd_list: ~gi.repository.Gio.UnixFDList | None = None, cancellable: ~gi.repository.Gio.Cancellable | None = None, callback: ~typing.Callable[[...], None] | None = None, *user_data: ~typing.Any) -> None Like :func:`~gi.repository.Gio.DBusProxy.call` but also takes a :obj:`~gi.repository.Gio.UnixFDList` object. This method is only available on UNIX. .. versionadded:: 2.30 :param method_name: Name of method to invoke. :param parameters: A :obj:`~gi.repository.GLib.Variant` tuple with parameters for the signal or :const:`None` if not passing parameters. :param flags: Flags from the :obj:`~gi.repository.Gio.DBusCallFlags` enumeration. :param timeout_msec: The timeout in milliseconds (with ``%G_MAXINT`` meaning "infinite") or -1 to use the proxy default timeout. :param fd_list: A :obj:`~gi.repository.Gio.UnixFDList` or :const:`None`. :param cancellable: A :obj:`~gi.repository.Gio.Cancellable` or :const:`None`. :param callback: A :obj:`~gi.repository.Gio.AsyncReadyCallback` to call when the request is satisfied or :const:`None` if you don't care about the result of the method invocation. :param user_data: The data to pass to ``callback``. .. method:: call_with_unix_fd_list_finish(res: ~gi.repository.Gio.AsyncResult) -> tuple[~gi.repository.GLib.Variant, ~gi.repository.Gio.UnixFDList] Finishes an operation started with :func:`~gi.repository.Gio.DBusProxy.call_with_unix_fd_list`. .. versionadded:: 2.30 :param res: A :obj:`~gi.repository.Gio.AsyncResult` obtained from the :obj:`~gi.repository.Gio.AsyncReadyCallback` passed to :func:`~gi.repository.Gio.DBusProxy.call_with_unix_fd_list`. .. method:: call_with_unix_fd_list_sync(method_name: str, parameters: ~gi.repository.GLib.Variant | None, flags: ~gi.repository.Gio.DBusCallFlags, timeout_msec: int, fd_list: ~gi.repository.Gio.UnixFDList | None = None, cancellable: ~gi.repository.Gio.Cancellable | None = None) -> tuple[~gi.repository.GLib.Variant, ~gi.repository.Gio.UnixFDList] Like :func:`~gi.repository.Gio.DBusProxy.call_sync` but also takes and returns :obj:`~gi.repository.Gio.UnixFDList` objects. This method is only available on UNIX. .. versionadded:: 2.30 :param method_name: Name of method to invoke. :param parameters: A :obj:`~gi.repository.GLib.Variant` tuple with parameters for the signal or :const:`None` if not passing parameters. :param flags: Flags from the :obj:`~gi.repository.Gio.DBusCallFlags` enumeration. :param timeout_msec: The timeout in milliseconds (with ``%G_MAXINT`` meaning "infinite") or -1 to use the proxy default timeout. :param fd_list: A :obj:`~gi.repository.Gio.UnixFDList` or :const:`None`. :param cancellable: A :obj:`~gi.repository.Gio.Cancellable` or :const:`None`. .. method:: get_cached_property(property_name: str) -> ~gi.repository.GLib.Variant | None Looks up the value for a property from the cache. This call does no blocking IO. If ``proxy`` has an expected interface (see :obj:`~gi.repository.Gio.DBusProxy`:g-interface-info) and ``property_name`` is referenced by it, then ``value`` is checked against the type of the property. .. versionadded:: 2.26 :param property_name: Property name. .. method:: get_cached_property_names() -> list[str] | None Gets the names of all cached properties on ``proxy``. .. versionadded:: 2.26 .. method:: get_connection() -> ~gi.repository.Gio.DBusConnection Gets the connection ``proxy`` is for. .. versionadded:: 2.26 .. method:: get_default_timeout() -> int Gets the timeout to use if -1 (specifying default timeout) is passed as ``timeout_msec`` in the :func:`~gi.repository.Gio.DBusProxy.call` and :func:`~gi.repository.Gio.DBusProxy.call_sync` functions. See the :obj:`~gi.repository.Gio.DBusProxy`:g-default-timeout property for more details. .. versionadded:: 2.26 .. method:: get_flags() -> ~gi.repository.Gio.DBusProxyFlags Gets the flags that ``proxy`` was constructed with. .. versionadded:: 2.26 .. method:: get_interface_info() -> ~gi.repository.Gio.DBusInterfaceInfo | None Returns the :obj:`~gi.repository.Gio.DBusInterfaceInfo`, if any, specifying the interface that ``proxy`` conforms to. See the :obj:`~gi.repository.Gio.DBusProxy`:g-interface-info property for more details. .. versionadded:: 2.26 .. method:: get_interface_name() -> str Gets the D-Bus interface name ``proxy`` is for. .. versionadded:: 2.26 .. method:: get_name() -> str | None Gets the name that ``proxy`` was constructed for. When connected to a message bus, this will usually be non-:const:`None`. However, it may be :const:`None` for a proxy that communicates using a peer-to-peer pattern. .. versionadded:: 2.26 .. method:: get_name_owner() -> str | None The unique name that owns the name that ``proxy`` is for or :const:`None` if no-one currently owns that name. You may connect to the :obj:`~gi.repository.GObject.Object`::notify signal to track changes to the :obj:`~gi.repository.Gio.DBusProxy`:g-name-owner property. .. versionadded:: 2.26 .. method:: get_object_path() -> str Gets the object path ``proxy`` is for. .. versionadded:: 2.26 .. method:: new(connection: ~gi.repository.Gio.DBusConnection, flags: ~gi.repository.Gio.DBusProxyFlags, info: ~gi.repository.Gio.DBusInterfaceInfo | None, name: str | None, object_path: str, interface_name: str, cancellable: ~gi.repository.Gio.Cancellable | None = None, callback: ~typing.Callable[[...], None] | None = None, *user_data: ~typing.Any) -> None Creates a proxy for accessing ``interface_name`` on the remote object at ``object_path`` owned by ``name`` at ``connection`` and asynchronously loads D-Bus properties unless the :const:`~gi.repository.Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES` flag is used. Connect to the :obj:`~gi.repository.Gio.DBusProxy`::g-properties-changed signal to get notified about property changes. If the :const:`~gi.repository.Gio.DBusProxyFlags.DO_NOT_CONNECT_SIGNALS` flag is not set, also sets up match rules for signals. Connect to the :obj:`~gi.repository.Gio.DBusProxy`::g-signal signal to handle signals from the remote object. If both :const:`~gi.repository.Gio.DBusProxyFlags.DO_NOT_LOAD_PROPERTIES` and :const:`~gi.repository.Gio.DBusProxyFlags.DO_NOT_CONNECT_SIGNALS` are set, this constructor is guaranteed to complete immediately without blocking. If ``name`` is a well-known name and the :const:`~gi.repository.Gio.DBusProxyFlags.DO_NOT_AUTO_START` and :const:`~gi.repository.Gio.DBusProxyFlags.DO_NOT_AUTO_START_AT_CONSTRUCTION` flags aren't set and no name owner currently exists, the message bus will be requested to launch a name owner for the name. This is a failable asynchronous constructor - when the proxy is ready, ``callback`` will be invoked and you can use :func:`~gi.repository.Gio.DBusProxy.new_finish` to get the result. See :func:`~gi.repository.Gio.DBusProxy.new_sync` and for a synchronous version of this constructor. :obj:`~gi.repository.Gio.DBusProxy` is used in this [example][gdbus-wellknown-proxy]. .. versionadded:: 2.26 :param connection: A :obj:`~gi.repository.Gio.DBusConnection`. :param flags: Flags used when constructing the proxy. :param info: A :obj:`~gi.repository.Gio.DBusInterfaceInfo` specifying the minimal interface that ``proxy`` conforms to or :const:`None`. :param name: A bus name (well-known or unique) or :const:`None` if ``connection`` is not a message bus connection. :param object_path: An object path. :param interface_name: A D-Bus interface name. :param cancellable: A :obj:`~gi.repository.Gio.Cancellable` or :const:`None`. :param callback: Callback function to invoke when the proxy is ready. :param user_data: User data to pass to ``callback``. .. method:: new_for_bus(bus_type: ~gi.repository.Gio.BusType, flags: ~gi.repository.Gio.DBusProxyFlags, info: ~gi.repository.Gio.DBusInterfaceInfo | None, name: str, object_path: str, interface_name: str, cancellable: ~gi.repository.Gio.Cancellable | None = None, callback: ~typing.Callable[[...], None] | None = None, *user_data: ~typing.Any) -> None Like :func:`~gi.repository.Gio.DBusProxy.new` but takes a :obj:`~gi.repository.Gio.BusType` instead of a :obj:`~gi.repository.Gio.DBusConnection`. :obj:`~gi.repository.Gio.DBusProxy` is used in this [example][gdbus-wellknown-proxy]. .. versionadded:: 2.26 :param bus_type: A :obj:`~gi.repository.Gio.BusType`. :param flags: Flags used when constructing the proxy. :param info: A :obj:`~gi.repository.Gio.DBusInterfaceInfo` specifying the minimal interface that ``proxy`` conforms to or :const:`None`. :param name: A bus name (well-known or unique). :param object_path: An object path. :param interface_name: A D-Bus interface name. :param cancellable: A :obj:`~gi.repository.Gio.Cancellable` or :const:`None`. :param callback: Callback function to invoke when the proxy is ready. :param user_data: User data to pass to ``callback``. .. method:: set_cached_property(property_name: str, value: ~gi.repository.GLib.Variant | None = None) -> None If ``value`` is not :const:`None`, sets the cached value for the property with name ``property_name`` to the value in ``value``. If ``value`` is :const:`None`, then the cached value is removed from the property cache. If ``proxy`` has an expected interface (see :obj:`~gi.repository.Gio.DBusProxy`:g-interface-info) and ``property_name`` is referenced by it, then ``value`` is checked against the type of the property. If the ``value`` :obj:`~gi.repository.GLib.Variant` is floating, it is consumed. This allows convenient 'inline' use of :func:`~gi.repository.GLib.Variant.new`, e.g. .. code-block:: C :dedent: g_dbus_proxy_set_cached_property (proxy, "SomeProperty", g_variant_new ("(si)", "A String", 42)); Normally you will not need to use this method since ``proxy`` is tracking changes using the ``org.freedesktop.DBus.Properties.PropertiesChanged`` D-Bus signal. However, for performance reasons an object may decide to not use this signal for some properties and instead use a proprietary out-of-band mechanism to transmit changes. As a concrete example, consider an object with a property ``ChatroomParticipants`` which is an array of strings. Instead of transmitting the same (long) array every time the property changes, it is more efficient to only transmit the delta using e.g. signals `ChatroomParticipantJoined(String name)` and `ChatroomParticipantParted(String name)`. .. versionadded:: 2.26 :param property_name: Property name. :param value: Value for the property or :const:`None` to remove it from the cache. .. method:: set_default_timeout(timeout_msec: int) -> None Sets the timeout to use if -1 (specifying default timeout) is passed as ``timeout_msec`` in the :func:`~gi.repository.Gio.DBusProxy.call` and :func:`~gi.repository.Gio.DBusProxy.call_sync` functions. See the :obj:`~gi.repository.Gio.DBusProxy`:g-default-timeout property for more details. .. versionadded:: 2.26 :param timeout_msec: Timeout in milliseconds. .. method:: set_interface_info(info: ~gi.repository.Gio.DBusInterfaceInfo | None = None) -> None Ensure that interactions with ``proxy`` conform to the given interface. See the :obj:`~gi.repository.Gio.DBusProxy`:g-interface-info property for more details. .. versionadded:: 2.26 :param info: Minimum interface this proxy conforms to or :const:`None` to unset. Properties ---------- .. rst-class:: interim-class .. class:: DBusProxy :no-index: .. attribute:: props.g_bus_type :type: ~gi.repository.Gio.BusType If this property is not :const:`~gi.repository.Gio.BusType.NONE`, then :obj:`~gi.repository.Gio.DBusProxy`:g-connection must be :const:`None` and will be set to the :obj:`~gi.repository.Gio.DBusConnection` obtained by calling :func:`~gi.repository.Gio.bus_get` with the value of this property. .. versionadded:: 2.26 .. attribute:: props.g_connection :type: ~gi.repository.Gio.DBusConnection The :obj:`~gi.repository.Gio.DBusConnection` the proxy is for. .. versionadded:: 2.26 .. attribute:: props.g_default_timeout :type: int The timeout to use if -1 (specifying default timeout) is passed as ``timeout_msec`` in the :func:`~gi.repository.Gio.DBusProxy.call` and :func:`~gi.repository.Gio.DBusProxy.call_sync` functions. This allows applications to set a proxy-wide timeout for all remote method invocations on the proxy. If this property is -1, the default timeout (typically 25 seconds) is used. If set to ``%G_MAXINT``, then no timeout is used. .. versionadded:: 2.26 .. attribute:: props.g_flags :type: ~gi.repository.Gio.DBusProxyFlags Flags from the :obj:`~gi.repository.Gio.DBusProxyFlags` enumeration. .. versionadded:: 2.26 .. attribute:: props.g_interface_info :type: ~gi.repository.Gio.DBusInterfaceInfo Ensure that interactions with this proxy conform to the given interface. This is mainly to ensure that malformed data received from the other peer is ignored. The given :obj:`~gi.repository.Gio.DBusInterfaceInfo` is said to be the "expected interface". The checks performed are: - When completing a method call, if the type signature of the reply message isn't what's expected, the reply is discarded and the :obj:`~gi.repository.GLib.Error` is set to :const:`~gi.repository.Gio.IOErrorEnum.INVALID_ARGUMENT`. - Received signals that have a type signature mismatch are dropped and a warning is logged via :func:`~gi.repository.GLib.warning`. - Properties received via the initial ``GetAll()`` call or via the ``::PropertiesChanged`` signal (on the `org.freedesktop.DBus.Properties `_ interface) or set using :func:`~gi.repository.Gio.DBusProxy.set_cached_property` with a type signature mismatch are ignored and a warning is logged via :func:`~gi.repository.GLib.warning`. Note that these checks are never done on methods, signals and properties that are not referenced in the given :obj:`~gi.repository.Gio.DBusInterfaceInfo`, since extending a D-Bus interface on the service-side is not considered an ABI break. .. versionadded:: 2.26 .. attribute:: props.g_interface_name :type: str The D-Bus interface name the proxy is for. .. versionadded:: 2.26 .. attribute:: props.g_name :type: str The well-known or unique name that the proxy is for. .. versionadded:: 2.26 .. attribute:: props.g_name_owner :type: str The unique name that owns :obj:`~gi.repository.Gio.DBusProxy`:g-name or :const:`None` if no-one currently owns that name. You may connect to :obj:`~gi.repository.GObject.Object`::notify signal to track changes to this property. .. versionadded:: 2.26 .. attribute:: props.g_object_path :type: str The object path the proxy is for. .. versionadded:: 2.26 Signals ------- .. rst-class:: interim-class .. class:: DBusProxy.signals :no-index: .. method:: g_properties_changed(changed_properties: ~gi.repository.GLib.Variant, invalidated_properties: ~typing.Sequence[str]) -> None Emitted when one or more D-Bus properties on ``proxy`` changes. The local cache has already been updated when this signal fires. Note that both ``changed_properties`` and ``invalidated_properties`` are guaranteed to never be :const:`None` (either may be empty though). If the proxy has the flag :const:`~gi.repository.Gio.DBusProxyFlags.GET_INVALIDATED_PROPERTIES` set, then ``invalidated_properties`` will always be empty. This signal corresponds to the ``PropertiesChanged`` D-Bus signal on the ``org.freedesktop.DBus.Properties`` interface. .. versionadded:: 2.26 :param changed_properties: A :obj:`~gi.repository.GLib.Variant` containing the properties that changed (type: ``a{sv}``) :param invalidated_properties: A :const:`None` terminated array of properties that was invalidated .. method:: g_signal(sender_name: str | None, signal_name: str, parameters: ~gi.repository.GLib.Variant) -> None Emitted when a signal from the remote object and interface that ``proxy`` is for, has been received. Since 2.72 this signal supports detailed connections. You can connect to the detailed signal ``g-signal::x`` in order to receive callbacks only when signal ``x`` is received from the remote object. .. versionadded:: 2.26 :param sender_name: The sender of the signal or :const:`None` if the connection is not a bus connection. :param signal_name: The name of the signal. :param parameters: A :obj:`~gi.repository.GLib.Variant` tuple with parameters for the signal. Virtual Methods --------------- .. rst-class:: interim-class .. class:: DBusProxy :no-index: .. method:: do_g_properties_changed(changed_properties: ~gi.repository.GLib.Variant, invalidated_properties: str) -> None Signal class handler for the :obj:`~gi.repository.Gio.DBusProxy`::g-properties-changed signal. :param changed_properties: :param invalidated_properties: .. method:: do_g_signal(sender_name: str, signal_name: str, parameters: ~gi.repository.GLib.Variant) -> None Signal class handler for the :obj:`~gi.repository.Gio.DBusProxy`::g-signal signal. :param sender_name: :param signal_name: :param parameters: Fields ------ .. rst-class:: interim-class .. class:: DBusProxy :no-index: .. attribute:: parent_instance .. attribute:: priv