in pystemd/base.py [0:0]
def _auto_call_dbus_method(self, method_name, in_args, *args):
if len(args) != len(in_args):
raise TypeError(
"method %s require %s arguments, %s supplied"
% (method_name, len(in_args), len(args))
)
block_chars = re.compile(r"v|\{")
if any(any(block_chars.finditer(arg)) for arg in in_args):
raise NotImplementedError(
"still not implemented methods with complex " "arguments"
)
in_signature = "".join(in_args)
call_args = apply_signature(x2char_star(in_signature), list(args))
with self.sd_object.bus_context() as bus:
return bus.call_method(
self.sd_object.destination,
self.sd_object.path,
self.interface_name,
x2char_star(method_name),
call_args,
).body