Kaydet (Commit) b2528c92 authored tarafından Martin Panter's avatar Martin Panter

Issue #16473: Fix byte transform codec documentation; test quotetabs=True

This changes the equivalent functions listed for the Base-64, hex and Quoted-
Printable codecs to reflect the functions actually used. Also mention and
test the "quotetabs" setting for Quoted-Printable encoding.
üst 90bc71f5
...@@ -1193,21 +1193,22 @@ The following codecs provide str-to-str encoding and decoding ...@@ -1193,21 +1193,22 @@ The following codecs provide str-to-str encoding and decoding
+--------------------+---------------------------+---------------------------+------------------------------+ +--------------------+---------------------------+---------------------------+------------------------------+
| Codec | Aliases | Purpose | Encoder/decoder | | Codec | Aliases | Purpose | Encoder/decoder |
+====================+===========================+===========================+==============================+ +====================+===========================+===========================+==============================+
| base64_codec | base64, base-64 | Convert operand to MIME | :meth:`base64.b64encode`, | | base64_codec | base64, base-64 | Convert operand to | :meth:`base64.encodestring`, |
| | | base64 (the result always | :meth:`base64.b64decode` | | | | multiline MIME base64 (the| :meth:`base64.decodestring` |
| | | includes a trailing | | | | | result always includes a | |
| | | ``'\n'``) | | | | | trailing ``'\n'``) | |
+--------------------+---------------------------+---------------------------+------------------------------+ +--------------------+---------------------------+---------------------------+------------------------------+
| bz2_codec | bz2 | Compress the operand | :meth:`bz2.compress`, | | bz2_codec | bz2 | Compress the operand | :meth:`bz2.compress`, |
| | | using bz2 | :meth:`bz2.decompress` | | | | using bz2 | :meth:`bz2.decompress` |
+--------------------+---------------------------+---------------------------+------------------------------+ +--------------------+---------------------------+---------------------------+------------------------------+
| hex_codec | hex | Convert operand to | :meth:`base64.b16encode`, | | hex_codec | hex | Convert operand to | :meth:`binascii.b2a_hex`, |
| | | hexadecimal | :meth:`base64.b16decode` | | | | hexadecimal | :meth:`binascii.a2b_hex` |
| | | representation, with two | | | | | representation, with two | |
| | | digits per byte | | | | | digits per byte | |
+--------------------+---------------------------+---------------------------+------------------------------+ +--------------------+---------------------------+---------------------------+------------------------------+
| quopri_codec | quopri, quoted-printable, | Convert operand to MIME | :meth:`quopri.encodestring`, | | quopri_codec | quopri, quoted-printable, | Convert operand to MIME | :meth:`quopri.encode` with |
| | quotedprintable | quoted printable | :meth:`quopri.decodestring` | | | quotedprintable | quoted printable | ``quotetabs=True``, |
| | | | :meth:`quopri.decode` |
+--------------------+---------------------------+---------------------------+------------------------------+ +--------------------+---------------------------+---------------------------+------------------------------+
| string_escape | | Produce a string that is | | | string_escape | | Produce a string that is | |
| | | suitable as string | | | | | suitable as string | |
......
...@@ -21,7 +21,7 @@ def quopri_encode(input, errors='strict'): ...@@ -21,7 +21,7 @@ def quopri_encode(input, errors='strict'):
# using str() because of cStringIO's Unicode undesired Unicode behavior. # using str() because of cStringIO's Unicode undesired Unicode behavior.
f = StringIO(str(input)) f = StringIO(str(input))
g = StringIO() g = StringIO()
quopri.encode(f, g, 1) quopri.encode(f, g, quotetabs=True)
output = g.getvalue() output = g.getvalue()
return (output, len(input)) return (output, len(input))
......
...@@ -2103,6 +2103,14 @@ class BomTest(unittest.TestCase): ...@@ -2103,6 +2103,14 @@ class BomTest(unittest.TestCase):
class TransformCodecTest(unittest.TestCase): class TransformCodecTest(unittest.TestCase):
def test_quopri_stateless(self):
# Should encode with quotetabs=True
encoded = codecs.encode(b"space tab\teol \n", "quopri-codec")
self.assertEqual(encoded, b"space=20tab=09eol=20\n")
# But should still support unescaped tabs and spaces
unescaped = b"space tab eol\n"
self.assertEqual(codecs.decode(unescaped, "quopri-codec"), unescaped)
def test_uu_invalid(self): def test_uu_invalid(self):
# Missing "begin" line # Missing "begin" line
self.assertRaises(ValueError, codecs.decode, "", "uu-codec") self.assertRaises(ValueError, codecs.decode, "", "uu-codec")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment