def req_cycle(req):
    """is this requirement cyclic?"""
    cls = req.__class__
    seen = {req.name}
    while isinstance(req.comes_from, cls):
        req = req.comes_from
        if req.name in seen:
            return True
        else:
            seen.add(req.name)
    return False
