def set(self, data): # Check all errors first to avoid partially applying an update. for key, value in data.items(): if key not in self._state: # return self.sendErrorReply('unknownValue', f"The value '{key}' is not known. Valid keys are: {self._state.keys()}") cameraControlAPI.send( QDBusMessage.createErrorReply( 'unknownValue', f"The value '{key}' is not known. Valid keys are: {self._state.keys()}" )) if not isinstance(value, type(self._state[key])): return cameraControlAPI.send( QDBusMessage.createErrorReply( 'wrongType', f"Can not set '{key}' to {value}. (Previously {self._state[key]}.) Expected {type(self._state[key])}, got {type(value)}." )) for key, value in data.items(): self._state[key] = value
def get(self, msg): keys = msg.arguments()[0] retval = {} for key in keys: if key not in self._state: return cameraControlAPI.send( #Todo: This isn't how you return errors. QDBusMessage.createErrorReply( 'unknownValue', f"The value '{key}' is not known. Valid keys are: {self._state.keys()}" )) retval[key] = self._state[key] return retval