]> granicus.if.org Git - python/commitdiff
Issue #28992: Use bytes.fromhex().
authorSerhiy Storchaka <storchaka@gmail.com>
Wed, 21 Dec 2016 10:59:28 +0000 (12:59 +0200)
committerSerhiy Storchaka <storchaka@gmail.com>
Wed, 21 Dec 2016 10:59:28 +0000 (12:59 +0200)
Lib/email/_encoded_words.py
Lib/test/multibytecodec_support.py
Lib/test/test_unicode.py
Lib/urllib/parse.py

index 5eaab36ed0a6c35f73abe67a7ea79fca3ddcdf24..32a1fa26483ef9ea06f7367ab7e11a5b6c494c00 100644 (file)
@@ -62,7 +62,7 @@ __all__ = ['decode_q',
 
 # regex based decoder.
 _q_byte_subber = functools.partial(re.compile(br'=([a-fA-F0-9]{2})').sub,
-        lambda m: bytes([int(m.group(1), 16)]))
+        lambda m: bytes.fromhex(m.group(1)))
 
 def decode_q(encoded):
     encoded = encoded.replace(b'_', b' ')
index f9884c68ebaa4ee3b975a2629df5c92311daca2e..813b7aa1bd2dd88b47e3edd418e0a9eea937cb7c 100644 (file)
@@ -338,7 +338,7 @@ class TestBase_Mapping(unittest.TestCase):
         uc = re.findall('<a u="([A-F0-9]{4})" b="([0-9A-F ]+)"/>', ucmdata)
         for uni, coded in uc:
             unich = chr(int(uni, 16))
-            codech = bytes(int(c, 16) for c in coded.split())
+            codech = bytes.fromhex(coded)
             self._testpoint(codech, unich)
 
     def test_mapping_supplemental(self):
index fb77ffb47067f4337ecbcf1de72e1100f8f4b9e4..003ff183486eb89d5d925690a41042bea2d7ef8d 100644 (file)
@@ -1793,9 +1793,6 @@ class UnicodeTest(string_tests.CommonTest,
             self.assertEqual(seq.decode('utf-8', 'ignore'),
                              res.replace('\uFFFD', ''))
 
-    def to_bytestring(self, seq):
-        return bytes(int(c, 16) for c in seq.split())
-
     def assertCorrectUTF8Decoding(self, seq, res, err):
         """
         Check that an invalid UTF-8 sequence raises a UnicodeDecodeError when
@@ -1851,7 +1848,7 @@ class UnicodeTest(string_tests.CommonTest,
         ]
         FFFD = '\ufffd'
         for seq in sequences:
-            self.assertCorrectUTF8Decoding(self.to_bytestring(seq), '\ufffd',
+            self.assertCorrectUTF8Decoding(bytes.fromhex(seq), '\ufffd',
                                            'unexpected end of data')
 
     def test_invalid_cb_for_2bytes_seq(self):
@@ -1873,7 +1870,7 @@ class UnicodeTest(string_tests.CommonTest,
             ('DF C0', FFFDx2), ('DF FF', FFFDx2),
         ]
         for seq, res in sequences:
-            self.assertCorrectUTF8Decoding(self.to_bytestring(seq), res,
+            self.assertCorrectUTF8Decoding(bytes.fromhex(seq), res,
                                            'invalid continuation byte')
 
     def test_invalid_cb_for_3bytes_seq(self):
@@ -1931,7 +1928,7 @@ class UnicodeTest(string_tests.CommonTest,
             ('EF BF C0', FFFDx2), ('EF BF FF', FFFDx2),
         ]
         for seq, res in sequences:
-            self.assertCorrectUTF8Decoding(self.to_bytestring(seq), res,
+            self.assertCorrectUTF8Decoding(bytes.fromhex(seq), res,
                                            'invalid continuation byte')
 
     def test_invalid_cb_for_4bytes_seq(self):
@@ -2010,7 +2007,7 @@ class UnicodeTest(string_tests.CommonTest,
             ('F4 8F BF C0', FFFDx2), ('F4 8F BF FF', FFFDx2)
         ]
         for seq, res in sequences:
-            self.assertCorrectUTF8Decoding(self.to_bytestring(seq), res,
+            self.assertCorrectUTF8Decoding(bytes.fromhex(seq), res,
                                            'invalid continuation byte')
 
     def test_codecs_idna(self):
index 958767a08d7e77eeffc63217695c10877acd98b7..1d08730a89fe8a995f2f933775c78f2b2c0141ab 100644 (file)
@@ -574,7 +574,7 @@ def unquote_to_bytes(string):
     # if the function is never called
     global _hextobyte
     if _hextobyte is None:
-        _hextobyte = {(a + b).encode(): bytes([int(a + b, 16)])
+        _hextobyte = {(a + b).encode(): bytes.fromhex(a + b)
                       for a in _hexdig for b in _hexdig}
     for item in bits[1:]:
         try: