Added some ordering to checksums from FunctionType since these could depending on input fail to be deterministic #2

Merged
robin merged 1 commits from fix_nondeterministic_checksum into main 2025-06-16 18:45:49 +00:00

View File

@ -73,7 +73,9 @@ def checksum(*args, csum=None):
elif isinstance(arg, FunctionType):
csum.update(strip_comments(inspect.getsource(arg)).encode())
c = inspect.getclosurevars(arg)
for v in {**c.nonlocals, **c.globals}.values():
merged = {**c.nonlocals, **c.globals}
for key in sorted(merged): # deterministic ordering
v = merged[key]
if v is not arg:
checksum(v, csum=csum)
elif isinstance(arg, functools.partial):