U
    R+|jé  ã                   @   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   úYc:\users\snmko\desktop\web_content\django_cbt\venv\Lib\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k
r.   t|dd�‚Y nX |rD|jrDt|jƒS |jrXd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k
r6   Y dS X 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   
ü
#