Skip to content

Commit c54a4db

Browse files
committed
mod: update disk cache with new defaults.
1 parent e119425 commit c54a4db

2 files changed

Lines changed: 65 additions & 24 deletions

File tree

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22

33
All notable changes to this project will be documented in this file.
44

5+
## [0.5.0] UNRELEASED
6+
### Modified
7+
- Change default store mode to `"outputs_only"` in disk cache.
8+
- Change default `fn_name` to function name instead of fully qualified name in disk cache.
9+
510
## [0.4.10] 2026-02-09
611
### Fixed
712
- Disk cache custom keywords arguments for cache filename.

src/pythonwrench/disk_cache.py

Lines changed: 60 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,14 @@
3838
SavingBackend = Literal["csv", "json", "pickle"]
3939
StoreMode = Literal["outputs_only", "outputs_metadata", "outputs_metadata_inputs"]
4040

41-
_DEFAULT_CACHE_STORE_MODE: StoreMode = "outputs_metadata"
41+
_DEFAULT_CACHE_STORE_MODE: StoreMode = "outputs_only"
4242

4343

4444
class _CacheMeta(TypedDict):
4545
datetime: str
4646
duration: float
4747
checksum: int
48-
fn_name: str
48+
fn_fullname: str
4949
output: Any
5050
input: Optional[Tuple[Any, Any]]
5151

@@ -65,7 +65,9 @@ def disk_cache_decorator(
6565
cache_verbose: int = 0,
6666
cache_checksum_fn: ChecksumFn = checksum_any,
6767
cache_saving_backend: Literal["custom"],
68-
cache_fname_fmt: Union[str, Callable[..., str]] = "{fn_name}_{csum}{suffix}",
68+
cache_fname_fmt: Union[
69+
str, Callable[..., str]
70+
] = "{fn_name}_{checksum_hex}{suffix}",
6971
cache_fname_fmt_args: Optional[Iterable[str]] = None,
7072
cache_dump_fn: Callable[[Any, Path], Any],
7173
cache_load_fn: Callable[[Path], Any],
@@ -83,7 +85,9 @@ def disk_cache_decorator(
8385
cache_verbose: int = 0,
8486
cache_checksum_fn: ChecksumFn = checksum_any,
8587
cache_saving_backend: SavingBackend,
86-
cache_fname_fmt: Union[str, Callable[..., str]] = "{fn_name}_{csum}{suffix}",
88+
cache_fname_fmt: Union[
89+
str, Callable[..., str]
90+
] = "{fn_name}_{checksum_hex}{suffix}",
8791
cache_fname_fmt_args: Optional[Iterable[str]] = None,
8892
cache_dump_fn: None = None,
8993
cache_load_fn: None = None,
@@ -101,7 +105,9 @@ def disk_cache_decorator(
101105
cache_verbose: int = 0,
102106
cache_checksum_fn: ChecksumFn = checksum_any,
103107
cache_saving_backend: Union[SavingBackend, Literal["custom", "auto"]] = "auto",
104-
cache_fname_fmt: Union[str, Callable[..., str]] = "{fn_name}_{csum}{suffix}",
108+
cache_fname_fmt: Union[
109+
str, Callable[..., str]
110+
] = "{fn_name}_{checksum_hex}{suffix}",
105111
cache_fname_fmt_args: Optional[Iterable[str]] = None,
106112
cache_dump_fn: Optional[Callable[[Any, Path], Any]] = None,
107113
cache_load_fn: Optional[Callable[[Path], Any]] = None,
@@ -119,7 +125,9 @@ def disk_cache_decorator(
119125
cache_verbose: int = 0,
120126
cache_checksum_fn: ChecksumFn = checksum_any,
121127
cache_saving_backend: Literal["custom"],
122-
cache_fname_fmt: Union[str, Callable[..., str]] = "{fn_name}_{csum}{suffix}",
128+
cache_fname_fmt: Union[
129+
str, Callable[..., str]
130+
] = "{fn_name}_{checksum_hex}{suffix}",
123131
cache_fname_fmt_args: Optional[Iterable[str]] = None,
124132
cache_dump_fn: Callable[[Any, Path], Any],
125133
cache_load_fn: Callable[[Path], Any],
@@ -137,7 +145,9 @@ def disk_cache_decorator(
137145
cache_verbose: int = 0,
138146
cache_checksum_fn: ChecksumFn = checksum_any,
139147
cache_saving_backend: Union[SavingBackend, Literal["custom", "auto"]] = "auto",
140-
cache_fname_fmt: Union[str, Callable[..., str]] = "{fn_name}_{csum}{suffix}",
148+
cache_fname_fmt: Union[
149+
str, Callable[..., str]
150+
] = "{fn_name}_{checksum_hex}{suffix}",
141151
cache_fname_fmt_args: Optional[Iterable[str]] = None,
142152
cache_dump_fn: Optional[Callable[[Any, Path], Any]] = None,
143153
cache_load_fn: Optional[Callable[[Path], Any]] = None,
@@ -154,7 +164,9 @@ def disk_cache_decorator(
154164
cache_verbose: int = 0,
155165
cache_checksum_fn: ChecksumFn = checksum_any,
156166
cache_saving_backend: Union[SavingBackend, Literal["custom", "auto"]] = "auto",
157-
cache_fname_fmt: Union[str, Callable[..., str]] = "{fn_name}_{csum}{suffix}",
167+
cache_fname_fmt: Union[
168+
str, Callable[..., str]
169+
] = "{fn_name}_{checksum_hex}{suffix}",
158170
cache_fname_fmt_args: Optional[Iterable[str]] = None,
159171
cache_dump_fn: Optional[Callable[[Any, Path], Any]] = None,
160172
cache_load_fn: Optional[Callable[[Path], Any]] = None,
@@ -182,7 +194,7 @@ def disk_cache_decorator(
182194
cache_verbose: Set verbose logging level. Higher means more verbose. defaults to 0.
183195
cache_checksum_fn: Checksum function to identify input arguments. defaults to ``pythonwrench.checksum_any``.
184196
cache_saving_backend: Optional saving backend. Can be one of ('csv', 'json', 'pickle', 'custom', 'auto'). defaults to 'auto'.
185-
cache_fname_fmt: Cache filename format. defaults to "{fn_name}_{csum}{suffix}".
197+
cache_fname_fmt: Cache filename format. defaults to "{fn_name}_{checksum_hex}{suffix}".
186198
cache_dump_fn: Dump/save function to store outputs and overwrite saving backend. defaults to None.
187199
cache_load_fn: Load function to store outputs and overwrite saving backend. defaults to None.
188200
cache_enable: Enable disk cache. If False, the function has no effect. defaults to True.
@@ -216,7 +228,9 @@ def disk_cache_call(
216228
cache_verbose: int = 0,
217229
cache_checksum_fn: ChecksumFn = checksum_any,
218230
cache_saving_backend: Literal["custom"],
219-
cache_fname_fmt: Union[str, Callable[..., str]] = "{fn_name}_{csum}{suffix}",
231+
cache_fname_fmt: Union[
232+
str, Callable[..., str]
233+
] = "{fn_name}_{checksum_hex}{suffix}",
220234
cache_fname_fmt_args: Optional[Iterable[str]] = None,
221235
cache_dump_fn: Callable[[Any, Path], Any],
222236
cache_load_fn: Callable[[Path], Any],
@@ -235,7 +249,9 @@ def disk_cache_call(
235249
cache_verbose: int = 0,
236250
cache_checksum_fn: ChecksumFn = checksum_any,
237251
cache_saving_backend: SavingBackend,
238-
cache_fname_fmt: Union[str, Callable[..., str]] = "{fn_name}_{csum}{suffix}",
252+
cache_fname_fmt: Union[
253+
str, Callable[..., str]
254+
] = "{fn_name}_{checksum_hex}{suffix}",
239255
cache_fname_fmt_args: Optional[Iterable[str]] = None,
240256
cache_dump_fn: None = None,
241257
cache_load_fn: None = None,
@@ -254,7 +270,9 @@ def disk_cache_call(
254270
cache_verbose: int = 0,
255271
cache_checksum_fn: ChecksumFn = checksum_any,
256272
cache_saving_backend: Union[SavingBackend, Literal["custom", "auto"]] = "auto",
257-
cache_fname_fmt: Union[str, Callable[..., str]] = "{fn_name}_{csum}{suffix}",
273+
cache_fname_fmt: Union[
274+
str, Callable[..., str]
275+
] = "{fn_name}_{checksum_hex}{suffix}",
258276
cache_fname_fmt_args: Optional[Iterable[str]] = None,
259277
cache_dump_fn: Optional[Callable[[Any, Path], Any]] = None,
260278
cache_load_fn: Optional[Callable[[Path], Any]] = None,
@@ -272,7 +290,9 @@ def disk_cache_call(
272290
cache_verbose: int = 0,
273291
cache_checksum_fn: ChecksumFn = checksum_any,
274292
cache_saving_backend: Union[SavingBackend, Literal["custom", "auto"]] = "auto",
275-
cache_fname_fmt: Union[str, Callable[..., str]] = "{fn_name}_{csum}{suffix}",
293+
cache_fname_fmt: Union[
294+
str, Callable[..., str]
295+
] = "{fn_name}_{checksum_hex}{suffix}",
276296
cache_fname_fmt_args: Optional[Iterable[str]] = None,
277297
cache_dump_fn: Optional[Callable[[Any, Path], Any]] = None,
278298
cache_load_fn: Optional[Callable[[Path], Any]] = None,
@@ -300,7 +320,7 @@ def disk_cache_call(
300320
cache_verbose: Set verbose logging level. Higher means more verbose. defaults to 0.
301321
cache_checksum_fn: Checksum function to identify input arguments. defaults to ``pythonwrench.checksum_any``.
302322
cache_saving_backend: Optional saving backend. Can be one of ('csv', 'json', 'pickle', 'custom', 'auto'). defaults to 'auto'.
303-
cache_fname_fmt: Cache filename format. defaults to '{fn_name}_{csum}{suffix}'.
323+
cache_fname_fmt: Cache filename format. defaults to '{fn_name}_{checksum_hex}{suffix}'.
304324
cache_dump_fn: Dump/save function to store outputs and overwrite saving backend. defaults to None.
305325
cache_load_fn: Load function to store outputs and overwrite saving backend. defaults to None.
306326
cache_enable: Enable disk cache. If False, the function has no effect. defaults to True.
@@ -331,7 +351,9 @@ def _disk_cache_impl(
331351
cache_verbose: int = 0,
332352
cache_checksum_fn: ChecksumFn = checksum_any,
333353
cache_saving_backend: Union[SavingBackend, Literal["custom", "auto"]] = "auto",
334-
cache_fname_fmt: Union[str, Callable[..., str]] = "{fn_name}_{csum}{suffix}",
354+
cache_fname_fmt: Union[
355+
str, Callable[..., str]
356+
] = "{fn_name}_{checksum_hex}{suffix}",
335357
cache_fname_fmt_args: Optional[Iterable[str]] = None,
336358
cache_dump_fn: Optional[Callable[[Any, Path], Any]] = None,
337359
cache_load_fn: Optional[Callable[[Path], Any]] = None,
@@ -340,7 +362,7 @@ def _disk_cache_impl(
340362
) -> Callable[[Callable[P, T]], Callable[P, T]]:
341363
# for backward compatibility
342364
if cache_fname_fmt is None:
343-
expected = "{fn_name}_{csum}{suffix}"
365+
expected = "{fn_name}_{checksum_hex}{suffix}"
344366
warnings.warn(
345367
f"Deprecated argument value {cache_fname_fmt=}. (use {expected} instead)",
346368
DeprecationWarning,
@@ -400,7 +422,7 @@ def _disk_cache_impl(
400422
cache_fname_fmt = cache_fname_fmt.format
401423

402424
def _disk_cache_impl_fn(fn: Callable[P, T]) -> Callable[P, T]:
403-
fn_name = get_fullname(fn).replace("<locals>", "_locals_")
425+
fn_fullname, fn_name = _get_fn_fullname_and_name(fn)
404426
cache_fn_dpath = _get_fn_cache_dpath(fn, cache_dpath=cache_dpath)
405427

406428
if cache_force:
@@ -425,13 +447,18 @@ def _disk_cache_wrapper(*args: P.args, **kwargs: P.kwargs) -> T:
425447
if cache_fname_fmt_args is None or "fn_name" in cache_fname_fmt_args:
426448
kwds["fn_name"] = fn_name
427449

450+
if cache_fname_fmt_args is None or "fn_fullname" in cache_fname_fmt_args:
451+
kwds["fn_fullname"] = fn_fullname
452+
428453
if cache_fname_fmt_args is None or "suffix" in cache_fname_fmt_args:
429454
kwds["suffix"] = suffix
430455

431-
if cache_fname_fmt_args is None or "csum" in cache_fname_fmt_args:
456+
if cache_fname_fmt_args is None or any(
457+
k in cache_fname_fmt_args for k in ("csum", "checksum", "checksum_hex")
458+
):
432459
csum = cache_checksum_fn(checksum_args)
433460
kwds["checksum"] = csum
434-
kwds["csum"] = csum
461+
kwds["checksum_hex"] = hex(csum)[2:]
435462
else:
436463
csum = None
437464

@@ -469,15 +496,18 @@ def _disk_cache_wrapper(*args: P.args, **kwargs: P.kwargs) -> T:
469496
cache_store_mode == "outputs_metadata"
470497
or cache_store_mode == "outputs_metadata_inputs"
471498
):
499+
input = (
500+
(args, kwargs)
501+
if cache_store_mode == "outputs_metadata_inputs"
502+
else None
503+
)
472504
cache_content = {
473505
"datetime": get_now(),
474506
"duration": duration,
475507
"checksum": csum,
476-
"fn_name": fn_name,
508+
"fn_fullname": fn_fullname,
477509
"output": output,
478-
"input": (args, kwargs)
479-
if cache_store_mode == "outputs_metadata_inputs"
480-
else None,
510+
"input": input,
481511
}
482512
else:
483513
msg = f"Invalid argument {cache_store_mode=}. (expected one of {get_args(StoreMode)})"
@@ -554,7 +584,13 @@ def _get_fn_cache_dpath(
554584
*,
555585
cache_dpath: Union[str, Path, None] = None,
556586
) -> Path:
557-
fn_name = get_fullname(fn).replace("<locals>", "_locals_")
587+
_, fn_name = _get_fn_fullname_and_name(fn)
558588
cache_dpath = get_cache_dpath(cache_dpath)
559589
cache_fn_dpath = cache_dpath.joinpath(fn_name)
560590
return cache_fn_dpath
591+
592+
593+
def _get_fn_fullname_and_name(fn: Callable) -> Tuple[str, str]:
594+
fn_fullname = get_fullname(fn, inst_suffix="").replace("<locals>", "_locals_")
595+
fn_name = fn_fullname.split(".")[-1]
596+
return fn_fullname, fn_name

0 commit comments

Comments
 (0)