]> git.ipfire.org Git - thirdparty/dnspython.git/commitdiff
type lint for latest ty and pyright
authorBob Halley <halley@dnspython.org>
Sat, 10 Jan 2026 20:07:05 +0000 (12:07 -0800)
committerBob Halley <halley@dnspython.org>
Sat, 10 Jan 2026 20:07:05 +0000 (12:07 -0800)
44 files changed:
dns/_asyncio_backend.py
dns/_no_ssl.py
dns/_trio_backend.py
dns/asyncquery.py
dns/btreezone.py
dns/dnssec.py
dns/dnssecalgs/cryptography.py
dns/dnssecalgs/dsa.py
dns/dnssecalgs/ecdsa.py
dns/dnssecalgs/eddsa.py
dns/enum.py
dns/message.py
dns/name.py
dns/node.py
dns/query.py
dns/quic/__init__.py
dns/quic/_asyncio.py
dns/quic/_common.py
dns/quic/_sync.py
dns/quic/_trio.py
dns/rdata.py
dns/rdataset.py
dns/rdtypes/ANY/CERT.py
dns/rdtypes/ANY/LOC.py
dns/rdtypes/ANY/OPENPGPKEY.py
dns/rdtypes/ANY/SSHFP.py
dns/rdtypes/ANY/ZONEMD.py
dns/rdtypes/IN/DHCID.py
dns/rdtypes/IN/IPSECKEY.py
dns/rdtypes/dnskeybase.py
dns/rdtypes/dsbase.py
dns/rdtypes/rrsigbase.py
dns/rdtypes/tlsabase.py
dns/rdtypes/util.py
dns/renderer.py
dns/resolver.py
dns/rrset.py
dns/set.py
dns/update.py
dns/versioned.py
dns/win32util.py
dns/xfr.py
dns/zone.py
dns/zonefile.py

index ef0bbf5e8b891ab37649de5d83dd28a07d2be899..ecdd4ac589a83e1444db0643471b830315af9cb0 100644 (file)
@@ -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,
index edb452de1067441216afcc2b772eb0d5edc69485..5d58760b1eedd5386917e0be234ed1d55f8ff179 100644 (file)
@@ -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
index e057068a6af83ea4a21ac2e1435b2f26b2cbc3a8..686d37ad4e8074208ce435313b39ca744d449843 100644 (file)
@@ -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):
index 426381a80b6ea843b4b7fb40476150675063e0cd..cde28adc52fb483124bed6b506cd5d7a2fafc7c5 100644 (file)
@@ -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
index b1b477d7e045ba3335cf3b7c56f59605d85f858d..e4068ad23a06ca99946153b3cceedb0e2b29b18f 100644 (file)
@@ -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
index 020a3ffd8c77a98fd59811fe18bc123d506fefc4..e4cf609c165f5c5467aadabaa0f611a13aa64ea6 100644 (file)
@@ -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
index 710b70408b03c9fa58abae6ed05a77a54842dab9..82d364b22460f5e53f75ad206f63890aa11a1964 100644 (file)
@@ -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:
index 0d5517b78fab012cdff0a0ec36d2691fafb7cf12..3bd3a275e2626a29a82609309dcc42439fd6878d 100644 (file)
@@ -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"),
index 6684892e009c4b8c0ca80d2861d454b402770eca..959e1bccd1e33bb8ef6a04d3191d6f41a694029a 100644 (file)
@@ -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
             ),
         )
 
index 77ccf02a273b1d3120623e72c11821e6dcd62dcd..4b8aaca9c8e4d4caea8aed5406f1a7c7d34f8494 100644 (file)
@@ -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,
index 840a127b9411b2ed8952707850b871e91e8a6f1d..3df382b9e9aba11786a7d3b0fa43391466e20af0 100644 (file)
@@ -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
index e754093d01b82e0c22657d99865ccc092bb8adce..add952bd1f62222f7bd41a5692333fd8db85e203 100644 (file)
@@ -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,
index d87acb4346e8d83bfc8c9c569c2187b7f59f4a82..d0634246343f01e9c4bb8ba40e2d8265854937ab 100644 (file)
@@ -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
index 905d9881061003499c70375e345b65de4d63c00a..84312d88266dc8d9cf57ea3e025686736c804eab 100644 (file)
@@ -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]
 
index bac5174690020259dd6a9e5c3230fdd1917e2140..99da767e60ff52c483772a8c25ba222279f2d5c5 100644 (file)
@@ -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)
index ce6727720cf7616e9907a5d68f6caa4ea9eee8eb..b60e7e92b437dff96f77ea62404ba35a994071ef 100644 (file)
@@ -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
 
index 3d6df43c5c5f984fdf396a1890013bfae6d8d41d..25dcf133dcdefe238e84d041e11611a8efede96a 100644 (file)
@@ -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
index ba9d2454427f08c356cebf49981a5135d922a5eb..4455f1620e3ca18f01b66ce57d68bca55209342b 100644 (file)
@@ -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
index aad00f7f27ec1ddc20483750cb81ae25b11fd5c7..a2a82fe10b649bd0f006d7ed44634836fae7d9b3 100644 (file)
@@ -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
index 317f630e0d051c438e2ee77bde6175b750122481..b79f429f90b9376ef28136544979fe98eb1641f4 100644 (file)
@@ -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())
index 5e701a344e8cc3db5892038a699789865ce0be66..4225164aaf6e1907d1448fa30723ba8e7d0b244d 100644 (file)
@@ -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(
index dd8fa6aeee211314c8edeaa13c94e465616333de..0c061cd32a25d8117b636c09e15cc3df6036a30d 100644 (file)
@@ -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(
index f00500fa8f0e8df01d6a9c81daed3cb822307a1d..4d5e5bda192c55cdb7e3e6095e29dd2de4176780 100644 (file)
@@ -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
index 89048a585e73e0e800addc3b500bada898883117..6c7fe5e792d1889dec6cb1dcb325f5a19fc4e4d3 100644 (file)
@@ -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)
index 25af4725da7ed25e253d10081c2876f4830aad7f..ac1841cce65363cf4f82f36d3cb30d724aef5992 100644 (file)
@@ -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(
index c6b272f2454c5154a16b19e0342c50246a528baa..3f08f3a594c2b594276ec1fcb9e296e4adce5acb 100644 (file)
@@ -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}"
 
index 420cbf4e6894f7144660d2ba4dd22b3b26b2bdf3..acef4f277eaaf86ecf9fb56d87a62a007da35aab 100644 (file)
@@ -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}"
 
index 5b54d1ba4bb3ccd535b8a44c6a1af2812a142d8b..8de8cdf167200ffa3d89381c63998e35f197af7b 100644 (file)
@@ -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(
index e347e5945d3b2b0e58249d2eb40d45e3d880045d..aef93ae140df8a17150b2aa996d023250f866662 100644 (file)
@@ -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
index a75c8fcd4f293b5119340d1e194c0f85d70bf4f3..fb49f9220d6d1ccaca34707ec2e3a8198f6b2470 100644 (file)
@@ -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
index ccf760124cc2a022198ba006e8530ea82d89549c..8e05c2a75240a5f8aa9c630b50b7698eff3331ac 100644 (file)
@@ -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}"
 
index 87e000b7e5d07c25b5850beb4630618aaae9fa91..3961a5d8a0c8db07cebc3ab31eb6cac93e6e8ce2 100644 (file)
@@ -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}"
index e5ff02602b8041bd4f968297d442c5f6dca785ca..ddc196f1f6fca3a5ff238c729f8b5da54a20fa39 100644 (file)
@@ -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
index 5516f26457ae8a50ec2446fe0b1602e6b24f7dfc..f0840d45cb8cf8c8f32f8b67ccdc9e14d7888c60 100644 (file)
@@ -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
 
index e6957daa6f4dcecfd5f6aa3e543badd19172d07a..1e54df0264ca0b17cab9969e7cbc165df11d08d9 100644 (file)
@@ -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(
index c9825f756916cba73da66f5d167cae369650fa48..9d8d1eede880cd8f52dd4f74e9fd486e3d7429cf 100644 (file)
@@ -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
index 5ac00ce5f85c11a46b72a864a0cb54e8cfa3332d..a9a00913aa47b1f3f5146ee6807e54aba4f91d59 100644 (file)
@@ -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:
index ae8f0dd5039693a24a14bf9cff638ee740798a07..140efb96cd6ba7ce5a8fcbd48af58f7d06109e20 100644 (file)
@@ -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)
index 93e9d48cbe51f77d8e9c840e1d8d2e24d841bbd6..26e3ebfe547f137803d2079a290c072c9105c34e 100644 (file)
@@ -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:
index a2c4b2aa370225572a4b8b220132c17438f434f9..683c593013cd297f5313f02fbf0000419a9abd02 100644 (file)
@@ -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:
index 2d77b4cb65c711f4bcdbca13fc0ba275ef26007d..b0ea29d458bf72ee9731ef39deab7b7f2d00d45a 100644 (file)
@@ -73,7 +73,7 @@ if sys.platform == "win32":
 
     else:
 
-        class _WMIGetter:  # type: ignore
+        class _WMIGetter:  # pyright: ignore
             pass
 
     def _config_domain(domain):
index 451d98823e0e3a47f110e224d91a1e3dcc50c908..aa90420774fb52d1fb69bd297d6856f88758e010 100644 (file)
@@ -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])
index cc056c8018ef7e434bd222643593f9e0dfc54ddf..f8e3e61bbff03c198bee9f109e8c2d6763d6f8ba 100644 (file)
@@ -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
index cb8e07ccb0e4fd4d72e44c7dd24a58da3ac5bf20..5822b7491aa401071fb3b38243217251c5c689e1 100644 (file)
@@ -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