diff --git a/catalyst/exchange/utils/serialization_utils.py b/catalyst/exchange/utils/serialization_utils.py index 6e1d21e3..e6f4bba9 100644 --- a/catalyst/exchange/utils/serialization_utils.py +++ b/catalyst/exchange/utils/serialization_utils.py @@ -6,6 +6,32 @@ import pandas as pd from catalyst.assets._assets import TradingPair from catalyst.constants import DATE_TIME_FORMAT from six import string_types +from six import string_types + +from datetime import date, datetime +from catalyst.constants import DATE_TIME_FORMAT, DATE_FORMAT +from catalyst.assets._assets import TradingPair + + +class ConfigJSONEncoder(json.JSONEncoder): + def default(self, obj): + """ + JSON serializer for objects not serializable by default json code + + Parameters + ---------- + obj: Object + + Returns + ------- + str + + """ + if isinstance(obj, (datetime, date)): + return obj.floor('1D').strftime(DATE_FORMAT) + + elif isinstance(obj, TradingPair): + return obj.to_dict() class ExchangeJSONEncoder(json.JSONEncoder):