utils.py
changeset 4335 1314772c1183
parent 4252 6c4f109c2b03
parent 4317 b2093f8f0493
child 4466 8b0ca7904820
equal deleted inserted replaced
4334:dda74c345b06 4335:1314772c1183
   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):