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
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-25 07:19 +0800
1"""Factory functions for creating chunkers.
3.. warning::
4 This module is designed to work as a standalone library.
5 It should NOT import from any Lexigram framework modules.
7The :func:`create_chunker` function delegates to
8:class:`~lexigram.ai.rag.chunking.strategy_registry.ChunkingStrategyRegistry`
9for extensible strategy dispatch.
10"""
12from __future__ import annotations
14from typing import TYPE_CHECKING, Any
16from lexigram.ai.rag.chunking.types import ChunkingConfig, ChunkingStrategy
18if TYPE_CHECKING:
19 from lexigram.ai.rag.chunking.base import AbstractChunker
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.
29 Convenience wrapper around :class:`ChunkingStrategyRegistry`.
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).
37 Returns:
38 A configured :class:`Chunker` instance.
40 Raises:
41 ValueError: If no chunker is registered for the given *strategy*.
42 """
43 from lexigram.ai.rag.chunking.strategy_registry import ChunkingStrategyRegistry
45 registry = ChunkingStrategyRegistry.with_defaults()
46 return registry.create_chunker(strategy, config, **kwargs)