From: Guido van Rossum Date: Tue, 15 May 2001 15:34:07 +0000 (+0000) Subject: Add quoted-printable codec X-Git-Tag: v2.2a3~1771 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=acfdf156aa4c2a9bd8d81972888c3ad21c1a2eba;p=thirdparty%2FPython%2Fcpython.git Add quoted-printable codec --- diff --git a/Lib/encodings/aliases.py b/Lib/encodings/aliases.py index 5573f6da5e35..6cf40b46aa18 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 000000000000..42074f4a09ca --- /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)