From df5705779e8c6d0cac3e69f8d6919de4e8f2a746 Mon Sep 17 00:00:00 2001 From: Artem Akymenko Date: Wed, 22 Jul 2026 07:34:24 +0000 Subject: [PATCH] refactor: extract ConversionCancelled to conversion_ports - Single definition in application layer - Both adapters import from ports instead of defining locally --- abogen/application/conversion_ports.py | 5 +++++ abogen/pyqt/conversion_adapter.py | 7 +------ abogen/webui/conversion_adapter.py | 7 +------ 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/abogen/application/conversion_ports.py b/abogen/application/conversion_ports.py index b95e003..02e9d81 100644 --- a/abogen/application/conversion_ports.py +++ b/abogen/application/conversion_ports.py @@ -13,6 +13,11 @@ from dataclasses import dataclass from typing import Any, List, Optional, Protocol, runtime_checkable +class ConversionCancelled(Exception): + """Raised when conversion is cancelled by user.""" + pass + + class ConversionEvents(Protocol): """UI-specific actions the conversion service delegates back to the caller. diff --git a/abogen/pyqt/conversion_adapter.py b/abogen/pyqt/conversion_adapter.py index 6930a14..0b94b86 100644 --- a/abogen/pyqt/conversion_adapter.py +++ b/abogen/pyqt/conversion_adapter.py @@ -18,7 +18,7 @@ from pathlib import Path from typing import Any, Callable, Dict, List, Optional from abogen.application.conversion_request import ConversionRequest -from abogen.application.conversion_ports import ResolvedVoice +from abogen.application.conversion_ports import ConversionCancelled, ResolvedVoice def build_conversion_request_from_thread(thread: Any) -> ConversionRequest: @@ -135,11 +135,6 @@ class PyQtEvents: raise ConversionCancelled("Conversion cancelled by user") -class ConversionCancelled(Exception): - """Raised when conversion is cancelled.""" - pass - - class PyQtPipelineProvider: """PyQt implementation of PipelineProvider protocol. diff --git a/abogen/webui/conversion_adapter.py b/abogen/webui/conversion_adapter.py index 836f8af..8b125da 100644 --- a/abogen/webui/conversion_adapter.py +++ b/abogen/webui/conversion_adapter.py @@ -18,7 +18,7 @@ from pathlib import Path from typing import Any, Callable, Dict, List, Optional from abogen.application.conversion_request import ConversionRequest -from abogen.application.conversion_ports import ResolvedVoice +from abogen.application.conversion_ports import ConversionCancelled, ResolvedVoice def build_conversion_request_from_job(job: Any) -> ConversionRequest: @@ -114,11 +114,6 @@ class WebJobEvents: raise ConversionCancelled("Job cancelled by user") -class ConversionCancelled(Exception): - """Raised when conversion is cancelled.""" - pass - - class WebPipelineProvider: """WebUI implementation of PipelineProvider protocol.