File: //home/arjun/projects/env/lib/python3.10/site-packages/dns/__pycache__/node.cpython-310.pyc
o
!wex1 � @ 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� rdatatype�RRSIG)�rdtypes�rdtype�covers� r �A/home/arjun/projects/env/lib/python3.10/site-packages/dns/node.py�_matches_type_or_its_signature, s r c @ sX e Zd ZdZdZdZdZedej j
dej j
dd fdd ��Zed
ejj
dd fdd��Zd
S )�NodeKindzRdatasets in nodesr � � r
r �returnc C s* t t||�r tjS t t||�rtjS tjS r )r �_cname_typesr �CNAME�_neutral_types�NEUTRAL�REGULAR)�clsr
r r r r
�classify8 s
zNodeKind.classify�rdatasetc 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 @ sD e Zd ZdZdgZdd� Zdejjde e
ef de
fdd �Zd
d� Z
dd
� Zdd� Zdd� Zdd� Zdd� Zejjdfdejjdejjdejjdedejjf
dd�Zejjdfdejjdejjdejjdedeejj f
dd�Zejjfdejjdejjdejjddfd d!�Zd"ejjddfd#d$�Zde fd%d&�Z!defd'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__[ s
z
Node.__init__�name�kwr c K sR t �� }| jD ]}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'