summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2001-05-15 15:34:07 (GMT)
committerGuido van Rossum <guido@python.org>2001-05-15 15:34:07 (GMT)
commitacfdf156aa4c2a9bd8d81972888c3ad21c1a2eba (patch)
tree7128181d993c50fb1cc1fbe8fe3739f440a8af2a /Lib
parentc0dac1a58c894dc6b8866bb23df58878b12365df (diff)
downloadcpython-acfdf156aa4c2a9bd8d81972888c3ad21c1a2eba.zip
cpython-acfdf156aa4c2a9bd8d81972888c3ad21c1a2eba.tar.gz
cpython-acfdf156aa4c2a9bd8d81972888c3ad21c1a2eba.tar.bz2
Add quoted-printable codec
Diffstat (limited to 'Lib')
-rw-r--r--Lib/encodings/aliases.py3
-rw-r--r--Lib/encodings/quopri_codec.py56
2 files changed, 59 insertions, 0 deletions
diff --git a/Lib/encodings/aliases.py b/Lib/encodings/aliases.py
index 5573f6d..6cf40b4 100644
--- a/Lib/encodings/aliases.py
+++ b/Lib/encodings/aliases.py
@@ -87,5 +87,8 @@ aliases = {
'zip': 'zlib_codec',
'hex': 'hex_codec',
'uu': 'uu_codec',
+ 'quopri': 'quopri_codec',
+ 'quotedprintable': 'quopri_codec',
+ 'quoted_printable': 'quopri_codec',
}
diff --git a/Lib/encodings/quopri_codec.py b/Lib/encodings/quopri_codec.py
new file mode 100644
index 0000000..42074f4
--- /dev/null
+++ b/Lib/encodings/quopri_codec.py
@@ -0,0 +1,56 @@
+"""Codec for quoted-printable encoding.
+
+Like base64 and rot13, this returns Python strings, not Unicode.
+"""
+
+import codecs, quopri
+try:
+ from cStringIO import StringIO
+except ImportError:
+ from StringIO import StringIO
+
+def quopri_encode(input, errors='strict'):
+ """Encode the input, returning a tuple (output object, length consumed).
+
+ errors defines the error handling to apply. It defaults to
+ 'strict' handling which is the only currently supported
+ error handling for this codec.
+
+ """
+ assert errors == 'strict'
+ f = StringIO(input)
+ g = StringIO()
+ quopri.encode(f, g, 1)
+ output = g.getvalue()
+ return (output, len(input))
+
+def quopri_decode(input, errors='strict'):
+ """Decode the input, returning a tuple (output object, length consumed).
+
+ errors defines the error handling to apply. It defaults to
+ 'strict' handling which is the only currently supported
+ error handling for this codec.
+
+ """
+ assert errors == 'strict'
+ f = StringIO(input)
+ g = StringIO()
+ quopri.decode(f, g)
+ output = g.getvalue()
+ return (output, len(input))
+
+class Codec(codecs.Codec):
+
+ encode = quopri_encode
+ decode = quopri_decode
+
+class StreamWriter(Codec, codecs.StreamWriter):
+ pass
+
+class StreamReader(Codec,codecs.StreamReader):
+ pass
+
+# encodings module API
+
+def getregentry():
+ return (quopri_encode, quopri_decode, StreamReader, StreamWriter)