3
[_ð]  ã               @   s°   d Z ddlZddlmZ dZdZdZdZdZ	dZ
d	Zd
ZdZdZdZdZeeeee	e
eeeeeedœZdd„ ejƒ D ƒZG dd„ dejjƒZdd„ Zdd„ Zdd„ Zdd„ ZdS )zDNS Result Codes.é    Né   )Úlongé   é   é   é   é   é   é   é	   é
   é   )ÚNOERRORÚFORMERRÚSERVFAILÚNXDOMAINÚNOTIMPÚREFUSEDÚYXDOMAINÚYXRRSETÚNXRRSETÚNOTAUTHÚNOTZONEÚBADVERSc             C   s   i | ]\}}||“qS © r   )Ú.0ÚxÚyr   r   ú./tmp/pip-build-yz_zf6az/dnspython/dns/rcode.pyú
<dictcomp>C   s    r   c               @   s   e Zd ZdZdS )ÚUnknownRcodezA DNS rcode is unknown.N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r   r   r   r    F   s   r    c             C   sB   | j ƒ r$t| ƒ}|dkr$|dkr$|S tj| jƒ ƒ}|dkr>t‚|S )zÌConvert text into an rcode.

    *text*, a ``text``, the textual rcode or an integer in textual form.

    Raises ``dns.rcode.UnknownRcode`` if the rcode mnemonic is unknown.

    Returns an ``int``.
    r   iÿ  N)ÚisdigitÚintÚ_by_textÚgetÚupperr    )ÚtextÚvr   r   r   Ú	from_textJ   s    
r,   c             C   s0   | d@ |d? d@ B }|dk s$|dkr,t dƒ‚|S )zìReturn the rcode value encoded by flags and ednsflags.

    *flags*, an ``int``, the DNS flags field.

    *ednsflags*, an ``int``, the EDNS flags field.

    Raises ``ValueError`` if rcode is < 0 or > 4095

    Returns an ``int``.
    é   é   ið  r   iÿ  zrcode must be >= 0 and <= 4095)Ú
ValueError)ÚflagsZ	ednsflagsÚvaluer   r   r   Ú
from_flags^   s    r2   c             C   s8   | dk s| dkrt dƒ‚| d@ }t| d@ ƒd> }||fS )zÀReturn a (flags, ednsflags) tuple which encodes the rcode.

    *value*, an ``int``, the rcode.

    Raises ``ValueError`` if rcode is < 0 or > 4095.

    Returns an ``(int, int)`` tuple.
    r   iÿ  zrcode must be >= 0 and <= 4095r-   ið  r.   )r/   r   )r1   r+   Zevr   r   r   Úto_flagsp   s
    
r3   c             C   s6   | dk s| dkrt dƒ‚tj| ƒ}|dkr2t| ƒ}|S )z’Convert rcode into text.

    *value*, and ``int``, the rcode.

    Raises ``ValueError`` if rcode is < 0 or > 4095.

    Returns a ``text``.
    r   iÿ  zrcode must be >= 0 and <= 4095N)r/   Ú	_by_valuer(   Ústr)r1   r*   r   r   r   Úto_text�   s    

r6   )r$   Zdns.exceptionZdnsÚ_compatr   r   r   r   r   r   r   r   r   r   r   r   r   r'   Úitemsr4   Ú	exceptionZDNSExceptionr    r,   r2   r3   r6   r   r   r   r   Ú<module>   s@   