o
    Þý°j·	  ã                   @   sV   d Z ddlZddlZdedefdd„ZdeeB defdd	„ZdeeB defd
d„ZdS )zIPv4 helper functions.é    NÚaddressÚreturnc                 C   s>   t | ƒdkr
tjj‚| d › d| d › d| d › d| d › �S )z�Convert an IPv4 address in binary form to text form.

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

    Returns a ``str``.
    é   r   Ú.é   é   é   )ÚlenÚdnsÚ	exceptionÚSyntaxError)r   © r   ú{/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/dns/ipv4.pyÚ	inet_ntoa   s   *r   Útextc                 C   s®   t | tƒs
|  ¡ }n| }| d¡}t|ƒdkrtjj‚|D ]}| ¡ s'tjj‚t|ƒdkr9|d t	dƒkr9tjj‚qzdd„ |D ƒ}t
jdg|¢R Ž W S  tyV   tjj‚w )	zšConvert 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>ÚBBBB)Ú
isinstanceÚbytesÚencodeÚsplitr	   r
   r   r   ÚisdigitÚordÚstructÚpackÚ	Exception)r   ÚbtextÚpartsr   Úbr   r   r   Ú	inet_aton&   s$   


€ÿr$   c                 C   s   t t| ƒƒS )zïVerify 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   r$   )r   r   r   r   ÚcanonicalizeB   s   
r%   )	Ú__doc__r   Údns.exceptionr
   r   Ústrr   r$   r%   r   r   r   r   Ú<module>   s   