Coverage for src/qdrant_loader/connectors/git/config.py: 93%

27 statements  

« prev     ^ index     » next       coverage.py v7.8.2, created at 2025-06-04 05:50 +0000

1"""Configuration for Git connector.""" 

2 

3from pydantic import BaseModel, ConfigDict, Field, field_validator 

4 

5from qdrant_loader.config.source_config import SourceConfig 

6 

7 

8class GitAuthConfig(BaseModel): 

9 """Configuration for Git authentication.""" 

10 

11 model_config = ConfigDict(arbitrary_types_allowed=True, extra="forbid") 

12 

13 token: str = Field(..., description="Authentication token") 

14 

15 

16class GitRepoConfig(SourceConfig): 

17 """Configuration for a Git repository.""" 

18 

19 model_config = ConfigDict(arbitrary_types_allowed=True, extra="forbid") 

20 

21 branch: str = Field(default="main", description="Branch to clone") 

22 include_paths: list[str] = Field( 

23 default_factory=list, description="Paths to include in the repository" 

24 ) 

25 exclude_paths: list[str] = Field( 

26 default_factory=list, description="Paths to exclude from the repository" 

27 ) 

28 file_types: list[str] = Field( 

29 default_factory=list, description="File types to process" 

30 ) 

31 max_file_size: int = Field( 

32 default=1048576, description="Maximum file size in bytes" 

33 ) # 1MB 

34 depth: int = Field(default=1, description="Depth of the repository to clone") 

35 token: str = Field(..., description="Authentication token for the repository") 

36 

37 temp_dir: str | None = Field( 

38 None, description="Temporary directory where the repository is cloned" 

39 ) 

40 

41 @field_validator("base_url") 

42 @classmethod 

43 def validate_url(cls, v: str) -> str: 

44 """Validate repository URL.""" 

45 if not v: 

46 raise ValueError("Repository URL cannot be empty") 

47 return v 

48 

49 @field_validator("file_types") 

50 @classmethod 

51 def validate_file_types(cls, v: list[str]) -> list[str]: 

52 """Validate file types.""" 

53 if not v: 

54 raise ValueError("At least one file type must be specified") 

55 return v