# Annotations

The `dbus_fast.annotations` module contains `DBusSignature` that can be used with `typing.Annotated` to provide D-Bus signature annotations in a manner that is compatible with type hints. This applies to methods decorated with `dbus_property`, `dbus_method` or `dbus_signal`.

The module also includes some type aliases for common D-Bus types. You can construct your own annotated types like this:

    from typing import Annotated

    MyDBusStruct = Annotated[tuple[int, str], DBusSignature("(is)")]

Or you can use `Annotated[...]` directly without creating an alias.

Added in version v4.0.0: Prior to this version, annotations had to be specified as D-Bus signature strings.

dbus_fast.annotations.DBusBool

  D-Bus BOOLEAN type (“b”).

  alias of `Annotated`[`bool`, `DBusSignature`(signature=b)]

dbus_fast.annotations.DBusByte

  D-Bus BYTE type (“y”).

  alias of `Annotated`[`int`, `DBusSignature`(signature=y)]

dbus_fast.annotations.DBusBytes

  D-Bus ARRAY of BYTE type (“ay”).

  alias of `Annotated`[`bytes`, `DBusSignature`(signature=ay)]

dbus_fast.annotations.DBusDict

  D-Bus ARRAY of DICT_ENTRY type with STRING keys and VARIANT values (“a{sv}”).

  alias of `Annotated`[`dict`[`str`, `Variant`], `DBusSignature`(signature=a{sv})]

dbus_fast.annotations.DBusDouble

  D-Bus DOUBLE type (“d”).

  alias of `Annotated`[`float`, `DBusSignature`(signature=d)]

dbus_fast.annotations.DBusInt16

  D-Bus INT16 type (“n”).

  alias of `Annotated`[`int`, `DBusSignature`(signature=n)]

dbus_fast.annotations.DBusInt32

  D-Bus INT32 type (“i”).

  alias of `Annotated`[`int`, `DBusSignature`(signature=i)]

dbus_fast.annotations.DBusInt64

  D-Bus INT64 type (“x”).

  alias of `Annotated`[`int`, `DBusSignature`(signature=x)]

dbus_fast.annotations.DBusObjectPath

  D-Bus OBJECT_PATH type (“o”).

  alias of `Annotated`[`str`, `DBusSignature`(signature=o)]

class dbus_fast.annotations.DBusSignature(signature: str)

  A D-Bus signature annotation.

  This class is used to create D-Bus type annotations. For example:

      from typing import Annotated
      from dbus_fast.annotations import DBusSignature

      MyDBusStruct = Annotated[tuple[int, str], DBusSignature("(is)")]

  signature: str

dbus_fast.annotations.DBusSignatureType

  D-Bus SIGNATURE type (“g”).

  Note

  This one doesn’t follow the established naming convention since “DBusSignature” is used for the annotation itself.

  alias of `Annotated`[`str`, `DBusSignature`(signature=g)]

dbus_fast.annotations.DBusStr

  D-Bus STRING type (“s”).

  alias of `Annotated`[`str`, `DBusSignature`(signature=s)]

dbus_fast.annotations.DBusUInt16

  D-Bus UINT16 type (“q”).

  alias of `Annotated`[`int`, `DBusSignature`(signature=q)]

dbus_fast.annotations.DBusUInt32

  D-Bus UINT32 type (“u”).

  alias of `Annotated`[`int`, `DBusSignature`(signature=u)]

dbus_fast.annotations.DBusUInt64

  D-Bus UINT64 type (“t”).

  alias of `Annotated`[`int`, `DBusSignature`(signature=t)]

dbus_fast.annotations.DBusUnixFd

  D-Bus UNIX_FD type (“h”).

  alias of `Annotated`[`int`, `DBusSignature`(signature=h)]

dbus_fast.annotations.DBusVariant

  D-Bus VARIANT type (“v”).

  alias of `Annotated`[`Variant`, `DBusSignature`(signature=v)]