From eace1872d7a9b0f91c2e5b75d93953684cd620d9 Mon Sep 17 00:00:00 2001 From: Daniel Dolezal Date: Fri, 3 Apr 2026 20:11:46 +0200 Subject: [PATCH] move snake builder into __init__ of snakes file and use it into server class --- server/Server.py | 2 +- server/SnakeBuilder.py | 19 ------------------- snakes/__init__.py | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 34 insertions(+), 20 deletions(-) delete mode 100644 server/SnakeBuilder.py diff --git a/server/Server.py b/server/Server.py index 9e0aa24..1377563 100644 --- a/server/Server.py +++ b/server/Server.py @@ -1,6 +1,6 @@ from server.Files import read_file from server.GameBoard import GameBoard -from server.SnakeBuilder import SnakeBuilder +from snakes import SnakeBuilder from quart_common.web.logger import await_log from quart_common.web.logger import build_logger from typing import cast diff --git a/server/SnakeBuilder.py b/server/SnakeBuilder.py deleted file mode 100644 index 321b892..0000000 --- a/server/SnakeBuilder.py +++ /dev/null @@ -1,19 +0,0 @@ -class SnakeBuilder: - SNAKE_VERSIONS = { - "TemplateSnake": "1.0.0", - "DummSnake": "1.0.0", - "LogicSnake": "1.1.0", - "MasterSnake": "1.2.0", - "BetterMasterSnake": "1.3.0", - "BestBattleSnake": "2.5.0", - } - - @classmethod - def build(self, selected_snake:str): - snake_module = __import__(f"snakes.{selected_snake}", fromlist=[selected_snake]) - snake_class = getattr(snake_module, selected_snake) - return snake_class() - - @classmethod - def get_version(self, selected_snake:str) -> str | None: - return self.SNAKE_VERSIONS.get(selected_snake) diff --git a/snakes/__init__.py b/snakes/__init__.py index e69de29..ce62f3e 100644 --- a/snakes/__init__.py +++ b/snakes/__init__.py @@ -0,0 +1,33 @@ +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.5.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)