def candidatekeys(data: Table, maxcols: int = 1) -> Iterable[Tuple[int, ...]]: cols = list(transpose(data)) return map( tuple, dropsupersets( map(set, (localcolids for i in range(1, maxcols + 1) for localcolids in combinations(range(len(cols)), i) if isdistinct(transpose(cols[j] for j in localcolids))))))
def test_isdistinct(): assert isdistinct([1, 2, 3]) is True assert isdistinct([1, 2, 1]) is False assert isdistinct("Hello") is False assert isdistinct("World") is True assert isdistinct(iter([1, 2, 3])) is True assert isdistinct(iter([1, 2, 1])) is False