"""Project-level chunking defaults and validation.""" from __future__ import annotations from dataclasses import dataclass DEFAULT_CHUNK_SIZE = 512 DEFAULT_CHUNK_OVERLAP = 64 @dataclass(frozen=True) class ChunkConfig: size: int overlap: int def resolve_chunk_config( *, chunk_size: int | None = None, chunk_overlap: int | None = None, ) -> ChunkConfig: size = DEFAULT_CHUNK_SIZE if chunk_size is None else chunk_size overlap = DEFAULT_CHUNK_OVERLAP if chunk_overlap is None else chunk_overlap if size <= 0: raise ValueError("chunk_size must be greater than zero") if overlap < 0: raise ValueError("chunk_overlap cannot be negative") if overlap >= size: raise ValueError("chunk_overlap must be smaller than chunk_size") return ChunkConfig(size=size, overlap=overlap)