Abhishek
Add all folders and files
f9a9b47
Raw
History Blame Contribute Delete
1.54 kB
from __future__ import annotations
from dataclasses import dataclass
from pathlib import Path
import os
@dataclass(frozen=True)
class AppConfig:
project_key: str
app_mode: str
root_dir: Path
data_dir: Path
sqlite_path: Path
artifact_dir: Path
cache_dir: Path
model_registry_path: Path
def _env_path(name: str, default: str) -> Path:
return Path(os.environ.get(name, default)).expanduser().resolve()
def load_app_config(project_key: str = 'p1', data_subdir: str | None = None) -> AppConfig:
root_dir = Path(os.environ.get('APP_ROOT_DIR', Path.cwd())).resolve()
data_root = _env_path('DATA_DIR', str(root_dir / 'data'))
if data_subdir:
data_dir = (data_root / data_subdir).resolve()
else:
data_dir = data_root
sqlite_path = Path(os.environ.get('SQLITE_PATH', data_dir / 'sqlite' / f'{project_key}.sqlite3')).expanduser().resolve()
artifact_dir = Path(os.environ.get('ARTIFACT_DIR', data_dir / 'artifacts' / project_key)).expanduser().resolve()
cache_dir = _env_path('MODEL_CACHE_DIR', str(root_dir / 'models'))
model_registry_path = _env_path('MODEL_REGISTRY_PATH', str(root_dir / 'configs' / 'model_registry.yaml'))
app_mode = os.environ.get('APP_MODE', 'dev')
return AppConfig(
project_key=project_key,
app_mode=app_mode,
root_dir=root_dir,
data_dir=data_dir,
sqlite_path=sqlite_path,
artifact_dir=artifact_dir,
cache_dir=cache_dir,
model_registry_path=model_registry_path,
)