from __future__ import annotations from typing import Any, Dict from uuid import uuid4 class Objective: def __init__(self, name: str, description: str | None): self.id: str = str(uuid4()) self.name: str = name self.description: str | None = description def set_id(self, new_id: str) -> None: self.id = new_id def set_name(self, new_name: str) -> None: self.name = new_name def set_description(self, new_description: str | None) -> None: self.description = new_description def toDict(self) -> Dict[str, Any]: return { "id": self.id, "name": self.name, "description": self.description or None, } @staticmethod def fromDict(data: Dict[str, Any]) -> Objective: obj = Objective(data["name"], data["description"] or None) obj.set_id(data["id"]) return obj