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
« prev ^ index » next coverage.py v7.10.6, created at 2025-09-08 06:05 +0000
1"""Shared configuration types.
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"""
8from enum import Enum
9from typing import Any, TypedDict
12class SourceType(str, Enum):
13 """Enum for supported source types."""
15 PUBLICDOCS = "publicdocs"
16 GIT = "git"
17 CONFLUENCE = "confluence"
18 JIRA = "jira"
19 LOCALFILE = "localfile"
22class GitConfig(TypedDict):
23 """Configuration for Git repositories."""
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
35class ConfluenceConfig(TypedDict):
36 """Configuration for Confluence spaces."""
38 base_url: str
39 space_key: str
40 content_types: list[str]
41 token: str
42 email: str
45class JiraConfig(TypedDict):
46 """Configuration for Jira projects."""
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]
59class PublicDocsConfig(TypedDict):
60 """Configuration for public documentation sources."""
62 base_url: str
63 version: str
64 content_type: str
65 path_pattern: str
66 exclude_paths: list[str]
69class SourcesConfigDict(TypedDict):
70 """Configuration for all sources."""
72 publicdocs: dict[str, PublicDocsConfig]
73 git: dict[str, GitConfig]
74 confluence: dict[str, ConfluenceConfig]
75 jira: dict[str, JiraConfig]
78class SemanticAnalysisConfigDict(TypedDict):
79 """Configuration for semantic analysis."""
81 num_topics: int
82 lda_passes: int
83 spacy_model: str
86class MarkItDownConfigDict(TypedDict):
87 """Configuration for MarkItDown settings."""
89 enable_llm_descriptions: bool
90 llm_model: str
91 llm_endpoint: str
94class FileConversionConfigDict(TypedDict):
95 """Configuration for file conversion."""
97 max_file_size: int
98 conversion_timeout: int
99 markitdown: MarkItDownConfigDict
102class QdrantConfigDict(TypedDict):
103 """Configuration for Qdrant vector database."""
105 url: str
106 api_key: str | None
107 collection_name: str
110class GlobalConfigDict(TypedDict):
111 """Global configuration settings."""
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