"""Network utilities.""" from ipaddress import IPv4Address, IPv6Address, ip_address, ip_network from typing import Union # IP addresses of loopback interfaces LOCAL_IPS = (ip_address("127.0.0.1"), ip_address("::1")) # RFC1918 - Address allocation for Private Internets LOCAL_NETWORKS = ( ip_network("10.0.0.0/8"), ip_network("172.16.0.0/12"), ip_network("192.168.0.0/16"), ) def is_local(address: Union[IPv4Address, IPv6Address]) -> bool: """Check if an address is local.""" return address in LOCAL_IPS or any(address in network for network in LOCAL_NETWORKS)