'Turns a 128-bit integer into hexadecimal notation.
Args:
ip_int: An integer, the IP address.
Returns:
A string, the hexadecimal representation of the address.
Raises:
ValueError: The address is bigger than 128 bits of all ones.'

@classmethod
def _string_from_ip_int(cls, ip_int=None):

    if (ip_int is None):
        ip_int = int(cls._ip)
    if (ip_int > cls._ALL_ONES):
        raise ValueError(u'IPv6    address    is    too    large')
    hex_str = (u'%032x' % ip_int)
    hextets = [(u'%x' % int(hex_str[x:(x + 4)], 16)) for x in range(0, 32, 4)]
    hextets = cls._compress_hextets(hextets)
    return u':'.join(hextets)
