summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2016-06-12 19:21:30 +0300
committerLars Wirzenius <liw@liw.fi>2016-06-12 19:21:30 +0300
commit8392c5df43406073eea16e60226b919ae7234749 (patch)
treeeafd8f47af79f4d2bfed562e454c2c3a3b82e178
parentf9f1bfc035349ef34489260b2987b91409a110ab (diff)
downloadobnam-8392c5df43406073eea16e60226b919ae7234749.tar.gz
try something
-rw-r--r--meliaereader/reader.py9
1 files changed, 6 insertions, 3 deletions
diff --git a/meliaereader/reader.py b/meliaereader/reader.py
index 094f1476..ff83a416 100644
--- a/meliaereader/reader.py
+++ b/meliaereader/reader.py
@@ -108,14 +108,17 @@ class MeliaeReader(object):
def _simple_get_closure(self, ref): # pragma: no cover
closure = set()
todo = set([ref])
+ all_refs = set(self._objs.keys())
while todo:
ref = todo.pop()
assert ref not in closure
closure.add(ref)
obj = self.get_object(ref)
- for child_ref in obj['refs']:
- if child_ref not in closure and child_ref in self:
- todo.add(child_ref)
+
+ child_refs = set(obj['refs'])
+ child_refs = child_refs.intersection(all_refs)
+ child_refs = child_refs.difference(closure)
+ todo.update(child_refs)
return closure