Introduced in 5d4888116a69b8f8edb69e51a22b8d4df3a54741 in jupyter_client/localinterfaces.py, the changes made to public_ips() method breaks existing deployments.
Previously, the following yielded the correct public ip address:
ip = public_ips()[0]
print(ip) # 10.0.XX.XX
Now, it yields the linked local address:
ip = public_ips()[0]
print(ip) # 169.254.XXX.X
For now, I am manually filtering out IPs that are one of: ipv4 link local ips (unicast), ipv6 ips (unicast), ipv4 multicast ips, or ipv6 multicast ips, but would love to see this get fixed upstream.