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
« 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
5import dotenv
7from mealie.core.settings import (
8 AppDirectories,
9 AppLoggingSettings,
10 AppSettings,
11 app_settings_constructor,
12)
14CWD = Path(__file__).parent
15BASE_DIR = CWD.parent.parent
16ENV = BASE_DIR.joinpath(".env")
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")
24def determine_data_dir() -> Path:
25 global PRODUCTION, TESTING, BASE_DIR, DATA_DIR
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")
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")
33 return BASE_DIR.joinpath("dev", "data")
36@lru_cache
37def get_app_dirs() -> AppDirectories:
38 return AppDirectories(determine_data_dir())
41@lru_cache
42def get_app_settings() -> AppSettings:
43 return app_settings_constructor(env_file=ENV, production=PRODUCTION, data_dir=determine_data_dir())
46@lru_cache
47def get_logging_settings() -> AppLoggingSettings:
48 return AppLoggingSettings(PRODUCTION=PRODUCTION)