File: //home/arjun/projects/env/lib/python3.10/site-packages/dns/__pycache__/versioned.cpython-310.pyc
o
!we�- � @ s� d Z ddlZddlZddlmZmZmZmZmZ ddl Z
ddlZ
ddlZ
ddl
Z
ddlZ
ddlZ
ddlZ
ddlZ
ddlZ
G dd� de
jj�Ze
jjZe
jjZe
jjZe
jjZe
jjZe
jjZG dd� de
jj�ZdS )zDNS Versioned Zones.� N)�Callable�Deque�Optional�Set�Unionc @ s e Zd ZdZdS )�UseTransactionz-To alter a versioned zone, use a transaction.N)�__name__�
__module__�__qualname__�__doc__� r r �F/home/arjun/projects/env/lib/python3.10/site-packages/dns/versioned.pyr s r c
s� e Zd Zg d�ZeZejjddfde e
ejje
f dejjdede ed ege e f f� fdd �
Z d;d
e e de e defd
d�Zd<dedefdd�Zdd� Zdd� Zdd� Zde e ddfdd�Zde ed ege e f ddfdd�Zdd � Zd!d"� Zd#d$� Zd%d&� Zd'd(� Z d)d*� Z! d<d+e
ejje
f d,edej"jf� fd-d.�
Z#d+e
ejje
f ddfd/d0�Z$ej%j&dfd+e
ejje
f d1e
ej%j'e
f d2e
ej%j'e
f d,edej(j)f
� fd3d4�
Z*ej%j&dfd+e
ejje
f d1e
ej%j'e
f d2e
ej%j'e
f d,ede ej(j) f
� fd5d6�
Z+ej%j&fd+e
ejje
f d1e
ej%j'e
f d2e
ej%j'e
f ddfd7d8�Z,d+e
ejje
f dej(j)ddfd9d:�Z-� Z.S )=�Zone)� _versions�_versions_lock�
_write_txn�_write_waiters�_write_event�_pruning_policy�_readersTN�origin�rdclass�
relativize�pruning_policyc st t � �|||� t�� | _t�� | _|du r| j| _ n|| _ d| _
d| _t�� | _t
� | _| �dt| dd�|� dS )a� Initialize a versioned zone object.
*origin* is the origin of the zone. It may be a ``dns.name.Name``,
a ``str``, or ``None``. If ``None``, then the zone's origin will
be set by the first ``$ORIGIN`` line in a zone file.
*rdclass*, an ``int``, the zone's rdata class; the default is class IN.
*relativize*, a ``bool``, determine's whether domain names are
relativized to the zone's origin. The default is ``True``.
*pruning policy*, a function taking a ``Zone`` and a ``Version`` and returning
a ``bool``, or ``None``. Should the version be pruned? If ``None``,
the default policy, which retains one version is used.
NT)�replacement)�super�__init__�collections�dequer � threading�Lock�
_version_lock�_default_pruning_policyr r r r �setr �_commit_version_unlocked�WritableVersion)�selfr r r r �� __class__r r
r . s
�z
Zone.__init__�id�serial�returnc C s6 |d ur|d urt d��| j�� |d ur0d }t| j�D ]}|j|kr&|} nq|d u r/td��nL|d urw| jr<tjj }n
| j
d usCJ �| j
}d }t| j�D ] }|j�|�}|rm|�
| jtjj�}|rm|d j|krm|} nqM|d u rvtd��n| jd }t| d|�}| j�|� |W d � S 1 s�w Y d S )Nz!cannot specify both id and serialzversion not foundr zserial not found���F)�
ValueErrorr! �reversedr r) �KeyErrorr �dns�name�emptyr �nodes�get�get_rdatasetr � rdatatype�SOAr* �Transactionr �add) r&