Spaces:
Sleeping
Sleeping
File size: 995 Bytes
8b4a5e6 d528086 8b4a5e6 d528086 8b4a5e6 d528086 8b4a5e6 d528086 |
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 |
from __future__ import annotations
import json
from typing import Any, Dict
def to_jsonable(obj: Any) -> Any:
"""Safely convert pandas/numpy objects to JSON-able python types."""
try:
import numpy as np
import pandas as pd
except Exception:
np = None
pd = None
if pd is not None and isinstance(obj, pd.DataFrame):
return obj.to_dict(orient="records")
if pd is not None and isinstance(obj, pd.Series):
return obj.to_dict()
if np is not None and isinstance(obj, (np.integer,)):
return int(obj)
if np is not None and isinstance(obj, (np.floating,)):
f = float(obj)
if f != f: # NaN
return None
return f
if isinstance(obj, (set,)):
return list(obj)
if isinstance(obj, (bytes, bytearray)):
return obj.decode("utf-8", errors="ignore")
return obj
def dumps(d: Dict[str, Any]) -> str:
return json.dumps(d, ensure_ascii=False, default=to_jsonable)
|