mirror of
https://github.com/Tautulli/Tautulli.git
synced 2025-08-19 21:03:21 -07:00
Bump dnspython from 2.6.1 to 2.7.0 (#2440)
* Bump dnspython from 2.6.1 to 2.7.0 Bumps [dnspython](https://github.com/rthalley/dnspython) from 2.6.1 to 2.7.0. - [Release notes](https://github.com/rthalley/dnspython/releases) - [Changelog](https://github.com/rthalley/dnspython/blob/main/doc/whatsnew.rst) - [Commits](https://github.com/rthalley/dnspython/compare/v2.6.1...v2.7.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.7.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:
parent
0836fb902c
commit
feca713b76
56 changed files with 1382 additions and 665 deletions
|
@ -75,8 +75,9 @@ class GPOS(dns.rdata.Rdata):
|
|||
raise dns.exception.FormError("bad longitude")
|
||||
|
||||
def to_text(self, origin=None, relativize=True, **kw):
|
||||
return "{} {} {}".format(
|
||||
self.latitude.decode(), self.longitude.decode(), self.altitude.decode()
|
||||
return (
|
||||
f"{self.latitude.decode()} {self.longitude.decode()} "
|
||||
f"{self.altitude.decode()}"
|
||||
)
|
||||
|
||||
@classmethod
|
||||
|
|
|
@ -37,9 +37,7 @@ class HINFO(dns.rdata.Rdata):
|
|||
self.os = self._as_bytes(os, True, 255)
|
||||
|
||||
def to_text(self, origin=None, relativize=True, **kw):
|
||||
return '"{}" "{}"'.format(
|
||||
dns.rdata._escapify(self.cpu), dns.rdata._escapify(self.os)
|
||||
)
|
||||
return f'"{dns.rdata._escapify(self.cpu)}" "{dns.rdata._escapify(self.os)}"'
|
||||
|
||||
@classmethod
|
||||
def from_text(
|
||||
|
|
|
@ -48,7 +48,7 @@ class HIP(dns.rdata.Rdata):
|
|||
for server in self.servers:
|
||||
servers.append(server.choose_relativity(origin, relativize))
|
||||
if len(servers) > 0:
|
||||
text += " " + " ".join((x.to_unicode() for x in servers))
|
||||
text += " " + " ".join(x.to_unicode() for x in servers)
|
||||
return "%u %s %s%s" % (self.algorithm, hit, key, text)
|
||||
|
||||
@classmethod
|
||||
|
|
|
@ -38,11 +38,12 @@ class ISDN(dns.rdata.Rdata):
|
|||
|
||||
def to_text(self, origin=None, relativize=True, **kw):
|
||||
if self.subaddress:
|
||||
return '"{}" "{}"'.format(
|
||||
dns.rdata._escapify(self.address), dns.rdata._escapify(self.subaddress)
|
||||
return (
|
||||
f'"{dns.rdata._escapify(self.address)}" '
|
||||
f'"{dns.rdata._escapify(self.subaddress)}"'
|
||||
)
|
||||
else:
|
||||
return '"%s"' % dns.rdata._escapify(self.address)
|
||||
return f'"{dns.rdata._escapify(self.address)}"'
|
||||
|
||||
@classmethod
|
||||
def from_text(
|
||||
|
|
|
@ -44,7 +44,7 @@ def _exponent_of(what, desc):
|
|||
exp = i - 1
|
||||
break
|
||||
if exp is None or exp < 0:
|
||||
raise dns.exception.SyntaxError("%s value out of bounds" % desc)
|
||||
raise dns.exception.SyntaxError(f"{desc} value out of bounds")
|
||||
return exp
|
||||
|
||||
|
||||
|
@ -83,10 +83,10 @@ def _encode_size(what, desc):
|
|||
def _decode_size(what, desc):
|
||||
exponent = what & 0x0F
|
||||
if exponent > 9:
|
||||
raise dns.exception.FormError("bad %s exponent" % desc)
|
||||
raise dns.exception.FormError(f"bad {desc} exponent")
|
||||
base = (what & 0xF0) >> 4
|
||||
if base > 9:
|
||||
raise dns.exception.FormError("bad %s base" % desc)
|
||||
raise dns.exception.FormError(f"bad {desc} base")
|
||||
return base * pow(10, exponent)
|
||||
|
||||
|
||||
|
@ -184,10 +184,9 @@ class LOC(dns.rdata.Rdata):
|
|||
or self.horizontal_precision != _default_hprec
|
||||
or self.vertical_precision != _default_vprec
|
||||
):
|
||||
text += " {:0.2f}m {:0.2f}m {:0.2f}m".format(
|
||||
self.size / 100.0,
|
||||
self.horizontal_precision / 100.0,
|
||||
self.vertical_precision / 100.0,
|
||||
text += (
|
||||
f" {self.size / 100.0:0.2f}m {self.horizontal_precision / 100.0:0.2f}m"
|
||||
f" {self.vertical_precision / 100.0:0.2f}m"
|
||||
)
|
||||
return text
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ class NSEC(dns.rdata.Rdata):
|
|||
def to_text(self, origin=None, relativize=True, **kw):
|
||||
next = self.next.choose_relativity(origin, relativize)
|
||||
text = Bitmap(self.windows).to_text()
|
||||
return "{}{}".format(next, text)
|
||||
return f"{next}{text}"
|
||||
|
||||
@classmethod
|
||||
def from_text(
|
||||
|
|
24
lib/dns/rdtypes/ANY/RESINFO.py
Normal file
24
lib/dns/rdtypes/ANY/RESINFO.py
Normal file
|
@ -0,0 +1,24 @@
|
|||
# Copyright (C) Dnspython Contributors, see LICENSE for text of ISC license
|
||||
|
||||
# Copyright (C) 2003-2007, 2009-2011 Nominum, Inc.
|
||||
#
|
||||
# Permission to use, copy, modify, and distribute this software and its
|
||||
# documentation for any purpose with or without fee is hereby granted,
|
||||
# provided that the above copyright notice and this permission notice
|
||||
# appear in all copies.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS" AND NOMINUM DISCLAIMS ALL WARRANTIES
|
||||
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL NOMINUM BE LIABLE FOR
|
||||
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
|
||||
# OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
import dns.immutable
|
||||
import dns.rdtypes.txtbase
|
||||
|
||||
|
||||
@dns.immutable.immutable
|
||||
class RESINFO(dns.rdtypes.txtbase.TXTBase):
|
||||
"""RESINFO record"""
|
|
@ -37,7 +37,7 @@ class RP(dns.rdata.Rdata):
|
|||
def to_text(self, origin=None, relativize=True, **kw):
|
||||
mbox = self.mbox.choose_relativity(origin, relativize)
|
||||
txt = self.txt.choose_relativity(origin, relativize)
|
||||
return "{} {}".format(str(mbox), str(txt))
|
||||
return f"{str(mbox)} {str(txt)}"
|
||||
|
||||
@classmethod
|
||||
def from_text(
|
||||
|
|
|
@ -69,7 +69,7 @@ class TKEY(dns.rdata.Rdata):
|
|||
dns.rdata._base64ify(self.key, 0),
|
||||
)
|
||||
if len(self.other) > 0:
|
||||
text += " %s" % (dns.rdata._base64ify(self.other, 0))
|
||||
text += f" {dns.rdata._base64ify(self.other, 0)}"
|
||||
|
||||
return text
|
||||
|
||||
|
|
9
lib/dns/rdtypes/ANY/WALLET.py
Normal file
9
lib/dns/rdtypes/ANY/WALLET.py
Normal file
|
@ -0,0 +1,9 @@
|
|||
# Copyright (C) Dnspython Contributors, see LICENSE for text of ISC license
|
||||
|
||||
import dns.immutable
|
||||
import dns.rdtypes.txtbase
|
||||
|
||||
|
||||
@dns.immutable.immutable
|
||||
class WALLET(dns.rdtypes.txtbase.TXTBase):
|
||||
"""WALLET record"""
|
|
@ -36,7 +36,7 @@ class X25(dns.rdata.Rdata):
|
|||
self.address = self._as_bytes(address, True, 255)
|
||||
|
||||
def to_text(self, origin=None, relativize=True, **kw):
|
||||
return '"%s"' % dns.rdata._escapify(self.address)
|
||||
return f'"{dns.rdata._escapify(self.address)}"'
|
||||
|
||||
@classmethod
|
||||
def from_text(
|
||||
|
|
|
@ -51,6 +51,7 @@ __all__ = [
|
|||
"OPENPGPKEY",
|
||||
"OPT",
|
||||
"PTR",
|
||||
"RESINFO",
|
||||
"RP",
|
||||
"RRSIG",
|
||||
"RT",
|
||||
|
@ -63,6 +64,7 @@ __all__ = [
|
|||
"TSIG",
|
||||
"TXT",
|
||||
"URI",
|
||||
"WALLET",
|
||||
"X25",
|
||||
"ZONEMD",
|
||||
]
|
||||
|
|
|
@ -37,7 +37,7 @@ class A(dns.rdata.Rdata):
|
|||
|
||||
def to_text(self, origin=None, relativize=True, **kw):
|
||||
domain = self.domain.choose_relativity(origin, relativize)
|
||||
return "%s %o" % (domain, self.address)
|
||||
return f"{domain} {self.address:o}"
|
||||
|
||||
@classmethod
|
||||
def from_text(
|
||||
|
|
|
@ -36,7 +36,7 @@ class NSAP(dns.rdata.Rdata):
|
|||
self.address = self._as_bytes(address)
|
||||
|
||||
def to_text(self, origin=None, relativize=True, **kw):
|
||||
return "0x%s" % binascii.hexlify(self.address).decode()
|
||||
return f"0x{binascii.hexlify(self.address).decode()}"
|
||||
|
||||
@classmethod
|
||||
def from_text(
|
||||
|
|
|
@ -36,7 +36,7 @@ class EUIBase(dns.rdata.Rdata):
|
|||
self.eui = self._as_bytes(eui)
|
||||
if len(self.eui) != self.byte_len:
|
||||
raise dns.exception.FormError(
|
||||
"EUI%s rdata has to have %s bytes" % (self.byte_len * 8, self.byte_len)
|
||||
f"EUI{self.byte_len * 8} rdata has to have {self.byte_len} bytes"
|
||||
)
|
||||
|
||||
def to_text(self, origin=None, relativize=True, **kw):
|
||||
|
@ -49,16 +49,16 @@ class EUIBase(dns.rdata.Rdata):
|
|||
text = tok.get_string()
|
||||
if len(text) != cls.text_len:
|
||||
raise dns.exception.SyntaxError(
|
||||
"Input text must have %s characters" % cls.text_len
|
||||
f"Input text must have {cls.text_len} characters"
|
||||
)
|
||||
for i in range(2, cls.byte_len * 3 - 1, 3):
|
||||
if text[i] != "-":
|
||||
raise dns.exception.SyntaxError("Dash expected at position %s" % i)
|
||||
raise dns.exception.SyntaxError(f"Dash expected at position {i}")
|
||||
text = text.replace("-", "")
|
||||
try:
|
||||
data = binascii.unhexlify(text.encode())
|
||||
except (ValueError, TypeError) as ex:
|
||||
raise dns.exception.SyntaxError("Hex decoding error: %s" % str(ex))
|
||||
raise dns.exception.SyntaxError(f"Hex decoding error: {str(ex)}")
|
||||
return cls(rdclass, rdtype, data)
|
||||
|
||||
def _to_wire(self, file, compress=None, origin=None, canonicalize=False):
|
||||
|
|
|
@ -35,6 +35,7 @@ class ParamKey(dns.enum.IntEnum):
|
|||
ECH = 5
|
||||
IPV6HINT = 6
|
||||
DOHPATH = 7
|
||||
OHTTP = 8
|
||||
|
||||
@classmethod
|
||||
def _maximum(cls):
|
||||
|
@ -396,6 +397,36 @@ class ECHParam(Param):
|
|||
file.write(self.ech)
|
||||
|
||||
|
||||
@dns.immutable.immutable
|
||||
class OHTTPParam(Param):
|
||||
# We don't ever expect to instantiate this class, but we need
|
||||
# a from_value() and a from_wire_parser(), so we just return None
|
||||
# from the class methods when things are OK.
|
||||
|
||||
@classmethod
|
||||
def emptiness(cls):
|
||||
return Emptiness.ALWAYS
|
||||
|
||||
@classmethod
|
||||
def from_value(cls, value):
|
||||
if value is None or value == "":
|
||||
return None
|
||||
else:
|
||||
raise ValueError("ohttp with non-empty value")
|
||||
|
||||
def to_text(self):
|
||||
raise NotImplementedError # pragma: no cover
|
||||
|
||||
@classmethod
|
||||
def from_wire_parser(cls, parser, origin=None): # pylint: disable=W0613
|
||||
if parser.remaining() != 0:
|
||||
raise dns.exception.FormError
|
||||
return None
|
||||
|
||||
def to_wire(self, file, origin=None): # pylint: disable=W0613
|
||||
raise NotImplementedError # pragma: no cover
|
||||
|
||||
|
||||
_class_for_key = {
|
||||
ParamKey.MANDATORY: MandatoryParam,
|
||||
ParamKey.ALPN: ALPNParam,
|
||||
|
@ -404,6 +435,7 @@ _class_for_key = {
|
|||
ParamKey.IPV4HINT: IPv4HintParam,
|
||||
ParamKey.ECH: ECHParam,
|
||||
ParamKey.IPV6HINT: IPv6HintParam,
|
||||
ParamKey.OHTTP: OHTTPParam,
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -50,6 +50,8 @@ class TXTBase(dns.rdata.Rdata):
|
|||
self.strings: Tuple[bytes] = self._as_tuple(
|
||||
strings, lambda x: self._as_bytes(x, True, 255)
|
||||
)
|
||||
if len(self.strings) == 0:
|
||||
raise ValueError("the list of strings must not be empty")
|
||||
|
||||
def to_text(
|
||||
self,
|
||||
|
@ -60,7 +62,7 @@ class TXTBase(dns.rdata.Rdata):
|
|||
txt = ""
|
||||
prefix = ""
|
||||
for s in self.strings:
|
||||
txt += '{}"{}"'.format(prefix, dns.rdata._escapify(s))
|
||||
txt += f'{prefix}"{dns.rdata._escapify(s)}"'
|
||||
prefix = " "
|
||||
return txt
|
||||
|
||||
|
|
|
@ -231,7 +231,7 @@ def weighted_processing_order(iterable):
|
|||
total = sum(rdata._processing_weight() or _no_weight for rdata in rdatas)
|
||||
while len(rdatas) > 1:
|
||||
r = random.uniform(0, total)
|
||||
for n, rdata in enumerate(rdatas):
|
||||
for n, rdata in enumerate(rdatas): # noqa: B007
|
||||
weight = rdata._processing_weight() or _no_weight
|
||||
if weight > r:
|
||||
break
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue