From cf720a240e6689260989655f4931ac7c04c3aed6 Mon Sep 17 00:00:00 2001 From: btwear Date: Thu, 8 Sep 2022 09:52:16 +0800 Subject: [PATCH] feat(cache): support drop specific cache key --- pottery/cache.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pottery/cache.py b/pottery/cache.py index 4599f315..a7d510df 100644 --- a/pottery/cache.py +++ b/pottery/cache.py @@ -167,6 +167,11 @@ def bypass(*args: Hashable, **kwargs: Hashable) -> JSONTypes: cast(Redis, redis).expire(cast(str, key), timeout) return return_value + @functools.wraps(func) + def drop(*args: Hashable, **kwargs: Hashable) -> None: + hash_ = _arg_hash(*args, **kwargs) + del cache[hash_] + def cache_info() -> CacheInfo: return CacheInfo( hits=hits, @@ -182,6 +187,7 @@ def cache_clear() -> None: wrapper.__wrapped__ = func # type: ignore wrapper.__bypass__ = bypass # type: ignore + wrapper.__drop__ = drop # type: ignore wrapper.cache_info = cache_info # type: ignore wrapper.cache_clear = cache_clear # type: ignore return cast(F, wrapper)