BlockState setitem() fix for overwrite arg

This commit is contained in:
tim
2024-01-16 19:39:56 -04:00
parent be91e75d71
commit 8b113563b3
2 changed files with 7 additions and 4 deletions

View File

@@ -71,8 +71,8 @@ class BlockData:
raise KeyError
return result
def delitem(self, item, overwrite=True):
self.setitem(item, DELETE, overwrite)
def delitem(self, item):
self.setitem(item, DELETE)
def unload(self, item):
"""
@@ -134,7 +134,7 @@ class BlockSet(Generic[T], Iterable[T], BlockData):
self.setitem(item, None, overwrite=False)
def remove(self, item: T):
self.delitem(item, overwrite=False)
self.delitem(item)
def __contains__(self, item: T) -> bool:
return self.contains(item)
@@ -172,6 +172,9 @@ class BlockDict(Generic[K,V], BlockData):
def get(self, item: K, default: V = None) -> V:
return self.getitem(item, default)
def setdefault(self, item: K, value: V):
return self.setitem(item, value, overwrite=False)
def modify(self, item: K, func: Callable[[V],V], default: V=NARG) -> V:
result = func(self.getitem(item, default))
self.setitem(item, result)

View File

@@ -139,7 +139,7 @@ class BlockState:
def set(self, fork: Optional[Fork], series, key, value, overwrite=True):
diffs = self.diffs_by_series[series][key]
if overwrite or self._get_from_diffs(fork, diffs) != value:
if overwrite or self._get_from_diffs(fork, diffs) is DELETE and value is not DELETE:
diff = DiffEntry(value,
fork.height if fork is not None else self.root_block.height,
fork.hash if fork is not None else self.root_block.hash)