Myco / models /mushroom.py
byte-vortex's picture
Deploy Myco from CI
9c3e19a verified
Raw
History Blame Contribute Delete
1.34 kB
from dataclasses import dataclass
from typing import Any, Dict
@dataclass(frozen=True)
class Mushroom:
name: str
rarity: str
habitat: str
lore: str
edible: str = "Unknown"
magic: str = "Unknown"
danger: str = "Unknown"
@classmethod
def from_dict(cls, data: Dict[str, Any]) -> "Mushroom":
if not isinstance(data, dict):
raise TypeError("Mushroom.from_dict expects a dict")
required = ["name", "rarity", "habitat", "lore"]
missing = [k for k in required if k not in data or data[k] is None]
if missing:
raise ValueError(f"Mushroom.from_dict missing required fields: {', '.join(missing)}")
return cls(
name=str(data["name"]),
rarity=str(data["rarity"]),
habitat=str(data["habitat"]),
lore=str(data["lore"]),
edible=str(data.get("edible", "Unknown")),
magic=str(data.get("magic", "Unknown")),
danger=str(data.get("danger", "Unknown")),
)
def to_dict(self) -> Dict[str, str]:
return {
"name": self.name,
"rarity": self.rarity,
"habitat": self.habitat,
"lore": self.lore,
"edible": self.edible,
"magic": self.magic,
"danger": self.danger,
}