(a)
return tuple(l_groups + zeros + r_groups)
Parse IPv6 address. Ideally we would use the ipaddress module in 
        Python3.3 but can't rely on having this.

        Does not handle dotted-quad addresses or subnet prefix

        >>> _parse_ipv6("::") == (0,) * 16
        True
        >>> _parse_ipv6("1234:5678::abcd:0:ff00")
        (18, 52, 86, 120, 0, 0, 0, 0, 0, 0, 171, 205, 0, 0, 255, 0)
Parse IPv6 address. Ideally we would use the ipaddress module in 
        Python3.3 but can't rely on having this.
Parse IPv6 address . Ideally we would use the ipaddress module in Python3 . 3 but can t rely on having this .
def _parse_ipv6(a):
    """
        Parse IPv6 address. Ideally we would use the ipaddress module in 
        Python3.3 but can't rely on having this.

        Does not handle dotted-quad addresses or subnet prefix

        >>> _parse_ipv6("::") == (0,) * 16
        True
        >>> _parse_ipv6("1234:5678::abcd:0:ff00")
        (18, 52, 86, 120, 0, 0, 0, 0, 0, 0, 171, 205, 0, 0, 255, 0)

    """
    l,_,r = a.partition("::")
    l_groups = list(chain(*[divmod(int(x,16),256) for x in l.split(":") if x]))
    r_groups = list(chain(*[divmod(int(x,16),256) for x in r.split(":") if x]))
    zeros = [0] * (16 - len(l_groups) - len(r_groups))
    return tuple(l_groups + zeros + r_groups)
def _parse_ipv6 ( a ) : l , _ , r = a . partition ( "::" ) l_groups = list ( chain ( * [ divmod ( int ( x , 16 ) , 256 ) for x in l . split ( ":" ) if x ] ) ) r_groups = list ( chain ( * [ divmod ( int ( x , 16 ) , 256 ) for x in r . split ( ":" ) if x ] ) ) zeros = [ 0 ] * ( 16 - len ( l_groups ) - len ( r_groups ) ) return tuple ( l_groups + zeros + r_groups )