diff --git a/app/frontend_management.py b/app/frontend_management.py index 8495b46c1..8d5aa20f3 100644 --- a/app/frontend_management.py +++ b/app/frontend_management.py @@ -29,38 +29,22 @@ def frontend_install_warning_message(): This error is happening because the ComfyUI frontend is no longer shipped as part of the main repo but as a pip package instead. """.strip() -def is_valid_version(version: str) -> bool: - """Validate if a string is a valid semantic version (X.Y.Z format).""" - pattern = r"^(\d+)\.(\d+)\.(\d+)$" - return bool(re.match(pattern, version)) +def parse_version(version: str) -> tuple[int, int, int]: + return tuple(map(int, version.split("."))) -def get_required_frontend_version(): - """Get the required frontend version from requirements.txt.""" - try: - with open(requirements_path, "r", encoding="utf-8") as f: - version_str = f.readline().split("=")[-1].strip() - if not is_valid_version(version_str): - logging.error(f"Invalid version format in requirements.txt: {version_str}") - return None - return version_str - except FileNotFoundError: - logging.error("requirements.txt not found. Cannot determine required frontend version.") - return None - except Exception as e: - logging.error(f"Error reading requirements.txt: {e}") - return None +def get_installed_frontend_version(): + """Get the currently installed frontend package version.""" + frontend_version_str = version("comfyui-frontend-package") + return frontend_version_str def check_frontend_version(): """Check if the frontend version is up to date.""" - def parse_version(version: str) -> tuple[int, int, int]: - return tuple(map(int, version.split("."))) - try: - frontend_version_str = version("comfyui-frontend-package") + frontend_version_str = get_installed_frontend_version() frontend_version = parse_version(frontend_version_str) - required_frontend_str = get_required_frontend_version() - required_frontend = parse_version(required_frontend_str) + with open(requirements_path, "r", encoding="utf-8") as f: + required_frontend = parse_version(f.readline().split("=")[-1]) if frontend_version < required_frontend: app.logger.log_startup_warning( f""" @@ -189,9 +173,9 @@ class FrontendManager: CUSTOM_FRONTENDS_ROOT = str(Path(__file__).parents[1] / "web_custom_versions") @classmethod - def get_required_frontend_version(cls) -> str: - """Get the required frontend version from requirements.txt.""" - return get_required_frontend_version() + def get_frontend_version(cls) -> str: + """Get the currently installed frontend package version.""" + return get_installed_frontend_version() @classmethod def default_frontend_path(cls) -> str: diff --git a/server.py b/server.py index dfb846b66..17e6f6ad7 100644 --- a/server.py +++ b/server.py @@ -553,7 +553,7 @@ class PromptServer(): ram_free = comfy.model_management.get_free_memory(cpu_device) vram_total, torch_vram_total = comfy.model_management.get_total_memory(device, torch_total_too=True) vram_free, torch_vram_free = comfy.model_management.get_free_memory(device, torch_free_too=True) - required_frontend_version = FrontendManager.get_required_frontend_version() + required_frontend_version = FrontendManager.get_frontend_version() system_stats = { "system": { diff --git a/tests-unit/app_test/frontend_manager_test.py b/tests-unit/app_test/frontend_manager_test.py index 44db1cd5b..ce0685d5a 100644 --- a/tests-unit/app_test/frontend_manager_test.py +++ b/tests-unit/app_test/frontend_manager_test.py @@ -173,11 +173,11 @@ def test_init_frontend_fallback_on_error(): assert frontend_path == "/default/path" mock_check.assert_called_once() -def test_get_required_frontend_version(): +def test_get_frontend_version(): #Arrange expected_version = "1.23.4" - version = FrontendManager.get_required_frontend_version() + version = FrontendManager.get_frontend_version() #Assert assert version == expected_version