Spaces:
Running
Running
File size: 1,115 Bytes
42029e4 8c66d1b 42029e4 8c66d1b 42029e4 8c66d1b 42029e4 8c66d1b 42029e4 8c66d1b 42029e4 8c66d1b 42029e4 | 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 | from __future__ import annotations
import json
from pathlib import Path
from typing import Any
import joblib
from .logging import get_logger
log = get_logger(__name__)
def ensure_dir(path: str | Path) -> Path:
p = Path(path)
p.mkdir(parents=True, exist_ok=True)
return p
def save_joblib(obj: Any, path: str | Path) -> Path:
path = Path(path)
ensure_dir(path.parent)
joblib.dump(obj, path, compress=('zlib', 3))
log.info(f'Saved artifact -> {path} ({path.stat().st_size / 1024:.1f} KB)')
return path
def load_joblib(path: str | Path) -> Any:
path = Path(path)
if not path.exists():
raise FileNotFoundError(f'Artifact not found: {path}')
obj = joblib.load(path)
log.info(f'Loaded artifact <- {path}')
return obj
def save_json(obj: Any, path: str | Path, indent: int=2) -> Path:
path = Path(path)
ensure_dir(path.parent)
with path.open('w') as fh:
json.dump(obj, fh, indent=indent, default=str)
return path
def load_json(path: str | Path) -> Any:
path = Path(path)
with path.open('r') as fh:
return json.load(fh)
|