diff --git a/src/util/misc.py b/src/util/misc.py index 20f52a1b..b886c344 100644 --- a/src/util/misc.py +++ b/src/util/misc.py @@ -30,14 +30,15 @@ def _cached(func): - sentinel = object() + func._cache = {} @functools.wraps(func) def wrapper(*args, **kwargs): - result = getattr(func, "_result", sentinel) - if result == sentinel: - result = func._result = func(*args, **kwargs) - return result + key = (args, tuple(sorted(kwargs.items()))) + + if key not in func._cache: + func._cache[key] = func(*args, **kwargs) + return func._cache[key] return wrapper