From 7363951a9af194049c25cd7dbc6b90072e4d9b35 Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Tue, 24 Apr 2018 15:40:14 +0200 Subject: [PATCH] Update gdbus.py --- hassio/utils/gdbus.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hassio/utils/gdbus.py b/hassio/utils/gdbus.py index 042a7572e..850f90ea1 100644 --- a/hassio/utils/gdbus.py +++ b/hassio/utils/gdbus.py @@ -2,12 +2,18 @@ import asyncio import logging import shlex +import re import xml.etree.ElementTree as ET from ..exceptions import DBusFatalError, DBusParseError _LOGGER = logging.getLogger(__name__) +RE_GVARIANT_TULPE = re.compile(r"^\((.*),\)$") +RE_GVARIANT_VARIANT = re.compile( + r"(?<=(?: |{|\[))<((?:'|\").*?(?:'|\")|\d+(?:\.\d+)?)>(?=(?:|]|}|,))") +RE_GVARIANT_STRING = re.compile(r"(?<=(?: |{|\[))'(.*?)'(?=(?:|]|}|,))") + INTROSPECT = ("gdbus introspect --system --dest {bus} " "--object-path {obj} --xml") CALL = ("gdbus call --system --dest {bus} --object-path {inf} " @@ -60,6 +66,7 @@ class DBus: @staticmethod def _gvariant(raw): """Parse GVariant input to python.""" + raw = RE_GVARIANT_TULPE.sub(r"[\1]", raw) return raw async def call_dbus(self, interface, method, *args):