Coverage for /home/admin/Documents/AI/applications/lexigram-dev/lexigram/experimental/ai/lexigram-ai-rag/src/lexigram/ai/rag/routing/strategies/base.py: 100%

5 statements  

« prev     ^ index     » next       coverage.py v7.15.4, created at 2026-08-25 07:19 +0800

1"""Base routing strategy protocol.""" 

2 

3from __future__ import annotations 

4 

5from typing import Protocol 

6 

7from lexigram.ai.rag.routing.types import ( 

8 DataSource, 

9 QueryFeatures, 

10 RoutingDecision, 

11) 

12 

13 

14class RoutingStrategy(Protocol): 

15 """Protocol for routing strategies. 

16 

17 All routing strategies must implement the `route` method that takes 

18 query features and available data sources, and returns a routing decision. 

19 

20 Example: 

21 ```python 

22 class MyRouter: 

23 async def route( 

24 self, 

25 features: QueryFeatures, 

26 available_sources: list[DataSourceProtocol] 

27 ) -> RoutingDecision: 

28 # Custom routing logic 

29 return RoutingDecision(...) 

30 ``` 

31 """ 

32 

33 async def route( 

34 self, 

35 features: QueryFeatures, 

36 available_sources: list[DataSource], 

37 ) -> RoutingDecision: 

38 """Route a query to appropriate data sources. 

39 

40 Args: 

41 features: Extracted query features. 

42 available_sources: List of available data sources. 

43 

44 Returns: 

45 Routing decision with selected sources and strategy. 

46 """ 

47 ...