My-Life-Dashboard / utils /data_utils.py
vanshs055's picture
Upload 11 files
1ea6f43 verified
"""Utility helpers for data persistence and shared logic."""
import json
from pathlib import Path
from typing import Any
DATA_DIR = Path(__file__).resolve().parent.parent / "data"
DATA_DIR.mkdir(exist_ok=True)
def _file_path(filename: str) -> Path:
"""Return path to a data file inside DATA_DIR."""
return DATA_DIR / filename
def ensure_data_file(filename: str, default: Any) -> None:
"""Create a data file with *default* content if it does not exist."""
fp = _file_path(filename)
if not fp.exists():
save_data(default, filename)
def load_data(filename: str, default: Any):
"""Load JSON data; create with *default* if missing."""
ensure_data_file(filename, default)
with open(_file_path(filename), "r", encoding="utf-8") as f:
return json.load(f)
def save_data(data: Any, filename: str) -> None:
"""Write JSON data atomically."""
tmp = _file_path(filename).with_suffix(".tmp")
with open(tmp, "w", encoding="utf-8") as f:
json.dump(data, f, indent=2, ensure_ascii=False)
tmp.replace(_file_path(filename))