--- a/Lib/ipaddress.py 2015-01-18 04:20:29.916930604 +0100 +++ b/Lib/ipaddress.py 2015-01-18 13:15:50.732209126 +0100 @@ -174,12 +174,14 @@ """ first = last = addresses[0] + i = 1 for ip in addresses[1:]: if ip._ip == last._ip + 1: last = ip + i += 1 else: break - return (first, last) + return (first, last, i) def _count_righthand_zero_bits(number, bits): @@ -346,12 +348,12 @@ ip, nets[-1])) nets.append(ip) - # sort and dedup - ips = sorted(set(ips)) + # sort + ips = sorted(ips) while i < len(ips): - (first, last) = _find_address_range(ips[i:]) - i = ips.index(last) + 1 + (first, last, items) = _find_address_range(ips[i:]) + i = items + i addrs.extend(summarize_address_range(first, last)) return _collapse_addresses_internal(addrs + nets)