Last active
December 11, 2016 18:55
-
-
Save belsander/521135a61c2aff0f655897792023b7b8 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import dbus | |
class dbus_parse(object): | |
__slots__ = ("__dbus_parse_dict", "__parse_dbus_dict", "__parse_dbus_list", "__parse_dbus_tuple", "__parse_dbus_var", "parse_dbus_vars") | |
def __init__(self): | |
self.__dbus_parse_dict = { dbus.String: str, | |
dbus.Int16: int, dbus.Int32: int, dbus.Int64: int, | |
dbus.UInt16: int, dbus.UInt32: int, dbus.UInt64: int, | |
dbus.Double: float, | |
dbus.Boolean: bool, | |
dbus.Dictionary: self.__parse_dbus_dict, dict: self.__parse_dbus_dict, | |
dbus.Array: self.__parse_dbus_list, list: self.__parse_dbus_list, | |
dbus.Struct: self.__parse_dbus_tuple, tuple: self.__parse_dbus_tuple } | |
def __parse_dbus_dict(self, dbus_dict): | |
dict_var = dict() | |
for dbus_dict_key, dbus_dict_var in dict(dbus_dict).iteritems(): | |
dict_var.update({self.__parse_dbus_var(dbus_dict_key): self.__parse_dbus_var(dbus_dict_var)}) | |
return dict_var | |
def __parse_dbus_list(self, dbus_list, return_tuple=False): | |
list_var = list() | |
for list_dbus_var in list(dbus_list): | |
list_var.append(self.__parse_dbus_var(list_dbus_var)) | |
return tuple(list_var) if return_tuple else list_var | |
def __parse_dbus_tuple(self, dbus_tuple): | |
return self.__parse_dbus_list(dbus_tuple, return_tuple=True) | |
def __parse_dbus_var(self, dbus_var): | |
try: | |
return self.__dbus_parse_dict[type(dbus_var)](dbus_var) | |
except KeyError: | |
return dbus_var | |
def parse_dbus_vars(self, *args): | |
"""Parse D-Bus variables into Python variables | |
Args: | |
*args: All needed variables (supported D-Bus types: String, Boolean, Int16, Int32, Int64, UInt16, UInt32, UInt64, Dictionary, Array, Struct) | |
Returns: | |
All given D-Bus variables as parsed Python variables | |
Raises: | |
None | |
""" | |
return_vars = list() | |
for dbus_var in args: | |
return_vars.append(self.__parse_dbus_var(dbus_var)) | |
return tuple(return_vars) if len(return_vars) > 1 else return_vars[0] | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment