Spaces:
Sleeping
Sleeping
| from dataclasses import dataclass | |
| from typing import Any, Dict | |
| class Mushroom: | |
| name: str | |
| rarity: str | |
| habitat: str | |
| lore: str | |
| edible: str = "Unknown" | |
| magic: str = "Unknown" | |
| danger: str = "Unknown" | |
| 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, | |
| } | |