a
àMÒew1 ã @ sÊ d Z ddlZddlZddlmZmZmZ ddlZddl Zddl
ZddlZddlZddl
ZddlZejjhZejjejjejjhZdd„ ZejG dd„ dejƒƒZG dd „ d ƒZejjG d
d„ deƒƒZdS )z)DNS nodes. A node is a set of rdatasets.é N)ÚAnyÚDictÚOptionalc C s || v p|t jjko|| v S ©N)ÚdnsÚ rdatatypeZRRSIG)ZrdtypesÚrdtypeÚcovers© r
ú,/usr/lib/python3.9/site-packages/dns/node.pyÚ_matches_type_or_its_signature, s r c @ sR e Zd ZdZdZdZdZeej j
ej j
d dœdd„ƒZeejj
d dœd d
„ƒZdS )ÚNodeKindzRdatasets in nodesr é é )r r Úreturnc C s. t t||ƒrtjS t t||ƒr$tjS tjS d S r )r Ú_cname_typesr
ÚCNAMEÚ_neutral_typesÚNEUTRALÚREGULAR)Úclsr r r
r
r Úclassify8 s
zNodeKind.classify)Úrdatasetr c C s | |j|j¡S r )r r r )r r r
r
r Úclassify_rdatasetC s zNodeKind.classify_rdatasetN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r r r Úclassmethodr r Ú RdataTyper r ÚRdatasetr r
r
r
r r
0 s þ
r
c @ s( e Zd ZdZdgZdd„ Zejje e
ef e
dœdd„Zdd „ Z
d
d„ Zdd
„ Zdd„ Zdd„ Zdd„ Zejjdfejjejjejjeejjdœdd„Zejjdfejjejjejjeeejj dœdd„Zejjfejjejjejjddœdd„Zejjddœdd „Ze d!œd"d#„Z!ed!œd$d%„Z"dS )&ÚNodeaÖ A Node is a set of rdatasets.
A node is either a CNAME node or an "other data" node. A CNAME
node contains only CNAME, KEY, NSEC, and NSEC3 rdatasets along with their
covering RRSIG rdatasets. An "other data" node contains any
rdataset other than a CNAME or RRSIG(CNAME) rdataset. When
changes are made to a node, the CNAME or "other data" state is
always consistent with the update, i.e. the most recent change
wins. For example, if you have a node which contains a CNAME
rdataset, and then add an MX rdataset to it, then the CNAME
rdataset will be deleted. Likewise if you have a node containing
an MX rdataset and add a CNAME rdataset, the MX rdataset will be
deleted.
Ú rdatasetsc C s
g | _ d S r ©r" ©Úselfr
r
r Ú__init__Z s z
Node.__init__)ÚnameÚkwr c K sR t ¡ }| jD ]2}t|ƒdkr| |j|fi |¤Ž¡ | d¡ q| ¡ dd… S )a" Convert a node to text format.
Each rdataset at the node is printed. Any keyword arguments
to this method are passed on to the rdataset's to_text() method.
*name*, a ``dns.name.Name``, the owner name of the
rdatasets.
Returns a ``str``.
r Ú
Néÿÿÿÿ)ÚioÚStringIOr" ÚlenÚwriteÚto_textÚgetvalue)r% r' r( ÚsÚrdsr
r
r r/ ^ s
zNode.to_textc C s dt t| ƒƒ d S )Nz