diff --git a/src/cachier/config.py b/src/cachier/config.py index 6b1652e4..a250d813 100644 --- a/src/cachier/config.py +++ b/src/cachier/config.py @@ -67,6 +67,8 @@ class Params: cleanup_interval: timedelta = timedelta(days=1) entry_size_limit: Optional[int] = None allow_non_static_methods: bool = False + key_prefix: str = "cachier" + func_prefix: str = "." _global_params = Params() diff --git a/src/cachier/core.py b/src/cachier/core.py index 5a4bc4aa..48f2a6ae 100644 --- a/src/cachier/core.py +++ b/src/cachier/core.py @@ -226,6 +226,7 @@ def cachier( mongetter: Optional[Mongetter] = None, sql_engine: Optional[Union[str, Any, Callable[[], Any]]] = None, redis_client: Optional["RedisClient"] = None, + key_prefix: Optional[str] = None, s3_bucket: Optional[str] = None, s3_prefix: str = "cachier", s3_client: Optional["S3Client"] = None, @@ -357,6 +358,7 @@ def cachier( backend = _update_with_defaults(backend, "backend") mongetter = _update_with_defaults(mongetter, "mongetter") size_limit_bytes = parse_bytes(_update_with_defaults(entry_size_limit, "entry_size_limit")) + key_prefix = _update_with_defaults(key_prefix, "key_prefix") # Create metrics object if enabled cache_metrics = None @@ -407,6 +409,7 @@ def cachier( wait_for_calc_timeout=wait_for_calc_timeout, entry_size_limit=size_limit_bytes, metrics=cache_metrics, + key_prefix=key_prefix, ) elif backend == "s3": core = _S3Core( diff --git a/src/cachier/cores/base.py b/src/cachier/cores/base.py index a62a0d28..599275ff 100644 --- a/src/cachier/cores/base.py +++ b/src/cachier/cores/base.py @@ -37,7 +37,7 @@ def _get_func_str(func: Callable) -> str: __name__, but at runtime the decorated functions always do. """ - return f".{func.__module__}.{func.__name__}" + return f"{_update_with_defaults('.', 'func_prefix')}{func.__module__}.{func.__name__}" class _BaseCore(metaclass=abc.ABCMeta): diff --git a/tests/test_core_lookup.py b/tests/test_core_lookup.py index 599aa194..7b7e582d 100644 --- a/tests/test_core_lookup.py +++ b/tests/test_core_lookup.py @@ -16,7 +16,9 @@ def test_get_default_params(): "cleanup_interval", "cleanup_stale", "entry_size_limit", + "func_prefix", "hash_func", + "key_prefix", "mongetter", "next_time", "pickle_reload",