Spaces:
Sleeping
Sleeping
File size: 2,359 Bytes
eafee5b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | """
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)
|