import importlib SNAKE_REGISTRY = { "TemplateSnake": "1.0.0", "DummSnake": "1.0.0", "LogicSnake": "1.1.0", "MasterSnake": "1.2.0", "BetterMasterSnake": "1.3.0", "BestBattleSnake": "2.6.0", "TrainedBattleSnake": "0.1.0", } def build_snake(selected_snake: str): if selected_snake not in SNAKE_REGISTRY: raise ValueError(f"Unknown snake: {selected_snake}") snake_module = importlib.import_module(f"snakes.{selected_snake}") snake_class = getattr(snake_module, selected_snake) return snake_class() def get_snake_version(selected_snake: str) -> str | None: version = SNAKE_REGISTRY.get(selected_snake) if version is None: return None return str(version) class SnakeBuilder: @classmethod def build(self, selected_snake: str): return build_snake(selected_snake) @classmethod def get_version(self, selected_snake: str) -> str | None: return get_snake_version(selected_snake)