Skip to content

Commit 9224e4a

Browse files
committed
initial support for "ty" type checker
1 parent 059cccf commit 9224e4a

File tree

11 files changed

+58
-35
lines changed

11 files changed

+58
-35
lines changed

Makefile

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,19 @@ test:
3535

3636
check: test
3737

38-
type:
38+
mypy:
3939
python -m mypy --disallow-incomplete-defs dns
4040

4141
pyright:
4242
pyright dns
4343

44+
ty:
45+
ty check dns
46+
47+
type:
48+
pyright dns
49+
ty check dns
50+
4451
ruff:
4552
ruff check dns
4653

dns/_asyncio_backend.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ def __init__(
204204

205205
resolver = dns.asyncresolver.Resolver()
206206
super().__init__(*args, **kwargs)
207-
self._pool._network_backend = _NetworkBackend(
207+
self._pool._network_backend = _NetworkBackend( # type: ignore
208208
resolver, local_port, bootstrap_address, family
209209
)
210210

dns/_ddr.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ def ddr_check_certificate(self, cert):
4040
def make_tls_context(self):
4141
ssl = dns.query.ssl
4242
ctx = ssl.create_default_context()
43-
ctx.minimum_version = ssl.TLSVersion.TLSv1_2
43+
ctx.minimum_version = ssl.TLSVersion.TLSv1_2 # type: ignore
4444
return ctx
4545

4646
def ddr_tls_check_sync(self, lifetime):

dns/_trio_backend.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ def __init__(
181181

182182
resolver = dns.asyncresolver.Resolver()
183183
super().__init__(*args, **kwargs)
184-
self._pool._network_backend = _NetworkBackend(
184+
self._pool._network_backend = _NetworkBackend( # type: ignore
185185
resolver, local_port, bootstrap_address, family
186186
)
187187

dns/message.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1430,7 +1430,7 @@ class _TextReader:
14301430

14311431
def __init__(
14321432
self,
1433-
text: str,
1433+
text: Any,
14341434
idna_codec: dns.name.IDNACodec | None,
14351435
one_rr_per_rrset: bool = False,
14361436
origin: dns.name.Name | None = None,
@@ -1742,7 +1742,8 @@ def from_file(
17421742
else:
17431743
cm = contextlib.nullcontext(f)
17441744
with cm as f:
1745-
return from_text(f, idna_codec, one_rr_per_rrset)
1745+
reader = _TextReader(f, idna_codec, one_rr_per_rrset)
1746+
return reader.read()
17461747
assert False # for mypy lgtm[py/unreachable-statement]
17471748

17481749

dns/query.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ def __init__(
143143

144144
resolver = dns.resolver.Resolver()
145145
super().__init__(*args, **kwargs)
146-
self._pool._network_backend = _NetworkBackend(
146+
self._pool._network_backend = _NetworkBackend( # type: ignore
147147
resolver, local_port, bootstrap_address, family
148148
)
149149

dns/rdataset.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,7 @@ def __init__(self, rdataset: Rdataset):
369369
def update_ttl(self, ttl):
370370
raise TypeError("immutable")
371371

372-
def add(self, rd, ttl=None):
372+
def add(self, rd, ttl=None): # type: ignore
373373
raise TypeError("immutable")
374374

375375
def union_update(self, other):

dns/resolver.py

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1005,6 +1005,7 @@ def read_resolv_conf(self, f: Any) -> None:
10051005
else:
10061006
cm = contextlib.nullcontext(f)
10071007
with cm as f:
1008+
assert f is not None
10081009
for l in f:
10091010
if len(l) == 0 or l[0] == "#" or l[0] == ";":
10101011
continue
@@ -2047,22 +2048,22 @@ def override_system_resolver(resolver: Resolver | None = None) -> None:
20472048
resolver = get_default_resolver()
20482049
global _resolver
20492050
_resolver = resolver
2050-
socket.getaddrinfo = _getaddrinfo
2051-
socket.getnameinfo = _getnameinfo
2052-
socket.getfqdn = _getfqdn
2053-
socket.gethostbyname = _gethostbyname
2054-
socket.gethostbyname_ex = _gethostbyname_ex
2055-
socket.gethostbyaddr = _gethostbyaddr
2051+
socket.getaddrinfo = _getaddrinfo # type: ignore
2052+
socket.getnameinfo = _getnameinfo # type: ignore
2053+
socket.getfqdn = _getfqdn # type: ignore
2054+
socket.gethostbyname = _gethostbyname # type: ignore
2055+
socket.gethostbyname_ex = _gethostbyname_ex # type: ignore
2056+
socket.gethostbyaddr = _gethostbyaddr # type: ignore
20562057

20572058

20582059
def restore_system_resolver() -> None:
20592060
"""Undo the effects of prior override_system_resolver()."""
20602061

20612062
global _resolver
20622063
_resolver = None
2063-
socket.getaddrinfo = _original_getaddrinfo
2064-
socket.getnameinfo = _original_getnameinfo
2065-
socket.getfqdn = _original_getfqdn
2066-
socket.gethostbyname = _original_gethostbyname
2067-
socket.gethostbyname_ex = _original_gethostbyname_ex
2068-
socket.gethostbyaddr = _original_gethostbyaddr
2064+
socket.getaddrinfo = _original_getaddrinfo # type: ignore
2065+
socket.getnameinfo = _original_getnameinfo # type: ignore
2066+
socket.getfqdn = _original_getfqdn # type: ignore
2067+
socket.gethostbyname = _original_gethostbyname # type: ignore
2068+
socket.gethostbyname_ex = _original_gethostbyname_ex # type: ignore
2069+
socket.gethostbyaddr = _original_gethostbyaddr # type: ignore

dns/zone.py

Lines changed: 26 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ def __init__(
159159
raise ValueError("origin parameter must be convertible to a DNS name")
160160
if not origin.is_absolute():
161161
raise ValueError("origin parameter must be an absolute name")
162-
self.origin = origin
162+
self.origin: dns.name.Name | None = origin
163163
self.rdclass = rdclass
164164
self.nodes: MutableMapping[dns.name.Name, dns.node.Node] = self.map_factory()
165165
self.relativize = relativize
@@ -686,8 +686,8 @@ def to_file(
686686
f.write(l_b)
687687
f.write(nl_b)
688688
except TypeError: # textual mode
689-
f.write(l)
690-
f.write(nl)
689+
f.write(l) # type: ignore
690+
f.write(nl) # type: ignore
691691

692692
if sorted:
693693
names = list(self.keys())
@@ -707,8 +707,8 @@ def to_file(
707707
f.write(l_b)
708708
f.write(nl_b)
709709
except TypeError: # textual mode
710-
f.write(l)
711-
f.write(nl)
710+
f.write(l) # type: ignore
711+
f.write(nl) # type: ignore
712712

713713
def to_text(
714714
self,
@@ -1104,15 +1104,21 @@ def __init__(self, version: Version):
11041104

11051105

11061106
class Transaction(dns.transaction.Transaction):
1107-
def __init__(self, zone, replacement, version=None, make_immutable=False):
1107+
def __init__(
1108+
self,
1109+
zone: Zone,
1110+
replacement: bool,
1111+
version: Version | None = None,
1112+
make_immutable: bool = False,
1113+
):
11081114
read_only = version is not None
11091115
super().__init__(zone, replacement, read_only)
11101116
self.version = version
11111117
self.make_immutable = make_immutable
11121118

11131119
@property
1114-
def zone(self):
1115-
return self.manager
1120+
def zone(self) -> Zone:
1121+
return cast(Zone, self.manager)
11161122

11171123
def _setup_version(self):
11181124
assert self.version is None
@@ -1128,17 +1134,20 @@ def _get_rdataset(self, name, rdtype, covers):
11281134
def _put_rdataset(self, name, rdataset):
11291135
assert not self.read_only
11301136
assert self.version is not None
1131-
self.version.put_rdataset(name, rdataset)
1137+
version = cast(WritableVersion, self.version)
1138+
version.put_rdataset(name, rdataset)
11321139

11331140
def _delete_name(self, name):
11341141
assert not self.read_only
11351142
assert self.version is not None
1136-
self.version.delete_node(name)
1143+
version = cast(WritableVersion, self.version)
1144+
version.delete_node(name)
11371145

11381146
def _delete_rdataset(self, name, rdtype, covers):
11391147
assert not self.read_only
11401148
assert self.version is not None
1141-
self.version.delete_rdataset(name, rdtype, covers)
1149+
version = cast(WritableVersion, self.version)
1150+
version.delete_rdataset(name, rdtype, covers)
11421151

11431152
def _name_exists(self, name):
11441153
assert self.version is not None
@@ -1149,14 +1158,15 @@ def _changed(self):
11491158
return False
11501159
else:
11511160
assert self.version is not None
1152-
return len(self.version.changed) > 0
1161+
version = cast(WritableVersion, self.version)
1162+
return len(version.changed) > 0
11531163

11541164
def _end_transaction(self, commit):
11551165
assert self.zone is not None
11561166
assert self.version is not None
11571167
if self.read_only:
11581168
self.zone._end_read(self) # type: ignore
1159-
elif commit and len(self.version.changed) > 0:
1169+
elif commit and len(cast(WritableVersion, self.version).changed) > 0:
11601170
if self.make_immutable:
11611171
factory = self.manager.immutable_version_factory # type: ignore
11621172
if factory is None:
@@ -1191,7 +1201,9 @@ def _get_node(self, name):
11911201
assert self.version is not None
11921202
return self.version.get_node(name)
11931203

1194-
def _origin_information(self):
1204+
def _origin_information(
1205+
self,
1206+
) -> Tuple[dns.name.Name | None, bool, dns.name.Name | None]:
11951207
assert self.version is not None
11961208
(absolute, relativize, effective) = self.manager.origin_information()
11971209
if absolute is None and self.version.origin is not None:

dns/zonefile.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,9 +150,10 @@ def _get_identifier(self):
150150
raise dns.exception.SyntaxError
151151
return token
152152

153-
def _rr_line(self):
153+
def _rr_line(self) -> None:
154154
"""Process one line from a DNS zone file."""
155155
token: dns.tokenizer.Token
156+
name: dns.name.Name | None
156157
# Name
157158
if self.force_name is not None:
158159
name = self.force_name

0 commit comments

Comments
 (0)