Skip to content

Commit

Permalink
global
Browse files Browse the repository at this point in the history
  • Loading branch information
Borda committed Oct 16, 2024
1 parent f61ba3d commit d7fc5fa
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 39 deletions.
58 changes: 23 additions & 35 deletions src/cachier/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,34 +20,22 @@ def _default_hash_func(args, kwds):

@dataclass
class Params:
"""Type definition for cachier parameters."""

caching_enabled: bool
hash_func: HashFunc
backend: Backend
mongetter: Optional[Mongetter]
stale_after: datetime.timedelta
next_time: bool
cache_dir: Union[str, os.PathLike]
pickle_reload: bool
separate_files: bool
wait_for_calc_timeout: int
allow_none: bool


_default_params = Params(
caching_enabled=True,
hash_func=_default_hash_func,
backend="pickle",
mongetter=None,
stale_after=datetime.timedelta.max,
next_time=False,
cache_dir="~/.cachier/",
pickle_reload=True,
separate_files=False,
wait_for_calc_timeout=0,
allow_none=False,
)
"""Default definition for cachier parameters."""

caching_enabled: bool = True
hash_func: HashFunc = _default_hash_func
backend: Backend = "pickle"
mongetter: Optional[Mongetter] = None
stale_after: datetime.timedelta = datetime.timedelta.max
next_time: bool = False
cache_dir: Union[str, os.PathLike] = "~/.cachier/"
pickle_reload: bool = True
separate_files: bool = False
wait_for_calc_timeout: int = 0
allow_none: bool = False


_global_params = Params()


def _update_with_defaults(
Expand All @@ -60,7 +48,7 @@ def _update_with_defaults(
if kw_name in func_kwargs:
return func_kwargs.pop(kw_name)
if param is None:
return getattr(cachier.config._default_params, name)
return getattr(cachier.config._global_params, name)
return param


Expand All @@ -82,29 +70,29 @@ def set_default_params(**params: Mapping) -> None:
valid_params = {
k: v
for k, v in params.items()
if hasattr(cachier.config._default_params, k)
if hasattr(cachier.config._global_params, k)
}
cachier.config._default_params = replace(
cachier.config._default_params, **valid_params
cachier.config._global_params = replace(
cachier.config._global_params, **valid_params
)


def get_default_params() -> Params:
"""Get current set of default parameters."""
import cachier

return cachier.config._default_params
return cachier.config._global_params


def enable_caching():
"""Enable caching globally."""
import cachier

cachier.config._default_params.caching_enabled = True
cachier.config._global_params.caching_enabled = True


def disable_caching():
"""Disable caching globally."""
import cachier

cachier.config._default_params.caching_enabled = False
cachier.config._global_params.caching_enabled = False
5 changes: 3 additions & 2 deletions src/cachier/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
Backend,
HashFunc,
Mongetter,
_default_params,
_update_with_defaults,
)
from .cores.base import RecalculationNeeded, _BaseCore
Expand Down Expand Up @@ -176,6 +175,8 @@ def cachier(
None will not be cached and are recalculated every call.
"""
from .config import _global_params

# Check for deprecated parameters
if hash_params is not None:
message = (
Expand Down Expand Up @@ -244,7 +245,7 @@ def func_wrapper(*args, **kwds):
_print = lambda x: None # noqa: E731
if verbose:
_print = print
if ignore_cache or not _default_params.caching_enabled:
if ignore_cache or not _global_params.caching_enabled:
return (
func(args[0], **kwargs)
if core.func_is_method
Expand Down
4 changes: 2 additions & 2 deletions tests/test_general.py
Original file line number Diff line number Diff line change
Expand Up @@ -236,10 +236,10 @@ def get_random() -> float:
result_1 = get_random()
result_2 = get_random()
cachier.disable_caching()
assert cachier.config._default_params.caching_enabled is False
assert cachier.config._global_params.caching_enabled is False
result_3 = get_random()
cachier.enable_caching()
assert cachier.config._default_params.caching_enabled is True
assert cachier.config._global_params.caching_enabled is True
result_4 = get_random()
assert result_1 == result_2 == result_4
assert result_1 != result_3
Expand Down

0 comments on commit d7fc5fa

Please sign in to comment.