]> git.ipfire.org Git - thirdparty/dnspython.git/commitdiff
Specify the utf-8 encoding when opening files [#1188].
authorBob Halley <halley@dnspython.org>
Sat, 26 Jul 2025 15:36:29 +0000 (08:36 -0700)
committerBob Halley <halley@dnspython.org>
Sat, 26 Jul 2025 15:36:34 +0000 (08:36 -0700)
dns/message.py
dns/resolver.py
dns/zone.py
dns/zonefile.py
tests/test_svcb.py
tests/test_zone.py

index 77bec1e94cbc00acc47c178aa32c4a82c8cd018c..b6cc2103dd038e174b6ce11a8efc04bc07e2d602 100644 (file)
@@ -1738,7 +1738,7 @@ def from_file(
     """
 
     if isinstance(f, str):
-        cm: contextlib.AbstractContextManager = open(f)
+        cm: contextlib.AbstractContextManager = open(f, "rt", encoding="utf-8")
     else:
         cm = contextlib.nullcontext(f)
     with cm as f:
index fef9e84a4acd5f7b117b2ed8d73c80635fc1be97..f7550cae60409976eeed36f4570e2936e84ca196 100644 (file)
@@ -998,7 +998,7 @@ class BaseResolver:
         nameservers = []
         if isinstance(f, str):
             try:
-                cm: contextlib.AbstractContextManager = open(f)
+                cm: contextlib.AbstractContextManager = open(f, "rt", encoding="utf-8")
             except OSError:
                 # /etc/resolv.conf doesn't exist, can't be read, etc.
                 raise NoResolverConfiguration(f"cannot open {f}")
index 7cba657d48293576fd75e9ad73cc30b989f16ef1..1803979165fdd9aa1c6d8c570fc7358f3b97ee6e 100644 (file)
@@ -1378,7 +1378,7 @@ def from_file(
     if isinstance(f, str):
         if filename is None:
             filename = f
-        cm: contextlib.AbstractContextManager = open(f)
+        cm: contextlib.AbstractContextManager = open(f, "rt", encoding="utf-8")
     else:
         cm = contextlib.nullcontext(f)
     with cm as f:
index d6047cce713361fb789d19ffaa791c4b598a8a25..fd0f4642488cd92b430ba74b66db3fbc1815620a 100644 (file)
@@ -537,7 +537,7 @@ class Reader:
                                 self.default_ttl_known,
                             )
                         )
-                        self.current_file = open(filename)
+                        self.current_file = open(filename, "rt", encoding="utf-8")
                         self.tok = dns.tokenizer.Tokenizer(self.current_file, filename)
                         self.current_origin = new_origin
                     elif c == "$GENERATE":
index d2d8dd796e066b7c7dc9497c165376a44b822430..e92ec453ead4beddf38958cd00e4eb1281040e97 100644 (file)
@@ -7,7 +7,6 @@ import dns.rdata
 import dns.rdtypes.svcbbase
 import dns.rrset
 from dns.tokenizer import Tokenizer
-
 from tests.util import here
 
 
@@ -303,9 +302,13 @@ class SVCBTestCase(unittest.TestCase):
 
     def test_svcb_spec_test_vectors(self):
         text_file = here("svcb_test_vectors.text")
-        text_tokenizer = Tokenizer(open(text_file), filename=text_file)
+        text_tokenizer = Tokenizer(
+            open(text_file, "rt", encoding="utf-8"), filename=text_file
+        )
         generic_file = here("svcb_test_vectors.generic")
-        generic_tokenizer = Tokenizer(open(generic_file), filename=generic_file)
+        generic_tokenizer = Tokenizer(
+            open(generic_file, "rt", encoding="utf-8"), filename=generic_file
+        )
 
         while True:
             while True:
index 2e590e7087865a5ffd4c9bca6dd8597ecfa7180b..1d7cde35b99ee33d112dcdcc10a8ccfa8ca2a22f 100644 (file)
@@ -320,8 +320,8 @@ def make_xfr(zone):
 
 
 def compare_files(test_name, a_name, b_name):
-    with open(a_name, "r") as a:
-        with open(b_name, "r") as b:
+    with open(a_name, "rt", encoding="utf-8") as a:
+        with open(b_name, "rt", encoding="utf-8") as b:
             differences = list(difflib.unified_diff(a.readlines(), b.readlines()))
             if len(differences) == 0:
                 return True
@@ -377,7 +377,7 @@ class ZoneTestCase(unittest.TestCase):
     def testToFileTextual(self):
         z = dns.zone.from_file(here("example"), "example")
         try:
-            f = open(here("example3-textual.out"), "w")
+            f = open(here("example3-textual.out"), "wt", encoding="utf-8")
             z.to_file(f)
             f.close()
             ok = compare_files(
@@ -421,7 +421,7 @@ class ZoneTestCase(unittest.TestCase):
         ok = False
         try:
             text_zone = z.to_text(nl="\x0a")
-            f = open(here("example3.out"), "w")
+            f = open(here("example3.out"), "wt", encoding="utf-8")
             f.write(text_zone)
             f.close()
             ok = compare_files(
@@ -435,7 +435,7 @@ class ZoneTestCase(unittest.TestCase):
     def testToFileTextualWithOrigin(self):
         z = dns.zone.from_file(here("example"), "example")
         try:
-            f = open(here("example4-textual.out"), "w")
+            f = open(here("example4-textual.out"), "wt", encoding="utf-8")
             z.to_file(f, want_origin=True)
             f.close()
             ok = compare_files(