diff options
-rw-r--r-- | obmc/utils/pathtree.py | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/obmc/utils/pathtree.py b/obmc/utils/pathtree.py index da56cfb..dc48609 100644 --- a/obmc/utils/pathtree.py +++ b/obmc/utils/pathtree.py @@ -94,6 +94,7 @@ class PathTreeKeyIterator(PathTreeItemIterator): class PathTree: def __init__(self): self.root = {} + self.cache = {} def _try_delete_parent(self, elements): if len(elements) == 1: @@ -131,6 +132,7 @@ class PathTree: return True def __delitem__(self, key): + del self.cache[key] kids = 'children' elements = ['/'] + list(filter(bool, key.split('/'))) d = self.root @@ -144,6 +146,7 @@ class PathTree: self._try_delete_parent(elements) def __setitem__(self, key, value): + self.cache[key] = value kids = 'children' elements = ['/'] + list(filter(bool, key.split('/'))) d = self.root @@ -154,7 +157,7 @@ class PathTree: d[elements[-1]].update({kids: children, 'data': value}) def __getitem__(self, key): - return self._get_node(key).get('data') + return self.cache[key] def setdefault(self, key, default): if not self.get(key): |