self.errors = errors
self.bytebuffer = ""
self.charbuffer = u""
- self.atcr = False
def decode(self, input, errors='strict'):
raise NotImplementedError
# If size is given, we call read() only once
while True:
data = self.read(readsize)
- if self.atcr and data.startswith(u"\n"):
- data = data[1:]
if data:
- self.atcr = data.endswith(u"\r")
- # If we're at a "\r" (and are allowed to read more), read one
- # extra character (which might be a "\n") to get a proper
- # line ending. (If the stream is temporarily exhausted we return
- # the wrong line ending, but at least we won't generate a bogus
- # second line.)
- if self.atcr and size is None:
+ # If we're at a "\r" read one # extra character # (which might
+ # be a "\n") to get a proper # line ending. If the stream is
+ # temporarily exhausted we return the wrong line ending.
+ if data.endswith(u"\r"):
data += self.read(size=1, chars=1)
- self.atcr = data.endswith(u"\r")
line += data
lines = line.splitlines(True)
"""
self.bytebuffer = ""
self.charbuffer = u""
- self.atcr = False
def seek(self, offset, whence=0):
""" Set the input stream's current position.
- Bug #1149508: ``textwrap`` now handles hyphenated numbers (eg. "2004-03-05")
correctly.
+- Partial fixes for SF bugs #1163244 and #1175396: If a chunk read by
+ ``codecs.StreamReader.readline()`` has a trailing "\r", read one more
+ character even if the user has passed a size parameter to get a proper
+ line ending. Remove the special handling of a "\r\n" that has been split
+ between two lines.
+
Build
-----