import itertools


def grow(node_list):
    """
    Takes a list of sets of nodes, finds all combinations, and saves
    valid pairings.

    :param node_list: a list of sets of nodes for making combinations.
    :return: a new unique list of sets of nodes.
    """
    new_list = []

    for s1, s2 in itertools.combinations(node_list, 2):
        new_set = {*s1, *s2}
        target_length = len(s1) + 1  # should only grow by 1 node.

        if len(new_set) == target_length and new_set not in new_list:
            new_list.append(new_set)

    return new_list