Skip to content

Commit fc00b98

Browse files
committed
Hotfix PDict
1 parent 58eb0ca commit fc00b98

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

sphinxnotes/snippet/utils/pdict.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
K = TypeVar('K')
2020
V = TypeVar('V')
2121

22+
# FIXME: PDict is buggy
2223
class PDict(MutableMapping):
2324
"""A persistent dict with event handlers."""
2425

@@ -53,18 +54,19 @@ def __getitem__(self, key:K) -> Optional[V]:
5354

5455
def __setitem__(self, key:K, value:V) -> None:
5556
assert value is not None
56-
self._store[key] = value
57+
if key in self._store:
58+
self.__delitem__(key)
5759
self._dirty_items[key] = value
58-
if key in self._orphan_items:
59-
del self._orphan_items[key]
60+
self._store[key] = value
6061

6162

6263
def __delitem__(self, key:K) -> None:
6364
value = self.__getitem__(key)
6465
del self._store[key]
65-
self._orphan_items[key] = value
6666
if key in self._dirty_items:
6767
del self._dirty_items[key]
68+
else:
69+
self._orphan_items[key] = value
6870

6971

7072
def __iter__(self) -> Iterable:

0 commit comments

Comments
 (0)