Coverage for src/qdrant_loader/config/graph.py: 100%

17 statements  

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

1"""Graph configuration settings. 

2 

3This module defines the Graph-specific configuration settings. 

4""" 

5 

6from pydantic import BaseModel, Field, PositiveInt, SecretStr 

7 

8 

9class GraphConnectionConfig(BaseModel): 

10 host: str = Field(default="localhost", min_length=1, description="Graph DB host") 

11 port: int = Field(default=6379, ge=1, le=65535, description="Graph DB port") 

12 password: SecretStr | None = Field(default=None, description="Graph DB password") 

13 

14 

15class GraphPoolConfig(BaseModel): 

16 max_connections: PositiveInt = Field(default=10, description="Max connections") 

17 

18 

19class GraphConfig(BaseModel): 

20 """Configuration for Graph database.""" 

21 

22 enabled: bool = Field(default=False, description="Enable graph processing") 

23 backend: str = Field( 

24 default="falkordb", min_length=1, description="Graph backend type" 

25 ) 

26 

27 connection: GraphConnectionConfig = Field( 

28 default_factory=GraphConnectionConfig, description="Connection settings" 

29 ) 

30 

31 graph_name: str = Field( 

32 default="default_graph", min_length=1, description="Graph name / namespace" 

33 ) 

34 

35 pool: GraphPoolConfig = Field( 

36 default_factory=GraphPoolConfig, description="Connection pool settings" 

37 ) 

38 

39 def store_kwargs(self) -> dict: 

40 """Kwargs for qdrant_loader_core.graph.get_graph_store().""" 

41 return { 

42 "host": self.connection.host, 

43 "port": self.connection.port, 

44 "password": ( 

45 self.connection.password.get_secret_value() 

46 if self.connection.password is not None 

47 else None 

48 ), 

49 "graph_name": self.graph_name, 

50 "max_connections": self.pool.max_connections, 

51 } 

52 

53 def to_dict(self) -> dict: 

54 """Convert config to dictionary (useful for client init).""" 

55 return { 

56 "enabled": self.enabled, 

57 "backend": self.backend, 

58 "host": self.connection.host, 

59 "port": self.connection.port, 

60 "password": self.connection.password, # keep SecretStr; call get_secret_value() at client init only 

61 "graph_name": self.graph_name, 

62 "max_connections": self.pool.max_connections, 

63 }