Source code for pybotics.json_encoder

"""JSON Encoder for Pybotics classes."""
import json
from typing import Any

import numpy as np


[docs]class JSONEncoder(json.JSONEncoder): """Pybotics JSON Encoder class."""
[docs] def default(self, o: Any) -> Any: # pragma: no cover """Return serializable robot objects.""" # TODO: use @overload to split function # BODY: Reduces cyclomatic complexity; but requires NumPy typing if isinstance(o, np.ndarray): return o.tolist() elif isinstance(o, np.random.RandomState): return None elif isinstance(o, np.generic): return str(o) else: try: o = o.__dict__ except AttributeError: pass else: return o # let the base class default method raise the TypeError # https://docs.python.org/3/library/json.html return json.JSONEncoder.default(self, o)