Coverage for services/training/src/config/settings.py: 90%
41 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-25 16:18 +0000
« prev ^ index » next coverage.py v7.11.0, created at 2025-10-25 16:18 +0000
1"""Settings configuration for training service."""
3import os
4from pydantic_settings import BaseSettings
5from typing import List
8class Settings(BaseSettings):
9 """Training service configuration settings."""
11 service_name: str = "training"
12 service_port: int = 8002
13 environment: str = "development"
14 cors_origins: List[str] = ["*"]
16 # Database configuration from environment variables
17 postgres_user: str = os.getenv("POSTGRES_USER", "heimdall_user")
18 postgres_password: str = os.getenv("POSTGRES_PASSWORD", "changeme")
19 postgres_host: str = os.getenv("POSTGRES_HOST", "postgres")
20 postgres_port: int = int(os.getenv("POSTGRES_PORT", "5432"))
21 postgres_db: str = os.getenv("POSTGRES_DB", "heimdall")
23 # Construct database URL from components
24 @property
25 def database_url(self) -> str:
26 return f"postgresql://{self.postgres_user}:{self.postgres_password}@{self.postgres_host}:{self.postgres_port}/{self.postgres_db}"
28 redis_url: str = "redis://redis:6379/0"
30 # MLflow configuration - also built from environment variables
31 mlflow_db_user: str = os.getenv("POSTGRES_USER", "heimdall_user")
32 mlflow_db_password: str = os.getenv("POSTGRES_PASSWORD", "changeme")
33 mlflow_db_host: str = os.getenv("POSTGRES_HOST", "postgres")
34 mlflow_db_port: int = int(os.getenv("POSTGRES_PORT", "5432"))
36 @property
37 def mlflow_tracking_uri(self) -> str:
38 return f"postgresql://{self.mlflow_db_user}:{self.mlflow_db_password}@{self.mlflow_db_host}:{self.mlflow_db_port}/mlflow_db"
40 @property
41 def mlflow_backend_store_uri(self) -> str:
42 return f"postgresql://{self.mlflow_db_user}:{self.mlflow_db_password}@{self.mlflow_db_host}:{self.mlflow_db_port}/mlflow_db"
44 @property
45 def mlflow_registry_uri(self) -> str:
46 return f"postgresql://{self.mlflow_db_user}:{self.mlflow_db_password}@{self.mlflow_db_host}:{self.mlflow_db_port}/mlflow_db"
48 mlflow_artifact_uri: str = "s3://heimdall-mlflow"
49 mlflow_s3_endpoint_url: str = "http://minio:9000"
50 mlflow_s3_access_key_id: str = "minioadmin"
51 mlflow_s3_secret_access_key: str = "minioadmin"
52 mlflow_default_artifact_root: str = "s3://heimdall-mlflow"
53 mlflow_experiment_name: str = "heimdall-localization"
54 mlflow_run_name_prefix: str = "rf-localization"
56 class Config:
57 env_file = ".env"
58 case_sensitive = False
61settings = Settings()