diff -r fdfa15a9243c -r 45139b30afef Lib/codecs.py --- a/Lib/codecs.py Sat Jun 21 13:59:25 2014 +0200 +++ b/Lib/codecs.py Sun Jun 22 13:15:50 2014 -0400 @@ -690,13 +690,13 @@ return self.reader.read(size) - def readline(self, size=None): + def readline(self, size=None, keepends=True): - return self.reader.readline(size) + return self.reader.readline(size, keepends) - def readlines(self, sizehint=None): + def readlines(self, sizehint=None, keepends=True): - return self.reader.readlines(sizehint) + return self.reader.readlines(sizehint, keepends) def __next__(self): diff -r fdfa15a9243c -r 45139b30afef Lib/test/test_codecs.py --- a/Lib/test/test_codecs.py Sat Jun 21 13:59:25 2014 +0200 +++ b/Lib/test/test_codecs.py Sun Jun 22 13:15:50 2014 -0400 @@ -1664,6 +1664,39 @@ f = self.reader(self.stream) self.assertEqual(f.readlines(), ['\ud55c\n', '\uae00']) +class StreamReaderWriterTest(unittest.TestCase): + # Issue 8630 + def setUp(self): + self.encoding = 'utf-8' + self.lines = ['line1\n', 'lines2\n', 'lines3\n'] + self.info = codecs.lookup(self.encoding) + + def create(self, stream): + srw = codecs.StreamReaderWriter(stream, self.info.streamreader, + self.info.streamwriter, 'strict') + return srw + + def test_readline(self): + line = io.BytesIO(self.lines[0].encode(self.encoding)) + with self.create(line) as srw: + self.assertEqual(srw.readline(), self.lines[0]) + + def test_readlines(self): + lines = io.BytesIO(''.join(self.lines).encode(self.encoding)) + with self.create(lines) as srw: + self.assertEqual(srw.readlines(), self.lines) + + def test_readline_no_keepends(self): + line = io.BytesIO(self.lines[0].encode(self.encoding)) + with self.create(line) as srw: + self.assertEqual(srw.readline(keepends=False), self.lines[0].strip()) + + def test_readlines_no_keepends(self): + lines = io.BytesIO(''.join(self.lines).encode(self.encoding)) + with self.create(lines) as srw: + stripped = [x.strip() for x in self.lines] + self.assertEqual(srw.readlines(keepends=False), stripped) + class EncodedFileTest(unittest.TestCase): def test_basic(self):