From 716a2c82bab94d1ced734c736803286798206ca7 Mon Sep 17 00:00:00 2001 From: Sean Breckenridge Date: Sat, 15 Oct 2022 01:50:53 -0700 Subject: [PATCH] core/serialize: serialize stdlib Decimal class --- my/core/serialize.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/my/core/serialize.py b/my/core/serialize.py index fa038ae..c0cbae9 100644 --- a/my/core/serialize.py +++ b/my/core/serialize.py @@ -1,6 +1,7 @@ import datetime import dataclasses from pathlib import Path +from decimal import Decimal from typing import Any, Optional, Callable, NamedTuple from functools import lru_cache @@ -36,6 +37,11 @@ def _default_encode(obj: Any) -> Any: return dataclasses.asdict(obj) if isinstance(obj, Exception): return error_to_json(obj) + # if something was stored as 'decimal', you likely + # don't want to convert it to float since you're + # storing as decimal to not lose the precision + if isinstance(obj, Decimal): + return str(obj) # note: _serialize would only be called for items which aren't already # serialized as a dataclass or namedtuple # discussion: https://github.com/karlicoss/HPI/issues/138#issuecomment-801704929