docs: def _inet6_ntop(addr):
      """Convert an IPv6 address from binary form into text representation,
  used when socket.inet_pton is not available.
  
      """
      # IPv6 addresses have 128bits (16 bytes)
      if len(addr) != 16:
          raise ValueError("invalid length of packed IP address string")
  
      # Decode to hex representation
      address = ":".join(plain_str(bytes_hex(addr[idx:idx + 2])).lstrip('0') or '0'  # noqa: E501
                         for idx in range(0, 16, 2))
  
      try:
          # Get the longest set of zero blocks. We need to take a look
          # at group 1 regarding the length, as 0:0:1:0:0:2:3:4 would
          # have two matches: 0:0: and :0:0: where the latter is longer,
          # though the first one should be taken. Group 1 is in both
          # cases 0:0.
          match = max(_IP6_ZEROS.finditer(address),
                      key=lambda m: m.end(1) - m.start(1))
          return '{}::{}'.format(address[:match.start()], address[match.end():])
      except ValueError:
          return address