import functools import hashlib import json def cache_result(func): cache = {} @functools.wraps(func) def wrapper(*args, **kwargs): key = hashlib.md5( json.dumps((args, kwargs), sort_keys=True, default=str).encode() ).hexdigest() if key not in cache: cache[key] = func(*args, **kwargs) print(f"[CACHE] Computed result for {func.__name__}") else: print(f"[CACHE] Cache hit for {func.__name__}") return cache[key] wrapper.cache_clear = lambda: cache.clear() return wrapper