Coverage for opt/mealie/lib/python3.12/site-packages/mealie/core/config.py: 87%

27 statements  

« prev     ^ index     » next       coverage.py v7.15.2, created at 2026-10-07 03:04 +0000

1import os 

2from functools import lru_cache 

3from pathlib import Path 

4 

5import dotenv 

6 

7from mealie.core.settings import ( 

8 AppDirectories, 

9 AppLoggingSettings, 

10 AppSettings, 

11 app_settings_constructor, 

12) 

13 

14CWD = Path(__file__).parent 

15BASE_DIR = CWD.parent.parent 

16ENV = BASE_DIR.joinpath(".env") 

17 

18dotenv.load_dotenv(ENV) 

19PRODUCTION = os.getenv("PRODUCTION", "True").lower() in ["true", "1"] 

20TESTING = os.getenv("TESTING", "False").lower() in ["true", "1"] 

21DATA_DIR = os.getenv("DATA_DIR") 

22 

23 

24def determine_data_dir() -> Path: 

25 global PRODUCTION, TESTING, BASE_DIR, DATA_DIR 

26 

27 if TESTING: 27 ↛ 28line 27 didn't jump to line 28 because the condition on line 27 was never true

28 return BASE_DIR.joinpath(DATA_DIR if DATA_DIR else "tests/.temp") 

29 

30 if PRODUCTION: 30 ↛ 33line 30 didn't jump to line 33 because the condition on line 30 was always true

31 return Path(DATA_DIR if DATA_DIR else "/app/data") 

32 

33 return BASE_DIR.joinpath("dev", "data") 

34 

35 

36@lru_cache 

37def get_app_dirs() -> AppDirectories: 

38 return AppDirectories(determine_data_dir()) 

39 

40 

41@lru_cache 

42def get_app_settings() -> AppSettings: 

43 return app_settings_constructor(env_file=ENV, production=PRODUCTION, data_dir=determine_data_dir()) 

44 

45 

46@lru_cache 

47def get_logging_settings() -> AppLoggingSettings: 

48 return AppLoggingSettings(PRODUCTION=PRODUCTION)