summaryrefslogtreecommitdiffstats
path: root/Lib/encodings/quopri_codec.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/encodings/quopri_codec.py')
-rw-r--r--Lib/encodings/quopri_codec.py55
1 files changed, 18 insertions, 37 deletions
diff --git a/Lib/encodings/quopri_codec.py b/Lib/encodings/quopri_codec.py
index d8683fd..9243fc4 100644
--- a/Lib/encodings/quopri_codec.py
+++ b/Lib/encodings/quopri_codec.py
@@ -1,51 +1,32 @@
"""Codec for quoted-printable encoding.
-Like base64 and rot13, this returns Python strings, not Unicode.
+This codec de/encodes from bytes to bytes and is therefore usable with
+bytes.transform() and bytes.untransform().
"""
-import codecs, quopri
-try:
- from cStringIO import StringIO
-except ImportError:
- from StringIO import StringIO
+import codecs
+import quopri
+from io import BytesIO
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'
- # using str() because of cStringIO's Unicode undesired Unicode behavior.
- f = StringIO(str(input))
- g = StringIO()
+ f = BytesIO(input)
+ g = BytesIO()
quopri.encode(f, g, 1)
- output = g.getvalue()
- return (output, len(input))
+ return (g.getvalue(), 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(str(input))
- g = StringIO()
+ f = BytesIO(input)
+ g = BytesIO()
quopri.decode(f, g)
- output = g.getvalue()
- return (output, len(input))
+ return (g.getvalue(), len(input))
class Codec(codecs.Codec):
-
- def encode(self, input,errors='strict'):
- return quopri_encode(input,errors)
- def decode(self, input,errors='strict'):
- return quopri_decode(input,errors)
+ def encode(self, input, errors='strict'):
+ return quopri_encode(input, errors)
+ def decode(self, input, errors='strict'):
+ return quopri_decode(input, errors)
class IncrementalEncoder(codecs.IncrementalEncoder):
def encode(self, input, final=False):
@@ -56,10 +37,10 @@ class IncrementalDecoder(codecs.IncrementalDecoder):
return quopri_decode(input, self.errors)[0]
class StreamWriter(Codec, codecs.StreamWriter):
- pass
+ charbuffertype = bytes
-class StreamReader(Codec,codecs.StreamReader):
- pass
+class StreamReader(Codec, codecs.StreamReader):
+ charbuffertype = bytes
# encodings module API