agent / helpers /network.py
GraziePrego's picture
Upload helpers/network.py with huggingface_hub
0724dd7 verified
import socket
import struct
def is_loopback_address(address: str) -> bool:
"""Check whether *address* resolves to a loopback interface."""
_checkers = {
socket.AF_INET: lambda x: (
struct.unpack("!I", socket.inet_aton(x))[0] >> (32 - 8)
) == 127,
socket.AF_INET6: lambda x: x == "::1",
}
try:
socket.inet_pton(socket.AF_INET6, address)
return _checkers[socket.AF_INET6](address)
except socket.error:
pass
try:
socket.inet_pton(socket.AF_INET, address)
return _checkers[socket.AF_INET](address)
except socket.error:
pass
for family in (socket.AF_INET, socket.AF_INET6):
try:
r = socket.getaddrinfo(address, None, family, socket.SOCK_STREAM)
except socket.gaierror:
return False
for fam, _, _, _, sockaddr in r:
if not _checkers[fam](sockaddr[0]):
return False
return True