Merging the py3k-pep3137 branch back into the py3k branch.
No detailed change log; just check out the change log for the py3k-pep3137
branch. The most obvious changes:
- str8 renamed to bytes (PyString at the C level);
- bytes renamed to buffer (PyBytes at the C level);
- PyString and PyUnicode are no longer compatible.
I.e. we now have an immutable bytes type and a mutable bytes type.
The behavior of PyString was modified quite a bit, to make it more
bytes-like. Some changes are still on the to-do list.
diff --git a/Lib/email/base64mime.py b/Lib/email/base64mime.py
index 369bf10..cff558e 100644
--- a/Lib/email/base64mime.py
+++ b/Lib/email/base64mime.py
@@ -70,7 +70,7 @@
# Return empty headers unchanged
if not header_bytes:
return str(header_bytes)
- encoded = b64encode(header_bytes)
+ encoded = b64encode(header_bytes).decode("ascii")
return '=?%s?b?%s?=' % (charset, encoded)
@@ -93,7 +93,7 @@
for i in range(0, len(s), max_unencoded):
# BAW: should encode() inherit b2a_base64()'s dubious behavior in
# adding a newline to the encoded string?
- enc = str(b2a_base64(s[i:i + max_unencoded]))
+ enc = b2a_base64(s[i:i + max_unencoded]).decode("ascii")
if enc.endswith(NL) and eol != NL:
enc = enc[:-1] + eol
encvec.append(enc)
diff --git a/Lib/email/test/test_email.py b/Lib/email/test/test_email.py
index 74a3c9d..c544004 100644
--- a/Lib/email/test/test_email.py
+++ b/Lib/email/test/test_email.py
@@ -2448,9 +2448,7 @@
def test_crlf_separation(self):
eq = self.assertEqual
- # XXX When Guido fixes TextIOWrapper.read() to act just like
- # .readlines(), open this in 'rb' mode with newlines='\n'.
- with openfile('msg_26.txt', mode='rb') as fp:
+ with openfile('msg_26.txt', newline='\n') as fp:
msg = Parser().parse(fp)
eq(len(msg.get_payload()), 2)
part1 = msg.get_payload(0)