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.
This commit is contained in:
Barry Warsaw 2007-08-30 02:10:49 +00:00
parent ce36ad8a46
commit 8b3d659692
4 changed files with 20 additions and 24 deletions

View file

@ -109,7 +109,7 @@ def header_encode(header, charset='iso-8859-1', keep_eols=False,
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 @@ encodestring = encode
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