U
    d                     @   sL   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	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   ,/tmp/pip-unpacked-wheel-pk5slln3/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#   )
__doc__r   typingr   Zdns.exceptionr
   r   strr   r#   r   r   r   r   <module>   s
   