From da8b81b4942661e3769100b8b102864d81eb4b93 Mon Sep 17 00:00:00 2001 From: Animesh404 Date: Tue, 7 Jan 2025 20:05:08 +0530 Subject: [PATCH] fix: Fix for Windows ProactorEventLoop --- openadapt/app/tray.py | 17 +++++++++++++++-- openadapt/entrypoint.py | 12 ++++++++---- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/openadapt/app/tray.py b/openadapt/app/tray.py index d5b3e9277..9e00e319d 100644 --- a/openadapt/app/tray.py +++ b/openadapt/app/tray.py @@ -3,6 +3,21 @@ usage: `python -m openadapt.app.tray` or `poetry run app` """ +import sys +import asyncio +import os + +# Fix for Windows ProactorEventLoop +if sys.platform == "win32": + try: + if isinstance( + asyncio.get_event_loop_policy(), asyncio.WindowsProactorEventLoopPolicy + ): + # Use WindowsSelectorEventLoopPolicy instead + asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) + except Exception as e: + print(f"Failed to set event loop policy: {e}") + from datetime import datetime from functools import partial from pprint import pformat @@ -10,8 +25,6 @@ from typing import Any, Callable import inspect import multiprocessing -import os -import sys import time from pyqttoast import Toast, ToastButtonAlignment, ToastIcon, ToastPosition, ToastPreset diff --git a/openadapt/entrypoint.py b/openadapt/entrypoint.py index 1f4a74a8b..f7b26d7a4 100644 --- a/openadapt/entrypoint.py +++ b/openadapt/entrypoint.py @@ -43,9 +43,10 @@ def start_loading_sequence(self) -> None: # Configuration - 20% try: + self.progress_updated.emit(20, "Loading configuration...") + from openadapt.config import print_config - self.progress_updated.emit(20, "Loading configuration...") print_config() except Exception as e: logger.error(f"Configuration error: {e}") @@ -53,9 +54,10 @@ def start_loading_sequence(self) -> None: # Error reporting setup - 40% try: + self.progress_updated.emit(40, "Configuring error reporting...") + from openadapt.error_reporting import configure_error_reporting - self.progress_updated.emit(40, "Configuring error reporting...") configure_error_reporting() except Exception as e: logger.error(f"Error reporting setup failed: {e}") @@ -63,19 +65,21 @@ def start_loading_sequence(self) -> None: # Database context - 60% try: + self.progress_updated.emit(60, "Loading database context...") + from openadapt.alembic.context_loader import load_alembic_context load_alembic_context() - self.progress_updated.emit(60, "Loading database context...") except Exception as e: logger.error(f"Database context loading failed: {e}") return False # System tray setup - 80% try: + self.progress_updated.emit(80, "Setting up system tray...") + from openadapt.app import tray - self.progress_updated.emit(80, "Setting up system tray...") tray_instance = tray.SystemTrayIcon(app=self.app) except Exception as e: