[Python-3000-checkins] r57801 - in python/branches/py3k/Lib/email: encoders.py message.py test/test_email.py utils.py
barry.warsaw
python-3000-checkins at python.org
Fri Aug 31 05:04:48 CEST 2007
Author: barry.warsaw
Date: Fri Aug 31 05:04:26 2007
New Revision: 57801
Modified:
python/branches/py3k/Lib/email/encoders.py
python/branches/py3k/Lib/email/message.py
python/branches/py3k/Lib/email/test/test_email.py
python/branches/py3k/Lib/email/utils.py
Log:
More email package fixes.
MIMEApplication() requires a bytes object for its _data, so fix the tests.
We no longer need utils._identity() or utils._bdecode(). The former isn't
used anywhere AFAICT (where's "make test's" lint? <wink>) and the latter is a
kludge that is eliminated by base64.b64encode().
Current status: 5F/5E
Modified: python/branches/py3k/Lib/email/encoders.py
==============================================================================
--- python/branches/py3k/Lib/email/encoders.py (original)
+++ python/branches/py3k/Lib/email/encoders.py Fri Aug 31 05:04:26 2007
@@ -11,8 +11,8 @@
'encode_quopri',
]
-import base64
+from base64 import b64encode as _bencode
from quopri import encodestring as _encodestring
@@ -23,19 +23,6 @@
return enc.replace(' ', '=20')
-def _bencode(s):
- # We can't quite use base64.encodestring() since it tacks on a "courtesy
- # newline". Blech!
- if not s:
- return s
- hasnewline = (s[-1] == '\n')
- value = base64.encodestring(s)
- if not hasnewline and value[-1] == '\n':
- return value[:-1]
- return value
-
-
-
def encode_base64(msg):
"""Encode the message's payload in Base64.
Modified: python/branches/py3k/Lib/email/message.py
==============================================================================
--- python/branches/py3k/Lib/email/message.py (original)
+++ python/branches/py3k/Lib/email/message.py Fri Aug 31 05:04:26 2007
@@ -8,6 +8,7 @@
import re
import uu
+import base64
import binascii
import warnings
from io import BytesIO, StringIO
@@ -196,12 +197,14 @@
return utils._qdecode(payload)
elif cte == 'base64':
try:
- return utils._bdecode(payload)
+ if isinstance(payload, str):
+ payload = payload.encode('raw-unicode-escape')
+ return base64.b64decode(payload)
+ #return utils._bdecode(payload)
except binascii.Error:
# Incorrect padding
pass
elif cte in ('x-uuencode', 'uuencode', 'uue', 'x-uue'):
- payload += '\n'
in_file = BytesIO(payload.encode('raw-unicode-escape'))
out_file = BytesIO()
try:
@@ -212,7 +215,9 @@
pass
# Is there a better way to do this? We can't use the bytes
# constructor.
- return bytes(payload, 'raw-unicode-escape')
+ if isinstance(payload, str):
+ return payload.encode('raw-unicode-escape')
+ return payload
def set_payload(self, payload, charset=None):
"""Set the payload to the given value.
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 Fri Aug 31 05:04:26 2007
@@ -1012,7 +1012,7 @@
class TestMIMEApplication(unittest.TestCase):
def test_headers(self):
eq = self.assertEqual
- msg = MIMEApplication('\xfa\xfb\xfc\xfd\xfe\xff')
+ msg = MIMEApplication(b'\xfa\xfb\xfc\xfd\xfe\xff')
eq(msg.get_content_type(), 'application/octet-stream')
eq(msg['content-transfer-encoding'], 'base64')
Modified: python/branches/py3k/Lib/email/utils.py
==============================================================================
--- python/branches/py3k/Lib/email/utils.py (original)
+++ python/branches/py3k/Lib/email/utils.py Fri Aug 31 05:04:26 2007
@@ -55,22 +55,6 @@
# Helpers
-def _identity(s):
- return s
-
-
-def _bdecode(s):
- # We can't quite use base64.encodestring() since it tacks on a "courtesy
- # newline". Blech!
- if not s:
- return s
- value = base64.decodestring(s)
- if not s.endswith('\n') and value.endswith('\n'):
- return value[:-1]
- return value
-
-
-
def formataddr(pair):
"""The inverse of parseaddr(), this takes a 2-tuple of the form
(realname, email_address) and returns the string value suitable
More information about the Python-3000-checkins
mailing list