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
« prev ^ index » next coverage.py v7.8.2, created at 2025-06-04 05:50 +0000
1"""Configuration for Git connector."""
3from pydantic import BaseModel, ConfigDict, Field, field_validator
5from qdrant_loader.config.source_config import SourceConfig
8class GitAuthConfig(BaseModel):
9 """Configuration for Git authentication."""
11 model_config = ConfigDict(arbitrary_types_allowed=True, extra="forbid")
13 token: str = Field(..., description="Authentication token")
16class GitRepoConfig(SourceConfig):
17 """Configuration for a Git repository."""
19 model_config = ConfigDict(arbitrary_types_allowed=True, extra="forbid")
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")
37 temp_dir: str | None = Field(
38 None, description="Temporary directory where the repository is cloned"
39 )
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
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