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.
This commit is contained in:
parent
f9b6875259
commit
06171bd52a
|
@ -1284,9 +1284,9 @@ to :class:`bytes` mappings. They are not supported by :meth:`bytes.decode`
|
||||||
+----------------------+------------------+------------------------------+------------------------------+
|
+----------------------+------------------+------------------------------+------------------------------+
|
||||||
| Codec | Aliases | Purpose | Encoder / decoder |
|
| Codec | Aliases | Purpose | Encoder / decoder |
|
||||||
+======================+==================+==============================+==============================+
|
+======================+==================+==============================+==============================+
|
||||||
| base64_codec [#b64]_ | base64, base_64 | Convert operand to MIME | :meth:`base64.b64encode` / |
|
| base64_codec [#b64]_ | base64, base_64 | Convert operand to multiline | :meth:`base64.encodebytes` / |
|
||||||
| | | base64 (the result always | :meth:`base64.b64decode` |
|
| | | MIME base64 (the result | :meth:`base64.decodebytes` |
|
||||||
| | | includes a trailing | |
|
| | | always includes a trailing | |
|
||||||
| | | ``'\n'``) | |
|
| | | ``'\n'``) | |
|
||||||
| | | | |
|
| | | | |
|
||||||
| | | .. versionchanged:: 3.4 | |
|
| | | .. versionchanged:: 3.4 | |
|
||||||
|
@ -1298,14 +1298,14 @@ to :class:`bytes` mappings. They are not supported by :meth:`bytes.decode`
|
||||||
| 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, | Convert operand to MIME | :meth:`quopri.encodestring` /|
|
| quopri_codec | quopri, | Convert operand to MIME | :meth:`quopri.encode` with |
|
||||||
| | quotedprintable, | quoted printable | :meth:`quopri.decodestring` |
|
| | quotedprintable, | quoted printable | ``quotetabs=True`` / |
|
||||||
| | quoted_printable | | |
|
| | quoted_printable | | :meth:`quopri.decode` |
|
||||||
+----------------------+------------------+------------------------------+------------------------------+
|
+----------------------+------------------+------------------------------+------------------------------+
|
||||||
| uu_codec | uu | Convert the operand using | :meth:`uu.encode` / |
|
| uu_codec | uu | Convert the operand using | :meth:`uu.encode` / |
|
||||||
| | | uuencode | :meth:`uu.decode` |
|
| | | uuencode | :meth:`uu.decode` |
|
||||||
|
|
|
@ -11,7 +11,7 @@ def quopri_encode(input, errors='strict'):
|
||||||
assert errors == 'strict'
|
assert errors == 'strict'
|
||||||
f = BytesIO(input)
|
f = BytesIO(input)
|
||||||
g = BytesIO()
|
g = BytesIO()
|
||||||
quopri.encode(f, g, 1)
|
quopri.encode(f, g, quotetabs=True)
|
||||||
return (g.getvalue(), len(input))
|
return (g.getvalue(), len(input))
|
||||||
|
|
||||||
def quopri_decode(input, errors='strict'):
|
def quopri_decode(input, errors='strict'):
|
||||||
|
|
|
@ -2613,6 +2613,14 @@ class TransformCodecTest(unittest.TestCase):
|
||||||
info = codecs.lookup(alias)
|
info = codecs.lookup(alias)
|
||||||
self.assertEqual(info.name, expected_name)
|
self.assertEqual(info.name, expected_name)
|
||||||
|
|
||||||
|
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, b"", "uu-codec")
|
self.assertRaises(ValueError, codecs.decode, b"", "uu-codec")
|
||||||
|
|
Loading…
Reference in New Issue