Big email 3.0 API changes, with updated unit tests and documentation.
Briefly (from the NEWS file):
- Updates for the email package:
+ All deprecated APIs that in email 2.x issued warnings have been removed:
_encoder argument to the MIMEText constructor, Message.add_payload(),
Utils.dump_address_pair(), Utils.decode(), Utils.encode()
+ New deprecations: Generator.__call__(), Message.get_type(),
Message.get_main_type(), Message.get_subtype(), the 'strict' argument to
the Parser constructor. These will be removed in email 3.1.
+ Support for Python earlier than 2.3 has been removed (see PEP 291).
+ All defect classes have been renamed to end in 'Defect'.
+ Some FeedParser fixes; also a MultipartInvariantViolationDefect will be
added to messages that claim to be multipart but really aren't.
+ Updates to documentation.
diff --git a/Lib/email/Encoders.py b/Lib/email/Encoders.py
index 6851094..baac2a3 100644
--- a/Lib/email/Encoders.py
+++ b/Lib/email/Encoders.py
@@ -1,37 +1,16 @@
# Copyright (C) 2001-2004 Python Software Foundation
-# Author: barry@python.org (Barry Warsaw)
+# Author: Barry Warsaw
+# Contact: email-sig@python.org
"""Encodings and related functions."""
import base64
+from quopri import encodestring as _encodestring
-
-
-# Helpers
-try:
- from quopri import encodestring as _encodestring
-
- def _qencode(s):
- enc = _encodestring(s, quotetabs=1)
- # Must encode spaces, which quopri.encodestring() doesn't do
- return enc.replace(' ', '=20')
-except ImportError:
- # Python 2.1 doesn't have quopri.encodestring()
- from cStringIO import StringIO
- import quopri as _quopri
-
- def _qencode(s):
- if not s:
- return s
- hasnewline = (s[-1] == '\n')
- infp = StringIO(s)
- outfp = StringIO()
- _quopri.encode(infp, outfp, quotetabs=1)
- # Python 2.x's encode() doesn't encode spaces even when quotetabs==1
- value = outfp.getvalue().replace(' ', '=20')
- if not hasnewline and value[-1] == '\n':
- return value[:-1]
- return value
+def _qencode(s):
+ enc = _encodestring(s, quotetabs=True)
+ # Must encode spaces, which quopri.encodestring() doesn't do
+ return enc.replace(' ', '=20')
def _bencode(s):