def encoder()

in understanding_rl_vision/svelte3/json_encoding.py [0:0]


def encoder(precision=None):
    class CustomJSONEncoder(json.JSONEncoder):
        def default(self, obj):
            if isinstance(obj, (tuple, set)):
                return list(obj)
            elif isinstance(obj, np.integer):
                return int(obj)
            elif isinstance(obj, np.floating):
                return maybe_round(obj, precision=precision)
            elif isinstance(obj, np.ndarray):
                return maybe_round(obj.tolist(), precision=precision)
            elif hasattr(obj, "to_json"):
                return obj.to_json()
            return json.JSONEncoder.default(self, obj)

    return CustomJSONEncoder