"""Application state for the Pigeon Pea Pangenome Atlas.""" from dataclasses import dataclass, field @dataclass class AppState: selected_line: str | None = None selected_party: list[str] = field(default_factory=list) selected_gene: str | None = None backpack_genes: list[str] = field(default_factory=list) core_threshold: float = 95.0 cloud_threshold: float = 15.0 selected_contig: str | None = None achievements: set[str] = field(default_factory=set) def add_to_backpack(self, gene_id: str) -> bool: """Add gene to backpack. Returns True if added, False if already present or full.""" if gene_id in self.backpack_genes: return False if len(self.backpack_genes) >= 50: return False self.backpack_genes.append(gene_id) if len(self.backpack_genes) >= 5: self.achievements.add("Collector") return True def remove_from_backpack(self, gene_id: str) -> bool: """Remove gene from backpack.""" if gene_id in self.backpack_genes: self.backpack_genes.remove(gene_id) return True return False def award(self, badge: str): """Award an achievement badge.""" self.achievements.add(badge)