
    h                     V    S SK r S SKJr  S SKJr  Sr\4S jrS\" S5      \4S jrS	 r	g)
    N)ValidationError)gettext_lazy'   c                     [        U 5      U:  a  [        SU  S35      e[        R                  " [	        [        R                  " U 5      5      5      $ )NzUnable to convert z% to an IPv6 address (value too long).)len
ValueError	ipaddressIPv6Addressint)ip_str
max_lengths     C/var/www/html/env/lib/python3.13/site-packages/django/utils/ipv6.py_ipv6_address_from_strr   	   sK    
6{Z (MN
 	
   Y%:%:6%B!CDD    Fz!This is not a valid IPv6 address.c           	      $    [        X5      nU(       a&  UR                  (       a  [        UR                  5      $ UR                  (       a  S[        UR                  5      -  $ [        U5      $ ! [         a    [        USS[        S5      0S9ef = f)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protocolIPv6)codeparamsz	::ffff:%s)r   r   r   _ipv4_mappedstr)r   unpack_ipv4error_messager   addrs        r   clean_ipv6_addressr      s    ,
%f9 t''4##$$			S!1!1222t9  
	:qy2I
 	

s   A. .!Bc                     [        U [        R                  5      (       a  g [        U 5        g! [        [
        4 a     gf = f)z>
Return whether the `ip_addr` object is a valid IPv6 address.
TF)
isinstancer	   r
   r   	TypeErrorr   )ip_addrs    r   is_valid_ipv6_addressr"   6   sE     '90011w'  z" s   . A A)
r	   django.core.exceptionsr   django.utils.translationr   r   MAX_IPV6_ADDRESS_LENGTHr   r   r"    r   r   <module>r'      s<     2 6  /F E 78&	"J
r   