U
    h                     @   s  U d Z ddlmZ ddlZddlZG dd dejjZi Z	ee
ef ed< i Zeee
f ed< ejhZejejejejejhZG dd	 d	ejjZe
ed
ddZee
dddZeedddZeedddZdee
eddddZejZejZej Z ej!Z!ej"Z"ej#Z#ejZejZej$Z$ej%Z%ej&Z&ej'Z'ej(Z(ej)Z)ej*Z*ej+Z+ej,Z,ej-Z-ej.Z.ej/Z/ej0Z0ej1Z1ej2Z2ej3Z3ej4Z4ej5Z5ej6Z6ej7Z7ej8Z8ej9Z9ej:Z:ejZej;Z;ej<Z<ej=Z=ej>Z>ej?Z?ejZejZej@Z@ejAZAejBZBejCZCejDZDejZejEZEejFZFejGZGejHZHejIZIejJZJejKZKejLZLejMZMejNZNejOZOejPZPejQZQejRZRejSZSejTZTejUZUejVZVejWZWejXZXejYZYejZZZej[Z[ej\Z\ej]Z]ej^Z^ej_Z_ej`Z`ejaZaejbZbejcZcejdZdejeZeejfZfejgZgejhZhdS )zDNS Rdata Types.    )DictNc                   @   s  e 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d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d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'd%Z(d&Z)d'Z*d(Z+d)Z,d*Z-d+Z.d,Z/d-Z0d.Z1d/Z2d0Z3d1Z4d2Z5d3Z6d4Z7d5Z8d6Z9d7Z:d8Z;d9Z<d:Z=d;Z>d<Z?d=Z@d>ZAd?ZBd@ZCdAZDdBZEdCZFdDZGdEZHdFZIdGZJdHZKdIZLdJZMdKZNdLZOdMZPdNZQdOZRdPZSdQZTeUdRdS ZVeUdTdU ZWeUdVdW ZXeUdXdY ZYeUdZd[ ZZeUd\d] Z[d^S )_	RdataTypezDNS Rdata Typer                           	   
                                                               !   #   $   %   &   '   )   *   +   ,   -   .   /   0   1   2   3   4   5   7   8   ;   <   =   >   ?   @   A   c   g   h   i   j   k   l   m                           i  i  i  i   i  c                 C   s   dS )Ni   clsrN   rN   3./venv/lib/python3.8/site-packages/dns/rdatatype.py_maximumo   s    zRdataType._maximumc                 C   s   dS )NtyperN   rO   rN   rN   rQ   _short_names   s    zRdataType._short_namec                 C   s   dS )NZTYPErN   rO   rN   rN   rQ   _prefixw   s    zRdataType._prefixc                 C   s@   | ddkr6z| |dd W S  tk
r4   Y nX t|S )N-r   _)findreplaceKeyError_registered_by_textget)rP   textrN   rN   rQ   _extra_from_text{   s    zRdataType._extra_from_textc                 C   s0   |d krt |S |ddkr,|ddS |S )NrW   r   rV   )_registered_by_valuer\   rX   rY   )rP   valueZcurrent_textrN   rN   rQ   _extra_to_text   s
    
zRdataType._extra_to_textc                 C   s   t S )N)UnknownRdatatyperO   rN   rN   rQ   _unknown_exception_class   s    z"RdataType._unknown_exception_classN)\__name__
__module____qualname____doc__TYPE0NONEANSMDMFCNAMESOAMBMGMRNULLWKSPTRHINFOMINFOMXTXTRPAFSDBX25ISDNRTNSAPNSAP_PTRSIGKEYPXGPOSAAAALOCNXTSRVNAPTRKXCERTA6DNAMEOPTAPLDSSSHFPIPSECKEYRRSIGNSECDNSKEYDHCIDNSEC3
NSEC3PARAMTLSASMIMEAHIPNINFOCDSCDNSKEY
OPENPGPKEYCSYNCZONEMDSVCBHTTPSSPFUNSPECNIDL32L64LPEUI48EUI64TKEYTSIGIXFRAXFRMAILBMAILAANYURICAAAVCAMTRELAYTADLVclassmethodrR   rT   rU   r^   ra   rc   rN   rN   rN   rQ   r      s   




r   r[   r_   c                   @   s   e Zd ZdZdS )rb   z$DNS resource record type is unknown.N)rd   re   rf   rg   rN   rN   rN   rQ   rb      s   rb   )r]   returnc                 C   s
   t | S )a  Convert text into a DNS rdata type value.

    The input text can be a defined DNS RR type mnemonic or
    instance of the DNS generic type syntax.

    For example, "NS" and "TYPE2" will both result in a value of 2.

    Raises ``dns.rdatatype.UnknownRdatatype`` if the type is unknown.

    Raises ``ValueError`` if the rdata type value is not >= 0 and <= 65535.

    Returns a ``dns.rdatatype.RdataType``.
    )r   	from_text)r]   rN   rN   rQ   r      s    r   )r`   r   c                 C   s
   t | S )a  Convert a DNS rdata type value to text.

    If the value has a known mnemonic, it will be used, otherwise the
    DNS generic type syntax will be used.

    Raises ``ValueError`` if the rdata type value is not >= 0 and <= 65535.

    Returns a ``str``.
    )r   to_text)r`   rN   rN   rQ   r      s    r   )rdtyper   c                 C   s    d|   kodkn  p| t kS )zTrue if the specified type is a metatype.

    *rdtype* is a ``dns.rdatatype.RdataType``.

    The currently defined metatypes are TKEY, TSIG, IXFR, AXFR, MAILA,
    MAILB, ANY, and OPT.

    Returns a ``bool``.
    rM      )
_metatypesr   rN   rN   rQ   is_metatype   s    r   c                 C   s   | t krdS dS )a  Is the specified type a singleton type?

    Singleton types can only have a single rdata in an rdataset, or a single
    RR in an RRset.

    The currently defined singleton types are CNAME, DNAME, NSEC, NXT, and
    SOA.

    *rdtype* is an ``int``.

    Returns a ``bool``.
    TF)_singletonsr   rN   rN   rQ   is_singleton   s    r   F)r   rdtype_textr   r   c                 C   s"   | t |< |t| < |rt|  dS )a1  Dynamically register an rdatatype.

    *rdtype*, a ``dns.rdatatype.RdataType``, the rdatatype to register.

    *rdtype_text*, a ``str``, the textual form of the rdatatype.

    *is_singleton*, a ``bool``, indicating if the type is a singleton (i.e.
    RRsets of the type can have only one member.)
    N)r[   r_   r   add)r   r   r   rN   rN   rQ   register_type   s    r   )F)irg   typingr   Zdns.enumZdnsZdns.exceptionenumIntEnumr   r[   str__annotations__r_   r   r   ro   r   r   r   rn   r   Z	exceptionZDNSExceptionrb   r   r   boolr   r   r   rh   ri   rj   rk   rl   rm   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rN   rN   rN   rQ   <module>   s   w	   