28 lines
730 B
Python
28 lines
730 B
Python
from pathlib import Path
|
|
import json
|
|
import pandas as pd
|
|
|
|
def ensure_dir(p):
|
|
p = Path(p)
|
|
p.mkdir(parents=True, exist_ok=True)
|
|
return p
|
|
|
|
def json_safe(obj):
|
|
from pathlib import Path
|
|
import numpy as np
|
|
import pandas as pd
|
|
|
|
if isinstance(obj, Path):
|
|
return str(obj)
|
|
if isinstance(obj, (str, int, float, bool)) or obj is None:
|
|
return obj
|
|
if isinstance(obj, dict):
|
|
return {str(k): json_safe(v) for k, v in obj.items()}
|
|
if isinstance(obj, (list, tuple)):
|
|
return [json_safe(v) for v in obj]
|
|
if isinstance(obj, pd.DataFrame):
|
|
return obj.to_dict(orient="records")
|
|
if isinstance(obj, np.ndarray):
|
|
return obj.tolist()
|
|
return obj # fallback
|