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

21 statements  

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

1""" 

2Preprocessed document result class. 

3""" 

4 

5from __future__ import annotations 

6 

7from dataclasses import dataclass, field 

8from datetime import UTC, datetime 

9from typing import Any 

10 

11from lexigram.ai.rag.preprocessing.types import ExtractedImage, ExtractedTable 

12 

13 

14@dataclass 

15class PreprocessedDocument: 

16 """Result of document preprocessing. 

17 

18 Attributes: 

19 content: Main text content. 

20 metadata: Document metadata. 

21 raw_content: Original raw content. 

22 preprocessing_stats: Statistics about preprocessing. 

23 """ 

24 

25 content: str = "" 

26 metadata: Any = None 

27 raw_content: str | None = None 

28 preprocessing_stats: dict[str, Any] = field(default_factory=dict) 

29 text: str = "" 

30 images: list[ExtractedImage] = field(default_factory=list) 

31 tables: list[ExtractedTable] = field(default_factory=list) 

32 timestamp: datetime = field(default_factory=lambda: datetime.now(UTC)) 

33 processing_time: float | None = None 

34 

35 def __post_init__(self) -> Any: 

36 if self.text and not self.content: 

37 self.content = self.text 

38 if self.content and not self.text: 

39 self.text = self.content