summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorJanus <ysangkok@gmail.com>2018-07-23 16:11:00 +0200
committerJanus <ysangkok@gmail.com>2018-07-31 20:10:52 +0200
commit5c5de7bb1ad26d6d6bb82ed2deb64748b46ac599 (patch)
treee4510f90a598e484e57314dc04217259ef34a690 /examples
parent2e6e81852b63eb64b68a08a27cc6e440819b6b58 (diff)
downloaddnspython-5c5de7bb1ad26d6d6bb82ed2deb64748b46ac599.tar.gz
Initial type signatures
Diffstat (limited to 'examples')
-rw-r--r--examples/receive_notify.py7
-rwxr-xr-xexamples/reverse.py4
-rwxr-xr-xexamples/zonediff.py47
3 files changed, 41 insertions, 17 deletions
diff --git a/examples/receive_notify.py b/examples/receive_notify.py
index 93c428c..178d73c 100644
--- a/examples/receive_notify.py
+++ b/examples/receive_notify.py
@@ -11,6 +11,9 @@ import dns.flags
import dns.message
import dns.rdataclass
import dns.rdatatype
+import dns.name
+
+from typing import cast
address = '127.0.0.1'
port = 53535
@@ -26,7 +29,7 @@ while True:
# Do something with the SOA RR here
print('The serial number for', soa.name, 'is', soa[0].serial)
- response = dns.message.make_response(notify)
+ response = dns.message.make_response(notify) # type: dns.message.Message
response.flags |= dns.flags.AA
- wire = response.to_wire(response)
+ wire = response.to_wire(cast(dns.name.Name, response))
s.sendto(wire, address)
diff --git a/examples/reverse.py b/examples/reverse.py
index b84017f..038a020 100755
--- a/examples/reverse.py
+++ b/examples/reverse.py
@@ -22,13 +22,15 @@ import dns.zone
import dns.ipv4
import os.path
import sys
+from typing import Dict, List # pylint: disable=unused-import
-reverse_map = {}
+reverse_map = {} # type: Dict[str, List[str]]
for filename in sys.argv[1:]:
zone = dns.zone.from_file(filename, os.path.basename(filename),
relativize=False)
for (name, ttl, rdata) in zone.iterate_rdatas('A'):
+ print(type(rdata))
try:
reverse_map[rdata.address].append(name.to_text())
except KeyError:
diff --git a/examples/zonediff.py b/examples/zonediff.py
index b05d7a4..bfe4ee3 100755
--- a/examples/zonediff.py
+++ b/examples/zonediff.py
@@ -22,16 +22,22 @@
"""See diff_zones.__doc__ for more information"""
from __future__ import print_function
+from typing import cast, Union, Any # pylint: disable=unused-import
__all__ = ['diff_zones', 'format_changes_plain', 'format_changes_html']
try:
import dns.zone
+ import dns.node
except ImportError:
raise SystemExit("Please install dnspython")
-def diff_zones(zone1, zone2, ignore_ttl=False, ignore_soa=False):
+def diff_zones(zone1, # type: dns.zone.Zone
+ zone2, # type: dns.zone.Zone
+ ignore_ttl=False,
+ ignore_soa=False
+ ): # type: (...) -> list
"""diff_zones(zone1, zone2, ignore_ttl=False, ignore_soa=False) -> changes
Compares two dns.zone.Zone objects and returns a list of all changes
in the format (name, oldnode, newnode).
@@ -47,22 +53,26 @@ def diff_zones(zone1, zone2, ignore_ttl=False, ignore_soa=False):
changes = []
for name in zone1:
- name = str(name)
- n1 = zone1.get_node(name)
- n2 = zone2.get_node(name)
+ namestr = str(name)
+ n1 = cast(dns.node.Node, zone1.get_node(namestr))
+ n2 = cast(dns.node.Node, zone2.get_node(namestr))
if not n2:
changes.append((str(name), n1, n2))
elif _nodes_differ(n1, n2, ignore_ttl, ignore_soa):
changes.append((str(name), n1, n2))
for name in zone2:
- n1 = zone1.get_node(name)
- if not n1:
- n2 = zone2.get_node(name)
- changes.append((str(name), n1, n2))
+ n3 = cast(dns.node.Node, zone1.get_node(name))
+ if not n3:
+ n4 = cast(dns.node.Node, zone2.get_node(name))
+ changes.append((str(name), n3, n4))
return changes
-def _nodes_differ(n1, n2, ignore_ttl, ignore_soa):
+def _nodes_differ(n1, # type: dns.node.Node
+ n2, # type: dns.node.Node
+ ignore_ttl, # type: bool
+ ignore_soa # type: bool
+ ): # type: (...) -> bool
if ignore_soa or not ignore_ttl:
# Compare datasets directly
for r in n1.rdatasets:
@@ -78,10 +88,15 @@ def _nodes_differ(n1, n2, ignore_ttl, ignore_soa):
continue
if r not in n1.rdatasets:
return True
+ assert False
else:
return n1 != n2
-def format_changes_plain(oldf, newf, changes, ignore_ttl=False):
+def format_changes_plain(oldf, # type: str
+ newf, # type: str
+ changes, # type: list
+ ignore_ttl=False
+ ): # type: (...) -> str
"""format_changes(oldfile, newfile, changes, ignore_ttl=False) -> str
Given 2 filenames and a list of changes from diff_zones, produce diff-like
output. If ignore_ttl is True, TTL-only changes are not displayed"""
@@ -110,7 +125,11 @@ def format_changes_plain(oldf, newf, changes, ignore_ttl=False):
ret += "+ %s\n" % str(r).replace('\n', '\n+ ')
return ret
-def format_changes_html(oldf, newf, changes, ignore_ttl=False):
+def format_changes_html(oldf, # type: str
+ newf, # type: str
+ changes, # type: list
+ ignore_ttl=False
+ ): # type: (...) -> str
"""format_changes(oldfile, newfile, changes, ignore_ttl=False) -> str
Given 2 filenames and a list of changes from diff_zones, produce nice html
output. If ignore_ttl is True, TTL-only changes are not displayed"""
@@ -161,7 +180,7 @@ def format_changes_html(oldf, newf, changes, ignore_ttl=False):
# Make this module usable as a script too.
-def main():
+def main(): # type: () -> None
import argparse
import subprocess
import sys
@@ -190,7 +209,7 @@ The differences shown will be logical differences, not textual differences.
opts, args = p.parse_args()
opts.use_vc = opts.use_git or opts.use_bzr or opts.use_rcs
- def _open(what, err):
+ def _open(what, err): # type: (Union[list,str], str) -> Any
if isinstance(what, list):
# Must be a list, open subprocess
try:
@@ -265,7 +284,7 @@ The differences shown will be logical differences, not textual differences.
try:
oldz = dns.zone.from_file(old, origin='.', check_origin=False)
except dns.exception.DNSException:
- sys.stderr.write("Incorrect zonefile: %s\n", old)
+ sys.stderr.write("Incorrect zonefile: %s\n" % old)
if opts.tracebacks:
traceback.print_exc()
try: