Coverage for src/semware/config.py: 92%
25 statements
« prev ^ index » next coverage.py v7.10.6, created at 2025-09-09 02:15 -0700
« prev ^ index » next coverage.py v7.10.6, created at 2025-09-09 02:15 -0700
1"""Configuration management for SemWare."""
3from pathlib import Path
5from pydantic import Field
6from pydantic_settings import SettingsConfigDict
8try:
9 from pydantic_settings import BaseSettings
10except ImportError:
11 from pydantic import BaseSettings
14class Settings(BaseSettings):
15 """Application settings."""
17 # API Configuration
18 app_name: str = Field(default="SemWare", env="APP_NAME")
19 app_version: str = Field(default="0.1.0", env="APP_VERSION")
20 debug: bool = Field(default=False, env="DEBUG")
22 # API Key Authentication
23 api_key: str = Field(default="your-secret-api-key", env="API_KEY")
25 # Database Configuration
26 db_path: Path = Field(default=Path("./data"), env="DB_PATH")
28 # Model Configuration
29 embedding_model_name: str = Field(
30 default="all-MiniLM-L6-v2", env="EMBEDDING_MODEL_NAME"
31 )
32 max_tokens_per_batch: int = Field(default=2000, env="MAX_TOKENS_PER_BATCH")
33 embedding_dimension: int = Field(default=384, env="EMBEDDING_DIMENSION")
35 # Server Configuration
36 host: str = Field(default="0.0.0.0", env="HOST")
37 port: int = Field(default=8000, env="PORT")
38 workers: int = Field(default=1, env="WORKERS")
40 # Logging Configuration
41 log_level: str = Field(default="INFO", env="LOG_LEVEL")
42 log_file: str | None = Field(default=None, env="LOG_FILE")
44 model_config = SettingsConfigDict(
45 env_file=".env",
46 env_file_encoding="utf-8",
47 case_sensitive=False,
48 extra="ignore",
49 )
52def get_settings() -> Settings:
53 """Get application settings."""
54 return Settings()
57# Global settings instance
58settings = get_settings()