from abc import ABC, abstractmethod class Event: def __init__(self, type: str, data: dict = None): self.type = type # "maze_loaded", "move", "path_found" self.data = data if data else {} class Observer(ABC): @abstractmethod def update(self, event: Event) -> None: pass