From 5dd8a82d1f1cfa2dfc33fa927f6a447cc732680b Mon Sep 17 00:00:00 2001 From: Yiorgis Gozadinos Date: Fri, 20 Feb 2026 16:30:25 +0200 Subject: [PATCH] Exclude TUI apps from coverage --- haiku_rag_slim/haiku/rag/chat/__init__.py | 2 +- haiku_rag_slim/haiku/rag/chat/app.py | 4 ++-- haiku_rag_slim/haiku/rag/chat/widgets/context_modal.py | 2 +- .../haiku/rag/chat/widgets/document_filter_modal.py | 2 +- haiku_rag_slim/haiku/rag/inspector/__init__.py | 2 +- haiku_rag_slim/haiku/rag/inspector/app.py | 6 +++--- haiku_rag_slim/haiku/rag/inspector/widgets/chunk_list.py | 2 +- haiku_rag_slim/haiku/rag/inspector/widgets/context_modal.py | 2 +- haiku_rag_slim/haiku/rag/inspector/widgets/detail_view.py | 2 +- haiku_rag_slim/haiku/rag/inspector/widgets/document_list.py | 2 +- haiku_rag_slim/haiku/rag/inspector/widgets/info_modal.py | 2 +- haiku_rag_slim/haiku/rag/inspector/widgets/search_modal.py | 2 +- haiku_rag_slim/haiku/rag/inspector/widgets/visual_modal.py | 2 +- pyproject.toml | 4 ++++ 14 files changed, 20 insertions(+), 16 deletions(-) diff --git a/haiku_rag_slim/haiku/rag/chat/__init__.py b/haiku_rag_slim/haiku/rag/chat/__init__.py index 351615e3..1ee6fd13 100644 --- a/haiku_rag_slim/haiku/rag/chat/__init__.py +++ b/haiku_rag_slim/haiku/rag/chat/__init__.py @@ -18,7 +18,7 @@ def run_chat( """ try: from haiku.rag.chat.app import ChatApp - except ImportError as e: # pragma: no cover + except ImportError as e: raise ImportError( "textual is not installed. Please install it with `pip install 'haiku.rag-slim[tui]'` or use the full haiku.rag package." ) from e diff --git a/haiku_rag_slim/haiku/rag/chat/app.py b/haiku_rag_slim/haiku/rag/chat/app.py index 969b33b4..6346c864 100644 --- a/haiku_rag_slim/haiku/rag/chat/app.py +++ b/haiku_rag_slim/haiku/rag/chat/app.py @@ -20,7 +20,7 @@ try: logfire.configure(send_to_logfire="if-token-present", console=False) logfire.instrument_pydantic_ai() -except ImportError: # pragma: no cover +except ImportError: pass try: @@ -47,7 +47,7 @@ try: from haiku.rag.chat.widgets.chat_history import ChatHistory, CitationWidget TEXTUAL_AVAILABLE = True -except ImportError: # pragma: no cover +except ImportError: TEXTUAL_AVAILABLE = False App = object # type: ignore SystemCommand = object # type: ignore diff --git a/haiku_rag_slim/haiku/rag/chat/widgets/context_modal.py b/haiku_rag_slim/haiku/rag/chat/widgets/context_modal.py index 6298bfb5..3dc74659 100644 --- a/haiku_rag_slim/haiku/rag/chat/widgets/context_modal.py +++ b/haiku_rag_slim/haiku/rag/chat/widgets/context_modal.py @@ -5,7 +5,7 @@ from textual.screen import ModalScreen from textual.widgets import Button, Markdown, Static -class ContextModal(ModalScreen): # pragma: no cover +class ContextModal(ModalScreen): """Modal screen for viewing session Q&A history.""" BINDINGS = [ diff --git a/haiku_rag_slim/haiku/rag/chat/widgets/document_filter_modal.py b/haiku_rag_slim/haiku/rag/chat/widgets/document_filter_modal.py index 6da412bf..45a05ebb 100644 --- a/haiku_rag_slim/haiku/rag/chat/widgets/document_filter_modal.py +++ b/haiku_rag_slim/haiku/rag/chat/widgets/document_filter_modal.py @@ -8,7 +8,7 @@ from textual.widgets import Button, Checkbox, Input, Static from haiku.rag.client import HaikuRAG -class DocumentFilterModal(ModalScreen): # pragma: no cover +class DocumentFilterModal(ModalScreen): """Modal screen for selecting documents to filter searches.""" BINDINGS = [ diff --git a/haiku_rag_slim/haiku/rag/inspector/__init__.py b/haiku_rag_slim/haiku/rag/inspector/__init__.py index 6eebb52d..bac3b5e8 100644 --- a/haiku_rag_slim/haiku/rag/inspector/__init__.py +++ b/haiku_rag_slim/haiku/rag/inspector/__init__.py @@ -1,6 +1,6 @@ try: from haiku.rag.inspector.app import run_inspector -except ImportError as e: # pragma: no cover +except ImportError as e: raise ImportError( "textual is not installed. Please install it with `pip install 'haiku.rag-slim[tui]'` or use the full haiku.rag package." ) from e diff --git a/haiku_rag_slim/haiku/rag/inspector/app.py b/haiku_rag_slim/haiku/rag/inspector/app.py index 6fc8d774..6a62ed12 100644 --- a/haiku_rag_slim/haiku/rag/inspector/app.py +++ b/haiku_rag_slim/haiku/rag/inspector/app.py @@ -21,12 +21,12 @@ try: from haiku.rag.inspector.widgets.search_modal import SearchModal TEXTUAL_AVAILABLE = True -except ImportError: # pragma: no cover +except ImportError: TEXTUAL_AVAILABLE = False App = object # type: ignore -class InspectorApp(App): # pragma: no cover +class InspectorApp(App): """Textual TUI for inspecting LanceDB data.""" TITLE = "haiku.rag DB Inspector" @@ -243,7 +243,7 @@ def run_inspector( db_path: Path | None = None, read_only: bool = False, before: datetime | None = None, -) -> None: # pragma: no cover +) -> None: """Run the inspector TUI. Args: diff --git a/haiku_rag_slim/haiku/rag/inspector/widgets/chunk_list.py b/haiku_rag_slim/haiku/rag/inspector/widgets/chunk_list.py index d690ce5f..c926e520 100644 --- a/haiku_rag_slim/haiku/rag/inspector/widgets/chunk_list.py +++ b/haiku_rag_slim/haiku/rag/inspector/widgets/chunk_list.py @@ -10,7 +10,7 @@ from haiku.rag.store.models import Chunk BATCH_SIZE = 50 -class ChunkList(VerticalScroll): # pragma: no cover +class ChunkList(VerticalScroll): """Widget for displaying and browsing chunks.""" can_focus = False diff --git a/haiku_rag_slim/haiku/rag/inspector/widgets/context_modal.py b/haiku_rag_slim/haiku/rag/inspector/widgets/context_modal.py index b3340d82..ad42edfa 100644 --- a/haiku_rag_slim/haiku/rag/inspector/widgets/context_modal.py +++ b/haiku_rag_slim/haiku/rag/inspector/widgets/context_modal.py @@ -13,7 +13,7 @@ if TYPE_CHECKING: from haiku.rag.store.models import Chunk -class ContextModal(Screen): # pragma: no cover +class ContextModal(Screen): """Modal screen for displaying how a chunk appears to agents.""" BINDINGS = [ diff --git a/haiku_rag_slim/haiku/rag/inspector/widgets/detail_view.py b/haiku_rag_slim/haiku/rag/inspector/widgets/detail_view.py index a3e16556..5b9c4e14 100644 --- a/haiku_rag_slim/haiku/rag/inspector/widgets/detail_view.py +++ b/haiku_rag_slim/haiku/rag/inspector/widgets/detail_view.py @@ -16,7 +16,7 @@ class ProvenanceData(Protocol): doc_item_refs: list[str] -class DetailView(VerticalScroll): # pragma: no cover +class DetailView(VerticalScroll): """Widget for displaying detailed content of documents or chunks.""" can_focus = True diff --git a/haiku_rag_slim/haiku/rag/inspector/widgets/document_list.py b/haiku_rag_slim/haiku/rag/inspector/widgets/document_list.py index e83d8286..2efd4992 100644 --- a/haiku_rag_slim/haiku/rag/inspector/widgets/document_list.py +++ b/haiku_rag_slim/haiku/rag/inspector/widgets/document_list.py @@ -10,7 +10,7 @@ from haiku.rag.store.models import Document BATCH_SIZE = 50 -class DocumentList(VerticalScroll): # pragma: no cover +class DocumentList(VerticalScroll): """Widget for displaying and browsing documents.""" can_focus = False diff --git a/haiku_rag_slim/haiku/rag/inspector/widgets/info_modal.py b/haiku_rag_slim/haiku/rag/inspector/widgets/info_modal.py index ed823c1d..96013434 100644 --- a/haiku_rag_slim/haiku/rag/inspector/widgets/info_modal.py +++ b/haiku_rag_slim/haiku/rag/inspector/widgets/info_modal.py @@ -14,7 +14,7 @@ if TYPE_CHECKING: from haiku.rag.client import HaikuRAG -class InfoModal(ModalScreen): # pragma: no cover +class InfoModal(ModalScreen): """Modal screen for displaying database information.""" BINDINGS = [ diff --git a/haiku_rag_slim/haiku/rag/inspector/widgets/search_modal.py b/haiku_rag_slim/haiku/rag/inspector/widgets/search_modal.py index a431c113..b6609309 100644 --- a/haiku_rag_slim/haiku/rag/inspector/widgets/search_modal.py +++ b/haiku_rag_slim/haiku/rag/inspector/widgets/search_modal.py @@ -11,7 +11,7 @@ from haiku.rag.inspector.widgets.detail_view import DetailView from haiku.rag.store.models import Chunk, SearchResult -class SearchModal(Screen): # pragma: no cover +class SearchModal(Screen): """Screen for searching chunks.""" BINDINGS = [ diff --git a/haiku_rag_slim/haiku/rag/inspector/widgets/visual_modal.py b/haiku_rag_slim/haiku/rag/inspector/widgets/visual_modal.py index eb09ba76..66fddbc6 100644 --- a/haiku_rag_slim/haiku/rag/inspector/widgets/visual_modal.py +++ b/haiku_rag_slim/haiku/rag/inspector/widgets/visual_modal.py @@ -15,7 +15,7 @@ if TYPE_CHECKING: from haiku.rag.store.models import Chunk -class VisualGroundingModal(Screen): # pragma: no cover +class VisualGroundingModal(Screen): """Modal screen for displaying visual grounding with bounding boxes.""" BINDINGS = [ diff --git a/pyproject.toml b/pyproject.toml index c8c9c9cc..dec0a341 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -131,6 +131,10 @@ filterwarnings = ["error", "ignore::UserWarning", "ignore::DeprecationWarning"] [tool.coverage.run] source = ["haiku_rag_slim"] +omit = [ + "haiku_rag_slim/haiku/rag/chat/*", + "haiku_rag_slim/haiku/rag/inspector/*", +] [tool.coverage.report] show_missing = true