a
    wh                     @   sP   d dl Z d dlmZ d dlmZ dZefddZdedefd	d
Zdd Z	dS )    N)ValidationError)gettext_lazy'   c                 C   s0   t | |krtd|  dttt| S )NzUnable to convert z% to an IPv6 address (value too long).)len
ValueError	ipaddressIPv6Addressint)ip_str
max_length r   K/var/www/battlenet.uz/venv/lib/python3.9/site-packages/django/utils/ipv6.py_ipv6_address_from_str	   s
    
r   Fz!This is not a valid IPv6 address.c                 C   s^   zt | |}W n ty,   t|ddY n0 |rB|jrBt|jS |jrVdt|j S t|S )a  
    Clean an IPv6 address string.

    Raise ValidationError if the address is invalid.

    Replace the longest continuous zero-sequence with "::", remove leading
    zeroes, and make sure all hextets are lowercase.

    Args:
        ip_str: A valid IPv6 address.
        unpack_ipv4: if an IPv4-mapped address is found,
        return the plain IPv4 address (default=False).
        error_message: An error message used in the ValidationError.

    Return a compressed IPv6 address or the same value.
    invalid)codez	::ffff:%s)r   r   r   ipv4_mappedstr)r
   Zunpack_ipv4error_messager   addrr   r   r   clean_ipv6_address   s    

r   c              	   C   s:   t | tjrdS zt|  W n ttfy4   Y dS 0 dS )zF
    Return whether the `ip_addr` object is a valid IPv6 address.
    TF)
isinstancer   r   r   	TypeErrorr   )ip_addrr   r   r   is_valid_ipv6_address4   s    r   )
r   Zdjango.core.exceptionsr   Zdjango.utils.translationr   _ZMAX_IPV6_ADDRESS_LENGTHr   r   r   r   r   r   r   <module>   s   

#