commit fb9a6fe690ec46a2a4c8f872c6a6b2840c2296d4
parent bcab7973f2109cacb013447226ecba899d920ae4
Author: gracefu <81774659+gracefuu@users.noreply.github.com>
Date: Sun, 20 Apr 2025 07:18:03 +0800
Don't crash if eval throws an exception on a future run, store/load functions for interfacing with db
Diffstat:
2 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/tar-sketch/a.txt b/tar-sketch/a.txt
@@ -1 +1 @@
-Sun Apr 20 07:08:59 AM +08 2025
+Sun Apr 20 07:16:53 AM +08 2025
diff --git a/tar-sketch/tar2.py b/tar-sketch/tar2.py
@@ -61,7 +61,8 @@ def rerun_if(f_str):
def cache_conditionally(
keys_fn=lambda *args, **kwargs: (args, tuple(sorted(kwargs.items()))),
- if_cached_fn=lambda cached_result, /, *_, **__: cached_result,
+ store_fn=lambda cached_result, /, *_, **__: cached_result,
+ load_fn=lambda cached_result, /, *_, **__: cached_result,
):
def decorator(fn):
signature = inspect.signature(fn)
@@ -77,11 +78,14 @@ def cache_conditionally(
db, ("track", "rerun_changes", fn.__qualname__, keys), []
)
for expr, old_val in old_rerun_changes:
- res = eval(expr, locals=rerun_locals)
- if res != old_val:
+ try:
+ res = eval(expr, locals=rerun_locals)
+ if res != old_val:
+ break
+ except:
break
else:
- return if_cached_fn(
+ return load_fn(
db[("track", "result", fn.__qualname__, keys)], *args, **kwargs
)
@@ -91,7 +95,9 @@ def cache_conditionally(
with_rerun_context, rerun_changes, rerun_locals, fn, *args, **kwargs
)
db[("track", "rerun_changes", fn.__qualname__, keys)] = rerun_changes
- db[("track", "result", fn.__qualname__, keys)] = result
+ db[("track", "result", fn.__qualname__, keys)] = store_fn(
+ result, *args, **kwargs
+ )
return result
return wrapped