U
    <{f	                     @   sd   d Z ddlZddlmZ ddlZeedddZeeef eddd	Z	eeef edd
dZ
dS )zIPv4 helper functions.    N)Union)addressreturnc                 C   s4   t | dkrtjjd| d | d | d | d f S )zConvert an IPv4 address in binary form to text form.

    *address*, a ``bytes``, the IPv4 address in binary form.

    Returns a ``str``.
       z%u.%u.%u.%ur            )lendns	exceptionSyntaxError)r    r   G/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/dns/ipv4.py	inet_ntoa   s    r   )textr   c                 C   s   t | ts|  }n| }|d}t|dkr6tjj|D ]8}| sNtjjt|dkr:|d t	dkr:tjjq:zdd |D }t
jd
| W S  tk
r   tjjY nX d	S )zConvert an IPv4 address in text form to binary form.

    *text*, a ``str`` or ``bytes``, the IPv4 address in textual form.

    Returns a ``bytes``.
       .r   r   r   0c                 S   s   g | ]}t |qS r   )int).0partr   r   r   
<listcomp>=   s     zinet_aton.<locals>.<listcomp>BBBBN)r   )
isinstancebytesencodesplitr	   r
   r   r   isdigitordstructpack	Exception)r   Zbtextpartsr   br   r   r   	inet_aton'   s     



r#   c                 C   s   t jt j| S )zVerify that *address* is a valid text form IPv4 address and return its
    canonical text form.

    *text*, a ``str`` or ``bytes``, the IPv4 address in textual form.

    Raises ``dns.exception.SyntaxError`` if the text is not valid.
    )r
   Zipv4r   r#   )r   r   r   r   canonicalizeC   s    
r$   )__doc__r   typingr   Zdns.exceptionr
   r   strr   r#   r$   r   r   r   r   <module>   s   