Skip to content

route_rules.container.optim

Functions:

merge_between_suffix

merge_between_suffix(domain_suffix: set[str]) -> set[str]
Source code in src/route_rules/container/optim/_merge_between_suffix.py
 4
 5
 6
 7
 8
 9
10
11
def merge_between_suffix(domain_suffix: set[str]) -> set[str]:
    suffix_list: list[str] = sorted(domain_suffix, key=len)
    suffix: set[str] = set()
    for s in suffix_list:
        if u.match_domain_suffix(s, suffix):
            continue
        suffix.add(s)
    return suffix

merge_domain_with_keyword

merge_domain_with_keyword(
    domain: set[str], domain_keyword: set[str]
) -> tuple[set[str], set[str]]
Source code in src/route_rules/container/optim/_merge_domain_with_keyword.py
 4
 5
 6
 7
 8
 9
10
11
12
13
def merge_domain_with_keyword(
    domain: set[str], domain_keyword: set[str]
) -> tuple[set[str], set[str]]:
    domain_new: set[str] = set()
    keyword_new: set[str] = set(domain_keyword)
    for d in domain:
        if u.match_domain_keyword(d, keyword_new):
            continue
        domain_new.add(d)
    return domain_new, keyword_new

merge_domain_with_suffix

merge_domain_with_suffix(
    domain: set[str], domain_suffix: set[str]
) -> tuple[set[str], set[str]]
Source code in src/route_rules/container/optim/_merge_domain_with_suffix.py
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
def merge_domain_with_suffix(
    domain: set[str], domain_suffix: set[str]
) -> tuple[set[str], set[str]]:
    domain_new: set[str] = set()
    suffix_new: set[str] = domain_suffix.copy()
    for d in domain:
        if "." + d in suffix_new:
            suffix_new.remove("." + d)
            suffix_new.add(d)
            continue
        if u.match_domain_suffix(d, suffix_new):
            continue
        domain_new.add(d)
    return domain_new, suffix_new

merge_ip_cidr

merge_ip_cidr(ip_cidr: set[str]) -> set[str]
Source code in src/route_rules/container/optim/_merge_ip_cidr.py
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
def merge_ip_cidr(ip_cidr: set[str]) -> set[str]:
    ipv4_networks: list[IPv4Network] = []
    ipv6_networks: list[IPv6Network] = []
    for cidr in ip_cidr:
        network: IPv4Network | IPv6Network = ipaddress.ip_network(cidr)
        if network.version == 4:
            ipv4_networks.append(network)
        elif network.version == 6:
            ipv6_networks.append(network)
    result: set[str] = {
        str(network)
        for network in itertools.chain(
            ipaddress.collapse_addresses(ipv4_networks),
            ipaddress.collapse_addresses(ipv6_networks),
        )
    }
    return result

merge_suffix_with_keyword

merge_suffix_with_keyword(
    domain_suffix: set[str], domain_keyword: set[str]
) -> tuple[set[str], set[str]]
Source code in src/route_rules/container/optim/_merge_suffix_with_keyword.py
 4
 5
 6
 7
 8
 9
10
11
12
13
def merge_suffix_with_keyword(
    domain_suffix: set[str], domain_keyword: set[str]
) -> tuple[set[str], set[str]]:
    suffix_new: set[str] = set()
    keyword_new: set[str] = domain_keyword.copy()
    for s in domain_suffix:
        if u.match_domain_keyword(s, keyword_new):
            continue
        suffix_new.add(s)
    return suffix_new, keyword_new

remove_unresolvable

remove_unresolvable(domain: set[str]) -> set[str]
Source code in src/route_rules/container/optim/_remove_unresolvable.py
4
5
def remove_unresolvable(domain: set[str]) -> set[str]:
    return {d for d in domain if validators.domain(d)}