| |
| 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)" |
|
|