def apriori(min_support: int, transactionManager: TransactionManager, freq_items: List[FrequentItems] = []) -> List[FrequentItems]: if freq_items == []: unique_items = transactionManager.get_unique_items() first_set_items = [frozenset([frozenset([i]) for i in unique_items])] return apriori(min_support, transactionManager, first_set_items) sup_validator = lambda tx: transactionManager.get_support_count( tx) >= min_support next_freq_items = make_next_freq_items(freq_items[-1], sup_validator) if next_freq_items == frozenset(): return freq_items new_freq_items = freq_items + [next_freq_items] return apriori(min_support, transactionManager, new_freq_items)