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