'Expand a shortened IPv6 address.
Args:
ip_str: A string, the IPv6 address.
Returns:
A string, the expanded IPv6 address.'

def _explode_shorthand_ip_string(self, ip_str=None):

    if (not ip_str):
        ip_str = str(self)
    if self._is_shorthand_ip(ip_str):
        new_ip = []
        hextet = ip_str.split('::')
        sep = (len(hextet[0].split(':')) + len(hextet[1].split(':')))
        new_ip = hextet[0].split(':')
        for _ in xrange((8 - sep)):
            new_ip.append('0000')
        new_ip += hextet[1].split(':')
        ret_ip = []
        for hextet in new_ip:
            ret_ip.append((('0' * (4 - len(hextet))) + hextet).lower())
        return ':'.join(ret_ip)
    return ip_str
