summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2016-06-12 18:36:29 +0300
committerLars Wirzenius <liw@liw.fi>2016-06-12 18:36:29 +0300
commit2de24b0dfa1b5fe12fd9865a6b19f220d5bb4d75 (patch)
tree40a9a41ac9d0452261000536d9be2635455c6ed5
parent9fd7e254fa91343347379c520f265e493898b895 (diff)
downloadobnam-2de24b0dfa1b5fe12fd9865a6b19f220d5bb4d75.tar.gz
Optimise?
-rw-r--r--meliaereader/reader.py9
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