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
« prev ^ index » next coverage.py v7.15.0, created at 2026-07-20 10:12 +0000
1from __future__ import annotations
3from dataclasses import dataclass, field
4from enum import StrEnum
5from typing import Any
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"
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"
30@dataclass(slots=True, frozen=True)
31class PersonInfo:
32 id: str
33 display_name: str
35 email: str | None = None
36 username: str | None = None
38 source_type: str | None = None
39 source_id: str | None = None
42@dataclass
43class GraphNode:
44 id: str
45 label: str
46 project: str | None = None
47 properties: dict[str, Any] = field(default_factory=dict)
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)
59@dataclass
60class SubGraph:
61 nodes: list[GraphNode] = field(default_factory=list)
62 edges: list[GraphEdge] = field(default_factory=list)