misc/scripts/detect_cycle.py
author Julien Cristau <julien.cristau@logilab.fr>
Fri, 17 Oct 2014 12:14:58 +0200
changeset 10045 0a49d61c8cca
parent 6198 f8dea560703f
child 10589 7c23b7de2b8d
permissions -rw-r--r--
Add custom checker for Password values We override the default converter to pass Binary values through, but don't do anything about the checker. This worked previously because yams allowed StringIO instances, although its converter didn't do the right thing for them. Fixing this in yams requires that we properly register a checker.


try:
    rtype, = __args__
except ValueError:
    print 'USAGE: cubicweb-ctl shell <instance> detect_cycle.py -- <relation type>'
    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)