ReviewLlama/src/reviewllama/configs.py

50 lines
1.2 KiB
Python
Raw Normal View History

2025-06-08 06:31:34 -04:00
from dataclasses import dataclass
from pathlib import Path
from typing import List
2025-06-08 06:31:34 -04:00
@dataclass(frozen=True)
class OllamaConfig:
"""Configuration for Ollama client."""
model: str
2025-06-18 14:26:21 -04:00
base_url: str
system_prompt: str
2025-06-08 06:31:34 -04:00
@dataclass(frozen=True)
class ReviewConfig:
"""Complete configuration for ReviewLlama."""
paths: List[Path]
ollama: OllamaConfig
2025-06-09 21:54:37 -04:00
base_branch: str
2025-06-08 06:31:34 -04:00
def create_ollama_config(
2025-06-18 14:26:21 -04:00
model: str, server_url: str, system_prompt: str
2025-06-08 06:31:34 -04:00
) -> OllamaConfig:
"""Create OllamaConfig with validated parameters."""
2025-06-18 14:26:21 -04:00
return OllamaConfig(model=model, base_url=server_url, system_prompt=system_prompt)
2025-06-08 06:31:34 -04:00
def create_review_config(
2025-06-09 21:54:37 -04:00
paths: List[Path], ollama_config: OllamaConfig, base_branch: str
2025-06-08 06:31:34 -04:00
) -> ReviewConfig:
"""Create complete ReviewConfig from validated components."""
2025-06-09 21:54:37 -04:00
return ReviewConfig(paths=paths, ollama=ollama_config, base_branch=base_branch)
2025-06-08 06:31:34 -04:00
def create_config_from_vars(
2025-06-09 21:54:37 -04:00
paths: List[Path],
model: str,
server_url: str,
2025-06-18 14:26:21 -04:00
system_prompt: str,
2025-06-09 21:54:37 -04:00
base_branch: str,
2025-06-08 06:31:34 -04:00
):
ollama_config = OllamaConfig(
2025-06-18 14:26:21 -04:00
model=model, base_url=server_url, system_prompt=system_prompt
2025-06-08 06:31:34 -04:00
)
2025-06-09 21:54:37 -04:00
return create_review_config(paths, ollama_config, base_branch)