summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Maslek <jmaslek11@gmail.com>2024-01-31 11:03:53 -0500
committerJames Maslek <jmaslek11@gmail.com>2024-01-31 11:03:53 -0500
commit827d19f4d8faf7345d56c715bdaeddf9ed3c1640 (patch)
tree228574a95d395b7409f94b006a5866e65708a321
parentbccd1249863f3aa0a996bbca67b418ee122efeee (diff)
allow dates to be jsoned into keyfeature/data-cache
-rw-r--r--openbb_platform/core/openbb_core/provider/abstract/cache.py11
1 files changed, 10 insertions, 1 deletions
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()