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

This commit is contained in:
robrobo
2025-06-16 20:09:50 +02:00
parent c09549902a
commit 67d3e70a66

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):