From: Bob Halley Date: Sat, 10 Jan 2026 20:07:05 +0000 (-0800) Subject: type lint for latest ty and pyright X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=81877976d00eca19f00868274bfcbafa035708e5;p=thirdparty%2Fdnspython.git type lint for latest ty and pyright --- diff --git a/dns/_asyncio_backend.py b/dns/_asyncio_backend.py index ef0bbf5e..ecdd4ac5 100644 --- a/dns/_asyncio_backend.py +++ b/dns/_asyncio_backend.py @@ -120,7 +120,7 @@ if dns._features.have("doh"): import httpx _CoreAsyncNetworkBackend = httpcore.AsyncNetworkBackend - _CoreAnyIOStream = httpcore._backends.anyio.AnyIOStream # type: ignore + _CoreAnyIOStream = httpcore._backends.anyio.AnyIOStream # pyright: ignore from dns.query import _compute_times, _expiration_for_this_attempt, _remaining @@ -198,7 +198,7 @@ if dns._features.have("doh"): ) else: - _HTTPTransport = dns._asyncbackend.NullTransport # type: ignore + _HTTPTransport = dns._asyncbackend.NullTransport # pyright: ignore class Backend(dns._asyncbackend.Backend): @@ -223,7 +223,7 @@ class Backend(dns._asyncbackend.Backend): # proper fix for [#637]. source = (dns.inet.any_for_af(af), 0) transport, protocol = await loop.create_datagram_endpoint( - _DatagramProtocol, # type: ignore + _DatagramProtocol, # pyright: ignore local_addr=source, family=af, proto=proto, diff --git a/dns/_no_ssl.py b/dns/_no_ssl.py index edb452de..5d58760b 100644 --- a/dns/_no_ssl.py +++ b/dns/_no_ssl.py @@ -30,10 +30,10 @@ class SSLContext: self.check_hostname: bool = False self.verify_mode: int = CERT_NONE - def wrap_socket(self, *args, **kwargs) -> "SSLSocket": # type: ignore + def wrap_socket(self, *args, **kwargs) -> "SSLSocket": # pyright: ignore raise Exception("no ssl support") # pylint: disable=broad-exception-raised - def set_alpn_protocols(self, *args, **kwargs): # type: ignore + def set_alpn_protocols(self, *args, **kwargs): # pyright: ignore raise Exception("no ssl support") # pylint: disable=broad-exception-raised @@ -57,5 +57,5 @@ class SSLSocket: return False -def create_default_context(*args, **kwargs) -> SSLContext: # type: ignore +def create_default_context(*args, **kwargs) -> SSLContext: # pyright: ignore raise Exception("no ssl support") # pylint: disable=broad-exception-raised diff --git a/dns/_trio_backend.py b/dns/_trio_backend.py index e057068a..686d37ad 100644 --- a/dns/_trio_backend.py +++ b/dns/_trio_backend.py @@ -5,7 +5,7 @@ import socket import trio -import trio.socket # type: ignore +import trio.socket # pyright: ignore import dns._asyncbackend import dns._features @@ -186,7 +186,7 @@ if dns._features.have("doh"): ) else: - _HTTPTransport = dns._asyncbackend.NullTransport # type: ignore + _HTTPTransport = dns._asyncbackend.NullTransport # pyright: ignore class Backend(dns._asyncbackend.Backend): diff --git a/dns/asyncquery.py b/dns/asyncquery.py index 426381a8..cde28adc 100644 --- a/dns/asyncquery.py +++ b/dns/asyncquery.py @@ -54,7 +54,7 @@ from dns.query import ( try: import ssl except ImportError: - import dns._no_ssl as ssl # type: ignore + import dns._no_ssl as ssl # pyright: ignore if have_doh: import httpx @@ -224,9 +224,9 @@ async def udp( dtuple = None cm = await backend.make_socket(af, socket.SOCK_DGRAM, 0, stuple, dtuple) async with cm as s: - await send_udp(s, wire, destination, expiration) # type: ignore + await send_udp(s, wire, destination, expiration) # pyright: ignore (r, received_time, _) = await receive_udp( - s, # type: ignore + s, # pyright: ignore destination, expiration, ignore_unexpected, @@ -431,9 +431,9 @@ async def tcp( af, socket.SOCK_STREAM, 0, stuple, dtuple, timeout ) async with cm as s: - await send_tcp(s, wire, expiration) # type: ignore + await send_tcp(s, wire, expiration) # pyright: ignore (r, received_time) = await receive_tcp( - s, # type: ignore + s, # pyright: ignore expiration, one_rr_per_rrset, q.keyring, @@ -517,8 +517,8 @@ async def tls( def _maybe_get_resolver( - resolver: "dns.asyncresolver.Resolver | None", # type: ignore -) -> "dns.asyncresolver.Resolver": # type: ignore + resolver: "dns.asyncresolver.Resolver | None", # pyright: ignore +) -> "dns.asyncresolver.Resolver": # pyright: ignore # We need a separate method for this to avoid overriding the global # variable "dns" with the as-yet undefined local variable "dns" # in https(). @@ -544,7 +544,7 @@ async def https( post: bool = True, verify: bool | str | ssl.SSLContext = True, bootstrap_address: str | None = None, - resolver: "dns.asyncresolver.Resolver | None" = None, # type: ignore + resolver: "dns.asyncresolver.Resolver | None" = None, # pyright: ignore family: int = socket.AF_UNSPEC, http_version: HTTPVersion = HTTPVersion.DEFAULT, ) -> dns.message.Message: @@ -589,14 +589,14 @@ async def https( ): if bootstrap_address is None: resolver = _maybe_get_resolver(resolver) - assert parsed.hostname is not None # type: ignore - answers = await resolver.resolve_name( # type: ignore - parsed.hostname, family # type: ignore + assert parsed.hostname is not None # pyright: ignore + answers = await resolver.resolve_name( # pyright: ignore + parsed.hostname, family # pyright: ignore ) bootstrap_address = random.choice(list(answers.addresses())) if client and not isinstance( client, dns.quic.AsyncQuicConnection - ): # type: ignore + ): # pyright: ignore raise ValueError("client parameter must be a dns.quic.AsyncQuicConnection.") assert client is None or isinstance(client, dns.quic.AsyncQuicConnection) return await _http3( @@ -617,7 +617,7 @@ async def https( if not have_doh: raise NoDOH # pragma: no cover # pylint: disable=possibly-used-before-assignment - if client and not isinstance(client, httpx.AsyncClient): # type: ignore + if client and not isinstance(client, httpx.AsyncClient): # pyright: ignore raise ValueError("client parameter must be an httpx.AsyncClient") # pylint: enable=possibly-used-before-assignment @@ -650,7 +650,7 @@ async def https( family=family, ) - cm = httpx.AsyncClient( # type: ignore + cm = httpx.AsyncClient( # pyright: ignore http1=h1, http2=h2, verify=verify, transport=transport # type: ignore ) @@ -665,7 +665,7 @@ async def https( } ) response = await backend.wait_for( - the_client.post( # type: ignore + the_client.post( # pyright: ignore url, headers=headers, content=wire, @@ -677,7 +677,7 @@ async def https( wire = base64.urlsafe_b64encode(wire).rstrip(b"=") twire = wire.decode() # httpx does a repr() if we give it bytes response = await backend.wait_for( - the_client.get( # type: ignore + the_client.get( # pyright: ignore url, headers=headers, params={"dns": twire}, @@ -746,7 +746,7 @@ async def _http3( if connection: the_connection = connection else: - the_connection = the_manager.connect( # type: ignore + the_connection = the_manager.connect( # pyright: ignore where, port, source, source_port ) (start, expiration) = _compute_times(timeout) @@ -818,7 +818,7 @@ async def quic( server_name=server_hostname, ) as the_manager: if not connection: - the_connection = the_manager.connect( # type: ignore + the_connection = the_manager.connect( # pyright: ignore where, port, source, source_port ) (start, expiration) = _compute_times(timeout) @@ -873,11 +873,11 @@ async def _inbound_xfr( mexpiration = expiration if is_udp: timeout = _timeout(mexpiration) - (rwire, _) = await udp_sock.recvfrom(65535, timeout) # type: ignore + (rwire, _) = await udp_sock.recvfrom(65535, timeout) # pyright: ignore else: - ldata = await _read_exactly(tcp_sock, 2, mexpiration) # type: ignore + ldata = await _read_exactly(tcp_sock, 2, mexpiration) # pyright: ignore (l,) = struct.unpack("!H", ldata) - rwire = await _read_exactly(tcp_sock, l, mexpiration) # type: ignore + rwire = await _read_exactly(tcp_sock, l, mexpiration) # pyright: ignore r = dns.message.from_wire( rwire, keyring=query.keyring, @@ -932,13 +932,13 @@ async def inbound_xfr( ) async with s: try: - async for _ in _inbound_xfr( # type: ignore + async for _ in _inbound_xfr( # pyright: ignore txn_manager, s, query, serial, timeout, - expiration, # type: ignore + expiration, # pyright: ignore ): pass return @@ -950,7 +950,7 @@ async def inbound_xfr( af, socket.SOCK_STREAM, 0, stuple, dtuple, _timeout(expiration) ) async with s: - async for _ in _inbound_xfr( # type: ignore - txn_manager, s, query, serial, timeout, expiration # type: ignore + async for _ in _inbound_xfr( # pyright: ignore + txn_manager, s, query, serial, timeout, expiration # pyright: ignore ): pass diff --git a/dns/btreezone.py b/dns/btreezone.py index b1b477d7..e4068ad2 100644 --- a/dns/btreezone.py +++ b/dns/btreezone.py @@ -64,7 +64,7 @@ class ImmutableNode(Node): def __init__(self, node: Node): super().__init__() self.id = node.id - self.rdatasets = tuple( # type: ignore + self.rdatasets = tuple( # pyright: ignore [dns.rdataset.ImmutableRdataset(rds) for rds in node.rdatasets] ) self.flags = node.flags @@ -171,7 +171,7 @@ class WritableVersion(dns.zone.WritableVersion): return (node, name) def update_glue_flag(self, name: dns.name.Name, is_glue: bool) -> None: - cursor = self.nodes.cursor() # type: ignore + cursor = self.nodes.cursor() # pyright: ignore cursor.seek(name, False) updates = [] while True: @@ -205,7 +205,7 @@ class WritableVersion(dns.zone.WritableVersion): name = self._validate_name(name) node = self.nodes.get(name) if node is not None: - if node.is_delegation(): # type: ignore + if node.is_delegation(): # pyright: ignore self.delegations.discard(name) self.update_glue_flag(name, False) del self.nodes[name] @@ -216,7 +216,8 @@ class WritableVersion(dns.zone.WritableVersion): ) -> None: (node, name) = self._maybe_cow_with_name(name) if ( - rdataset.rdtype == dns.rdatatype.NS and not node.is_origin_or_glue() # type: ignore + rdataset.rdtype == dns.rdatatype.NS + and not node.is_origin_or_glue() # type: ignore ): node.flags |= NodeFlags.DELEGATION # type: ignore if name not in self.delegations: @@ -231,9 +232,9 @@ class WritableVersion(dns.zone.WritableVersion): covers: dns.rdatatype.RdataType, ) -> None: (node, name) = self._maybe_cow_with_name(name) - if rdtype == dns.rdatatype.NS and name in self.delegations: # type: ignore + if rdtype == dns.rdatatype.NS and name in self.delegations: # pyright: ignore node.flags &= ~NodeFlags.DELEGATION # type: ignore - self.delegations.discard(name) # type: ignore + self.delegations.discard(name) # pyright: ignore self.update_glue_flag(name, False) node.delete_rdataset(self.zone.rdclass, rdtype, covers) if len(node) == 0: @@ -279,7 +280,6 @@ class ImmutableVersion(dns.zone.Version): node = version.nodes.get(name) if node: version.nodes[name] = ImmutableNode(node) - # the cast below is for mypy self.nodes = cast(MutableMapping[dns.name.Name, dns.node.Node], version.nodes) self.nodes.make_immutable() # type: ignore self.delegations = version.delegations diff --git a/dns/dnssec.py b/dns/dnssec.py index 020a3ffd..e4cf609c 100644 --- a/dns/dnssec.py +++ b/dns/dnssec.py @@ -1206,8 +1206,8 @@ if dns._features.have("dnssec"): ) from dns.dnssecalgs.base import GenericPrivateKey, GenericPublicKey - validate = _validate # type: ignore - validate_rrsig = _validate_rrsig # type: ignore + validate = _validate # pyright: ignore + validate_rrsig = _validate_rrsig # pyright: ignore sign = _sign make_dnskey = _make_dnskey make_cdnskey = _make_cdnskey diff --git a/dns/dnssecalgs/cryptography.py b/dns/dnssecalgs/cryptography.py index 710b7040..82d364b2 100644 --- a/dns/dnssecalgs/cryptography.py +++ b/dns/dnssecalgs/cryptography.py @@ -34,7 +34,7 @@ class CryptographyPublicKey(GenericPublicKey): class CryptographyPrivateKey(GenericPrivateKey): key: Any = None key_cls: Any = None - public_cls: type[CryptographyPublicKey] # type: ignore + public_cls: type[CryptographyPublicKey] # pyright: ignore def __init__(self, key: Any) -> None: # pylint: disable=super-init-not-called if self.key_cls is None: diff --git a/dns/dnssecalgs/dsa.py b/dns/dnssecalgs/dsa.py index 0d5517b7..3bd3a275 100644 --- a/dns/dnssecalgs/dsa.py +++ b/dns/dnssecalgs/dsa.py @@ -52,7 +52,7 @@ class PublicDSA(CryptographyPublicKey): keyptr = keyptr[octets:] dsa_y = keyptr[0:octets] return cls( - key=dsa.DSAPublicNumbers( # type: ignore + key=dsa.DSAPublicNumbers( # pyright: ignore int.from_bytes(dsa_y, "big"), dsa.DSAParameterNumbers( int.from_bytes(dsa_p, "big"), diff --git a/dns/dnssecalgs/ecdsa.py b/dns/dnssecalgs/ecdsa.py index 6684892e..959e1bcc 100644 --- a/dns/dnssecalgs/ecdsa.py +++ b/dns/dnssecalgs/ecdsa.py @@ -73,7 +73,7 @@ class PrivateECDSA(CryptographyPrivateKey): def generate(cls) -> "PrivateECDSA": return cls( key=ec.generate_private_key( - curve=cls.public_cls.curve, backend=default_backend() # type: ignore + curve=cls.public_cls.curve, backend=default_backend() # pyright: ignore ), ) diff --git a/dns/dnssecalgs/eddsa.py b/dns/dnssecalgs/eddsa.py index 77ccf02a..4b8aaca9 100644 --- a/dns/dnssecalgs/eddsa.py +++ b/dns/dnssecalgs/eddsa.py @@ -25,7 +25,7 @@ class PublicEDDSA(CryptographyPublicKey): class PrivateEDDSA(CryptographyPrivateKey): - public_cls: type[PublicEDDSA] # type: ignore + public_cls: type[PublicEDDSA] # pyright: ignore def sign( self, diff --git a/dns/enum.py b/dns/enum.py index 840a127b..3df382b9 100644 --- a/dns/enum.py +++ b/dns/enum.py @@ -25,9 +25,9 @@ class IntEnum(enum.IntEnum): @classmethod def _missing_(cls, value): cls._check_value(value) - val = int.__new__(cls, value) # type: ignore + val = int.__new__(cls, value) # pyright: ignore val._name_ = cls._extra_to_text(value, None) or f"{cls._prefix()}{value}" - val._value_ = value # type: ignore + val._value_ = value # pyright: ignore return val @classmethod diff --git a/dns/message.py b/dns/message.py index e754093d..add952bd 100644 --- a/dns/message.py +++ b/dns/message.py @@ -1093,7 +1093,7 @@ def _message_factory_from_opcode(opcode): return QueryMessage elif opcode == dns.opcode.UPDATE: _maybe_import_update() - return dns.update.UpdateMessage # type: ignore + return dns.update.UpdateMessage # pyright: ignore else: return Message @@ -1197,7 +1197,7 @@ class _WireReader: else: with self.parser.restrict_to(rdlen): rd = dns.rdata.from_wire_parser( - rdclass, # type: ignore + rdclass, # pyright: ignore rdtype, self.parser, self.message.origin, @@ -1239,7 +1239,7 @@ class _WireReader: rrset = self.message.find_rrset( section, name, - rdclass, # type: ignore + rdclass, # pyright: ignore rdtype, covers, deleting, diff --git a/dns/name.py b/dns/name.py index d87acb43..d0634246 100644 --- a/dns/name.py +++ b/dns/name.py @@ -18,7 +18,7 @@ """DNS Names.""" import copy -import encodings.idna # type: ignore +import encodings.idna # pyright: ignore import functools import struct from collections.abc import Callable, Iterable @@ -36,7 +36,7 @@ import dns.wirebase # pyright: reportAttributeAccessIssue = false, reportPossiblyUnboundVariable = false if dns._features.have("idna"): - import idna # type: ignore + import idna # pyright: ignore have_idna_2008 = True else: # pragma: no cover diff --git a/dns/node.py b/dns/node.py index 905d9881..84312d88 100644 --- a/dns/node.py +++ b/dns/node.py @@ -106,7 +106,7 @@ class Node: s = io.StringIO() for rds in self.rdatasets: if len(rds) > 0: - s.write(rds.to_text(name, **kw)) # type: ignore[arg-type] + s.write(rds.to_text(name, **kw)) # pyright: ignore[arg-type] s.write("\n") return s.getvalue()[:-1] diff --git a/dns/query.py b/dns/query.py index bac51746..99da767e 100644 --- a/dns/query.py +++ b/dns/query.py @@ -48,7 +48,7 @@ import dns.xfr try: import ssl except ImportError: - import dns._no_ssl as ssl # type: ignore + import dns._no_ssl as ssl # pyright: ignore def _remaining(expiration): @@ -128,7 +128,7 @@ if _have_httpx: ): # pylint: disable=signature-differs raise NotImplementedError - class _HTTPTransport(httpx.HTTPTransport): # type: ignore + class _HTTPTransport(httpx.HTTPTransport): # pyright: ignore def __init__( self, *args, @@ -150,7 +150,7 @@ if _have_httpx: else: - class _HTTPTransport: # type: ignore + class _HTTPTransport: # pyright: ignore def __init__( self, *args, @@ -231,7 +231,7 @@ def _wait_for(fd, readable, writable, _, expiration): if writable: events |= selectors.EVENT_WRITE if events: - sel.register(fd, events) # type: ignore + sel.register(fd, events) # pyright: ignore if expiration is None: timeout = None else: @@ -412,8 +412,8 @@ def _make_socket( def _maybe_get_resolver( - resolver: "dns.resolver.Resolver | None", # type: ignore -) -> "dns.resolver.Resolver": # type: ignore + resolver: "dns.resolver.Resolver | None", # pyright: ignore +) -> "dns.resolver.Resolver": # pyright: ignore # We need a separate method for this to avoid overriding the global # variable "dns" with the as-yet undefined local variable "dns" # in https(). @@ -455,7 +455,7 @@ def https( post: bool = True, bootstrap_address: str | None = None, verify: bool | str | ssl.SSLContext = True, - resolver: "dns.resolver.Resolver | None" = None, # type: ignore + resolver: "dns.resolver.Resolver | None" = None, # pyright: ignore family: int = socket.AF_UNSPEC, http_version: HTTPVersion = HTTPVersion.DEFAULT, ) -> dns.message.Message: @@ -540,17 +540,15 @@ def https( ): if bootstrap_address is None: resolver = _maybe_get_resolver(resolver) - assert parsed.hostname is not None # type: ignore - answers = resolver.resolve_name(parsed.hostname, family) # type: ignore + assert parsed.hostname is not None # pyright: ignore + answers = resolver.resolve_name(parsed.hostname, family) # pyright: ignore bootstrap_address = random.choice(list(answers.addresses())) - if session and not isinstance( - session, dns.quic.SyncQuicConnection - ): # type: ignore + if session and not isinstance(session, dns.quic.SyncQuicConnection): raise ValueError("session parameter must be a dns.quic.SyncQuicConnection.") return _http3( q, bootstrap_address, - url, # type: ignore + url, # pyright: ignore timeout, port, source, @@ -564,7 +562,7 @@ def https( if not have_doh: raise NoDOH # pragma: no cover - if session and not isinstance(session, httpx.Client): # type: ignore + if session and not isinstance(session, httpx.Client): # pyright: ignore raise ValueError("session parameter must be an httpx.Client") wire = q.to_wire() @@ -593,10 +591,10 @@ def https( local_port=local_port, bootstrap_address=bootstrap_address, resolver=resolver, - family=family, # type: ignore + family=family, # pyright: ignore ) - cm = httpx.Client( # type: ignore + cm = httpx.Client( # pyright: ignore http1=h1, http2=h2, verify=verify, transport=transport # type: ignore ) with cm as session: @@ -705,7 +703,7 @@ def _http3( manager: contextlib.AbstractContextManager = contextlib.nullcontext(None) else: manager = dns.quic.SyncQuicManager( # type: ignore - verify_mode=verify, server_name=hostname, h3=True # type: ignore + verify_mode=verify, server_name=hostname, h3=True # pyright: ignore ) the_manager = manager # for type checking happiness @@ -713,7 +711,7 @@ def _http3( if connection: the_connection = connection else: - the_connection = the_manager.connect( # type: ignore + the_connection = the_manager.connect( # pyright: ignore where, port, source, source_port ) (start, expiration) = _compute_times(timeout) @@ -1258,7 +1256,7 @@ def tcp( with cm as s: if not sock: # pylint: disable=possibly-used-before-assignment - _connect(s, destination, expiration) # type: ignore + _connect(s, destination, expiration) # pyright: ignore send_tcp(s, wire, expiration) (r, received_time) = receive_tcp( s, expiration, one_rr_per_rrset, q.keyring, q.mac, ignore_trailing @@ -1313,7 +1311,7 @@ def make_ssl_context( ssl_context.verify_mode = ssl.CERT_NONE # type: ignore if alpns is not None: ssl_context.set_alpn_protocols(alpns) - return ssl_context # type: ignore + return ssl_context # pyright: ignore # for backwards compatibility @@ -1501,13 +1499,13 @@ def quic( the_connection = connection else: manager = dns.quic.SyncQuicManager( # type: ignore - verify_mode=verify, server_name=hostname # type: ignore + verify_mode=verify, server_name=hostname # pyright: ignore ) the_manager = manager # for type checking happiness with manager: if not connection: - the_connection = the_manager.connect( # type: ignore + the_connection = the_manager.connect( # pyright: ignore where, port, source, source_port ) (start, expiration) = _compute_times(timeout) diff --git a/dns/quic/__init__.py b/dns/quic/__init__.py index ce672772..b60e7e92 100644 --- a/dns/quic/__init__.py +++ b/dns/quic/__init__.py @@ -10,10 +10,10 @@ if dns._features.have("doq"): from dns.quic._asyncio import AsyncioQuicConnection as AsyncioQuicConnection from dns.quic._asyncio import AsyncioQuicManager from dns.quic._asyncio import AsyncioQuicStream as AsyncioQuicStream - from dns.quic._common import AsyncQuicConnection # type: ignore + from dns.quic._common import AsyncQuicConnection # pyright: ignore from dns.quic._common import AsyncQuicManager as AsyncQuicManager - from dns.quic._sync import SyncQuicConnection # type: ignore - from dns.quic._sync import SyncQuicStream # type: ignore + from dns.quic._sync import SyncQuicConnection # pyright: ignore + from dns.quic._sync import SyncQuicStream # pyright: ignore from dns.quic._sync import SyncQuicManager as SyncQuicManager have_quic = True @@ -60,17 +60,17 @@ if dns._features.have("doq"): else: # pragma: no cover have_quic = False - class AsyncQuicStream: # type: ignore + class AsyncQuicStream: # pyright: ignore pass - class AsyncQuicConnection: # type: ignore + class AsyncQuicConnection: # pyright: ignore async def make_stream(self) -> Any: raise NotImplementedError - class SyncQuicStream: # type: ignore + class SyncQuicStream: # pyright: ignore pass - class SyncQuicConnection: # type: ignore + class SyncQuicConnection: # pyright: ignore def make_stream(self) -> Any: raise NotImplementedError diff --git a/dns/quic/_asyncio.py b/dns/quic/_asyncio.py index 3d6df43c..25dcf133 100644 --- a/dns/quic/_asyncio.py +++ b/dns/quic/_asyncio.py @@ -6,8 +6,8 @@ import ssl import struct import time -import aioquic.h3.events # type: ignore -import aioquic.quic.events # type: ignore +import aioquic.h3.events # pyright: ignore +import aioquic.quic.events # pyright: ignore import dns.asyncbackend import dns.exception diff --git a/dns/quic/_common.py b/dns/quic/_common.py index ba9d2454..4455f162 100644 --- a/dns/quic/_common.py +++ b/dns/quic/_common.py @@ -9,9 +9,9 @@ import time import urllib.parse from typing import Any -import aioquic.h3.connection # type: ignore -import aioquic.quic.configuration # type: ignore -import aioquic.quic.connection # type: ignore +import aioquic.h3.connection # pyright: ignore +import aioquic.quic.configuration # pyright: ignore +import aioquic.quic.connection # pyright: ignore import dns._tls_util import dns.inet diff --git a/dns/quic/_sync.py b/dns/quic/_sync.py index aad00f7f..a2a82fe1 100644 --- a/dns/quic/_sync.py +++ b/dns/quic/_sync.py @@ -7,8 +7,8 @@ import struct import threading import time -import aioquic.h3.events # type: ignore -import aioquic.quic.events # type: ignore +import aioquic.h3.events # pyright: ignore +import aioquic.quic.events # pyright: ignore import dns.exception import dns.inet diff --git a/dns/quic/_trio.py b/dns/quic/_trio.py index 317f630e..b79f429f 100644 --- a/dns/quic/_trio.py +++ b/dns/quic/_trio.py @@ -5,8 +5,8 @@ import ssl import struct import time -import aioquic.h3.events # type: ignore -import aioquic.quic.events # type: ignore +import aioquic.h3.events # pyright: ignore +import aioquic.quic.events # pyright: ignore import trio import dns.exception @@ -109,7 +109,7 @@ class TrioQuicConnection(AsyncQuicConnection): # race. interval = 0.0 with trio.CancelScope( - deadline=trio.current_time() + interval # type: ignore + deadline=trio.current_time() + interval # pyright: ignore ) as self._worker_scope: datagram = await self._socket.recv(QUIC_MAX_DATAGRAM) self._connection.receive_datagram(datagram, self._peer, time.time()) diff --git a/dns/rdata.py b/dns/rdata.py index 5e701a34..4225164a 100644 --- a/dns/rdata.py +++ b/dns/rdata.py @@ -437,7 +437,7 @@ class Rdata: """ # Get the constructor parameters. - parameters = inspect.signature(self.__init__).parameters # type: ignore + parameters = inspect.signature(self.__init__).parameters # pyright: ignore # Ensure that all of the arguments correspond to valid fields. # Don't allow rdclass or rdtype to be changed, though. @@ -635,7 +635,7 @@ class GenericRdata(Rdata): relativize: bool = True, **kw: dict[str, Any], ) -> str: - return rf"\# {len(self.data)} " + _hexify(self.data, **kw) # type: ignore + return rf"\# {len(self.data)} " + _hexify(self.data, **kw) # pyright: ignore @classmethod def from_text( diff --git a/dns/rdataset.py b/dns/rdataset.py index dd8fa6ae..0c061cd3 100644 --- a/dns/rdataset.py +++ b/dns/rdataset.py @@ -350,7 +350,7 @@ class Rdataset(dns.set.Set): if len(self) == 0: return [] else: - return self[0]._processing_order(iter(self)) # type: ignore + return self[0]._processing_order(iter(self)) # pyright: ignore @dns.immutable.immutable @@ -405,22 +405,22 @@ class ImmutableRdataset(Rdataset): # lgtm[py/missing-equals] raise TypeError("immutable") def __copy__(self): - return ImmutableRdataset(super().copy()) # type: ignore + return ImmutableRdataset(super().copy()) # pyright: ignore def copy(self): - return ImmutableRdataset(super().copy()) # type: ignore + return ImmutableRdataset(super().copy()) # pyright: ignore def union(self, other): - return ImmutableRdataset(super().union(other)) # type: ignore + return ImmutableRdataset(super().union(other)) # pyright: ignore def intersection(self, other): - return ImmutableRdataset(super().intersection(other)) # type: ignore + return ImmutableRdataset(super().intersection(other)) # pyright: ignore def difference(self, other): - return ImmutableRdataset(super().difference(other)) # type: ignore + return ImmutableRdataset(super().difference(other)) # pyright: ignore def symmetric_difference(self, other): - return ImmutableRdataset(super().symmetric_difference(other)) # type: ignore + return ImmutableRdataset(super().symmetric_difference(other)) # pyright: ignore def from_text_list( diff --git a/dns/rdtypes/ANY/CERT.py b/dns/rdtypes/ANY/CERT.py index f00500fa..4d5e5bda 100644 --- a/dns/rdtypes/ANY/CERT.py +++ b/dns/rdtypes/ANY/CERT.py @@ -85,7 +85,7 @@ class CERT(dns.rdata.Rdata): def to_text(self, origin=None, relativize=True, **kw): certificate_type = _ctype_to_text(self.certificate_type) algorithm = dns.dnssectypes.Algorithm.to_text(self.algorithm) - certificate = dns.rdata._base64ify(self.certificate, **kw) # type: ignore + certificate = dns.rdata._base64ify(self.certificate, **kw) # pyright: ignore return f"{certificate_type} {self.key_tag} {algorithm} {certificate}" @classmethod diff --git a/dns/rdtypes/ANY/LOC.py b/dns/rdtypes/ANY/LOC.py index 89048a58..6c7fe5e7 100644 --- a/dns/rdtypes/ANY/LOC.py +++ b/dns/rdtypes/ANY/LOC.py @@ -143,13 +143,13 @@ class LOC(dns.rdata.Rdata): if isinstance(latitude, float): latitude = _float_to_tuple(latitude) _check_coordinate_list(latitude, -90, 90) - self.latitude = tuple(latitude) # type: ignore + self.latitude = tuple(latitude) # pyright: ignore if isinstance(longitude, int): longitude = float(longitude) if isinstance(longitude, float): longitude = _float_to_tuple(longitude) _check_coordinate_list(longitude, -180, 180) - self.longitude = tuple(longitude) # type: ignore + self.longitude = tuple(longitude) # pyright: ignore self.altitude = float(altitude) self.size = float(size) self.horizontal_precision = float(hprec) diff --git a/dns/rdtypes/ANY/OPENPGPKEY.py b/dns/rdtypes/ANY/OPENPGPKEY.py index 25af4725..ac1841cc 100644 --- a/dns/rdtypes/ANY/OPENPGPKEY.py +++ b/dns/rdtypes/ANY/OPENPGPKEY.py @@ -34,7 +34,7 @@ class OPENPGPKEY(dns.rdata.Rdata): self.key = self._as_bytes(key) def to_text(self, origin=None, relativize=True, **kw): - return dns.rdata._base64ify(self.key, chunksize=None, **kw) # type: ignore + return dns.rdata._base64ify(self.key, chunksize=None, **kw) # pyright: ignore @classmethod def from_text( diff --git a/dns/rdtypes/ANY/SSHFP.py b/dns/rdtypes/ANY/SSHFP.py index c6b272f2..3f08f3a5 100644 --- a/dns/rdtypes/ANY/SSHFP.py +++ b/dns/rdtypes/ANY/SSHFP.py @@ -41,7 +41,7 @@ class SSHFP(dns.rdata.Rdata): kw = kw.copy() chunksize = kw.pop("chunksize", 128) fingerprint = dns.rdata._hexify( - self.fingerprint, chunksize=chunksize, **kw # type: ignore + self.fingerprint, chunksize=chunksize, **kw # pyright: ignore ) return f"{self.algorithm} {self.fp_type} {fingerprint}" diff --git a/dns/rdtypes/ANY/ZONEMD.py b/dns/rdtypes/ANY/ZONEMD.py index 420cbf4e..acef4f27 100644 --- a/dns/rdtypes/ANY/ZONEMD.py +++ b/dns/rdtypes/ANY/ZONEMD.py @@ -37,7 +37,7 @@ class ZONEMD(dns.rdata.Rdata): kw = kw.copy() chunksize = kw.pop("chunksize", 128) digest = dns.rdata._hexify( - self.digest, chunksize=chunksize, **kw # type: ignore + self.digest, chunksize=chunksize, **kw # pyright: ignore ) return f"{self.serial} {self.scheme} {self.hash_algorithm} {digest}" diff --git a/dns/rdtypes/IN/DHCID.py b/dns/rdtypes/IN/DHCID.py index 5b54d1ba..8de8cdf1 100644 --- a/dns/rdtypes/IN/DHCID.py +++ b/dns/rdtypes/IN/DHCID.py @@ -35,7 +35,7 @@ class DHCID(dns.rdata.Rdata): self.data = self._as_bytes(data) def to_text(self, origin=None, relativize=True, **kw): - return dns.rdata._base64ify(self.data, **kw) # type: ignore + return dns.rdata._base64ify(self.data, **kw) # pyright: ignore @classmethod def from_text( diff --git a/dns/rdtypes/IN/IPSECKEY.py b/dns/rdtypes/IN/IPSECKEY.py index e347e594..aef93ae1 100644 --- a/dns/rdtypes/IN/IPSECKEY.py +++ b/dns/rdtypes/IN/IPSECKEY.py @@ -49,7 +49,7 @@ class IPSECKEY(dns.rdata.Rdata): def to_text(self, origin=None, relativize=True, **kw): gateway = Gateway(self.gateway_type, self.gateway).to_text(origin, relativize) - key = dns.rdata._base64ify(self.key, **kw) # type: ignore + key = dns.rdata._base64ify(self.key, **kw) # pyright: ignore return f"{self.precedence} {self.gateway_type} {self.algorithm} {gateway} {key}" @classmethod diff --git a/dns/rdtypes/dnskeybase.py b/dns/rdtypes/dnskeybase.py index a75c8fcd..fb49f922 100644 --- a/dns/rdtypes/dnskeybase.py +++ b/dns/rdtypes/dnskeybase.py @@ -48,7 +48,7 @@ class DNSKEYBase(dns.rdata.Rdata): self.key = self._as_bytes(key) def to_text(self, origin=None, relativize=True, **kw): - key = dns.rdata._base64ify(self.key, **kw) # type: ignore + key = dns.rdata._base64ify(self.key, **kw) # pyright: ignore return f"{self.flags} {self.protocol} {self.algorithm} {key}" @classmethod diff --git a/dns/rdtypes/dsbase.py b/dns/rdtypes/dsbase.py index ccf76012..8e05c2a7 100644 --- a/dns/rdtypes/dsbase.py +++ b/dns/rdtypes/dsbase.py @@ -56,7 +56,7 @@ class DSBase(dns.rdata.Rdata): kw = kw.copy() chunksize = kw.pop("chunksize", 128) digest = dns.rdata._hexify( - self.digest, chunksize=chunksize, **kw # type: ignore + self.digest, chunksize=chunksize, **kw # pyright: ignore ) return f"{self.key_tag} {self.algorithm} {self.digest_type} {digest}" diff --git a/dns/rdtypes/rrsigbase.py b/dns/rdtypes/rrsigbase.py index 87e000b7..3961a5d8 100644 --- a/dns/rdtypes/rrsigbase.py +++ b/dns/rdtypes/rrsigbase.py @@ -98,7 +98,7 @@ class RRSIGBase(dns.rdata.Rdata): expiration = posixtime_to_sigtime(self.expiration) inception = posixtime_to_sigtime(self.inception) signer = self.signer.choose_relativity(origin, relativize) - sig = dns.rdata._base64ify(self.signature, **kw) # type: ignore + sig = dns.rdata._base64ify(self.signature, **kw) # pyright: ignore return ( f"{ctext} {self.algorithm} {self.labels} {self.original_ttl} " + f"{expiration} {inception} {self.key_tag} {signer} {sig}" diff --git a/dns/rdtypes/tlsabase.py b/dns/rdtypes/tlsabase.py index e5ff0260..ddc196f1 100644 --- a/dns/rdtypes/tlsabase.py +++ b/dns/rdtypes/tlsabase.py @@ -41,7 +41,9 @@ class TLSABase(dns.rdata.Rdata): def to_text(self, origin=None, relativize=True, **kw): kw = kw.copy() chunksize = kw.pop("chunksize", 128) - cert = dns.rdata._hexify(self.cert, chunksize=chunksize, **kw) # type: ignore + cert = dns.rdata._hexify( + self.cert, chunksize=chunksize, **kw # pyright: ignore + ) return f"{self.usage} {self.selector} {self.mtype} {cert}" @classmethod diff --git a/dns/rdtypes/util.py b/dns/rdtypes/util.py index 5516f264..f0840d45 100644 --- a/dns/rdtypes/util.py +++ b/dns/rdtypes/util.py @@ -248,10 +248,10 @@ def weighted_processing_order(iterable): if weight > r: break r -= weight - total -= weight # type: ignore + total -= weight # pyright: ignore # pylint: disable=undefined-loop-variable - ordered.append(rdata) # type: ignore - del rdatas[n] # type: ignore + ordered.append(rdata) # pyright: ignore + del rdatas[n] # pyright: ignore ordered.append(rdatas[0]) return ordered diff --git a/dns/renderer.py b/dns/renderer.py index e6957daa..1e54df02 100644 --- a/dns/renderer.py +++ b/dns/renderer.py @@ -32,7 +32,7 @@ import dns.rdtypes.ANY.OPT import dns.rdtypes.ANY.TSIG import dns.rrset import dns.tsig -from dns._render_util import prefixed_length as prefixed_length # type: ignore +from dns._render_util import prefixed_length as prefixed_length # pyright: ignore DEFAULT_EDNS_PAYLOAD = 1232 @@ -226,7 +226,7 @@ class Renderer: pad = b"" options = list(opt_rdata.options) options.append(dns.edns.GenericOption(dns.edns.OptionType.PADDING, pad)) - opt = _make_opt(ttl, opt_rdata.rdclass, options) # type: ignore + opt = _make_opt(ttl, opt_rdata.rdclass, options) # pyright: ignore self.was_padded = True self.add_rrset(ADDITIONAL, opt) @@ -236,7 +236,7 @@ class Renderer: # make sure the EDNS version in ednsflags agrees with edns ednsflags &= 0xFF00FFFF ednsflags |= edns << 16 - opt = _make_opt(ednsflags, payload, options) # type: ignore + opt = _make_opt(ednsflags, payload, options) # pyright: ignore self.add_opt(opt) def add_tsig( @@ -258,7 +258,7 @@ class Renderer: key = secret else: key = dns.tsig.Key(keyname, secret, algorithm) - tsig = _make_tsig( # type: ignore + 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) @@ -290,7 +290,7 @@ class Renderer: key = secret else: key = dns.tsig.Key(keyname, secret, algorithm) - tsig = _make_tsig( # type: ignore + tsig = _make_tsig( # pyright: ignore keyname, algorithm, 0, fudge, b"", id, tsig_error, other_data ) (tsig, ctx) = dns.tsig.sign( diff --git a/dns/resolver.py b/dns/resolver.py index c9825f75..9d8d1eed 100644 --- a/dns/resolver.py +++ b/dns/resolver.py @@ -1665,7 +1665,7 @@ def zone_for_name( tcp: bool = False, resolver: Resolver | None = None, lifetime: float | None = None, -) -> dns.name.Name: # type: ignore[reportReturnType] +) -> dns.name.Name: # pyright: ignore """Find the name of the zone which contains the specified name. *name*, an absolute ``dns.name.Name`` or ``str``, the query name. @@ -2062,9 +2062,9 @@ def restore_system_resolver() -> None: global _resolver _resolver = None - socket.getaddrinfo = _original_getaddrinfo # type: ignore - socket.getnameinfo = _original_getnameinfo # type: ignore - socket.getfqdn = _original_getfqdn # type: ignore - socket.gethostbyname = _original_gethostbyname # type: ignore - socket.gethostbyname_ex = _original_gethostbyname_ex # type: ignore - socket.gethostbyaddr = _original_gethostbyaddr # type: ignore + socket.getaddrinfo = _original_getaddrinfo # pyright: ignore + socket.getnameinfo = _original_getnameinfo # pyright: ignore + socket.getfqdn = _original_getfqdn # pyright: ignore + socket.gethostbyname = _original_gethostbyname # pyright: ignore + socket.gethostbyname_ex = _original_gethostbyname_ex # pyright: ignore + socket.gethostbyaddr = _original_gethostbyaddr # pyright: ignore diff --git a/dns/rrset.py b/dns/rrset.py index 5ac00ce5..a9a00913 100644 --- a/dns/rrset.py +++ b/dns/rrset.py @@ -93,7 +93,7 @@ class RRset(dns.rdataset.Rdataset): return False return super().__eq__(other) - def match(self, *args: Any, **kwargs: Any) -> bool: # type: ignore[override] + def match(self, *args: Any, **kwargs: Any) -> bool: """Does this rrset match the specified attributes? Behaves as :py:func:`full_match()` if the first argument is a @@ -106,9 +106,9 @@ class RRset(dns.rdataset.Rdataset): compatibility.) """ if isinstance(args[0], dns.name.Name): - return self.full_match(*args, **kwargs) # type: ignore[arg-type] + return self.full_match(*args, **kwargs) else: - return super().match(*args, **kwargs) # type: ignore[arg-type] + return super().match(*args, **kwargs) def full_match( self, @@ -129,7 +129,7 @@ class RRset(dns.rdataset.Rdataset): # pylint: disable=arguments-differ - def to_text( # type: ignore[override] + def to_text( # type: ignore self, origin: dns.name.Name | None = None, relativize: bool = True, @@ -155,10 +155,10 @@ class RRset(dns.rdataset.Rdataset): self.name, origin, relativize, self.deleting, **kw # type: ignore ) - def to_wire( # type: ignore[override] + def to_wire( # type: ignore self, file: Any, - compress: dns.name.CompressType | None = None, # type: ignore + compress: dns.name.CompressType | None = None, origin: dns.name.Name | None = None, **kw: dict[str, Any], ) -> int: diff --git a/dns/set.py b/dns/set.py index ae8f0dd5..140efb96 100644 --- a/dns/set.py +++ b/dns/set.py @@ -84,7 +84,7 @@ class Set: """ if hasattr(self, "_clone_class"): - cls = self._clone_class # type: ignore + cls = self._clone_class # pyright: ignore else: cls = self.__class__ obj = cls.__new__(cls) diff --git a/dns/update.py b/dns/update.py index 93e9d48c..26e3ebfe 100644 --- a/dns/update.py +++ b/dns/update.py @@ -47,7 +47,7 @@ class UpdateSection(dns.enum.IntEnum): class UpdateMessage(dns.message.Message): # lgtm[py/missing-equals] # ignore the mypy error here as we mean to use a different enum - _section_enum = UpdateSection # type: ignore + _section_enum = UpdateSection # pyright: ignore def __init__( self, @@ -240,7 +240,7 @@ class UpdateMessage(dns.message.Message): # lgtm[py/missing-equals] rd = dns.rdata.from_text( self.zone_rdclass, rdtype, - s, # type: ignore[arg-type] + s, # pyright: ignore[arg-type] self.origin, ) self._add_rr(name, 0, rd, dns.rdataclass.NONE) @@ -299,7 +299,7 @@ class UpdateMessage(dns.message.Message): # lgtm[py/missing-equals] if not isinstance(args[0], dns.rdataset.Rdataset): # Add a 0 TTL largs = list(args) - largs.insert(0, 0) # type: ignore[arg-type] + largs.insert(0, 0) # pyright: ignore[arg-type] self._add(False, self.prerequisite, name, *largs) else: self._add(False, self.prerequisite, name, *args) @@ -354,7 +354,7 @@ class UpdateMessage(dns.message.Message): # lgtm[py/missing-equals] # Updates are always one_rr_per_rrset return True - def _parse_rr_header(self, section, name, rdclass, rdtype): # type: ignore + def _parse_rr_header(self, section, name, rdclass, rdtype): # pyright: ignore deleting = None empty = False if section == UpdateSection.ZONE: diff --git a/dns/versioned.py b/dns/versioned.py index a2c4b2aa..683c5930 100644 --- a/dns/versioned.py +++ b/dns/versioned.py @@ -189,7 +189,9 @@ class Zone(dns.zone.Zone): # lgtm[py/missing-equals] # Note our definition of least_kept also ensures we do not try to # delete the greatest version. if len(self._readers) > 0: - least_kept = min(txn.version.id for txn in self._readers) # type: ignore + least_kept = min( + cast(ImmutableVersion, txn.version).id for txn in self._readers + ) else: least_kept = self._versions[-1].id while self._versions[0].id < least_kept and self._pruning_policy( @@ -205,7 +207,7 @@ class Zone(dns.zone.Zone): # lgtm[py/missing-equals] raise ValueError("max versions must be at least 1") if max_versions is None: # pylint: disable=unused-argument - def policy(zone, _): # type: ignore + def policy(zone, _): # pyright: ignore return False else: diff --git a/dns/win32util.py b/dns/win32util.py index 2d77b4cb..b0ea29d4 100644 --- a/dns/win32util.py +++ b/dns/win32util.py @@ -73,7 +73,7 @@ if sys.platform == "win32": else: - class _WMIGetter: # type: ignore + class _WMIGetter: # pyright: ignore pass def _config_domain(domain): diff --git a/dns/xfr.py b/dns/xfr.py index 451d9882..aa904207 100644 --- a/dns/xfr.py +++ b/dns/xfr.py @@ -134,7 +134,7 @@ class Inbound: if rdataset.rdtype != dns.rdatatype.SOA: raise dns.exception.FormError("first RRset is not an SOA") answer_index = 1 - self.soa_rdataset = rdataset.copy() # type: ignore + self.soa_rdataset = rdataset.copy() # pyright: ignore if self.incremental: assert self.soa_rdataset is not None soa = cast(dns.rdtypes.ANY.SOA.SOA, self.soa_rdataset[0]) diff --git a/dns/zone.py b/dns/zone.py index cc056c80..f8e3e61b 100644 --- a/dns/zone.py +++ b/dns/zone.py @@ -22,7 +22,7 @@ import io import os import struct from collections.abc import Callable, Iterable, Iterator, MutableMapping -from typing import Any, cast +from typing import Any, BinaryIO, TextIO, cast import dns.exception import dns.immutable @@ -652,8 +652,7 @@ class Zone(dns.transaction.TransactionManager): cm: contextlib.AbstractContextManager = open(f, "wb") else: cm = contextlib.nullcontext(f) - with cm as f: - assert f is not None + with cm as output: # must be in this way, f.encoding may contain None, or even # attribute may not be there file_enc = getattr(f, "encoding", None) @@ -669,17 +668,19 @@ class Zone(dns.transaction.TransactionManager): else: nl_b = nl nl = nl.decode() + assert nl is not None + assert nl_b is not None if want_origin: assert self.origin is not None l = "$ORIGIN " + self.origin.to_text() l_b = l.encode(file_enc) try: - f.write(l_b) - f.write(nl_b) + f.write(l_b) # pyright: ignore + f.write(nl_b) # pyright: ignore except TypeError: # textual mode - f.write(l) # type: ignore - f.write(nl) # type: ignore + f.write(l) # pyright: ignore + f.write(nl) # pyright: ignore if sorted: names = list(self.keys()) @@ -689,18 +690,18 @@ class Zone(dns.transaction.TransactionManager): for n in names: l = self[n].to_text( n, - origin=self.origin, # type: ignore - relativize=relativize, # type: ignore - want_comments=want_comments, # type: ignore + origin=self.origin, # pyright: ignore + relativize=relativize, # pyright: ignore + want_comments=want_comments, # pyright: ignore ) l_b = l.encode(file_enc) try: - f.write(l_b) - f.write(nl_b) + f.write(l_b) # pyright: ignore + f.write(nl_b) # pyright: ignore except TypeError: # textual mode - f.write(l) # type: ignore - f.write(nl) # type: ignore + f.write(l) # pyright: ignore + f.write(nl) # pyright: ignore def to_text( self, @@ -1029,7 +1030,7 @@ class WritableVersion(Version): # test. Now we use the changed set as this works with both # regular zones and versioned zones. # - # We ignore the mypy error as this is safe but it doesn't see it. + # We ignore the type error as this is safe but checkers have trouble. new_node.id = self.id # type: ignore if node is not None: # moo! copy on write! @@ -1092,7 +1093,7 @@ class ImmutableVersion(Version): # we ignore the mypy error. self.nodes = dns.immutable.Dict( version.nodes, True, self.zone.map_factory - ) # type: ignore + ) # pyright: ignore class Transaction(dns.transaction.Transaction): @@ -1117,7 +1118,7 @@ class Transaction(dns.transaction.Transaction): factory = self.manager.writable_version_factory # type: ignore if factory is None: factory = WritableVersion - self.version = factory(self.zone, self.replacement) # type: ignore + self.version = factory(self.zone, self.replacement) # pyright: ignore def _get_rdataset(self, name, rdtype, covers): assert self.version is not None @@ -1157,7 +1158,7 @@ class Transaction(dns.transaction.Transaction): assert self.zone is not None assert self.version is not None if self.read_only: - self.zone._end_read(self) # type: ignore + self.zone._end_read(self) # pyright: ignore elif commit and len(cast(WritableVersion, self.version).changed) > 0: if self.make_immutable: factory = self.manager.immutable_version_factory # type: ignore @@ -1166,13 +1167,13 @@ class Transaction(dns.transaction.Transaction): version = factory(self.version) else: version = self.version - self.zone._commit_version( # type: ignore + self.zone._commit_version( # pyright: ignore self, version, self.version.origin ) else: # rollback - self.zone._end_write(self) # type: ignore + self.zone._end_write(self) # pyright: ignore def _set_origin(self, origin): assert self.version is not None diff --git a/dns/zonefile.py b/dns/zonefile.py index cb8e07cc..5822b749 100644 --- a/dns/zonefile.py +++ b/dns/zonefile.py @@ -614,7 +614,8 @@ class RRsetsReaderTransaction(dns.transaction.Transaction): ) rrset.update(rdataset) rrsets.append(rrset) - self.manager.set_rrsets(rrsets) # type: ignore + manager = cast(RRSetsReaderManager, self.manager) + manager.set_rrsets(rrsets) def _set_origin(self, origin): pass