Coverage for /home/admin/Documents/AI/applications/lexigram-dev/lexigram/experimental/ai/lexigram-ai-rag/src/lexigram/ai/rag/chunking/factory.py: 57%

7 statements  

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

1"""Factory functions for creating chunkers. 

2 

3.. warning:: 

4 This module is designed to work as a standalone library. 

5 It should NOT import from any Lexigram framework modules. 

6 

7The :func:`create_chunker` function delegates to 

8:class:`~lexigram.ai.rag.chunking.strategy_registry.ChunkingStrategyRegistry` 

9for extensible strategy dispatch. 

10""" 

11 

12from __future__ import annotations 

13 

14from typing import TYPE_CHECKING, Any 

15 

16from lexigram.ai.rag.chunking.types import ChunkingConfig, ChunkingStrategy 

17 

18if TYPE_CHECKING: 

19 from lexigram.ai.rag.chunking.base import AbstractChunker 

20 

21 

22def create_chunker( 

23 strategy: ChunkingStrategy = ChunkingStrategy.FIXED_SIZE, 

24 config: ChunkingConfig | None = None, 

25 **kwargs: Any, 

26) -> AbstractChunker: 

27 """Create a chunker instance for the given strategy. 

28 

29 Convenience wrapper around :class:`ChunkingStrategyRegistry`. 

30 

31 Args: 

32 strategy: Which chunking strategy to use. 

33 config: Optional chunking configuration. 

34 **kwargs: Additional keyword arguments forwarded to the chunker 

35 constructor (override config defaults). 

36 

37 Returns: 

38 A configured :class:`Chunker` instance. 

39 

40 Raises: 

41 ValueError: If no chunker is registered for the given *strategy*. 

42 """ 

43 from lexigram.ai.rag.chunking.strategy_registry import ChunkingStrategyRegistry 

44 

45 registry = ChunkingStrategyRegistry.with_defaults() 

46 return registry.create_chunker(strategy, config, **kwargs)