GridSenseAI-Hackathon / src /runtime_config.py
Beledevere's picture
Fresh deployment without parquet
eafee5b
Raw History Blame Contribute Delete
2.36 kB
"""
Runtime path configuration for keeping project artifacts on the external drive.
"""
from __future__ import annotations
import os
from pathlib import Path
PROJECT_ROOT = Path(__file__).resolve().parents[1]
RUNTIME_ROOT = Path(os.environ.get("GRIDSENSE_RUNTIME_ROOT", PROJECT_ROOT / ".runtime")).resolve()
HOME_DIR = RUNTIME_ROOT / "home"
CACHE_DIR = RUNTIME_ROOT / "cache"
TMP_DIR = RUNTIME_ROOT / "tmp"
def configure_runtime() -> dict[str, str]:
"""Force common ML/tooling caches into the project runtime directory."""
paths = {
"GRIDSENSE_RUNTIME_ROOT": str(RUNTIME_ROOT),
"HOME": str(HOME_DIR),
"XDG_CACHE_HOME": str(CACHE_DIR),
"TMPDIR": str(TMP_DIR),
"HF_HOME": str(CACHE_DIR / "huggingface"),
"HUGGINGFACE_HUB_CACHE": str(CACHE_DIR / "huggingface" / "hub"),
"TRANSFORMERS_CACHE": str(CACHE_DIR / "huggingface" / "transformers"),
"TORCH_HOME": str(CACHE_DIR / "torch"),
"HF_DATASETS_CACHE": str(CACHE_DIR / "huggingface" / "datasets"),
"MPLCONFIGDIR": str(CACHE_DIR / "matplotlib"),
"PIP_CACHE_DIR": str(CACHE_DIR / "pip"),
"PYTHONPYCACHEPREFIX": str(CACHE_DIR / "pycache"),
"STREAMLIT_CONFIG_DIR": str(PROJECT_ROOT / ".streamlit"),
"HF_HUB_DISABLE_TELEMETRY": "1",
"STREAMLIT_BROWSER_GATHER_USAGE_STATS": "false",
"PYTHONNOUSERSITE": "1",
}
for key, value in paths.items():
os.environ[key] = value
for directory in {
RUNTIME_ROOT,
HOME_DIR,
CACHE_DIR,
TMP_DIR,
Path(paths["HF_HOME"]),
Path(paths["HUGGINGFACE_HUB_CACHE"]),
Path(paths["TRANSFORMERS_CACHE"]),
Path(paths["TORCH_HOME"]),
Path(paths["HF_DATASETS_CACHE"]),
Path(paths["MPLCONFIGDIR"]),
Path(paths["PIP_CACHE_DIR"]),
Path(paths["PYTHONPYCACHEPREFIX"]),
Path(paths["STREAMLIT_CONFIG_DIR"]),
}:
directory.mkdir(parents=True, exist_ok=True)
return paths
def describe_runtime() -> str:
paths = configure_runtime()
return (
f"runtime_root={paths['GRIDSENSE_RUNTIME_ROOT']} "
f"hf_home={paths['HF_HOME']} "
f"torch_home={paths['TORCH_HOME']} "
f"tmpdir={paths['TMPDIR']}"
)
def chdir_project_root() -> str:
os.chdir(PROJECT_ROOT)
return str(PROJECT_ROOT)