def _explode_shorthand_ip_string(self):
if isinstance(self, IPv6Network):<EOL><INDENT>ip_str = _compat_str(self.network_address)<EOL><DEDENT>elif isinstance(self, IPv6Interface):<EOL><INDENT>ip_str = _compat_str(self.ip)<EOL><DEDENT>else:<EOL><INDENT>ip_str = _compat_str(self)<EOL><DEDENT>ip_int = self._ip_int_from_string(ip_str)<EOL>hex_str = '<STR_LIT>' % ip_int<EOL>parts = [hex_str[x:x + <NUM_LIT:4>] for x in range(<NUM_LIT:0>, <NUM_LIT:32>, <NUM_LIT:4>)]<EOL>if isinstance(self, (_BaseNetwork, IPv6Interface)):<EOL><INDENT>return '<STR_LIT>' % ('<STR_LIT::>'.join(parts), self._prefixlen)<EOL><DEDENT>return '<STR_LIT::>'.join(parts)<EOL>
Expand a shortened IPv6 address.

        Args:
            ip_str: A string, the IPv6 address.

        Returns:
            A string, the expanded IPv6 address.