

def cyclePath(source, cycles):
    isForward = True
    path = []
    for rel in reversed(cycles):
        if isinstance(rel, bool):
            isForward = rel
        else:
            path.append('{0}:{1} {2}'.format(rel.modelDocument.basename, rel.sourceline, (rel.toModelObject.qname if isForward else rel.fromModelObject.qname)))
    return ((str(source.qname) + ' ') + ' - '.join(path))

dataset/ETHPy150Open Arelle/Arelle/arelle/ValidateFilingDimensions.py cyclePath/original