Coverage for src/qdrant_loader_mcp_server/search/hybrid/components/facets.py: 72%
18 statements
« prev ^ index » next coverage.py v7.10.6, created at 2025-09-08 06:06 +0000
« prev ^ index » next coverage.py v7.10.6, created at 2025-09-08 06:06 +0000
1from __future__ import annotations
3from collections.abc import Sequence
4from typing import TYPE_CHECKING, Any
6if TYPE_CHECKING:
7 from ...components.models import HybridSearchResult
10def suggest_refinements(
11 engine: Any, results: Sequence[HybridSearchResult], filters: list
12) -> list[dict[str, Any]]:
13 """Delegate to FacetedSearchEngine.suggest_refinements."""
14 # Runtime validation to provide immediate, actionable errors
15 if not hasattr(engine, "suggest_refinements"):
16 raise AttributeError(
17 "Engine is missing required method 'suggest_refinements(results, filters)'."
18 )
19 if not callable(engine.suggest_refinements):
20 raise TypeError("Engine.suggest_refinements must be callable.")
22 return engine.suggest_refinements(results, filters)
25def generate_facets(engine: Any, results: Sequence[HybridSearchResult]) -> list:
26 """Delegate to facet generator to produce facets for results."""
27 # Runtime validation to ensure facet generator capability exists
28 if not hasattr(engine, "facet_generator"):
29 raise AttributeError("Engine is missing required attribute 'facet_generator'.")
30 facet_generator = engine.facet_generator
31 if not hasattr(facet_generator, "generate_facets"):
32 raise AttributeError(
33 "Engine.facet_generator is missing required method 'generate_facets(results)'."
34 )
35 if not callable(facet_generator.generate_facets):
36 raise TypeError("Engine.facet_generator.generate_facets must be callable.")
38 return facet_generator.generate_facets(results)