From b8ccbd1b105989e33282470427e1c9895ced9fd4 Mon Sep 17 00:00:00 2001 From: Bob Halley Date: Fri, 23 Jan 2026 16:56:02 -0800 Subject: [PATCH] apply black 26.1 --- dns/_asyncio_backend.py | 2 +- dns/asyncquery.py | 28 +++---- dns/asyncresolver.py | 8 +- dns/btreezone.py | 6 +- dns/inet.py | 2 +- dns/message.py | 20 ++--- dns/name.py | 4 +- dns/query.py | 42 +++++----- dns/quic/_asyncio.py | 6 +- dns/quic/_sync.py | 6 +- dns/quic/_trio.py | 4 +- dns/rdtypes/ANY/AMTRELAY.py | 2 +- dns/rdtypes/ANY/CERT.py | 2 +- dns/rdtypes/ANY/CSYNC.py | 2 +- dns/rdtypes/ANY/DSYNC.py | 2 +- dns/rdtypes/ANY/GPOS.py | 2 +- dns/rdtypes/ANY/HIP.py | 2 +- dns/rdtypes/ANY/KEY.py | 1 - dns/rdtypes/ANY/LOC.py | 4 +- dns/rdtypes/ANY/NSEC3.py | 2 +- dns/rdtypes/ANY/NSEC3PARAM.py | 2 +- dns/rdtypes/ANY/OPT.py | 2 +- dns/rdtypes/ANY/TSIG.py | 2 +- dns/rdtypes/ANY/URI.py | 2 +- dns/rdtypes/IN/APL.py | 4 +- dns/rdtypes/IN/NAPTR.py | 2 +- dns/rdtypes/IN/SRV.py | 2 +- dns/rdtypes/svcbbase.py | 2 +- dns/renderer.py | 4 +- dns/resolver.py | 14 ++-- dns/rrset.py | 2 +- dns/set.py | 2 +- dns/transaction.py | 4 +- dns/tsigkeyring.py | 2 +- dns/win32util.py | 6 +- dns/xfr.py | 4 +- dns/zone.py | 2 +- dns/zonefile.py | 8 +- examples/ddns_server.py | 13 ++- examples/receive_notify.py | 2 +- examples/send_notify.py | 1 + pyproject.toml | 2 +- tests/doq.py | 8 +- tests/nanonameserver.py | 4 +- tests/test_async.py | 12 +-- tests/test_generate.py | 1 - tests/test_message.py | 108 ++++++++---------------- tests/test_name.py | 18 ++-- tests/test_query.py | 32 +++---- tests/test_resolution.py | 154 +++++++++++++++++----------------- tests/test_resolver.py | 10 ++- tests/test_xfr.py | 14 ++-- tests/test_zone.py | 4 +- tests/test_zonedigest.py | 24 ++---- 54 files changed, 289 insertions(+), 331 deletions(-) diff --git a/dns/_asyncio_backend.py b/dns/_asyncio_backend.py index ecdd4ac5..83163182 100644 --- a/dns/_asyncio_backend.py +++ b/dns/_asyncio_backend.py @@ -235,7 +235,7 @@ class Backend(dns._asyncbackend.Backend): # This shouldn't happen, but we check to make code analysis software # happier. raise ValueError("destination required for stream sockets") - (r, w) = await _maybe_wait_for( + r, w = await _maybe_wait_for( asyncio.open_connection( destination[0], destination[1], diff --git a/dns/asyncquery.py b/dns/asyncquery.py index cde28adc..ffe76884 100644 --- a/dns/asyncquery.py +++ b/dns/asyncquery.py @@ -144,7 +144,7 @@ async def receive_udp( wire = b"" while True: - (wire, from_address) = await sock.recvfrom(65535, _timeout(expiration)) + wire, from_address = await sock.recvfrom(65535, _timeout(expiration)) if not _matches_destination( sock.family, from_address, destination, ignore_unexpected ): @@ -209,7 +209,7 @@ async def udp( parameters, exceptions, and return type of this method. """ wire = q.to_wire() - (begin_time, expiration) = _compute_times(timeout) + begin_time, expiration = _compute_times(timeout) af = dns.inet.af_for_address(where) destination = _lltuple((where, port), af) if sock: @@ -225,7 +225,7 @@ async def udp( cm = await backend.make_socket(af, socket.SOCK_DGRAM, 0, stuple, dtuple) async with cm as s: await send_udp(s, wire, destination, expiration) # pyright: ignore - (r, received_time, _) = await receive_udp( + r, received_time, _ = await receive_udp( s, # pyright: ignore destination, expiration, @@ -412,7 +412,7 @@ async def tcp( """ wire = q.to_wire() - (begin_time, expiration) = _compute_times(timeout) + begin_time, expiration = _compute_times(timeout) if sock: # Verify that the socket is connected, as if it's not connected, # it's not writable, and the polling in send_tcp() will time out or @@ -432,7 +432,7 @@ async def tcp( ) async with cm as s: await send_tcp(s, wire, expiration) # pyright: ignore - (r, received_time) = await receive_tcp( + r, received_time = await receive_tcp( s, # pyright: ignore expiration, one_rr_per_rrset, @@ -476,7 +476,7 @@ async def tls( See :py:func:`dns.query.tls()` for the documentation of the other parameters, exceptions, and return type of this method. """ - (begin_time, expiration) = _compute_times(timeout) + begin_time, expiration = _compute_times(timeout) if sock: cm: contextlib.AbstractAsyncContextManager = NullContext(sock) else: @@ -737,7 +737,7 @@ async def _http3( cfactory = dns.quic.null_factory # type: ignore mfactory = dns.quic.null_factory # type: ignore else: - (cfactory, mfactory) = dns.quic.factories_for_backend(backend) # type: ignore + cfactory, mfactory = dns.quic.factories_for_backend(backend) # type: ignore async with cfactory() as context: async with mfactory( @@ -749,7 +749,7 @@ async def _http3( the_connection = the_manager.connect( # pyright: ignore where, port, source, source_port ) - (start, expiration) = _compute_times(timeout) + start, expiration = _compute_times(timeout) stream = await the_connection.make_stream(timeout) # type: ignore async with stream: # note that send_h3() does not need await @@ -809,7 +809,7 @@ async def quic( mfactory = dns.quic.null_factory # type: ignore the_connection = connection else: - (cfactory, mfactory) = dns.quic.factories_for_backend(backend) # type: ignore + cfactory, mfactory = dns.quic.factories_for_backend(backend) # type: ignore async with cfactory() as context: async with mfactory( @@ -821,7 +821,7 @@ async def quic( the_connection = the_manager.connect( # pyright: ignore where, port, source, source_port ) - (start, expiration) = _compute_times(timeout) + start, expiration = _compute_times(timeout) stream = await the_connection.make_stream(timeout) # type: ignore async with stream: await stream.send(wire, True) @@ -866,14 +866,14 @@ async def _inbound_xfr( tsig_ctx = None r: dns.message.Message | None = None while not done: - (_, mexpiration) = _compute_times(timeout) + _, mexpiration = _compute_times(timeout) if mexpiration is None or ( expiration is not None and mexpiration > expiration ): mexpiration = expiration if is_udp: timeout = _timeout(mexpiration) - (rwire, _) = await udp_sock.recvfrom(65535, timeout) # pyright: ignore + rwire, _ = await udp_sock.recvfrom(65535, timeout) # pyright: ignore else: ldata = await _read_exactly(tcp_sock, 2, mexpiration) # pyright: ignore (l,) = struct.unpack("!H", ldata) @@ -917,7 +917,7 @@ async def inbound_xfr( the other parameters, exceptions, and return type of this method. """ if query is None: - (query, serial) = dns.xfr.make_query(txn_manager) + query, serial = dns.xfr.make_query(txn_manager) else: serial = dns.xfr.extract_serial_from_query(query) af = dns.inet.af_for_address(where) @@ -925,7 +925,7 @@ async def inbound_xfr( dtuple = (where, port) if not backend: backend = dns.asyncbackend.get_default_backend() - (_, expiration) = _compute_times(lifetime) + _, expiration = _compute_times(lifetime) if query.question[0].rdtype == dns.rdatatype.IXFR and udp_mode != UDPMode.NEVER: s = await backend.make_socket( af, socket.SOCK_DGRAM, 0, stuple, dtuple, _timeout(expiration) diff --git a/dns/asyncresolver.py b/dns/asyncresolver.py index 52edc63e..752b4c6c 100644 --- a/dns/asyncresolver.py +++ b/dns/asyncresolver.py @@ -74,7 +74,7 @@ class Resolver(dns.resolver.BaseResolver): backend = dns.asyncbackend.get_default_backend() start = time.time() while True: - (request, answer) = resolution.next_request() + request, answer = resolution.next_request() # Note we need to say "if answer is not None" and not just # "if answer" because answer implements __len__, and python # will call that. We want to return if we have an answer @@ -85,7 +85,7 @@ class Resolver(dns.resolver.BaseResolver): assert request is not None # needed for type checking done = False while not done: - (nameserver, tcp, backoff) = resolution.next_nameserver() + nameserver, tcp, backoff = resolution.next_nameserver() if backoff: await backend.sleep(backoff) timeout = self._compute_timeout(start, lifetime, resolution.errors) @@ -99,9 +99,9 @@ class Resolver(dns.resolver.BaseResolver): backend=backend, ) except Exception as ex: - (_, done) = resolution.query_result(None, ex) + _, done = resolution.query_result(None, ex) continue - (answer, done) = resolution.query_result(response, None) + answer, done = resolution.query_result(response, None) # Note we need to say "if answer is not None" and not just # "if answer" because answer implements __len__, and python # will call that. We want to return if we have an answer diff --git a/dns/btreezone.py b/dns/btreezone.py index e4068ad2..fdb71695 100644 --- a/dns/btreezone.py +++ b/dns/btreezone.py @@ -162,7 +162,7 @@ class WritableVersion(dns.zone.WritableVersion): def _maybe_cow_with_name( self, name: dns.name.Name ) -> tuple[dns.node.Node, dns.name.Name]: - (node, name) = super()._maybe_cow_with_name(name) + node, name = super()._maybe_cow_with_name(name) node = cast(Node, node) if self._is_origin(name): node.flags |= NodeFlags.ORIGIN @@ -214,7 +214,7 @@ class WritableVersion(dns.zone.WritableVersion): def put_rdataset( self, name: dns.name.Name, rdataset: dns.rdataset.Rdataset ) -> None: - (node, name) = self._maybe_cow_with_name(name) + node, name = self._maybe_cow_with_name(name) if ( rdataset.rdtype == dns.rdatatype.NS and not node.is_origin_or_glue() # type: ignore @@ -231,7 +231,7 @@ class WritableVersion(dns.zone.WritableVersion): rdtype: dns.rdatatype.RdataType, covers: dns.rdatatype.RdataType, ) -> None: - (node, name) = self._maybe_cow_with_name(name) + node, name = self._maybe_cow_with_name(name) if rdtype == dns.rdatatype.NS and name in self.delegations: # pyright: ignore node.flags &= ~NodeFlags.DELEGATION # type: ignore self.delegations.discard(name) # pyright: ignore diff --git a/dns/inet.py b/dns/inet.py index 985ae18a..7db021bd 100644 --- a/dns/inet.py +++ b/dns/inet.py @@ -163,7 +163,7 @@ def low_level_address_tuple(high_tuple: tuple[str, int], af: int | None = None) return (addrpart, port, 0, socket.if_nametoindex(scope)) except AttributeError: # pragma: no cover (we can't really test this) ai_flags = socket.AI_NUMERICHOST - ((*_, tup), *_) = socket.getaddrinfo(address, port, flags=ai_flags) + (*_, tup), *_ = socket.getaddrinfo(address, port, flags=ai_flags) return tup else: raise NotImplementedError(f"unknown address family {af}") diff --git a/dns/message.py b/dns/message.py index add952bd..2930a23a 100644 --- a/dns/message.py +++ b/dns/message.py @@ -639,7 +639,7 @@ class Message: r.write_header() if self.tsig is not None: if self.want_tsig_sign: - (new_tsig, ctx) = dns.tsig.sign( + new_tsig, ctx = dns.tsig.sign( r.get_wire(), self.keyring, self.tsig[0], @@ -895,7 +895,7 @@ class Message: *rcode*, a ``dns.rcode.Rcode``, is the rcode to set. """ - (value, evalue) = dns.rcode.to_flags(rcode) + value, evalue = dns.rcode.to_flags(rcode) self.flags &= 0xFFF0 self.flags |= value self.ednsflags &= 0x00FFFFFF @@ -1145,8 +1145,8 @@ class _WireReader: section = self.message.sections[section_number] for _ in range(qcount): qname = self.parser.get_name(self.message.origin) - (rdtype, rdclass) = self.parser.get_struct("!HH") - (rdclass, rdtype, _, _) = self.message._parse_rr_header( + rdtype, rdclass = self.parser.get_struct("!HH") + rdclass, rdtype, _, _ = self.message._parse_rr_header( section_number, qname, rdclass, rdtype ) self.message.find_rrset( @@ -1173,7 +1173,7 @@ class _WireReader: name = absolute_name.relativize(self.message.origin) else: name = absolute_name - (rdtype, rdclass, ttl, rdlen) = self.parser.get_struct("!HHIH") + rdtype, rdclass, ttl, rdlen = self.parser.get_struct("!HHIH") if rdtype in (dns.rdatatype.OPT, dns.rdatatype.TSIG): ( rdclass, @@ -1184,7 +1184,7 @@ class _WireReader: section_number, count, i, name, rdclass, rdtype ) else: - (rdclass, rdtype, deleting, empty) = self.message._parse_rr_header( + rdclass, rdtype, deleting, empty = self.message._parse_rr_header( section_number, name, rdclass, rdtype ) rdata_start = self.parser.current @@ -1263,9 +1263,7 @@ class _WireReader: if self.parser.remaining() < 12: raise ShortHeader - (id, flags, qcount, ancount, aucount, adcount) = self.parser.get_struct( - "!HHHHHH" - ) + id, flags, qcount, ancount, aucount, adcount = self.parser.get_struct("!HHHHHH") factory = _message_factory_from_opcode(dns.opcode.from_flags(flags)) self.message = factory(id=id) self.message.flags = dns.flags.Flag(flags) @@ -1511,7 +1509,7 @@ class _TextReader: rdclass = dns.rdataclass.IN # Type rdtype = dns.rdatatype.from_text(token.value) - (rdclass, rdtype, _, _) = self.message._parse_rr_header( + rdclass, rdtype, _, _ = self.message._parse_rr_header( section_number, name, rdclass, rdtype ) self.message.find_rrset( @@ -1560,7 +1558,7 @@ class _TextReader: rdclass = dns.rdataclass.IN # Type rdtype = dns.rdatatype.from_text(token.value) - (rdclass, rdtype, deleting, empty) = self.message._parse_rr_header( + rdclass, rdtype, deleting, empty = self.message._parse_rr_header( section_number, name, rdclass, rdtype ) token = self.tok.get() diff --git a/dns/name.py b/dns/name.py index d0634246..cfdf2d64 100644 --- a/dns/name.py +++ b/dns/name.py @@ -505,7 +505,7 @@ class Name: Returns a ``bool``. """ - (nr, _, _) = self.fullcompare(other) + nr, _, _ = self.fullcompare(other) if nr == NameRelation.SUBDOMAIN or nr == NameRelation.EQUAL: return True return False @@ -519,7 +519,7 @@ class Name: Returns a ``bool``. """ - (nr, _, _) = self.fullcompare(other) + nr, _, _ = self.fullcompare(other) if nr == NameRelation.SUPERDOMAIN or nr == NameRelation.EQUAL: return True return False diff --git a/dns/query.py b/dns/query.py index 99da767e..f32ec45a 100644 --- a/dns/query.py +++ b/dns/query.py @@ -512,9 +512,7 @@ def https( Returns a ``dns.message.Message``. """ - (af, _, the_source) = _destination_and_source( - where, port, source, source_port, False - ) + af, _, the_source = _destination_and_source(where, port, source, source_port, False) # we bind url and then override as pyright can't figure out all paths bind. url = where if af is not None and dns.inet.is_address(where): @@ -714,7 +712,7 @@ def _http3( the_connection = the_manager.connect( # pyright: ignore where, port, source, source_port ) - (start, expiration) = _compute_times(timeout) + start, expiration = _compute_times(timeout) with the_connection.make_stream(timeout) as stream: # type: ignore stream.send_h3(url, wire, post) wire = stream.receive(_remaining(expiration)) @@ -853,7 +851,7 @@ def receive_udp( wire = b"" while True: - (wire, from_address) = _udp_recv(sock, 65535, expiration) + wire, from_address = _udp_recv(sock, 65535, expiration) if not _matches_destination( sock.family, from_address, destination, ignore_unexpected ): @@ -952,10 +950,10 @@ def udp( """ wire = q.to_wire() - (af, destination, source) = _destination_and_source( + af, destination, source = _destination_and_source( where, port, source, source_port, True ) - (begin_time, expiration) = _compute_times(timeout) + begin_time, expiration = _compute_times(timeout) if sock: cm: contextlib.AbstractContextManager = contextlib.nullcontext(sock) else: @@ -963,7 +961,7 @@ def udp( cm = make_socket(af, socket.SOCK_DGRAM, source) with cm as s: send_udp(s, wire, destination, expiration) - (r, received_time) = receive_udp( + r, received_time = receive_udp( s, destination, expiration, @@ -1244,11 +1242,11 @@ def tcp( """ wire = q.to_wire() - (begin_time, expiration) = _compute_times(timeout) + begin_time, expiration = _compute_times(timeout) if sock: cm: contextlib.AbstractContextManager = contextlib.nullcontext(sock) else: - (af, destination, source) = _destination_and_source( + af, destination, source = _destination_and_source( where, port, source, source_port, True ) assert af is not None @@ -1258,7 +1256,7 @@ def tcp( # pylint: disable=possibly-used-before-assignment _connect(s, destination, expiration) # pyright: ignore send_tcp(s, wire, expiration) - (r, received_time) = receive_tcp( + r, received_time = receive_tcp( s, expiration, one_rr_per_rrset, q.keyring, q.mac, ignore_trailing ) r.time = received_time - begin_time @@ -1399,8 +1397,8 @@ def tls( ) wire = q.to_wire() - (begin_time, expiration) = _compute_times(timeout) - (af, destination, source) = _destination_and_source( + begin_time, expiration = _compute_times(timeout) + af, destination, source = _destination_and_source( where, port, source, source_port, True ) assert af is not None # where must be an address @@ -1417,7 +1415,7 @@ def tls( _connect(s, destination, expiration) _tls_handshake(s, expiration) send_tcp(s, wire, expiration) - (r, received_time) = receive_tcp( + r, received_time = receive_tcp( s, expiration, one_rr_per_rrset, q.keyring, q.mac, ignore_trailing ) r.time = received_time - begin_time @@ -1508,7 +1506,7 @@ def quic( the_connection = the_manager.connect( # pyright: ignore where, port, source, source_port ) - (start, expiration) = _compute_times(timeout) + start, expiration = _compute_times(timeout) with the_connection.make_stream(timeout) as stream: # type: ignore stream.send(wire, True) wire = stream.receive(_remaining(expiration)) @@ -1563,13 +1561,13 @@ def _inbound_xfr( tsig_ctx = None r: dns.message.Message | None = None while not done: - (_, mexpiration) = _compute_times(timeout) + _, mexpiration = _compute_times(timeout) if mexpiration is None or ( expiration is not None and mexpiration > expiration ): mexpiration = expiration if is_udp: - (rwire, _) = _udp_recv(s, 65535, mexpiration) + rwire, _ = _udp_recv(s, 65535, mexpiration) else: ldata = _net_read(s, 2, mexpiration) (l,) = struct.unpack("!H", ldata) @@ -1695,11 +1693,11 @@ def xfr( rrset.add(soa, 0) if keyring is not None: q.use_tsig(keyring, keyname, algorithm=keyalgorithm) - (af, destination, source) = _destination_and_source( + af, destination, source = _destination_and_source( where, port, source, source_port, True ) assert af is not None - (_, expiration) = _compute_times(lifetime) + _, expiration = _compute_times(lifetime) tm = DummyTransactionManager(zone, relativize) if use_udp and rdtype != dns.rdatatype.IXFR: raise ValueError("cannot do a UDP AXFR") @@ -1757,15 +1755,15 @@ def inbound_xfr( Raises on errors. """ if query is None: - (query, serial) = dns.xfr.make_query(txn_manager) + query, serial = dns.xfr.make_query(txn_manager) else: serial = dns.xfr.extract_serial_from_query(query) - (af, destination, source) = _destination_and_source( + af, destination, source = _destination_and_source( where, port, source, source_port, True ) assert af is not None - (_, expiration) = _compute_times(lifetime) + _, expiration = _compute_times(lifetime) if query.question[0].rdtype == dns.rdatatype.IXFR and udp_mode != UDPMode.NEVER: with make_socket(af, socket.SOCK_DGRAM, source) as s: _connect(s, destination, expiration) diff --git a/dns/quic/_asyncio.py b/dns/quic/_asyncio.py index 25dcf133..67b03889 100644 --- a/dns/quic/_asyncio.py +++ b/dns/quic/_asyncio.py @@ -110,7 +110,7 @@ class AsyncioQuicConnection(AsyncQuicConnection): self._socket_created.set() async with self._socket: while not self._done: - (datagram, address) = await self._socket.recvfrom( + datagram, address = await self._socket.recvfrom( QUIC_MAX_DATAGRAM, None ) if address[0] != self._peer[0] or address[1] != self._peer[1]: @@ -145,7 +145,7 @@ class AsyncioQuicConnection(AsyncQuicConnection): assert address == self._peer assert self._socket is not None await self._socket.sendto(datagram, self._peer, None) - (expiration, interval) = self._get_timer_values() + expiration, interval = self._get_timer_values() try: await asyncio.wait_for(self._wait_for_wake_timer(), interval) except Exception: @@ -254,7 +254,7 @@ class AsyncioQuicManager(AsyncQuicManager): def connect( self, address, port=853, source=None, source_port=0, want_session_ticket=True ): - (connection, start) = self._connect( + connection, start = self._connect( address, port, source, source_port, want_session_ticket ) if start: diff --git a/dns/quic/_sync.py b/dns/quic/_sync.py index a2a82fe1..ed7be596 100644 --- a/dns/quic/_sync.py +++ b/dns/quic/_sync.py @@ -103,7 +103,7 @@ class SyncQuicConnection(BaseQuicConnection): self._socket.close() raise self._socket.connect(self._peer) - (self._send_wakeup, self._receive_wakeup) = socket.socketpair() + self._send_wakeup, self._receive_wakeup = socket.socketpair() self._receive_wakeup.setblocking(False) self._socket.setblocking(False) self._handshake_complete = threading.Event() @@ -136,7 +136,7 @@ class SyncQuicConnection(BaseQuicConnection): self._receive_wakeup, selectors.EVENT_READ, self._drain_wakeup ) while not self._done: - (expiration, interval) = self._get_timer_values(False) + expiration, interval = self._get_timer_values(False) items = sel.select(interval) for key, _ in items: key.data() @@ -272,7 +272,7 @@ class SyncQuicManager(BaseQuicManager): want_token=True, ): with self._lock: - (connection, start) = self._connect( + connection, start = self._connect( address, port, source, source_port, want_session_ticket, want_token ) if start: diff --git a/dns/quic/_trio.py b/dns/quic/_trio.py index b79f429f..b4d6eff8 100644 --- a/dns/quic/_trio.py +++ b/dns/quic/_trio.py @@ -99,7 +99,7 @@ class TrioQuicConnection(AsyncQuicConnection): ) await self._socket.connect(self._peer) while not self._done: - (expiration, interval) = self._get_timer_values(False) + expiration, interval = self._get_timer_values(False) if self._send_pending: # Do not block forever if sends are pending. Even though we # have a wake-up mechanism if we've already started the blocking @@ -228,7 +228,7 @@ class TrioQuicManager(AsyncQuicManager): def connect( self, address, port=853, source=None, source_port=0, want_session_ticket=True ): - (connection, start) = self._connect( + connection, start = self._connect( address, port, source, source_port, want_session_ticket ) if start: diff --git a/dns/rdtypes/ANY/AMTRELAY.py b/dns/rdtypes/ANY/AMTRELAY.py index dc9fa877..b3096347 100644 --- a/dns/rdtypes/ANY/AMTRELAY.py +++ b/dns/rdtypes/ANY/AMTRELAY.py @@ -80,7 +80,7 @@ class AMTRELAY(dns.rdata.Rdata): @classmethod def from_wire_parser(cls, rdclass, rdtype, parser, origin=None): - (precedence, relay_type) = parser.get_struct("!BB") + precedence, relay_type = parser.get_struct("!BB") discovery_optional = bool(relay_type >> 7) relay_type &= 0x7F relay = Relay.from_wire_parser(relay_type, parser, origin) diff --git a/dns/rdtypes/ANY/CERT.py b/dns/rdtypes/ANY/CERT.py index 4d5e5bda..c34febcf 100644 --- a/dns/rdtypes/ANY/CERT.py +++ b/dns/rdtypes/ANY/CERT.py @@ -108,6 +108,6 @@ class CERT(dns.rdata.Rdata): @classmethod def from_wire_parser(cls, rdclass, rdtype, parser, origin=None): - (certificate_type, key_tag, algorithm) = parser.get_struct("!HHB") + certificate_type, key_tag, algorithm = parser.get_struct("!HHB") certificate = parser.get_remaining() return cls(rdclass, rdtype, certificate_type, key_tag, algorithm, certificate) diff --git a/dns/rdtypes/ANY/CSYNC.py b/dns/rdtypes/ANY/CSYNC.py index 103486d8..36d80759 100644 --- a/dns/rdtypes/ANY/CSYNC.py +++ b/dns/rdtypes/ANY/CSYNC.py @@ -63,6 +63,6 @@ class CSYNC(dns.rdata.Rdata): @classmethod def from_wire_parser(cls, rdclass, rdtype, parser, origin=None): - (serial, flags) = parser.get_struct("!IH") + serial, flags = parser.get_struct("!IH") bitmap = Bitmap.from_wire_parser(parser) return cls(rdclass, rdtype, serial, flags, bitmap) diff --git a/dns/rdtypes/ANY/DSYNC.py b/dns/rdtypes/ANY/DSYNC.py index e8d1394a..41ce0888 100644 --- a/dns/rdtypes/ANY/DSYNC.py +++ b/dns/rdtypes/ANY/DSYNC.py @@ -67,6 +67,6 @@ class DSYNC(dns.rdata.Rdata): @classmethod def from_wire_parser(cls, rdclass, rdtype, parser, origin=None): - (rrtype, scheme, port) = parser.get_struct("!HBH") + rrtype, scheme, port = parser.get_struct("!HBH") target = parser.get_name(origin) return cls(rdclass, rdtype, rrtype, scheme, port, target) diff --git a/dns/rdtypes/ANY/GPOS.py b/dns/rdtypes/ANY/GPOS.py index d79f4a06..f2248ab6 100644 --- a/dns/rdtypes/ANY/GPOS.py +++ b/dns/rdtypes/ANY/GPOS.py @@ -31,7 +31,7 @@ def _validate_float_string(what): if what.isdigit(): return try: - (left, right) = what.split(b".") + left, right = what.split(b".") except ValueError: raise dns.exception.FormError if left == b"" and right == b"": diff --git a/dns/rdtypes/ANY/HIP.py b/dns/rdtypes/ANY/HIP.py index dc7948a1..d31d6334 100644 --- a/dns/rdtypes/ANY/HIP.py +++ b/dns/rdtypes/ANY/HIP.py @@ -75,7 +75,7 @@ class HIP(dns.rdata.Rdata): @classmethod def from_wire_parser(cls, rdclass, rdtype, parser, origin=None): - (lh, algorithm, lk) = parser.get_struct("!BBH") + lh, algorithm, lk = parser.get_struct("!BBH") hit = parser.get_bytes(lh) key = parser.get_bytes(lk) servers = [] diff --git a/dns/rdtypes/ANY/KEY.py b/dns/rdtypes/ANY/KEY.py index 9b0df1c7..7e4945d9 100644 --- a/dns/rdtypes/ANY/KEY.py +++ b/dns/rdtypes/ANY/KEY.py @@ -23,7 +23,6 @@ import dns.immutable import dns.rdtypes.dnskeybase # lgtm[py/import-and-import-from] - class Protocol(dns.enum.IntEnum): NONE = 0 TLS = 1 diff --git a/dns/rdtypes/ANY/LOC.py b/dns/rdtypes/ANY/LOC.py index 6c7fe5e7..227a257f 100644 --- a/dns/rdtypes/ANY/LOC.py +++ b/dns/rdtypes/ANY/LOC.py @@ -200,7 +200,7 @@ class LOC(dns.rdata.Rdata): latitude[1] = int(t) t = tok.get_string() if "." in t: - (seconds, milliseconds) = t.split(".") + seconds, milliseconds = t.split(".") if not seconds.isdigit(): raise dns.exception.SyntaxError("bad latitude seconds value") latitude[2] = int(seconds) @@ -229,7 +229,7 @@ class LOC(dns.rdata.Rdata): longitude[1] = int(t) t = tok.get_string() if "." in t: - (seconds, milliseconds) = t.split(".") + seconds, milliseconds = t.split(".") if not seconds.isdigit(): raise dns.exception.SyntaxError("bad longitude seconds value") longitude[2] = int(seconds) diff --git a/dns/rdtypes/ANY/NSEC3.py b/dns/rdtypes/ANY/NSEC3.py index 68994187..cd1d9d98 100644 --- a/dns/rdtypes/ANY/NSEC3.py +++ b/dns/rdtypes/ANY/NSEC3.py @@ -110,7 +110,7 @@ class NSEC3(dns.rdata.Rdata): @classmethod def from_wire_parser(cls, rdclass, rdtype, parser, origin=None): - (algorithm, flags, iterations) = parser.get_struct("!BBH") + algorithm, flags, iterations = parser.get_struct("!BBH") salt = parser.get_counted_bytes() next = parser.get_counted_bytes() bitmap = Bitmap.from_wire_parser(parser) diff --git a/dns/rdtypes/ANY/NSEC3PARAM.py b/dns/rdtypes/ANY/NSEC3PARAM.py index e8678722..3ab90ee2 100644 --- a/dns/rdtypes/ANY/NSEC3PARAM.py +++ b/dns/rdtypes/ANY/NSEC3PARAM.py @@ -64,6 +64,6 @@ class NSEC3PARAM(dns.rdata.Rdata): @classmethod def from_wire_parser(cls, rdclass, rdtype, parser, origin=None): - (algorithm, flags, iterations) = parser.get_struct("!BBH") + algorithm, flags, iterations = parser.get_struct("!BBH") salt = parser.get_counted_bytes() return cls(rdclass, rdtype, algorithm, flags, iterations, salt) diff --git a/dns/rdtypes/ANY/OPT.py b/dns/rdtypes/ANY/OPT.py index d343dfa5..94583ced 100644 --- a/dns/rdtypes/ANY/OPT.py +++ b/dns/rdtypes/ANY/OPT.py @@ -65,7 +65,7 @@ class OPT(dns.rdata.Rdata): def from_wire_parser(cls, rdclass, rdtype, parser, origin=None): options = [] while parser.remaining() > 0: - (otype, olen) = parser.get_struct("!HH") + otype, olen = parser.get_struct("!HH") with parser.restrict_to(olen): opt = dns.edns.option_from_wire_parser(otype, parser) options.append(opt) diff --git a/dns/rdtypes/ANY/TSIG.py b/dns/rdtypes/ANY/TSIG.py index 79423826..c375e0a7 100644 --- a/dns/rdtypes/ANY/TSIG.py +++ b/dns/rdtypes/ANY/TSIG.py @@ -145,7 +145,7 @@ class TSIG(dns.rdata.Rdata): time_signed = parser.get_uint48() fudge = parser.get_uint16() mac = parser.get_counted_bytes(2) - (original_id, error) = parser.get_struct("!HH") + original_id, error = parser.get_struct("!HH") other = parser.get_counted_bytes(2) return cls( rdclass, diff --git a/dns/rdtypes/ANY/URI.py b/dns/rdtypes/ANY/URI.py index 021391d6..1943e58d 100644 --- a/dns/rdtypes/ANY/URI.py +++ b/dns/rdtypes/ANY/URI.py @@ -62,7 +62,7 @@ class URI(dns.rdata.Rdata): @classmethod def from_wire_parser(cls, rdclass, rdtype, parser, origin=None): - (priority, weight) = parser.get_struct("!HH") + priority, weight = parser.get_struct("!HH") target = parser.get_remaining() if len(target) == 0: raise dns.exception.FormError("URI target may not be empty") diff --git a/dns/rdtypes/IN/APL.py b/dns/rdtypes/IN/APL.py index c4ce6e45..daa1e5f9 100644 --- a/dns/rdtypes/IN/APL.py +++ b/dns/rdtypes/IN/APL.py @@ -107,9 +107,9 @@ class APL(dns.rdata.Rdata): item = item[1:] else: negation = False - (family, rest) = item.split(":", 1) + family, rest = item.split(":", 1) family = int(family) - (address, prefix) = rest.split("/", 1) + address, prefix = rest.split("/", 1) prefix = int(prefix) item = APLItem(family, negation, address, prefix) items.append(item) diff --git a/dns/rdtypes/IN/NAPTR.py b/dns/rdtypes/IN/NAPTR.py index 98bbf4ab..866a016e 100644 --- a/dns/rdtypes/IN/NAPTR.py +++ b/dns/rdtypes/IN/NAPTR.py @@ -84,7 +84,7 @@ class NAPTR(dns.rdata.Rdata): @classmethod def from_wire_parser(cls, rdclass, rdtype, parser, origin=None): - (order, preference) = parser.get_struct("!HH") + order, preference = parser.get_struct("!HH") strings = [] for _ in range(3): s = parser.get_counted_bytes() diff --git a/dns/rdtypes/IN/SRV.py b/dns/rdtypes/IN/SRV.py index 044c10e3..50f69765 100644 --- a/dns/rdtypes/IN/SRV.py +++ b/dns/rdtypes/IN/SRV.py @@ -60,7 +60,7 @@ class SRV(dns.rdata.Rdata): @classmethod def from_wire_parser(cls, rdclass, rdtype, parser, origin=None): - (priority, weight, port) = parser.get_struct("!HHH") + priority, weight, port = parser.get_struct("!HHH") target = parser.get_name(origin) return cls(rdclass, rdtype, priority, weight, port, target) diff --git a/dns/rdtypes/svcbbase.py b/dns/rdtypes/svcbbase.py index bf7570f0..f06d31ad 100644 --- a/dns/rdtypes/svcbbase.py +++ b/dns/rdtypes/svcbbase.py @@ -440,7 +440,7 @@ _class_for_key: dict[ParamKey, Any] = { def _validate_and_define(params, key, value): - (key, force_generic) = _validate_key(_unescape(key)) + key, force_generic = _validate_key(_unescape(key)) if key in params: raise SyntaxError(f'duplicate key "{key:d}"') cls = _class_for_key.get(key, GenericParam) diff --git a/dns/renderer.py b/dns/renderer.py index 1e54df02..bd1b388e 100644 --- a/dns/renderer.py +++ b/dns/renderer.py @@ -261,7 +261,7 @@ class Renderer: tsig = _make_tsig( # pyright: ignore keyname, algorithm, 0, fudge, b"", id, tsig_error, other_data ) - (tsig, _) = dns.tsig.sign(s, key, tsig[0], int(time.time()), request_mac) + tsig, _ = dns.tsig.sign(s, key, tsig[0], int(time.time()), request_mac) self._write_tsig(tsig, keyname) def add_multi_tsig( @@ -293,7 +293,7 @@ class Renderer: tsig = _make_tsig( # pyright: ignore keyname, algorithm, 0, fudge, b"", id, tsig_error, other_data ) - (tsig, ctx) = dns.tsig.sign( + tsig, ctx = dns.tsig.sign( s, key, tsig[0], int(time.time()), request_mac, ctx, True ) self._write_tsig(tsig, keyname) diff --git a/dns/resolver.py b/dns/resolver.py index 9d8d1eed..849d67e6 100644 --- a/dns/resolver.py +++ b/dns/resolver.py @@ -1313,7 +1313,7 @@ class Resolver(BaseResolver): ) start = time.time() while True: - (request, answer) = resolution.next_request() + request, answer = resolution.next_request() # Note we need to say "if answer is not None" and not just # "if answer" because answer implements __len__, and python # will call that. We want to return if we have an answer @@ -1324,7 +1324,7 @@ class Resolver(BaseResolver): assert request is not None # needed for type checking done = False while not done: - (nameserver, tcp, backoff) = resolution.next_nameserver() + nameserver, tcp, backoff = resolution.next_nameserver() if backoff: time.sleep(backoff) timeout = self._compute_timeout(start, lifetime, resolution.errors) @@ -1337,9 +1337,9 @@ class Resolver(BaseResolver): max_size=tcp, ) except Exception as ex: - (_, done) = resolution.query_result(None, ex) + _, done = resolution.query_result(None, ex) continue - (answer, done) = resolution.query_result(response, None) + answer, done = resolution.query_result(response, None) # Note we need to say "if answer is not None" and not just # "if answer" because answer implements __len__, and python # will call that. We want to return if we have an answer @@ -1727,7 +1727,7 @@ def zone_for_name( if response: for rrs in response.authority: if rrs.rdtype == dns.rdatatype.SOA and rrs.rdclass == rdclass: - (nr, _, _) = rrs.name.fullcompare(name) + nr, _, _ = rrs.name.fullcompare(name) if nr == dns.name.NAMERELN_SUPERDOMAIN: # We're doing a proper superdomain check as # if the name were equal we ought to have gotten @@ -1973,7 +1973,7 @@ def _getfqdn(name=None): if name is None: name = socket.gethostname() try: - (name, _, _) = _gethostbyaddr(name) + name, _, _ = _gethostbyaddr(name) # Python's version checks aliases too, but our gethostbyname # ignores them, so we do so here as well. except Exception: # pragma: no cover @@ -2010,7 +2010,7 @@ def _gethostbyaddr(ip): raise socket.gaierror(socket.EAI_NONAME, "Name or service not known") sockaddr = (ip, 80) family = socket.AF_INET - (name, _) = _getnameinfo(sockaddr, socket.NI_NAMEREQD) + name, _ = _getnameinfo(sockaddr, socket.NI_NAMEREQD) aliases = [] addresses = [] tuples = _getaddrinfo( diff --git a/dns/rrset.py b/dns/rrset.py index a9a00913..40982b5f 100644 --- a/dns/rrset.py +++ b/dns/rrset.py @@ -171,7 +171,7 @@ class RRset(dns.rdataset.Rdataset): """ return super().to_wire( - self.name, file, compress, origin, self.deleting, **kw # type:ignore + self.name, file, compress, origin, self.deleting, **kw # type: ignore ) # pylint: enable=arguments-differ diff --git a/dns/set.py b/dns/set.py index 140efb96..9db0bf61 100644 --- a/dns/set.py +++ b/dns/set.py @@ -67,7 +67,7 @@ class Set: def pop(self): """Remove an arbitrary item from the set.""" - (k, _) = self.items.popitem() + k, _ = self.items.popitem() return k def _clone(self) -> "Set": diff --git a/dns/transaction.py b/dns/transaction.py index 96a36b01..9b0c254a 100644 --- a/dns/transaction.py +++ b/dns/transaction.py @@ -64,7 +64,7 @@ class TransactionManager: def from_wire_origin(self) -> dns.name.Name | None: """Origin to use in from_wire() calls.""" - (absolute_origin, relativize, _) = self.origin_information() + absolute_origin, relativize, _ = self.origin_information() if relativize: return absolute_origin else: @@ -444,7 +444,7 @@ class Transaction: if rdataset.rdclass != self.manager.get_class(): raise ValueError(f"{method} has objects of wrong RdataClass") if rdataset.rdtype == dns.rdatatype.SOA: - (_, _, origin) = self._origin_information() + _, _, origin = self._origin_information() if name != origin: raise ValueError(f"{method} has non-origin SOA") self._raise_if_not_empty(method, args) diff --git a/dns/tsigkeyring.py b/dns/tsigkeyring.py index 0de4f601..d4f2dcbf 100644 --- a/dns/tsigkeyring.py +++ b/dns/tsigkeyring.py @@ -37,7 +37,7 @@ def from_text(textring: dict[str, Any]) -> dict[dns.name.Name, Any]: if isinstance(value, str): keyring[kname] = dns.tsig.Key(kname, value).secret else: - (algorithm, secret) = value + algorithm, secret = value keyring[kname] = dns.tsig.Key(kname, secret, algorithm) return keyring diff --git a/dns/win32util.py b/dns/win32util.py index b0ea29d4..20852f78 100644 --- a/dns/win32util.py +++ b/dns/win32util.py @@ -164,9 +164,7 @@ if sys.platform == "win32": try: # The PnpInstanceID points to a key inside Enum - (pnp_id, ttype) = winreg.QueryValueEx( - connection_key, "PnpInstanceID" - ) + pnp_id, ttype = winreg.QueryValueEx(connection_key, "PnpInstanceID") if ttype != winreg.REG_SZ: raise ValueError # pragma: no cover @@ -177,7 +175,7 @@ if sys.platform == "win32": try: # Get ConfigFlags for this device - (flags, ttype) = winreg.QueryValueEx(device_key, "ConfigFlags") + flags, ttype = winreg.QueryValueEx(device_key, "ConfigFlags") if ttype != winreg.REG_DWORD: raise ValueError # pragma: no cover diff --git a/dns/xfr.py b/dns/xfr.py index aa904207..0f4c7f36 100644 --- a/dns/xfr.py +++ b/dns/xfr.py @@ -89,7 +89,7 @@ class Inbound: raise ValueError("rdtype is not IXFR or AXFR") self.serial = serial self.is_udp = is_udp - (_, _, origin) = txn_manager.origin_information() + _, _, origin = txn_manager.origin_information() if origin is None: raise ValueError("transaction manager must supply an origin for XFRs") self.origin = origin @@ -295,7 +295,7 @@ def make_query( Returns a `(query, serial)` tuple. """ - (zone_origin, _, origin) = txn_manager.origin_information() + zone_origin, _, origin = txn_manager.origin_information() if zone_origin is None: raise ValueError("no zone origin") if serial is None: diff --git a/dns/zone.py b/dns/zone.py index a7e71ee0..b2708fc6 100644 --- a/dns/zone.py +++ b/dns/zone.py @@ -1201,7 +1201,7 @@ class Transaction(dns.transaction.Transaction): self, ) -> tuple[dns.name.Name | None, bool, dns.name.Name | None]: assert self.version is not None - (absolute, relativize, effective) = self.manager.origin_information() + absolute, relativize, effective = self.manager.origin_information() if absolute is None and self.version.origin is not None: # No origin has been committed yet, but we've learned one as part of # this txn. Use it. diff --git a/dns/zonefile.py b/dns/zonefile.py index 5822b749..590e79a1 100644 --- a/dns/zonefile.py +++ b/dns/zonefile.py @@ -103,7 +103,7 @@ class Reader: default_ttl: int | None = None, ): self.tok = tok - (self.zone_origin, self.relativize, _) = txn.manager.origin_information() + self.zone_origin, self.relativize, _ = txn.manager.origin_information() self.current_origin = self.zone_origin self.last_ttl = 0 self.last_ttl_known = False @@ -252,7 +252,7 @@ class Reader: # correct, but it is correct almost all of the time. # We convert them to syntax errors so that we can emit # helpful filename:line info. - (ty, va) = sys.exc_info()[:2] + ty, va = sys.exc_info()[:2] raise dns.exception.SyntaxError(f"caught exception {str(ty)}: {str(va)}") if not self.default_ttl_known and rdtype == dns.rdatatype.SOA: @@ -451,7 +451,7 @@ class Reader: # correct, but it is correct almost all of the time. # We convert them to syntax errors so that we can emit # helpful filename:line info. - (ty, va) = sys.exc_info()[:2] + ty, va = sys.exc_info()[:2] raise dns.exception.SyntaxError( f"caught exception {str(ty)}: {str(va)}" ) @@ -549,7 +549,7 @@ class Reader: self.tok.unget(token) self._rr_line() except dns.exception.SyntaxError as detail: - (filename, line_number) = self.tok.where() + filename, line_number = self.tok.where() if detail is None: detail = "syntax error" ex = dns.exception.SyntaxError(f"{filename}:{line_number}: {detail}") diff --git a/examples/ddns_server.py b/examples/ddns_server.py index 4bd99b14..ec4c405f 100644 --- a/examples/ddns_server.py +++ b/examples/ddns_server.py @@ -20,7 +20,6 @@ import dns.rdatatype import dns.tsigkeyring import dns.update - KEYRING = dns.tsigkeyring.from_text({"keyname.": "NjHwPsMKjdN++dOfE5iAiQ=="}) TEST_ZONES = { @@ -41,11 +40,15 @@ async def handle_nsupdate(data, addr): msg = dns.message.from_wire(data, keyring=KEYRING) try: if msg.opcode() != dns.opcode.UPDATE: - raise NotImplementedError("Opcode %s not implemented" % dns.opcode.to_text(msg.opcode())) + raise NotImplementedError( + "Opcode %s not implemented" % dns.opcode.to_text(msg.opcode()) + ) update_msg = typing.cast(dns.update.UpdateMessage, msg) zone = update_msg.zone[0].name if not msg.had_tsig or msg.keyname not in TEST_ZONES[zone]: - raise dns.exception.DeniedByPolicy(f"Key {msg.keyname} not allowed for zone {zone}") + raise dns.exception.DeniedByPolicy( + f"Key {msg.keyname} not allowed for zone {zone}" + ) for r in update_msg.update: if r.deleting: if r.deleting == dns.rdataclass.ANY and r.rdtype == dns.rdatatype.ANY: @@ -91,7 +94,9 @@ async def main(): result = await handle_nsupdate(data, addr) self.transport.sendto(result, addr) - transport, _protocol = await loop.create_datagram_endpoint(lambda: DatagramProtocol(), local_addr=(hostname, port)) + transport, _protocol = await loop.create_datagram_endpoint( + lambda: DatagramProtocol(), local_addr=(hostname, port) + ) # Start TCP server class StreamReaderProtocol(asyncio.StreamReaderProtocol): diff --git a/examples/receive_notify.py b/examples/receive_notify.py index 0ffb9430..ade3bf37 100644 --- a/examples/receive_notify.py +++ b/examples/receive_notify.py @@ -18,7 +18,7 @@ port = 53535 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.bind((address, port)) while True: - (wire, address) = s.recvfrom(512) + wire, address = s.recvfrom(512) notify = dns.message.from_wire(wire) try: diff --git a/examples/send_notify.py b/examples/send_notify.py index 9cbdb664..bb6ec3f4 100755 --- a/examples/send_notify.py +++ b/examples/send_notify.py @@ -2,6 +2,7 @@ """ Minimalistic RFC 1996-like NOTIFY sender. """ + import argparse import ipaddress import socket diff --git a/pyproject.toml b/pyproject.toml index 751fbe7d..b715046d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -31,7 +31,7 @@ version = "2.9.0dev0" [project.optional-dependencies] dev = [ - "black>=25.12.0", + "black>=26.1", "coverage>=7.0", "hypercorn>=0.18.0", "pyright>=1.1.407", diff --git a/tests/doq.py b/tests/doq.py index 8a44663b..bbc5ef57 100644 --- a/tests/doq.py +++ b/tests/doq.py @@ -177,7 +177,7 @@ class Connection: async with trio.open_nursery() as nursery: while not self.done: now = time.time() - (expiration, interval) = self.get_timer_values(now) + expiration, interval = self.get_timer_values(now) # Note it must be trio.current_time() and not now due to how # trio time works! if self.send_pending: @@ -186,7 +186,7 @@ class Connection: with trio.CancelScope( deadline=trio.current_time() + interval ) as self.worker_scope: - (datagram, peer) = await self.receive_channel.receive() + datagram, peer = await self.receive_channel.receive() self.quic_connection.receive_datagram(datagram, peer, now) self.worker_scope = None now = time.time() @@ -277,7 +277,7 @@ class Listener: data = None peer = None try: - (data, peer) = await self.socket.recvfrom(65535) + data, peer = await self.socket.recvfrom(65535) except Exception: continue buffer = aioquic.buffer.Buffer(data=data) @@ -327,7 +327,7 @@ class Listener: continue else: try: - (cid, retry_cid) = self.retry.validate_token( + cid, retry_cid = self.retry.validate_token( peer, header.token ) # We need to recheck the cid here in case of duplicates, diff --git a/tests/nanonameserver.py b/tests/nanonameserver.py index 2727e42a..63573216 100644 --- a/tests/nanonameserver.py +++ b/tests/nanonameserver.py @@ -197,7 +197,7 @@ class Server(threading.Thread): udp_socket.close() def __enter__(self): - (self.left, self.right) = socket.socketpair() + self.left, self.right = socket.socketpair() # We're making the sockets now so they can be sent to by the # caller immediately (i.e. no race with the listener starting # in the thread). @@ -318,7 +318,7 @@ class Server(threading.Thread): local = self.addresses[connection_type] while True: try: - (wire, peer) = await sock.recvfrom(65535) + wire, peer = await sock.recvfrom(65535) for wire in self.handle_wire(wire, peer, local, connection_type): await sock.sendto(wire, peer) except Exception as e: diff --git a/tests/test_async.py b/tests/test_async.py index 9a19609c..0ec72fe3 100644 --- a/tests/test_async.py +++ b/tests/test_async.py @@ -499,7 +499,7 @@ class AsyncTests(unittest.TestCase): q = dns.message.make_query(qname, dns.rdatatype.DNSKEY) return await dns.asyncquery.udp_with_fallback(q, address, timeout=4) - (_, tcp) = self.async_run(run) + _, tcp = self.async_run(run) self.assertTrue(tcp) @tests.util.retry_on_timeout @@ -511,7 +511,7 @@ class AsyncTests(unittest.TestCase): q = dns.message.make_query(qname, dns.rdatatype.A) return await dns.asyncquery.udp_with_fallback(q, address, timeout=2) - (_, tcp) = self.async_run(run) + _, tcp = self.async_run(run) self.assertFalse(tcp) @tests.util.retry_on_timeout @@ -528,12 +528,12 @@ class AsyncTests(unittest.TestCase): q = dns.message.make_query("dns.google", dns.rdatatype.A) await dns.asyncquery.send_udp(sender, q, listener_address) expiration = time.time() + 2 - (_, _, recv_address) = await dns.asyncquery.receive_udp( + _, _, recv_address = await dns.asyncquery.receive_udp( listener, expiration=expiration ) return (sender_address, recv_address) - (sender_address, recv_address) = self.async_run(run) + sender_address, recv_address = self.async_run(run) self.assertEqual(sender_address, recv_address) def testUDPReceiveTimeout(self): @@ -795,7 +795,7 @@ class IgnoreErrors(unittest.TestCase): if good_r is None: good_r = self.good_r s = MockSock(wire1, from1, wire2, from2) - (r, when, _) = await dns.asyncquery.receive_udp( + r, when, _ = await dns.asyncquery.receive_udp( s, ("127.0.0.1", 53), time.time() + 2, @@ -867,7 +867,7 @@ class IgnoreErrors(unittest.TestCase): bad_r_wire = bad_r.to_wire() async def abad(): - (r, wire) = await self.mock_receive( + r, wire = await self.mock_receive( bad_r_wire, ("127.0.0.1", 53), self.good_r_wire, diff --git a/tests/test_generate.py b/tests/test_generate.py index 75f22583..7a6baf8b 100644 --- a/tests/test_generate.py +++ b/tests/test_generate.py @@ -28,7 +28,6 @@ import dns.rdatatype import dns.rrset import dns.zone - example_text = """$TTL 1h $ORIGIN 0.0.192.IN-ADDR.ARPA. $GENERATE 1-2 0 CNAME SERVER$.EXAMPLE. diff --git a/tests/test_message.py b/tests/test_message.py index 1d592657..0eee2a2e 100644 --- a/tests/test_message.py +++ b/tests/test_message.py @@ -686,15 +686,13 @@ class MessageTestCase(unittest.TestCase): r.resolve_chaining() def test_resolve_chaining_no_infinite_loop(self): - r = dns.message.from_text( - """id 1 + r = dns.message.from_text("""id 1 flags QR ;QUESTION www.example. IN CNAME ;AUTHORITY example. 300 IN SOA . . 1 2 3 4 5 -""" - ) +""") # passing is not going into an infinite loop in this call result = r.resolve_chaining() self.assertEqual(result.canonical_name, dns.name.from_text("www.example.")) @@ -703,144 +701,114 @@ example. 300 IN SOA . . 1 2 3 4 5 def test_bad_text_questions(self): with self.assertRaises(dns.exception.SyntaxError): - dns.message.from_text( - """id 1 + dns.message.from_text("""id 1 ;QUESTION example. -""" - ) +""") with self.assertRaises(dns.exception.SyntaxError): - dns.message.from_text( - """id 1 + dns.message.from_text("""id 1 ;QUESTION example. IN -""" - ) +""") with self.assertRaises(dns.rdatatype.UnknownRdatatype): - dns.message.from_text( - """id 1 + dns.message.from_text("""id 1 ;QUESTION example. INA -""" - ) +""") with self.assertRaises(dns.rdatatype.UnknownRdatatype): - dns.message.from_text( - """id 1 + dns.message.from_text("""id 1 ;QUESTION example. IN BOGUS -""" - ) +""") def test_bad_text_rrs(self): with self.assertRaises(dns.exception.SyntaxError): - dns.message.from_text( - """id 1 + dns.message.from_text("""id 1 flags QR ;QUESTION example. IN A ;ANSWER example. -""" - ) +""") with self.assertRaises(dns.exception.SyntaxError): - dns.message.from_text( - """id 1 + dns.message.from_text("""id 1 flags QR ;QUESTION example. IN A ;ANSWER example. IN -""" - ) +""") with self.assertRaises(dns.exception.SyntaxError): - dns.message.from_text( - """id 1 + dns.message.from_text("""id 1 flags QR ;QUESTION example. IN A ;ANSWER example. 300 -""" - ) +""") with self.assertRaises(dns.rdatatype.UnknownRdatatype): - dns.message.from_text( - """id 1 + dns.message.from_text("""id 1 flags QR ;QUESTION example. IN A ;ANSWER example. 30a IN A -""" - ) +""") with self.assertRaises(dns.rdatatype.UnknownRdatatype): - dns.message.from_text( - """id 1 + dns.message.from_text("""id 1 flags QR ;QUESTION example. IN A ;ANSWER example. 300 INA A -""" - ) +""") with self.assertRaises(dns.exception.UnexpectedEnd): - dns.message.from_text( - """id 1 + dns.message.from_text("""id 1 flags QR ;QUESTION example. IN A ;ANSWER example. 300 IN A -""" - ) +""") with self.assertRaises(dns.exception.SyntaxError): - dns.message.from_text( - """id 1 + dns.message.from_text("""id 1 flags QR opcode UPDATE ;ZONE example. IN SOA ;UPDATE example. 300 IN A -""" - ) +""") with self.assertRaises(dns.exception.SyntaxError): - dns.message.from_text( - """id 1 + dns.message.from_text("""id 1 flags QR opcode UPDATE ;ZONE example. IN SOA ;UPDATE example. 300 NONE A -""" - ) +""") with self.assertRaises(dns.exception.SyntaxError): - dns.message.from_text( - """id 1 + dns.message.from_text("""id 1 flags QR opcode UPDATE ;ZONE example. IN SOA ;PREREQ example. 300 NONE A 10.0.0.1 -""" - ) +""") with self.assertRaises(dns.exception.SyntaxError): - dns.message.from_text( - """id 1 + dns.message.from_text("""id 1 flags QR ;ANSWER 300 IN A 10.0.0.1 -""" - ) +""") with self.assertRaises(dns.exception.SyntaxError): - dns.message.from_text( - """id 1 + dns.message.from_text("""id 1 flags QR ;QUESTION IN SOA -""" - ) +""") def test_from_wire_makes_Flag(self): m = dns.message.from_wire(goodwire) @@ -848,8 +816,7 @@ flags QR self.assertEqual(m.flags, dns.flags.Flag.RD) def test_continue_on_error(self): - good_message = dns.message.from_text( - """id 1234 + good_message = dns.message.from_text("""id 1234 opcode QUERY rcode NOERROR flags QR AA RD @@ -859,8 +826,7 @@ www.dnspython.org. IN SOA www.dnspython.org. 300 IN SOA . . 1 2 3 4 4294967295 www.dnspython.org. 300 IN A 1.2.3.4 www.dnspython.org. 300 IN AAAA ::1 -""" - ) +""") wire = good_message.to_wire() # change ANCOUNT to 255 bad_wire = wire[:6] + b"\x00\xff" + wire[8:] @@ -871,8 +837,7 @@ www.dnspython.org. 300 IN AAAA ::1 print(m.errors) self.assertEqual(str(m.errors[0].exception), "IPv6 addresses are 16 bytes long") self.assertEqual(str(m.errors[1].exception), "DNS message is malformed.") - expected_message = dns.message.from_text( - """id 1234 + expected_message = dns.message.from_text("""id 1234 opcode QUERY rcode NOERROR flags QR AA RD @@ -881,8 +846,7 @@ www.dnspython.org. IN SOA ;ANSWER www.dnspython.org. 300 IN SOA . . 1 2 3 4 4294967295 www.dnspython.org. 300 IN A 1.2.3.4 -""" - ) +""") self.assertEqual(m, expected_message) def test_padding_basic(self): diff --git a/tests/test_name.py b/tests/test_name.py index 67d02dbb..0addb821 100644 --- a/tests/test_name.py +++ b/tests/test_name.py @@ -549,7 +549,7 @@ class NameTestCase(unittest.TestCase): def testSplit1(self): n = dns.name.from_text("foo.bar.") - (prefix, suffix) = n.split(2) + prefix, suffix = n.split(2) ep = dns.name.from_text("foo", None) es = dns.name.from_text("bar.", None) self.assertEqual(prefix, ep) @@ -557,7 +557,7 @@ class NameTestCase(unittest.TestCase): def testSplit2(self): n = dns.name.from_text("foo.bar.") - (prefix, suffix) = n.split(1) + prefix, suffix = n.split(1) ep = dns.name.from_text("foo.bar", None) es = dns.name.from_text(".", None) self.assertEqual(prefix, ep) @@ -565,7 +565,7 @@ class NameTestCase(unittest.TestCase): def testSplit3(self): n = dns.name.from_text("foo.bar.") - (prefix, suffix) = n.split(0) + prefix, suffix = n.split(0) ep = dns.name.from_text("foo.bar.", None) es = dns.name.from_text("", None) self.assertEqual(prefix, ep) @@ -573,7 +573,7 @@ class NameTestCase(unittest.TestCase): def testSplit4(self): n = dns.name.from_text("foo.bar.") - (prefix, suffix) = n.split(3) + prefix, suffix = n.split(3) ep = dns.name.from_text("", None) es = dns.name.from_text("foo.bar.", None) self.assertEqual(prefix, ep) @@ -679,8 +679,8 @@ class NameTestCase(unittest.TestCase): def testFromWire1(self): w = b"\x03foo\x00\xc0\x00" - (n1, cused1) = dns.name.from_wire(w, 0) - (n2, cused2) = dns.name.from_wire(w, cused1) + n1, cused1 = dns.name.from_wire(w, 0) + n2, cused2 = dns.name.from_wire(w, cused1) en1 = dns.name.from_text("foo.") en2 = en1 ecused1 = 5 @@ -693,11 +693,11 @@ class NameTestCase(unittest.TestCase): def testFromWire2(self): w = b"\x03foo\x00\x01a\xc0\x00\x01b\xc0\x05" current = 0 - (n1, cused1) = dns.name.from_wire(w, current) + n1, cused1 = dns.name.from_wire(w, current) current += cused1 - (n2, cused2) = dns.name.from_wire(w, current) + n2, cused2 = dns.name.from_wire(w, current) current += cused2 - (n3, cused3) = dns.name.from_wire(w, current) + n3, cused3 = dns.name.from_wire(w, current) en1 = dns.name.from_text("foo.") en2 = dns.name.from_text("a.foo.") en3 = dns.name.from_text("b.a.foo.") diff --git a/tests/test_query.py b/tests/test_query.py index e6b388a0..a94c8788 100644 --- a/tests/test_query.py +++ b/tests/test_query.py @@ -219,7 +219,7 @@ class QueryTests(unittest.TestCase): for address in query_addresses: qname = dns.name.from_text(".") q = dns.message.make_query(qname, dns.rdatatype.DNSKEY) - (_, tcp) = dns.query.udp_with_fallback(q, address, timeout=4) + _, tcp = dns.query.udp_with_fallback(q, address, timeout=4) self.assertTrue(tcp) @tests.util.retry_on_timeout @@ -235,7 +235,7 @@ class QueryTests(unittest.TestCase): tcp_s.setblocking(0) qname = dns.name.from_text(".") q = dns.message.make_query(qname, dns.rdatatype.DNSKEY) - (_, tcp) = dns.query.udp_with_fallback( + _, tcp = dns.query.udp_with_fallback( q, address, udp_sock=udp_s, tcp_sock=tcp_s, timeout=4 ) self.assertTrue(tcp) @@ -245,7 +245,7 @@ class QueryTests(unittest.TestCase): for address in query_addresses: qname = dns.name.from_text("dns.google.") q = dns.message.make_query(qname, dns.rdatatype.A) - (_, tcp) = dns.query.udp_with_fallback(q, address, timeout=2) + _, tcp = dns.query.udp_with_fallback(q, address, timeout=2) self.assertFalse(tcp) @tests.util.retry_on_timeout @@ -257,7 +257,7 @@ class QueryTests(unittest.TestCase): q = dns.message.make_query("dns.google", dns.rdatatype.A) dns.query.send_udp(sender, q, listener.getsockname()) expiration = time.time() + 2 - (q, _, addr) = dns.query.receive_udp(listener, expiration=expiration) + q, _, addr = dns.query.receive_udp(listener, expiration=expiration) self.assertEqual(addr, sender.getsockname()) @@ -267,45 +267,45 @@ _d_and_s = dns.query._destination_and_source class DestinationAndSourceTests(unittest.TestCase): def test_af_inferred_from_where(self): - (af, d, s) = _d_and_s("1.2.3.4", 53, None, 0) + af, d, s = _d_and_s("1.2.3.4", 53, None, 0) self.assertEqual(af, socket.AF_INET) def test_af_inferred_from_where(self): - (af, d, s) = _d_and_s("1::2", 53, None, 0) + af, d, s = _d_and_s("1::2", 53, None, 0) self.assertEqual(af, socket.AF_INET6) def test_af_inferred_from_source(self): - (af, d, s) = _d_and_s("https://example/dns-query", 443, "1.2.3.4", 0, False) + af, d, s = _d_and_s("https://example/dns-query", 443, "1.2.3.4", 0, False) self.assertEqual(af, socket.AF_INET) def test_af_mismatch(self): def bad(): - (af, d, s) = _d_and_s("1::2", 53, "1.2.3.4", 0) + af, d, s = _d_and_s("1::2", 53, "1.2.3.4", 0) self.assertRaises(ValueError, bad) def test_source_port_but_no_af_inferred(self): def bad(): - (af, d, s) = _d_and_s("https://example/dns-query", 443, None, 12345, False) + af, d, s = _d_and_s("https://example/dns-query", 443, None, 12345, False) self.assertRaises(ValueError, bad) def test_where_must_be_an_address(self): def bad(): - (af, d, s) = _d_and_s("not a valid address", 53, "1.2.3.4", 0) + af, d, s = _d_and_s("not a valid address", 53, "1.2.3.4", 0) self.assertRaises(ValueError, bad) def test_destination_is_none_of_where_url(self): - (af, d, s) = _d_and_s("https://example/dns-query", 443, None, 0, False) + af, d, s = _d_and_s("https://example/dns-query", 443, None, 0, False) self.assertEqual(d, None) def test_v4_wildcard_source_set(self): - (af, d, s) = _d_and_s("1.2.3.4", 53, None, 12345) + af, d, s = _d_and_s("1.2.3.4", 53, None, 12345) self.assertEqual(s, ("0.0.0.0", 12345)) def test_v6_wildcard_source_set(self): - (af, d, s) = _d_and_s("1::2", 53, None, 12345) + af, d, s = _d_and_s("1::2", 53, None, 12345) self.assertEqual(s, ("::", 12345, 0, 0)) @@ -629,7 +629,7 @@ class TsigTests(unittest.TestCase): class LowLevelWaitTests(unittest.TestCase): def test_wait_for(self): try: - (l, r) = socket.socketpair() + l, r = socket.socketpair() # already expired with self.assertRaises(dns.exception.Timeout): dns.query._wait_for(l, True, True, True, 0) @@ -727,7 +727,7 @@ class IgnoreErrors(unittest.TestCase): s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) try: with mock_udp_recv(wire1, from1, wire2, from2): - (r, when) = dns.query.receive_udp( + r, when = dns.query.receive_udp( s, ("127.0.0.1", 53), time.time() + 2, @@ -774,7 +774,7 @@ class IgnoreErrors(unittest.TestCase): bad_r_wire = bad_r.to_wire() def bad(): - (r, wire) = self.mock_receive( + r, wire = self.mock_receive( bad_r_wire, ("127.0.0.1", 53), self.good_r_wire, diff --git a/tests/test_resolution.py b/tests/test_resolution.py index d8bdb2c9..5d473987 100644 --- a/tests/test_resolution.py +++ b/tests/test_resolution.py @@ -25,7 +25,7 @@ class ResolutionTestCase(unittest.TestCase): ) def test_next_request_abs(self): - (request, answer) = self.resn.next_request() + request, answer = self.resn.next_request() self.assertTrue(answer is None) self.assertEqual(request.question[0].name, self.qname) self.assertEqual(request.question[0].rdtype, dns.rdatatype.A) @@ -36,17 +36,17 @@ class ResolutionTestCase(unittest.TestCase): self.resn = dns.resolver._Resolution( self.resolver, qname, "A", "IN", False, True, True ) - (request, answer) = self.resn.next_request() + request, answer = self.resn.next_request() self.assertTrue(answer is None) self.assertEqual(request.question[0].name, self.qname) self.assertEqual(request.question[0].rdtype, dns.rdatatype.A) - (request, answer) = self.resn.next_request() + request, answer = self.resn.next_request() self.assertTrue(answer is None) self.assertEqual(request.question[0].name, abs_qname_1) self.assertEqual(request.question[0].rdtype, dns.rdatatype.A) def bad(): - (request, answer) = self.resn.next_request() + request, answer = self.resn.next_request() self.assertRaises(dns.resolver.NXDOMAIN, bad) @@ -56,21 +56,21 @@ class ResolutionTestCase(unittest.TestCase): self.resn = dns.resolver._Resolution( self.resolver, qname, "A", "IN", False, True, False ) - (request, answer) = self.resn.next_request() + request, answer = self.resn.next_request() self.assertTrue(answer is None) self.assertEqual(request.question[0].name, self.qname) self.assertEqual(request.question[0].rdtype, dns.rdatatype.A) def bad(): - (request, answer) = self.resn.next_request() + request, answer = self.resn.next_request() self.assertRaises(dns.resolver.NXDOMAIN, bad) def test_next_request_exhaust_causes_nxdomain(self): def bad(): - (request, answer) = self.resn.next_request() + request, answer = self.resn.next_request() - (request, answer) = self.resn.next_request() + request, answer = self.resn.next_request() self.assertRaises(dns.resolver.NXDOMAIN, bad) def make_address_response(self, q): @@ -133,7 +133,7 @@ class ResolutionTestCase(unittest.TestCase): self.resolver.cache.put( (self.qname, dns.rdatatype.A, dns.rdataclass.IN), cache_answer ) - (request, answer) = self.resn.next_request() + request, answer = self.resn.next_request() self.assertTrue(request is None) self.assertTrue(answer is cache_answer) @@ -152,14 +152,14 @@ class ResolutionTestCase(unittest.TestCase): ) def bad(): - (request, answer) = self.resn.next_request() + request, answer = self.resn.next_request() self.assertRaises(dns.resolver.NoAnswer, bad) # If raise_on_no_answer is False, we should get a cache hit. self.resn = dns.resolver._Resolution( self.resolver, self.qname, "A", "IN", False, False, False ) - (request, answer) = self.resn.next_request() + request, answer = self.resn.next_request() self.assertTrue(request is None) self.assertTrue(answer is cache_answer) @@ -181,7 +181,7 @@ class ResolutionTestCase(unittest.TestCase): (qname1, dns.rdatatype.ANY, dns.rdataclass.IN), cache_answer ) try: - (request, answer) = self.resn.next_request() + request, answer = self.resn.next_request() self.assertTrue(False) # should not happen! except dns.resolver.NXDOMAIN as nx: self.assertTrue(nx.response(qname1) is r1) @@ -214,7 +214,7 @@ class ResolutionTestCase(unittest.TestCase): (qname2, dns.rdatatype.ANY, dns.rdataclass.IN), cache_answer ) try: - (request, answer) = self.resn.next_request() + request, answer = self.resn.next_request() self.assertTrue(False) # should not happen! except dns.resolver.NXDOMAIN as nx: self.assertTrue(nx.response(qname1) is r1) @@ -251,69 +251,69 @@ class ResolutionTestCase(unittest.TestCase): self.resolver.keyring = dns.tsigkeyring.from_text( {"keyname.": "NjHwPsMKjdN++dOfE5iAiQ=="} ) - (keyname, secret) = next(iter(self.resolver.keyring.items())) + keyname, secret = next(iter(self.resolver.keyring.items())) self.resolver.keyname = dns.name.from_text("keyname.") - (request, answer) = self.resn.next_request() + request, answer = self.resn.next_request() self.assertFalse(request is None) self.assertEqual(request.keyring.name, keyname) self.assertEqual(request.keyring.secret, secret) def test_next_request_flags(self): self.resolver.flags = dns.flags.RD | dns.flags.CD - (request, answer) = self.resn.next_request() + request, answer = self.resn.next_request() self.assertFalse(request is None) self.assertEqual(request.flags, self.resolver.flags) def test_next_nameserver_udp(self): - (request, answer) = self.resn.next_request() - (nameserver1, tcp, backoff) = self.resn.next_nameserver() + request, answer = self.resn.next_request() + nameserver1, tcp, backoff = self.resn.next_nameserver() self.assertEqual(nameserver1.port, 53) self.assertFalse(tcp) self.assertEqual(backoff, 0.0) - (nameserver2, tcp, backoff) = self.resn.next_nameserver() + nameserver2, tcp, backoff = self.resn.next_nameserver() self.assertTrue(nameserver2 != nameserver1) self.assertEqual(nameserver2.port, 53) self.assertFalse(tcp) self.assertEqual(backoff, 0.0) - (nameserver3, tcp, backoff) = self.resn.next_nameserver() + nameserver3, tcp, backoff = self.resn.next_nameserver() self.assertTrue(nameserver3 is nameserver1) self.assertFalse(tcp) self.assertEqual(backoff, 0.1) - (nameserver4, tcp, backoff) = self.resn.next_nameserver() + nameserver4, tcp, backoff = self.resn.next_nameserver() self.assertTrue(nameserver4 is nameserver2) self.assertFalse(tcp) self.assertEqual(backoff, 0.0) - (nameserver5, tcp, backoff) = self.resn.next_nameserver() + nameserver5, tcp, backoff = self.resn.next_nameserver() self.assertTrue(nameserver5 is nameserver1) self.assertFalse(tcp) self.assertEqual(backoff, 0.2) def test_next_nameserver_retry_with_tcp(self): - (request, answer) = self.resn.next_request() - (nameserver1, tcp, backoff) = self.resn.next_nameserver() + request, answer = self.resn.next_request() + nameserver1, tcp, backoff = self.resn.next_nameserver() self.assertEqual(nameserver1.port, 53) self.assertFalse(tcp) self.assertEqual(backoff, 0.0) self.resn.retry_with_tcp = True - (nameserver2, tcp, backoff) = self.resn.next_nameserver() + nameserver2, tcp, backoff = self.resn.next_nameserver() self.assertTrue(nameserver2 is nameserver1) self.assertTrue(tcp) self.assertEqual(backoff, 0.0) - (nameserver3, tcp, backoff) = self.resn.next_nameserver() + nameserver3, tcp, backoff = self.resn.next_nameserver() self.assertTrue(nameserver3 != nameserver1) self.assertEqual(nameserver3.port, 53) self.assertFalse(tcp) self.assertEqual(backoff, 0.0) def test_next_nameserver_no_nameservers(self): - (request, answer) = self.resn.next_request() - (nameserver, _, _) = self.resn.next_nameserver() + request, answer = self.resn.next_request() + nameserver, _, _ = self.resn.next_nameserver() self.resn.nameservers.remove(nameserver) - (nameserver, _, _) = self.resn.next_nameserver() + nameserver, _, _ = self.resn.next_nameserver() self.resn.nameservers.remove(nameserver) def bad(): - (nameserver, _, _) = self.resn.next_nameserver() + nameserver, _, _ = self.resn.next_nameserver() self.assertRaises(dns.resolver.NoNameservers, bad) @@ -321,8 +321,8 @@ class ResolutionTestCase(unittest.TestCase): # A query to a nameserver that always supports a maximum size query # always counts as a "tcp attempt" for the state machine self.resolver.nameservers = ["https://127.0.0.1:443/bogus"] - (_, _) = self.resn.next_request() - (nameserver, tcp_attempt, _) = self.resn.next_nameserver() + _, _ = self.resn.next_request() + nameserver, tcp_attempt, _ = self.resn.next_nameserver() print(nameserver) assert tcp_attempt @@ -331,7 +331,7 @@ class ResolutionTestCase(unittest.TestCase): new_nameservers = list(self.resolver.nameservers[:]) new_nameservers.extend(["10.0.0.3", "10.0.0.4"]) self.resolver.nameservers = new_nameservers - (request, _) = self.resn.next_request() + request, _ = self.resn.next_request() exceptions = [ dns.exception.FormError(), EOFError(), @@ -339,13 +339,13 @@ class ResolutionTestCase(unittest.TestCase): dns.message.Truncated(), ] for i in range(4): - (nameserver, _, _) = self.resn.next_nameserver() + nameserver, _, _ = self.resn.next_nameserver() if i == 3: # Truncated is only bad if we're doing TCP, make it look # like that's the case self.resn.tcp_attempt = True self.assertTrue(nameserver in self.resn.nameservers) - (answer, done) = self.resn.query_result(None, exceptions[i]) + answer, done = self.resn.query_result(None, exceptions[i]) self.assertTrue(answer is None) self.assertFalse(done) self.assertFalse(nameserver in self.resn.nameservers) @@ -355,19 +355,19 @@ class ResolutionTestCase(unittest.TestCase): # except for the exceptions tested in # test_query_result_nameserver_removing_exceptions(), we should # not remove any nameservers and just continue resolving. - (_, _) = self.resn.next_request() - (_, _, _) = self.resn.next_nameserver() + _, _ = self.resn.next_request() + _, _, _ = self.resn.next_nameserver() nameservers = self.resn.nameservers[:] - (answer, done) = self.resn.query_result(None, dns.exception.Timeout()) + answer, done = self.resn.query_result(None, dns.exception.Timeout()) self.assertTrue(answer is None) self.assertFalse(done) self.assertEqual(nameservers, self.resn.nameservers) def test_query_result_retry_with_tcp(self): - (request, _) = self.resn.next_request() - (nameserver, tcp, _) = self.resn.next_nameserver() + request, _ = self.resn.next_request() + nameserver, tcp, _ = self.resn.next_nameserver() self.assertFalse(tcp) - (answer, done) = self.resn.query_result(None, dns.message.Truncated()) + answer, done = self.resn.query_result(None, dns.message.Truncated()) self.assertTrue(answer is None) self.assertFalse(done) self.assertTrue(self.resn.retry_with_tcp) @@ -378,9 +378,9 @@ class ResolutionTestCase(unittest.TestCase): def test_query_result_no_error_with_data(self): q = dns.message.make_query(self.qname, dns.rdatatype.A) r = self.make_address_response(q) - (_, _) = self.resn.next_request() - (_, _, _) = self.resn.next_nameserver() - (answer, done) = self.resn.query_result(r, None) + _, _ = self.resn.next_request() + _, _, _ = self.resn.next_nameserver() + answer, done = self.resn.query_result(r, None) self.assertFalse(answer is None) self.assertTrue(done) self.assertEqual(answer.qname, self.qname) @@ -390,9 +390,9 @@ class ResolutionTestCase(unittest.TestCase): self.resolver.cache = dns.resolver.Cache() q = dns.message.make_query(self.qname, dns.rdatatype.A) r = self.make_address_response(q) - (_, _) = self.resn.next_request() - (_, _, _) = self.resn.next_nameserver() - (answer, done) = self.resn.query_result(r, None) + _, _ = self.resn.next_request() + _, _, _ = self.resn.next_nameserver() + answer, done = self.resn.query_result(r, None) self.assertFalse(answer is None) cache_answer = self.resolver.cache.get( (self.qname, dns.rdatatype.A, dns.rdataclass.IN) @@ -402,20 +402,20 @@ class ResolutionTestCase(unittest.TestCase): def test_query_result_no_error_no_data(self): q = dns.message.make_query(self.qname, dns.rdatatype.A) r = self.make_negative_response(q) - (_, _) = self.resn.next_request() - (_, _, _) = self.resn.next_nameserver() + _, _ = self.resn.next_request() + _, _, _ = self.resn.next_nameserver() def bad(): - (answer, done) = self.resn.query_result(r, None) + answer, done = self.resn.query_result(r, None) self.assertRaises(dns.resolver.NoAnswer, bad) def test_query_result_nxdomain(self): q = dns.message.make_query(self.qname, dns.rdatatype.A) r = self.make_negative_response(q, True) - (_, _) = self.resn.next_request() - (_, _, _) = self.resn.next_nameserver() - (answer, done) = self.resn.query_result(r, None) + _, _ = self.resn.next_request() + _, _, _ = self.resn.next_nameserver() + answer, done = self.resn.query_result(r, None) self.assertTrue(answer is None) self.assertTrue(done) @@ -423,9 +423,9 @@ class ResolutionTestCase(unittest.TestCase): q = dns.message.make_query(self.qname, dns.rdatatype.A) r = self.make_address_response(q) r.set_rcode(dns.rcode.NXDOMAIN) - (_, _) = self.resn.next_request() - (nameserver, _, _) = self.resn.next_nameserver() - (answer, done) = self.resn.query_result(r, None) + _, _ = self.resn.next_request() + nameserver, _, _ = self.resn.next_nameserver() + answer, done = self.resn.query_result(r, None) self.assertIsNone(answer) self.assertFalse(done) self.assertTrue(nameserver not in self.resn.nameservers) @@ -433,18 +433,18 @@ class ResolutionTestCase(unittest.TestCase): def test_query_result_chain_not_too_long(self): q = dns.message.make_query(self.qname, dns.rdatatype.A) r = self.make_long_chain_response(q, 15) - (_, _) = self.resn.next_request() - (_, _, _) = self.resn.next_nameserver() - (answer, done) = self.resn.query_result(r, None) + _, _ = self.resn.next_request() + _, _, _ = self.resn.next_nameserver() + answer, done = self.resn.query_result(r, None) self.assertIsNotNone(answer) self.assertTrue(done) def test_query_result_chain_too_long(self): q = dns.message.make_query(self.qname, dns.rdatatype.A) r = self.make_long_chain_response(q, 16) - (_, _) = self.resn.next_request() - (nameserver, _, _) = self.resn.next_nameserver() - (answer, done) = self.resn.query_result(r, None) + _, _ = self.resn.next_request() + nameserver, _, _ = self.resn.next_nameserver() + answer, done = self.resn.query_result(r, None) self.assertIsNone(answer) self.assertFalse(done) self.assertTrue(nameserver not in self.resn.nameservers) @@ -453,9 +453,9 @@ class ResolutionTestCase(unittest.TestCase): self.resolver.cache = dns.resolver.Cache() q = dns.message.make_query(self.qname, dns.rdatatype.A) r = self.make_negative_response(q, True) - (_, _) = self.resn.next_request() - (_, _, _) = self.resn.next_nameserver() - (answer, done) = self.resn.query_result(r, None) + _, _ = self.resn.next_request() + _, _, _ = self.resn.next_nameserver() + answer, done = self.resn.query_result(r, None) self.assertTrue(answer is None) self.assertTrue(done) cache_answer = self.resolver.cache.get( @@ -467,11 +467,11 @@ class ResolutionTestCase(unittest.TestCase): q = dns.message.make_query(self.qname, dns.rdatatype.A) r = self.make_address_response(q) r.set_rcode(dns.rcode.YXDOMAIN) - (_, _) = self.resn.next_request() - (_, _, _) = self.resn.next_nameserver() + _, _ = self.resn.next_request() + _, _, _ = self.resn.next_nameserver() def bad(): - (answer, done) = self.resn.query_result(r, None) + answer, done = self.resn.query_result(r, None) self.assertRaises(dns.resolver.YXDOMAIN, bad) @@ -479,9 +479,9 @@ class ResolutionTestCase(unittest.TestCase): q = dns.message.make_query(self.qname, dns.rdatatype.A) r = self.make_address_response(q) r.set_rcode(dns.rcode.SERVFAIL) - (_, _) = self.resn.next_request() - (nameserver, _, _) = self.resn.next_nameserver() - (answer, done) = self.resn.query_result(r, None) + _, _ = self.resn.next_request() + nameserver, _, _ = self.resn.next_nameserver() + answer, done = self.resn.query_result(r, None) self.assertTrue(answer is None) self.assertFalse(done) self.assertTrue(nameserver not in self.resn.nameservers) @@ -491,10 +491,10 @@ class ResolutionTestCase(unittest.TestCase): q = dns.message.make_query(self.qname, dns.rdatatype.A) r = self.make_address_response(q) r.set_rcode(dns.rcode.SERVFAIL) - (_, _) = self.resn.next_request() - (_, _, _) = self.resn.next_nameserver() + _, _ = self.resn.next_request() + _, _, _ = self.resn.next_nameserver() nameservers = self.resn.nameservers[:] - (answer, done) = self.resn.query_result(r, None) + answer, done = self.resn.query_result(r, None) self.assertTrue(answer is None) self.assertFalse(done) self.assertEqual(nameservers, self.resn.nameservers) @@ -503,9 +503,9 @@ class ResolutionTestCase(unittest.TestCase): q = dns.message.make_query(self.qname, dns.rdatatype.A) r = self.make_address_response(q) r.set_rcode(dns.rcode.REFUSED) - (_, _) = self.resn.next_request() - (nameserver, _, _) = self.resn.next_nameserver() - (answer, done) = self.resn.query_result(r, None) + _, _ = self.resn.next_request() + nameserver, _, _ = self.resn.next_nameserver() + answer, done = self.resn.query_result(r, None) self.assertTrue(answer is None) self.assertFalse(done) self.assertTrue(nameserver not in self.resn.nameservers) diff --git a/tests/test_resolver.py b/tests/test_resolver.py index 0c50ca71..de36ac9d 100644 --- a/tests/test_resolver.py +++ b/tests/test_resolver.py @@ -999,9 +999,15 @@ class ResolverMiscTestCase(unittest.TestCase): def test_set_config_method(self): from dns.win32util import set_config_method, ConfigMethod - self.assertNotEqual(dns.win32util._config_method, dns.win32util.ConfigMethod.Win32) + + self.assertNotEqual( + dns.win32util._config_method, dns.win32util.ConfigMethod.Win32 + ) dns.win32util.set_config_method(dns.win32util.ConfigMethod.Win32) - self.assertEqual(dns.win32util._config_method, dns.win32util.ConfigMethod.Win32) + self.assertEqual( + dns.win32util._config_method, dns.win32util.ConfigMethod.Win32 + ) + class ResolverNameserverValidTypeTestCase(unittest.TestCase): def test_set_nameservers_to_list(self): diff --git a/tests/test_xfr.py b/tests/test_xfr.py index 10b33a5b..081f336c 100644 --- a/tests/test_xfr.py +++ b/tests/test_xfr.py @@ -635,25 +635,25 @@ keyname = dns.name.from_text("keyname") def test_make_query_basic(): z = dns.versioned.Zone("example.") - (q, s) = dns.xfr.make_query(z) + q, s = dns.xfr.make_query(z) assert q.question[0].rdtype == dns.rdatatype.AXFR assert s is None - (q, s) = dns.xfr.make_query(z, serial=None) + q, s = dns.xfr.make_query(z, serial=None) assert q.question[0].rdtype == dns.rdatatype.AXFR assert s is None - (q, s) = dns.xfr.make_query(z, serial=10) + q, s = dns.xfr.make_query(z, serial=10) assert q.question[0].rdtype == dns.rdatatype.IXFR assert q.authority[0].rdtype == dns.rdatatype.SOA assert q.authority[0][0].serial == 10 assert s == 10 with z.writer() as txn: txn.add("@", 300, dns.rdata.from_text("in", "soa", ". . 1 2 3 4 5")) - (q, s) = dns.xfr.make_query(z) + q, s = dns.xfr.make_query(z) assert q.question[0].rdtype == dns.rdatatype.IXFR assert q.authority[0].rdtype == dns.rdatatype.SOA assert q.authority[0][0].serial == 1 assert s == 1 - (q, s) = dns.xfr.make_query(z, keyring=keyring, keyname=keyname) + q, s = dns.xfr.make_query(z, keyring=keyring, keyname=keyname) assert q.question[0].rdtype == dns.rdatatype.IXFR assert q.authority[0].rdtype == dns.rdatatype.SOA assert q.authority[0][0].serial == 1 @@ -673,11 +673,11 @@ def test_make_query_bad_serial(): def test_extract_serial_from_query(): z = dns.versioned.Zone("example.") - (q, s) = dns.xfr.make_query(z) + q, s = dns.xfr.make_query(z) xs = dns.xfr.extract_serial_from_query(q) assert s is None assert s == xs - (q, s) = dns.xfr.make_query(z, serial=10) + q, s = dns.xfr.make_query(z, serial=10) xs = dns.xfr.extract_serial_from_query(q) assert s == 10 assert s == xs diff --git a/tests/test_zone.py b/tests/test_zone.py index 94814beb..1e154f84 100644 --- a/tests/test_zone.py +++ b/tests/test_zone.py @@ -168,9 +168,7 @@ $ORIGIN example. """ include_text = """$INCLUDE "%s" -""" % here( - "example" -) +""" % here("example") bad_directive_text = """$FOO bar $ORIGIN example. diff --git a/tests/test_zonedigest.py b/tests/test_zonedigest.py index bb3f174c..87443743 100644 --- a/tests/test_zonedigest.py +++ b/tests/test_zonedigest.py @@ -12,8 +12,7 @@ import dns.zone class ZoneDigestTestCase(unittest.TestCase): # Examples from RFC 8976, fixed per errata. - simple_example = textwrap.dedent( - """ + simple_example = textwrap.dedent(""" example. 86400 IN SOA ns1 admin 2018031900 ( 1800 900 604800 86400 ) 86400 IN NS ns1 @@ -27,11 +26,9 @@ class ZoneDigestTestCase(unittest.TestCase): 777f98b8e730044c ) ns1 3600 IN A 203.0.113.63 ns2 3600 IN AAAA 2001:db8::63 - """ - ) + """) - complex_example = textwrap.dedent( - """ + complex_example = textwrap.dedent(""" example. 86400 IN SOA ns1 admin 2018031900 ( 1800 900 604800 86400 ) 86400 IN NS ns1 @@ -66,11 +63,9 @@ class ZoneDigestTestCase(unittest.TestCase): 6f77656420627574 2069676e6f726564 2e20616c6c6f7765 ) - """ - ) + """) - multiple_digests_example = textwrap.dedent( - """ + multiple_digests_example = textwrap.dedent(""" example. 86400 IN SOA ns1 admin 2018031900 ( 1800 900 604800 86400 ) example. 86400 IN NS ns1.example. @@ -104,8 +99,7 @@ class ZoneDigestTestCase(unittest.TestCase): ns1.example. 3600 IN A 203.0.113.63 ns2.example. 86400 IN TXT "This example has multiple digests" NS2.EXAMPLE. 3600 IN AAAA 2001:db8::63 - """ - ) + """) def _get_zonemd(self, zone): return zone.get_rdataset(zone.origin, "ZONEMD") @@ -180,16 +174,14 @@ class ZoneDigestTestCase(unittest.TestCase): with self.assertRaises(dns.exception.SyntaxError): dns.rdata.from_text("IN", "ZONEMD", "100 1 0 " + self.sha384_hash) - sorting_zone = textwrap.dedent( - """ + sorting_zone = textwrap.dedent(""" @ 86400 IN SOA ns1 admin 2018031900 ( 1800 900 604800 86400 ) 86400 IN NS ns1 86400 IN NS ns2 86400 IN RP n1.example. a. 86400 IN RP n1. b. - """ - ) + """) def test_relative_zone_sorting(self): z1 = dns.zone.from_text(self.sorting_zone, "example.", relativize=True) -- 2.47.3