Files
wcm/archive/insurance_functions_example.md
T
2025-01-24 13:49:00 +03:00

918 B

def find_subnets(nodes: list[Node]) -> list[tuple[Node, Node]]:
    subnets = []
    for i, (a, b) in enumerate(zip(nodes, nodes[1:])):
        parent_node, dip = merge_two_nodes(a, b)
        if parent_node == a or parent_node == b:
            subnets.append((a, b))
    return subnets


def ensure_no_subnets(nodes: list[Node]):
    if subnets := find_subnets(nodes):
        raise Cidr4MergerError(f"There are subnets! {subnets=}")
def find_neighbors(nodes: list[Node]) -> list[tuple[Node, Node]]:
    neighbors = []
    for i, (a, b) in enumerate(zip(nodes, nodes[1:])):
        parent_node, dip = merge_two_nodes(a, b)
        if parent_node[1] + 1 == a[1] == b[1]:
            neighbors.append((a, b))
    return neighbors


def ensure_no_neighbors(nodes: list[Node]):
    if neighbors := find_neighbors(nodes):
        raise Cidr4MergerError(f"There are neighbors! {neighbors=}")