Coverage for src/qdrant_loader_core/graph/models.py: 100%

47 statements  

« prev     ^ index     » next       coverage.py v7.15.0, created at 2026-07-20 10:12 +0000

1from __future__ import annotations 

2 

3from dataclasses import dataclass, field 

4from enum import StrEnum 

5from typing import Any 

6 

7 

8class CoreNodeLabel(StrEnum): 

9 DOCUMENT = "Document" 

10 PERSON = "Person" 

11 CONTAINER = "Container" 

12 LABEL = "Label" 

13 CONCEPT = "Concept" 

14 CHUNK = "Chunk" 

15 URL = "URL" 

16 ATTACHMENT = "Attachment" 

17 

18 

19class CoreEdgeType(StrEnum): 

20 AUTHORED_BY = "AUTHORED_BY" 

21 BELONGS_TO = "BELONGS_TO" 

22 HAS_LABEL = "HAS_LABEL" 

23 LINKS_TO = "LINKS_TO" 

24 PART_OF = "PART_OF" 

25 HAS_CHUNK = "HAS_CHUNK" 

26 HAS_CHILD = "HAS_CHILD" 

27 HAS_ATTACHMENT = "HAS_ATTACHMENT" 

28 

29 

30@dataclass(slots=True, frozen=True) 

31class PersonInfo: 

32 id: str 

33 display_name: str 

34 

35 email: str | None = None 

36 username: str | None = None 

37 

38 source_type: str | None = None 

39 source_id: str | None = None 

40 

41 

42@dataclass 

43class GraphNode: 

44 id: str 

45 label: str 

46 project: str | None = None 

47 properties: dict[str, Any] = field(default_factory=dict) 

48 

49 

50@dataclass 

51class GraphEdge: 

52 source: str 

53 target: str 

54 edge_type: str 

55 project: str | None = None 

56 properties: dict[str, Any] = field(default_factory=dict) 

57 

58 

59@dataclass 

60class SubGraph: 

61 nodes: list[GraphNode] = field(default_factory=list) 

62 edges: list[GraphEdge] = field(default_factory=list)