diff --git a/complex_tokenization/graph.py b/complex_tokenization/graph.py index 82f372d..27e631e 100644 --- a/complex_tokenization/graph.py +++ b/complex_tokenization/graph.py @@ -105,7 +105,7 @@ def get_merges(self): # returns self for unchanged subtrees, so the same objects recur across # merges and a full re-walk becomes a cache hit. Valid while GraphSettings # is fixed, which holds for a node's lifetime during training. - cached = getattr(self, "_merges", None) + cached = self._merges if cached is None: cached = tuple(self._iter_merges()) object.__setattr__(self, "_merges", cached) @@ -137,7 +137,7 @@ def merge(self, token: Node, merge: tuple["GraphVertex", ...]): # _merges (when memoized) lists every mergeable subsequence in this # subtree, so if the merge isn't among them nothing here changes. - cached = getattr(self, "_merges", None) + cached = self._merges if cached is not None and merge not in cached: return self