diff options
author | Lars Wirzenius <liw@liw.fi> | 2016-06-12 18:36:29 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2016-06-12 18:36:29 +0300 |
commit | 2de24b0dfa1b5fe12fd9865a6b19f220d5bb4d75 (patch) | |
tree | 40a9a41ac9d0452261000536d9be2635455c6ed5 | |
parent | 9fd7e254fa91343347379c520f265e493898b895 (diff) | |
download | obnam-2de24b0dfa1b5fe12fd9865a6b19f220d5bb4d75.tar.gz |
Optimise?
-rw-r--r-- | meliaereader/reader.py | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/meliaereader/reader.py b/meliaereader/reader.py index de97b545..03923efe 100644 --- a/meliaereader/reader.py +++ b/meliaereader/reader.py @@ -80,21 +80,20 @@ class MeliaeReader(object): 'computing closures for {} objs\n'.format(len(growing_refs))) growing2 = set() for ref in growing_refs: - growing2.update(self.add_to_closure(ref)) + growing2.update(self.add_to_closure(ref, all_refs)) growing_refs = growing2 assert set(self._objs.keys()) == set(self._closures.keys()) - def add_to_closure(self, ref): + def add_to_closure(self, ref, all_refs): grown = set() closure = self._closures[ref] children = [self.get_object(r) for r in closure] for child in children: delta = set(child['refs']).difference(closure) + delta = delta.intersection(all_refs) if delta: - for r in delta: - if r in self: - closure.add(r) + closure.update(delta) grown.add(child['address']) return grown |