Lines Matching refs:parts
1634 parts = ip_str.split(':')
1636 # An IPv6 address needs at least 2 colons (3 parts).
1638 if len(parts) < _min_parts:
1639 msg = "At least %d parts expected in %r" % (_min_parts, ip_str)
1643 if '.' in parts[-1]:
1645 ipv4_int = IPv4Address(parts.pop())._ip
1648 parts.append('%x' % ((ipv4_int >> 16) & 0xFFFF))
1649 parts.append('%x' % (ipv4_int & 0xFFFF))
1651 # An IPv6 address can't have more than 8 colons (9 parts).
1655 if len(parts) > _max_parts:
1662 for i in range(1, len(parts) - 1):
1663 if not parts[i]:
1670 # parts_hi is the number of parts to copy from above/before the '::'
1671 # parts_lo is the number of parts to copy from below/after the '::'
1675 parts_lo = len(parts) - skip_index - 1
1676 if not parts[0]:
1681 if not parts[-1]:
1688 msg = "Expected at most %d other parts with '::' in %r"
1694 if len(parts) != cls._HEXTET_COUNT:
1695 msg = "Exactly %d parts expected without '::' in %r"
1697 if not parts[0]:
1700 if not parts[-1]:
1703 parts_hi = len(parts)
1712 ip_int |= cls._parse_hextet(parts[i])
1716 ip_int |= cls._parse_hextet(parts[i])
1840 parts = [hex_str[x:x+4] for x in range(0, 32, 4)]
1842 return '%s/%d' % (':'.join(parts), self._prefixlen)
1843 return ':'.join(parts)