Skip to content

Commit 79c19f0

Browse files
benweathermanBen Weatherman
andauthored
Add get_cache_key method (#44)
Similar to `invalidate`, this adds a method to the decorated function to get the cache key Fixes #34 Co-authored-by: Ben Weatherman <ben.weatherman@literati.com>
1 parent f8c8a09 commit 79c19f0

File tree

3 files changed

+24
-0
lines changed

3 files changed

+24
-0
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,5 @@ build
1010
dist
1111
*.pyc
1212
django_cache_memoize.egg-info
13+
.venv
14+
.vscode

src/cache_memoize/__init__.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,12 @@ def invalidate(*args, **kwargs):
157157
cache_key = _make_cache_key(*args, **kwargs)
158158
cache.delete(cache_key)
159159

160+
def get_cache_key(*args, **kwargs):
161+
kwargs.pop("_refresh", None)
162+
return _make_cache_key(*args, **kwargs)
163+
160164
inner.invalidate = invalidate
165+
inner.get_cache_key = get_cache_key
161166
return inner
162167

163168
return decorator

tests/test_cache_memoize.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,15 @@ def function(argument):
243243
assert len(calls_made) == 3
244244

245245

246+
def test_get_cache_key():
247+
@cache_memoize(10)
248+
def funky(argument):
249+
pass
250+
251+
assert funky.get_cache_key(100) == "f0b86356861e088e2058855e95ee8981"
252+
assert funky.get_cache_key(100, _refresh=True) == "f0b86356861e088e2058855e95ee8981"
253+
254+
246255
def test_cache_memoize_custom_alias():
247256

248257
calls_made = []
@@ -309,6 +318,14 @@ def runmeonce(arg1, arg2):
309318
assert len(calls_made) == 2
310319

311320

321+
def test_get_cache_key_with_custom_key_generator():
322+
@cache_memoize(10, key_generator_callable=lambda x: x * 10)
323+
def funky(argument):
324+
pass
325+
326+
assert funky.get_cache_key("1") == "1111111111"
327+
328+
312329
def test_cache_memoize_none_value():
313330
calls_made = []
314331

0 commit comments

Comments
 (0)