getaddrinfo() won't strip out interface suffixes from results
The part after %
should be stripped out, as the relevant info (scope ID) is contained in the fourth element in each result tuple.
CPython:
>>> socket.getaddrinfo("fe80::dcdb:30ff:feaa:df4d%eth0", 0)
[(<AddressFamily.AF_INET6: 10>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('fe80::dcdb:30ff:feaa:df4d', 0, 0, 3)), (<AddressFamily.AF_INET6: 10>, <SocketKind.SOCK_DGRAM: 2>, 17, '', ('fe80::dcdb:30ff:feaa:df4d', 0, 0, 3)), (<AddressFamily.AF_INET6: 10>, <SocketKind.SOCK_RAW: 3>, 0, '', ('fe80::dcdb:30ff:feaa:df4d', 0, 0, 3))]
PyPy3.9 7.3.11:
>>>> socket.getaddrinfo("fe80::dcdb:30ff:feaa:df4d%eth0", 0)
[(<AddressFamily.AF_INET6: 10>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('fe80::dcdb:30ff:feaa:df4d%eth0', 0, 0, 3)), (<AddressFamily.AF_INET6: 10>, <SocketKind.SOCK_DGRAM: 2>, 17, '', ('fe80::dcdb:30ff:feaa:df4d%eth0', 0, 0, 3)), (<AddressFamily.AF_INET6: 10>, <SocketKind.SOCK_RAW: 3>, 0, '', ('fe80::dcdb:30ff:feaa:df4d%eth0', 0, 0, 3))]