diff options
author | Lars Wirzenius <liw@liw.fi> | 2016-06-12 19:21:30 +0300 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2016-06-12 19:21:30 +0300 |
commit | 8392c5df43406073eea16e60226b919ae7234749 (patch) | |
tree | eafd8f47af79f4d2bfed562e454c2c3a3b82e178 | |
parent | f9f1bfc035349ef34489260b2987b91409a110ab (diff) | |
download | obnam-8392c5df43406073eea16e60226b919ae7234749.tar.gz |
try something
-rw-r--r-- | meliaereader/reader.py | 9 |
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 |