Bump dnspython from 2.2.1 to 2.3.0 (#1975)

* Bump dnspython from 2.2.1 to 2.3.0

Bumps [dnspython](https://github.com/rthalley/dnspython) from 2.2.1 to 2.3.0.
- [Release notes](https://github.com/rthalley/dnspython/releases)
- [Changelog](https://github.com/rthalley/dnspython/blob/master/doc/whatsnew.rst)
- [Commits](https://github.com/rthalley/dnspython/compare/v2.2.1...v2.3.0)

---
updated-dependencies:
- dependency-name: dnspython
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Update dnspython==2.3.0

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: JonnyWong16 <9099342+JonnyWong16@users.noreply.github.com>

[skip ci]
This commit is contained in:
dependabot[bot] 2023-03-02 20:54:32 -08:00 committed by GitHub
parent 6910079330
commit 32c06a8b72
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
137 changed files with 7699 additions and 4277 deletions

View file

@ -17,18 +17,21 @@
"""DNS Dynamic Update Support"""
from typing import Any, List, Optional, Union
import dns.message
import dns.name
import dns.opcode
import dns.rdata
import dns.rdataclass
import dns.rdatatype
import dns.rdataset
import dns.tsig
class UpdateSection(dns.enum.IntEnum):
"""Update sections"""
ZONE = 0
PREREQ = 1
UPDATE = 2
@ -39,13 +42,20 @@ class UpdateSection(dns.enum.IntEnum):
return 3
class UpdateMessage(dns.message.Message):
class UpdateMessage(dns.message.Message): # lgtm[py/missing-equals]
_section_enum = UpdateSection
# ignore the mypy error here as we mean to use a different enum
_section_enum = UpdateSection # type: ignore
def __init__(self, zone=None, rdclass=dns.rdataclass.IN, keyring=None,
keyname=None, keyalgorithm=dns.tsig.default_algorithm,
id=None):
def __init__(
self,
zone: Optional[Union[dns.name.Name, str]] = None,
rdclass: dns.rdataclass.RdataClass = dns.rdataclass.IN,
keyring: Optional[Any] = None,
keyname: Optional[dns.name.Name] = None,
keyalgorithm: Union[dns.name.Name, str] = dns.tsig.default_algorithm,
id: Optional[int] = None,
):
"""Initialize a new DNS Update object.
See the documentation of the Message class for a complete
@ -69,13 +79,19 @@ class UpdateMessage(dns.message.Message):
rdclass = dns.rdataclass.RdataClass.make(rdclass)
self.zone_rdclass = rdclass
if self.origin:
self.find_rrset(self.zone, self.origin, rdclass, dns.rdatatype.SOA,
create=True, force_unique=True)
self.find_rrset(
self.zone,
self.origin,
rdclass,
dns.rdatatype.SOA,
create=True,
force_unique=True,
)
if keyring is not None:
self.use_tsig(keyring, keyname, algorithm=keyalgorithm)
@property
def zone(self):
def zone(self) -> List[dns.rrset.RRset]:
"""The zone section."""
return self.sections[0]
@ -84,7 +100,7 @@ class UpdateMessage(dns.message.Message):
self.sections[0] = v
@property
def prerequisite(self):
def prerequisite(self) -> List[dns.rrset.RRset]:
"""The prerequisite section."""
return self.sections[1]
@ -93,7 +109,7 @@ class UpdateMessage(dns.message.Message):
self.sections[1] = v
@property
def update(self):
def update(self) -> List[dns.rrset.RRset]:
"""The update section."""
return self.sections[2]
@ -107,8 +123,9 @@ class UpdateMessage(dns.message.Message):
if section is None:
section = self.update
covers = rd.covers()
rrset = self.find_rrset(section, name, self.zone_rdclass, rd.rdtype,
covers, deleting, True, True)
rrset = self.find_rrset(
section, name, self.zone_rdclass, rd.rdtype, covers, deleting, True, True
)
rrset.add(rd, ttl)
def _add(self, replace, section, name, *args):
@ -148,11 +165,10 @@ class UpdateMessage(dns.message.Message):
if replace:
self.delete(name, rdtype)
for s in args:
rd = dns.rdata.from_text(self.zone_rdclass, rdtype, s,
self.origin)
rd = dns.rdata.from_text(self.zone_rdclass, rdtype, s, self.origin)
self._add_rr(name, ttl, rd, section=section)
def add(self, name, *args):
def add(self, name: Union[dns.name.Name, str], *args: Any) -> None:
"""Add records.
The first argument is always a name. The other
@ -167,7 +183,7 @@ class UpdateMessage(dns.message.Message):
self._add(False, self.update, name, *args)
def delete(self, name, *args):
def delete(self, name: Union[dns.name.Name, str], *args: Any) -> None:
"""Delete records.
The first argument is always a name. The other
@ -185,33 +201,49 @@ class UpdateMessage(dns.message.Message):
if isinstance(name, str):
name = dns.name.from_text(name, None)
if len(args) == 0:
self.find_rrset(self.update, name, dns.rdataclass.ANY,
dns.rdatatype.ANY, dns.rdatatype.NONE,
dns.rdatatype.ANY, True, True)
self.find_rrset(
self.update,
name,
dns.rdataclass.ANY,
dns.rdatatype.ANY,
dns.rdatatype.NONE,
dns.rdataclass.ANY,
True,
True,
)
elif isinstance(args[0], dns.rdataset.Rdataset):
for rds in args:
for rd in rds:
self._add_rr(name, 0, rd, dns.rdataclass.NONE)
else:
args = list(args)
if isinstance(args[0], dns.rdata.Rdata):
for rd in args:
largs = list(args)
if isinstance(largs[0], dns.rdata.Rdata):
for rd in largs:
self._add_rr(name, 0, rd, dns.rdataclass.NONE)
else:
rdtype = dns.rdatatype.RdataType.make(args.pop(0))
if len(args) == 0:
self.find_rrset(self.update, name,
self.zone_rdclass, rdtype,
dns.rdatatype.NONE,
dns.rdataclass.ANY,
True, True)
rdtype = dns.rdatatype.RdataType.make(largs.pop(0))
if len(largs) == 0:
self.find_rrset(
self.update,
name,
self.zone_rdclass,
rdtype,
dns.rdatatype.NONE,
dns.rdataclass.ANY,
True,
True,
)
else:
for s in args:
rd = dns.rdata.from_text(self.zone_rdclass, rdtype, s,
self.origin)
for s in largs:
rd = dns.rdata.from_text(
self.zone_rdclass,
rdtype,
s, # type: ignore[arg-type]
self.origin,
)
self._add_rr(name, 0, rd, dns.rdataclass.NONE)
def replace(self, name, *args):
def replace(self, name: Union[dns.name.Name, str], *args: Any) -> None:
"""Replace records.
The first argument is always a name. The other
@ -229,7 +261,7 @@ class UpdateMessage(dns.message.Message):
self._add(True, self.update, name, *args)
def present(self, name, *args):
def present(self, name: Union[dns.name.Name, str], *args: Any) -> None:
"""Require that an owner name (and optionally an rdata type,
or specific rdataset) exists as a prerequisite to the
execution of the update.
@ -247,42 +279,74 @@ class UpdateMessage(dns.message.Message):
if isinstance(name, str):
name = dns.name.from_text(name, None)
if len(args) == 0:
self.find_rrset(self.prerequisite, name,
dns.rdataclass.ANY, dns.rdatatype.ANY,
dns.rdatatype.NONE, None,
True, True)
elif isinstance(args[0], dns.rdataset.Rdataset) or \
isinstance(args[0], dns.rdata.Rdata) or \
len(args) > 1:
self.find_rrset(
self.prerequisite,
name,
dns.rdataclass.ANY,
dns.rdatatype.ANY,
dns.rdatatype.NONE,
None,
True,
True,
)
elif (
isinstance(args[0], dns.rdataset.Rdataset)
or isinstance(args[0], dns.rdata.Rdata)
or len(args) > 1
):
if not isinstance(args[0], dns.rdataset.Rdataset):
# Add a 0 TTL
args = list(args)
args.insert(0, 0)
self._add(False, self.prerequisite, name, *args)
largs = list(args)
largs.insert(0, 0) # type: ignore[arg-type]
self._add(False, self.prerequisite, name, *largs)
else:
self._add(False, self.prerequisite, name, *args)
else:
rdtype = dns.rdatatype.RdataType.make(args[0])
self.find_rrset(self.prerequisite, name,
dns.rdataclass.ANY, rdtype,
dns.rdatatype.NONE, None,
True, True)
self.find_rrset(
self.prerequisite,
name,
dns.rdataclass.ANY,
rdtype,
dns.rdatatype.NONE,
None,
True,
True,
)
def absent(self, name, rdtype=None):
def absent(
self,
name: Union[dns.name.Name, str],
rdtype: Optional[Union[dns.rdatatype.RdataType, str]] = None,
) -> None:
"""Require that an owner name (and optionally an rdata type) does
not exist as a prerequisite to the execution of the update."""
if isinstance(name, str):
name = dns.name.from_text(name, None)
if rdtype is None:
self.find_rrset(self.prerequisite, name,
dns.rdataclass.NONE, dns.rdatatype.ANY,
dns.rdatatype.NONE, None,
True, True)
self.find_rrset(
self.prerequisite,
name,
dns.rdataclass.NONE,
dns.rdatatype.ANY,
dns.rdatatype.NONE,
None,
True,
True,
)
else:
rdtype = dns.rdatatype.RdataType.make(rdtype)
self.find_rrset(self.prerequisite, name,
dns.rdataclass.NONE, rdtype,
dns.rdatatype.NONE, None,
True, True)
the_rdtype = dns.rdatatype.RdataType.make(rdtype)
self.find_rrset(
self.prerequisite,
name,
dns.rdataclass.NONE,
the_rdtype,
dns.rdatatype.NONE,
None,
True,
True,
)
def _get_one_rr_per_rrset(self, value):
# Updates are always one_rr_per_rrset
@ -292,9 +356,11 @@ class UpdateMessage(dns.message.Message):
deleting = None
empty = False
if section == UpdateSection.ZONE:
if dns.rdataclass.is_metaclass(rdclass) or \
rdtype != dns.rdatatype.SOA or \
self.zone:
if (
dns.rdataclass.is_metaclass(rdclass)
or rdtype != dns.rdatatype.SOA
or self.zone
):
raise dns.exception.FormError
else:
if not self.zone:
@ -302,10 +368,12 @@ class UpdateMessage(dns.message.Message):
if rdclass in (dns.rdataclass.ANY, dns.rdataclass.NONE):
deleting = rdclass
rdclass = self.zone[0].rdclass
empty = (deleting == dns.rdataclass.ANY or
section == UpdateSection.PREREQ)
empty = (
deleting == dns.rdataclass.ANY or section == UpdateSection.PREREQ
)
return (rdclass, rdtype, deleting, empty)
# backwards compatibility
Update = UpdateMessage