diff options
-rw-r--r-- | Lib/email/_encoded_words.py | 2 | ||||
-rw-r--r-- | Lib/test/multibytecodec_support.py | 2 | ||||
-rw-r--r-- | Lib/test/test_unicode.py | 11 | ||||
-rw-r--r-- | Lib/urllib/parse.py | 2 |
4 files changed, 7 insertions, 10 deletions
diff --git a/Lib/email/_encoded_words.py b/Lib/email/_encoded_words.py index 5eaab36..32a1fa2 100644 --- a/Lib/email/_encoded_words.py +++ b/Lib/email/_encoded_words.py @@ -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' ') diff --git a/Lib/test/multibytecodec_support.py b/Lib/test/multibytecodec_support.py index f9884c6..813b7aa 100644 --- a/Lib/test/multibytecodec_support.py +++ b/Lib/test/multibytecodec_support.py @@ -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): diff --git a/Lib/test/test_unicode.py b/Lib/test/test_unicode.py index fb77ffb..003ff18 100644 --- a/Lib/test/test_unicode.py +++ b/Lib/test/test_unicode.py @@ -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): diff --git a/Lib/urllib/parse.py b/Lib/urllib/parse.py index 958767a..1d08730 100644 --- a/Lib/urllib/parse.py +++ b/Lib/urllib/parse.py @@ -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: |