def decode_alarm_obj(self, obj): try: alarm = Alarm(str(obj["id"]), int(obj["hour"]), int(obj["minute"]), tag=str(obj["tag"]), editable=bool(obj["editable"])) if "days" in obj: alarm.days = Alarm.from_day_str(str(obj["days"])) if ("day" in obj) and \ ("month" in obj) and \ ("year" in obj): alarm.date = date(int(obj["year"]), int(obj["month"]), int(obj["day"])) return alarm except KeyError: raise ValueError