equal
deleted
inserted
replaced
150 |
150 |
151 |
151 |
152 # use networkX instead ? |
152 # use networkX instead ? |
153 # http://networkx.lanl.gov/reference/algorithms.traversal.html#module-networkx.algorithms.traversal.astar |
153 # http://networkx.lanl.gov/reference/algorithms.traversal.html#module-networkx.algorithms.traversal.astar |
154 def transitive_closure_of(entity, relname, _seen=None): |
154 def transitive_closure_of(entity, relname, _seen=None): |
|
155 """return transitive closure *for the subgraph starting from the given |
|
156 entity* (eg 'parent' entities are not included in the results) |
|
157 """ |
155 if _seen is None: |
158 if _seen is None: |
156 _seen = set() |
159 _seen = set() |
157 _seen.add(entity.eid) |
160 _seen.add(entity.eid) |
158 yield entity |
161 yield entity |
159 for child in getattr(entity, relname): |
162 for child in getattr(entity, relname): |