Issue #23681: Fixed Python 2 to 3 poring bugs.

Indexing bytes retiurns an integer, not bytes.
This commit is contained in:
Serhiy Storchaka 2015-03-20 16:46:19 +02:00
parent d83b7c2df4
commit 74a49ac3f5
5 changed files with 12 additions and 14 deletions

View File

@ -136,7 +136,7 @@ class POP3:
# so only possibilities are ...LF, ...CRLF, CR...LF
if line[-2:] == CRLF:
return line[:-2], octets
if line[0] == CR:
if line[:1] == CR:
return line[1:-1], octets
return line[:-1], octets

View File

@ -145,7 +145,7 @@ def decode(input, output, header=False):
new = new + c; i = i+1
elif i+1 == n and not partial:
partial = 1; break
elif i+1 < n and line[i+1] == ESCAPE:
elif i+1 < n and line[i+1:i+2] == ESCAPE:
new = new + ESCAPE; i = i+2
elif i+2 < n and ishex(line[i+1:i+2]) and ishex(line[i+2:i+3]):
new = new + bytes((unhex(line[i+1:i+3]),)); i = i+3

View File

@ -210,12 +210,9 @@ class Au_read:
self._framesize = self._framesize * self._nchannels
if self._hdr_size > 24:
self._info = file.read(self._hdr_size - 24)
for i in range(len(self._info)):
if self._info[i] == b'\0':
self._info = self._info[:i]
break
self._info, _, _ = self._info.partition(b'\0')
else:
self._info = ''
self._info = b''
try:
self._data_pos = file.tell()
except (AttributeError, OSError):

View File

@ -149,15 +149,15 @@ def randrange_fmt(mode, char, obj):
format character."""
x = randrange(*fmtdict[mode][char])
if char == 'c':
x = bytes(chr(x), 'latin1')
x = bytes([x])
if obj == 'numpy' and x == b'\x00':
# http://projects.scipy.org/numpy/ticket/1925
x = b'\x01'
if char == '?':
x = bool(x)
if char == 'f' or char == 'd':
x = struct.pack(char, x)
x = struct.unpack(char, x)[0]
if obj == 'numpy' and x == b'\x00':
# http://projects.scipy.org/numpy/ticket/1925
x = b'\x01'
return x
def gen_item(fmt, obj):

View File

@ -1066,7 +1066,7 @@ class TestTokenize(TestCase):
encoding = object()
encoding_used = None
def mock_detect_encoding(readline):
return encoding, ['first', 'second']
return encoding, [b'first', b'second']
def mock__tokenize(readline, encoding):
nonlocal encoding_used
@ -1085,7 +1085,7 @@ class TestTokenize(TestCase):
counter += 1
if counter == 5:
return b''
return counter
return str(counter).encode()
orig_detect_encoding = tokenize_module.detect_encoding
orig__tokenize = tokenize_module._tokenize
@ -1093,7 +1093,8 @@ class TestTokenize(TestCase):
tokenize_module._tokenize = mock__tokenize
try:
results = tokenize(mock_readline)
self.assertEqual(list(results), ['first', 'second', 1, 2, 3, 4])
self.assertEqual(list(results),
[b'first', b'second', b'1', b'2', b'3', b'4'])
finally:
tokenize_module.detect_encoding = orig_detect_encoding
tokenize_module._tokenize = orig__tokenize