summaryrefslogtreecommitdiffstats
path: root/Lib/email/Encoders.py
diff options
context:
space:
mode:
authorBarry Warsaw <barry@python.org>2002-05-19 23:44:19 (GMT)
committerBarry Warsaw <barry@python.org>2002-05-19 23:44:19 (GMT)
commit8c1aac247667e6ac146e9153cd2941e4c5ec7b09 (patch)
tree4ed2ee7b3470d19d54d99d61f7509d3d4c5777bf /Lib/email/Encoders.py
parent2ae87539aad20670184ff9d30f625dddd6ac2e78 (diff)
downloadcpython-8c1aac247667e6ac146e9153cd2941e4c5ec7b09.zip
cpython-8c1aac247667e6ac146e9153cd2941e4c5ec7b09.tar.gz
cpython-8c1aac247667e6ac146e9153cd2941e4c5ec7b09.tar.bz2
Complete a merge of the mimelib project and the Python cvs codebases
for the email package. The former is now just a shell project that has some extra files for packaging for independent use (e.g. setup.py and README). Added a compatibility layer so that the same API can be used in Python 2.1 and 2.2/2.3 with the major differences shuffled off into helper modules (_compat21.py and _compat22.py). Also bumped the package version number to 2.0.3 for some fixes to be checked in momentarily.
Diffstat (limited to 'Lib/email/Encoders.py')
-rw-r--r--Lib/email/Encoders.py29
1 files changed, 24 insertions, 5 deletions
diff --git a/Lib/email/Encoders.py b/Lib/email/Encoders.py
index f09affa..c369a24 100644
--- a/Lib/email/Encoders.py
+++ b/Lib/email/Encoders.py
@@ -5,15 +5,34 @@
"""
import base64
-from quopri import encodestring as _encodestring
# Helpers
-def _qencode(s):
- enc = _encodestring(s, quotetabs=1)
- # Must encode spaces, which quopri.encodestring() doesn't do
- return enc.replace(' ', '=20')
+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 _bencode(s):