mirror of
https://github.com/python/cpython.git
synced 2025-11-25 04:34:37 +00:00
bpo-33482: fix codecs.StreamRecoder.writelines (GH-6779)
A very simple fix. I found this while writing typeshed stubs for StreamRecoder. https://bugs.python.org/issue33482
This commit is contained in:
parent
933e1509ec
commit
b3be407288
3 changed files with 23 additions and 1 deletions
|
|
@ -838,7 +838,7 @@ class StreamRecoder:
|
||||||
|
|
||||||
def writelines(self, list):
|
def writelines(self, list):
|
||||||
|
|
||||||
data = ''.join(list)
|
data = b''.join(list)
|
||||||
data, bytesdecoded = self.decode(data, self.errors)
|
data, bytesdecoded = self.decode(data, self.errors)
|
||||||
return self.writer.write(data)
|
return self.writer.write(data)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3146,6 +3146,27 @@ class Latin1Test(unittest.TestCase):
|
||||||
self.assertEqual(data.decode('latin1'), expected)
|
self.assertEqual(data.decode('latin1'), expected)
|
||||||
|
|
||||||
|
|
||||||
|
class StreamRecoderTest(unittest.TestCase):
|
||||||
|
def test_writelines(self):
|
||||||
|
bio = io.BytesIO()
|
||||||
|
codec = codecs.lookup('ascii')
|
||||||
|
sr = codecs.StreamRecoder(bio, codec.encode, codec.decode,
|
||||||
|
encodings.ascii.StreamReader, encodings.ascii.StreamWriter)
|
||||||
|
sr.writelines([b'a', b'b'])
|
||||||
|
self.assertEqual(bio.getvalue(), b'ab')
|
||||||
|
|
||||||
|
def test_write(self):
|
||||||
|
bio = io.BytesIO()
|
||||||
|
codec = codecs.lookup('latin1')
|
||||||
|
# Recode from Latin-1 to utf-8.
|
||||||
|
sr = codecs.StreamRecoder(bio, codec.encode, codec.decode,
|
||||||
|
encodings.utf_8.StreamReader, encodings.utf_8.StreamWriter)
|
||||||
|
|
||||||
|
text = 'àñé'
|
||||||
|
sr.write(text.encode('latin1'))
|
||||||
|
self.assertEqual(bio.getvalue(), text.encode('utf-8'))
|
||||||
|
|
||||||
|
|
||||||
@unittest.skipIf(_testcapi is None, 'need _testcapi module')
|
@unittest.skipIf(_testcapi is None, 'need _testcapi module')
|
||||||
class LocaleCodecTest(unittest.TestCase):
|
class LocaleCodecTest(unittest.TestCase):
|
||||||
"""
|
"""
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
Make `codecs.StreamRecoder.writelines` take a list of bytes.
|
||||||
Loading…
Add table
Add a link
Reference in a new issue