# utils/paths.py from pathlib import Path import os, re, uuid, shutil APP_ROOT = Path(__file__).resolve().parents[1] DATA_ROOT = APP_ROOT / "data" TMP_ROOT = APP_ROOT / "tmp" for p in (DATA_ROOT, TMP_ROOT, APP_ROOT / ".hf", APP_ROOT / ".torch"): p.mkdir(parents=True, exist_ok=True) os.environ.setdefault("HF_HOME", str(APP_ROOT / ".hf")) os.environ.setdefault("TORCH_HOME", str(APP_ROOT / ".torch")) def safe_name(name: str, default="file"): base = re.sub(r"[^A-Za-z0-9._-]+", "_", (name or default)) return (base or default)[:120] def job_dir(prefix="job"): d = DATA_ROOT / f"{prefix}-{uuid.uuid4().hex[:8]}" d.mkdir(parents=True, exist_ok=True) return d def disk_stats(p: Path = APP_ROOT) -> str: try: total, used, free = shutil.disk_usage(str(p)) mb = lambda x: x // (1024 * 1024) return f"disk(total={mb(total)}MB, used={mb(used)}MB, free={mb(free)}MB)" except Exception: return "disk(n/a)"