# HG changeset patch # User Sylvain Thénault # Date 1284019688 -7200 # Node ID f8dea560703fce8a82ae6656ea709414e0b847f2 # Parent d8f0dce0b86df428d391406e554dfff2d612fbb4 add a small c-c shell script to detect cycle for a given relation diff -r d8f0dce0b86d -r f8dea560703f misc/scripts/detect_cycle.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/misc/scripts/detect_cycle.py Thu Sep 09 10:08:08 2010 +0200 @@ -0,0 +1,15 @@ + +try: + rtype, = __args__ +except ValueError: + print 'USAGE: cubicweb-ctl shell detect_cycle.py -- ' + print + +graph = {} +for fromeid, toeid in rql('Any X,Y WHERE X %s Y' % rtype): + graph.setdefault(fromeid, []).append(toeid) + +from logilab.common.graph import get_cycles + +for cycle in get_cycles(graph): + print 'cycle', '->'.join(str(n) for n in cycle)