From b7ba1201e43ebd7c9aa7cd6500fe4b8e03756d52 Mon Sep 17 00:00:00 2001 From: Brett Williams Date: Fri, 5 Jun 2026 21:27:02 -0500 Subject: [PATCH] refactor: log silent AttributeError catches, add _sync_class to remaining services, drop dead ctx slot --- server.py | 2 ++ src/application_context.py | 2 -- src/distributed_job_manager.py | 5 +++++ src/render_queue.py | 5 +++++ src/ui/main_window.py | 8 ++++---- 5 files changed, 16 insertions(+), 6 deletions(-) diff --git a/server.py b/server.py index de576d7..154a00d 100755 --- a/server.py +++ b/server.py @@ -60,11 +60,13 @@ class ZordonServer: self.ctx.render_queue = RenderQueue() self.ctx.render_queue.load_state(database_directory=Path(Config.upload_folder).expanduser()) RenderQueue._default_instance = self.ctx.render_queue + RenderQueue._sync_class() # ---- Distributed Job Manager ---- self.ctx.distributed_job_manager = DistributedJobManager() self.ctx.distributed_job_manager.subscribe_to_listener() DistributedJobManager._default_instance = self.ctx.distributed_job_manager + DistributedJobManager._sync_class() self.api_server = None self.server_hostname = None diff --git a/src/application_context.py b/src/application_context.py index 7b5cb20..64b7cfa 100644 --- a/src/application_context.py +++ b/src/application_context.py @@ -4,7 +4,6 @@ from typing import TYPE_CHECKING, Optional if TYPE_CHECKING: from src.api.preview_manager import PreviewManager - from src.api.serverproxy_manager import ServerProxyManager from src.distributed_job_manager import DistributedJobManager from src.engines.engine_manager import EngineManager from src.render_queue import RenderQueue @@ -22,4 +21,3 @@ class ApplicationContext: self.zeroconf_server: Optional[ZeroconfServer] = None self.render_queue: Optional[RenderQueue] = None self.distributed_job_manager: Optional[DistributedJobManager] = None - self.server_proxy_manager: Optional[ServerProxyManager] = None diff --git a/src/distributed_job_manager.py b/src/distributed_job_manager.py index 7aaaa05..e817261 100644 --- a/src/distributed_job_manager.py +++ b/src/distributed_job_manager.py @@ -24,6 +24,11 @@ logger = logging.getLogger() class DistributedJobManager: _default_instance: Optional['DistributedJobManager'] = None + @classmethod + def _sync_class(cls) -> None: + if cls._default_instance is not None: + pass # no class-level attributes to sync + def __init__(self) -> None: self.background_worker: Optional[threading.Thread] = None diff --git a/src/render_queue.py b/src/render_queue.py index f70a4a0..beb41d5 100755 --- a/src/render_queue.py +++ b/src/render_queue.py @@ -28,6 +28,11 @@ class JobNotFoundError(Exception): class RenderQueue: _default_instance: Optional['RenderQueue'] = None + @classmethod + def _sync_class(cls) -> None: + if cls._default_instance is not None: + pass # no class-level attributes to sync + def __init__(self) -> None: self.engine: Optional[create_engine] = None self.session: Optional[Session] = None diff --git a/src/ui/main_window.py b/src/ui/main_window.py index a4029c3..daa3871 100644 --- a/src/ui/main_window.py +++ b/src/ui/main_window.py @@ -247,9 +247,8 @@ class MainWindow(QMainWindow): # Update server information display self.update_server_info_display(new_hostname) - except AttributeError: - # Handle cases where the server list view might not be properly initialized - pass + except AttributeError as e: + logger.error(f"AttributeError in server_picked: {e}") def update_server_info_display(self, hostname): """Updates the server information section of the UI.""" @@ -405,7 +404,8 @@ class MainWindow(QMainWindow): id_item = self.job_list_view.item(selected_row.row(), 0) job_ids.append(id_item.text()) return job_ids - except AttributeError: + except AttributeError as e: + logger.error(f"AttributeError in selected_job_ids: {e}") return []