3838SavingBackend = Literal ["csv" , "json" , "pickle" ]
3939StoreMode = 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
4444class _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