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

1"""Settings configuration for training service.""" 

2 

3import os 

4from pydantic_settings import BaseSettings 

5from typing import List 

6 

7 

8class Settings(BaseSettings): 

9 """Training service configuration settings.""" 

10 

11 service_name: str = "training" 

12 service_port: int = 8002 

13 environment: str = "development" 

14 cors_origins: List[str] = ["*"] 

15 

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") 

22 

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}" 

27 

28 redis_url: str = "redis://redis:6379/0" 

29 

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")) 

35 

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" 

39 

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" 

43 

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" 

47 

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" 

55 

56 class Config: 

57 env_file = ".env" 

58 case_sensitive = False 

59 

60 

61settings = Settings()