summaryrefslogtreecommitdiff
path: root/Lib
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2016-12-21 12:59:28 +0200
committerSerhiy Storchaka <storchaka@gmail.com>2016-12-21 12:59:28 +0200
commit8cbd3df3ce75699cdc64d0d1bd903af43da43fa0 (patch)
treee23173f5414db6ab26f925cc1824c2c6890c6723 /Lib
parent47bdc40352b06cc28ed91c988dbd65bb3b298471 (diff)
downloadcpython-git-8cbd3df3ce75699cdc64d0d1bd903af43da43fa0.tar.gz
Issue #28992: Use bytes.fromhex().
Diffstat (limited to 'Lib')
-rw-r--r--Lib/email/_encoded_words.py2
-rw-r--r--Lib/test/multibytecodec_support.py2
-rw-r--r--Lib/test/test_unicode.py11
-rw-r--r--Lib/urllib/parse.py2
4 files changed, 7 insertions, 10 deletions
diff --git a/Lib/email/_encoded_words.py b/Lib/email/_encoded_words.py
index 5eaab36ed0..32a1fa2648 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 f9884c68eb..813b7aa1bd 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 fb77ffb470..003ff18348 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 958767a08d..1d08730a89 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: