From 827d19f4d8faf7345d56c715bdaeddf9ed3c1640 Mon Sep 17 00:00:00 2001 From: James Maslek Date: Wed, 31 Jan 2024 11:03:53 -0500 Subject: allow dates to be jsoned into key --- openbb_platform/core/openbb_core/provider/abstract/cache.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/openbb_platform/core/openbb_core/provider/abstract/cache.py b/openbb_platform/core/openbb_core/provider/abstract/cache.py index b3275fac77f..d7e5cfe66da 100644 --- a/openbb_platform/core/openbb_core/provider/abstract/cache.py +++ b/openbb_platform/core/openbb_core/provider/abstract/cache.py @@ -3,6 +3,7 @@ import time import hashlib import json from abc import ABC, abstractmethod +from datetime import date, datetime try: import redis @@ -12,9 +13,17 @@ except ImportError: REDIS_AVAILABLE = False +def jsonify_date(obj): + """JSON serializer for objects not serializable by default json code""" + + if isinstance(obj, (datetime, date)): + return obj.isoformat() + raise TypeError(f"Type {type(obj)} not serializable") + + def generate_cache_key(*args, **kwargs): """Generate a unique key for a request.""" - key = json.dumps((args, kwargs), sort_keys=True) + key = json.dumps((args, kwargs), sort_keys=True, default=jsonify_date) return hashlib.sha256(key.encode("utf-8")).hexdigest() -- cgit v1.2.3