[Python-3000-checkins] r57693 - in python/branches/py3k/Lib/email: base64mime.py message.py quoprimime.py test/test_email.py
barry.warsaw
python-3000-checkins at python.org
Thu Aug 30 04:10:49 CEST 2007
Author: barry.warsaw
Date: Thu Aug 30 04:10:49 2007
New Revision: 57693
Modified:
python/branches/py3k/Lib/email/base64mime.py
python/branches/py3k/Lib/email/message.py
python/branches/py3k/Lib/email/quoprimime.py
python/branches/py3k/Lib/email/test/test_email.py
Log:
Fix a more bytes/str confusion.
Use str.encode('raw-unicode-escape') consistently instead of bytes(string).
Remove the convert_eols argument from base64mime.decode(). This matches
previous API changes done to the quoprimime module.
Modified: python/branches/py3k/Lib/email/base64mime.py
==============================================================================
--- python/branches/py3k/Lib/email/base64mime.py (original)
+++ python/branches/py3k/Lib/email/base64mime.py Thu Aug 30 04:10:49 2007
@@ -109,7 +109,7 @@
lines = []
for line in base64ed:
# Ignore the last character of each line if it is a newline
- if line.endswith(NL):
+ if line[-1] == ord(NL):
line = line[:-1]
# Add the chrome
lines.append('=?%s?b?%s?=' % (charset, line))
@@ -158,25 +158,19 @@
-def decode(s, convert_eols=False):
+def decode(string):
"""Decode a raw base64 string, returning a bytes object.
- If convert_eols is set to a string value, all canonical email linefeeds,
- e.g. "\\r\\n", in the decoded text will be converted to the value of
- convert_eols. os.linesep is a good choice for convert_eols if you are
- decoding a text attachment.
-
- This function does not parse a full MIME header value encoded with
- base64 (like =?iso-8895-1?b?bmloISBuaWgh?=) -- please use the high
- level email.Header class for that functionality.
+ This function does not parse a full MIME header value encoded with base64
+ (like =?iso-8895-1?b?bmloISBuaWgh?=) -- use the high level
+ email.Header class for that functionality.
"""
- if not s:
- return s
-
- dec = a2b_base64(s)
- if convert_eols:
- return dec.replace(CRLF, convert_eols)
- return dec
+ if not string:
+ return bytes()
+ elif isinstance(string, str):
+ return a2b_base64(string.encode('raw-unicode-escape'))
+ else:
+ return a2b_base64(string)
# For convenience and backwards compatibility w/ standard base64 module
Modified: python/branches/py3k/Lib/email/message.py
==============================================================================
--- python/branches/py3k/Lib/email/message.py (original)
+++ python/branches/py3k/Lib/email/message.py Thu Aug 30 04:10:49 2007
@@ -201,7 +201,7 @@
# Incorrect padding
pass
elif cte in ('x-uuencode', 'uuencode', 'uue', 'x-uue'):
- in_file = BytesIO(bytes(payload + '\n'))
+ in_file = BytesIO((payload + '\n').encode('raw-unicode-escape'))
out_file = BytesIO()
try:
uu.decode(in_file, out_file, quiet=True)
@@ -757,7 +757,8 @@
# LookupError will be raised if the charset isn't known to
# Python. UnicodeError will be raised if the encoded text
# contains a character not in the charset.
- charset = str(bytes(charset[2]), pcharset)
+ as_bytes = charset[2].encode('raw-unicode-escape')
+ charset = str(as_bytes, pcharset)
except (LookupError, UnicodeError):
charset = charset[2]
# charset characters must be in us-ascii range
Modified: python/branches/py3k/Lib/email/quoprimime.py
==============================================================================
--- python/branches/py3k/Lib/email/quoprimime.py (original)
+++ python/branches/py3k/Lib/email/quoprimime.py Thu Aug 30 04:10:49 2007
@@ -55,7 +55,10 @@
# See also Charset.py
MISC_LEN = 7
-HEADER_SAFE_BYTES = b'-!*+/ ' + bytes(ascii_letters) + bytes(digits)
+HEADER_SAFE_BYTES = (b'-!*+/ ' +
+ ascii_letters.encode('raw-unicode-escape') +
+ digits.encode('raw-unicode-escape'))
+
BODY_SAFE_BYTES = (b' !"#$%&\'()*+,-./0123456789:;<>'
b'?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`'
b'abcdefghijklmnopqrstuvwxyz{|}~\t')
Modified: python/branches/py3k/Lib/email/test/test_email.py
==============================================================================
--- python/branches/py3k/Lib/email/test/test_email.py (original)
+++ python/branches/py3k/Lib/email/test/test_email.py Thu Aug 30 04:10:49 2007
@@ -2531,10 +2531,8 @@
def test_decode(self):
eq = self.assertEqual
- eq(base64mime.decode(''), '')
+ eq(base64mime.decode(''), b'')
eq(base64mime.decode('aGVsbG8='), b'hello')
- eq(base64mime.decode('aGVsbG8=', 'X'), b'hello')
- eq(base64mime.decode('aGVsbG8NCndvcmxk\n', 'X'), b'helloXworld')
def test_encode(self):
eq = self.assertEqual
@@ -2844,7 +2842,7 @@
def test_empty_header_encode(self):
h = Header()
self.assertEqual(h.encode(), '')
-
+
def test_header_ctor_default_args(self):
eq = self.ndiffAssertEqual
h = Header()
More information about the Python-3000-checkins
mailing list