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

68 statements  

« prev     ^ index     » next       coverage.py v7.10.6, created at 2025-09-08 06:05 +0000

1"""Shared configuration types. 

2 

3This module defines shared TypedDict types for different configuration structures 

4used across the application. These types provide type safety and documentation 

5for configuration data structures. 

6""" 

7 

8from enum import Enum 

9from typing import Any, TypedDict 

10 

11 

12class SourceType(str, Enum): 

13 """Enum for supported source types.""" 

14 

15 PUBLICDOCS = "publicdocs" 

16 GIT = "git" 

17 CONFLUENCE = "confluence" 

18 JIRA = "jira" 

19 LOCALFILE = "localfile" 

20 

21 

22class GitConfig(TypedDict): 

23 """Configuration for Git repositories.""" 

24 

25 base_url: str 

26 branch: str 

27 include_paths: list[str] 

28 exclude_paths: list[str] 

29 file_types: list[str] 

30 max_file_size: int 

31 depth: int 

32 token: str | None 

33 

34 

35class ConfluenceConfig(TypedDict): 

36 """Configuration for Confluence spaces.""" 

37 

38 base_url: str 

39 space_key: str 

40 content_types: list[str] 

41 token: str 

42 email: str 

43 

44 

45class JiraConfig(TypedDict): 

46 """Configuration for Jira projects.""" 

47 

48 base_url: str 

49 project_key: str 

50 requests_per_minute: int 

51 page_size: int 

52 track_last_sync: bool 

53 api_token: str 

54 email: str 

55 issue_types: list[str] 

56 include_statuses: list[str] 

57 

58 

59class PublicDocsConfig(TypedDict): 

60 """Configuration for public documentation sources.""" 

61 

62 base_url: str 

63 version: str 

64 content_type: str 

65 path_pattern: str 

66 exclude_paths: list[str] 

67 

68 

69class SourcesConfigDict(TypedDict): 

70 """Configuration for all sources.""" 

71 

72 publicdocs: dict[str, PublicDocsConfig] 

73 git: dict[str, GitConfig] 

74 confluence: dict[str, ConfluenceConfig] 

75 jira: dict[str, JiraConfig] 

76 

77 

78class SemanticAnalysisConfigDict(TypedDict): 

79 """Configuration for semantic analysis.""" 

80 

81 num_topics: int 

82 lda_passes: int 

83 spacy_model: str 

84 

85 

86class MarkItDownConfigDict(TypedDict): 

87 """Configuration for MarkItDown settings.""" 

88 

89 enable_llm_descriptions: bool 

90 llm_model: str 

91 llm_endpoint: str 

92 

93 

94class FileConversionConfigDict(TypedDict): 

95 """Configuration for file conversion.""" 

96 

97 max_file_size: int 

98 conversion_timeout: int 

99 markitdown: MarkItDownConfigDict 

100 

101 

102class QdrantConfigDict(TypedDict): 

103 """Configuration for Qdrant vector database.""" 

104 

105 url: str 

106 api_key: str | None 

107 collection_name: str 

108 

109 

110class GlobalConfigDict(TypedDict): 

111 """Global configuration settings.""" 

112 

113 chunking: dict[str, Any] 

114 embedding: dict[str, Any] 

115 semantic_analysis: SemanticAnalysisConfigDict 

116 sources: dict[str, Any] 

117 state_management: dict[str, Any] 

118 file_conversion: FileConversionConfigDict 

119 qdrant: QdrantConfigDict | None