bpo-28749: Fixed the documentation of the mapping codec APIs. (#487) … · python/cpython@69eab31 (original) (raw)
`@@ -1393,77 +1393,78 @@ Character Map Codecs
`
1393
1393
`This codec is special in that it can be used to implement many different codecs
`
1394
1394
`(and this is in fact what was done to obtain most of the standard codecs
`
1395
1395
`` included in the :mod:encodings
package). The codec uses mapping to encode and
``
1396
``
`-
decode characters.
`
1397
``
-
1398
``
`-
Decoding mappings must map single string characters to single Unicode
`
1399
``
characters, integers (which are then interpreted as Unicode ordinals) or ``None``
1400
``
`-
(meaning "undefined mapping" and causing an error).
`
1401
``
-
1402
``
`-
Encoding mappings must map single Unicode characters to single string
`
1403
``
characters, integers (which are then interpreted as Latin-1 ordinals) or ``None``
1404
``
`-
(meaning "undefined mapping" and causing an error).
`
1405
``
-
1406
``
`-
The mapping objects provided must only support the getitem mapping
`
1407
``
`-
interface.
`
1408
``
-
1409
``
`-
If a character lookup fails with a LookupError, the character is copied as-is
`
1410
``
`-
meaning that its ordinal value will be interpreted as Unicode or Latin-1 ordinal
`
1411
``
`-
resp. Because of this, mappings only need to contain those mappings which map
`
1412
``
`-
characters to different code points.
`
``
1396
`+
decode characters. The mapping objects provided must support the
`
``
1397
`` +
:meth:__getitem__
mapping interface; dictionaries and sequences work well.
``
1413
1398
``
1414
1399
`These are the mapping codec APIs:
`
1415
1400
``
1416
``
`-
.. c:function:: PyObject* PyUnicode_DecodeCharmap(const char *s, Py_ssize_t size, \
`
``
1401
`+
.. c:function:: PyObject* PyUnicode_DecodeCharmap(const char *data, Py_ssize_t size, \
`
1417
1402
` PyObject *mapping, const char *errors)
`
1418
1403
``
1419
``
`-
Create a Unicode object by decoding size bytes of the encoded string s using
`
1420
``
`-
the given mapping object. Return NULL if an exception was raised by the
`
1421
``
`-
codec. If mapping is NULL latin-1 decoding will be done. Else it can be a
`
1422
``
`-
dictionary mapping byte or a unicode string, which is treated as a lookup table.
`
1423
``
`-
Byte values greater that the length of the string and U+FFFE "characters" are
`
1424
``
`-
treated as "undefined mapping".
`
``
1404
`+
Create a Unicode object by decoding size bytes of the encoded string s
`
``
1405
`+
using the given mapping object. Return NULL if an exception was raised
`
``
1406
`+
by the codec.
`
``
1407
+
``
1408
`+
If mapping is NULL, Latin-1 decoding will be applied. Else
`
``
1409
`+
mapping must map bytes ordinals (integers in the range from 0 to 255)
`
``
1410
`+
to Unicode strings, integers (which are then interpreted as Unicode
`
``
1411
ordinals) or ``None``. Unmapped data bytes -- ones which cause a
``
1412
:exc:`LookupError`, as well as ones which get mapped to ``None``,
``
1413
``0xFFFE`` or ``'\ufffe'``, are treated as undefined mappings and cause
``
1414
`+
an error.
`
1425
1415
``
1426
1416
``
1427
1417
`.. c:function:: PyObject* PyUnicode_AsCharmapString(PyObject *unicode, PyObject *mapping)
`
1428
1418
``
1429
``
`-
Encode a Unicode object using the given mapping object and return the result
`
1430
``
`-
as Python string object. Error handling is "strict". Return NULL if an
`
``
1419
`+
Encode a Unicode object using the given mapping object and return the
`
``
1420
`+
result as a bytes object. Error handling is "strict". Return NULL if an
`
1431
1421
` exception was raised by the codec.
`
1432
1422
``
1433
``
`-
The following codec API is special in that maps Unicode to Unicode.
`
1434
``
-
``
1423
`+
The mapping object must map Unicode ordinal integers to bytes objects,
`
``
1424
integers in the range from 0 to 255 or ``None``. Unmapped character
``
1425
`` +
ordinals (ones which cause a :exc:LookupError
) as well as mapped to
``
``
1426
``None`` are treated as "undefined mapping" and cause an error.
1435
1427
``
1436
``
`-
.. c:function:: PyObject* PyUnicode_TranslateCharmap(const Py_UNICODE *s, Py_ssize_t size, \
`
1437
``
`-
PyObject *table, const char *errors)
`
1438
``
-
1439
``
`` -
Translate a :c:type:Py_UNICODE
buffer of the given size by applying a
``
1440
``
`-
character mapping table to it and return the resulting Unicode object. Return
`
1441
``
`-
NULL when an exception was raised by the codec.
`
1442
1428
``
1443
``
`-
The mapping table must map Unicode ordinal integers to Unicode ordinal
`
1444
``
integers or ``None`` (causing deletion of the character).
``
1429
`+
.. c:function:: PyObject* PyUnicode_EncodeCharmap(const Py_UNICODE *s, Py_ssize_t size, \
`
``
1430
`+
PyObject *mapping, const char *errors)
`
1445
1431
``
1446
``
`` -
Mapping tables need only provide the :meth:__getitem__
interface; dictionaries
``
1447
``
`-
and sequences work well. Unmapped character ordinals (ones which cause a
`
1448
``
`` -
:exc:LookupError
) are left untouched and are copied as-is.
``
``
1432
`` +
Encode the :c:type:Py_UNICODE
buffer of the given size using the given
``
``
1433
`+
mapping object and return the result as a bytes object. Return NULL if
`
``
1434
`+
an exception was raised by the codec.
`
1449
1435
``
1450
1436
` .. deprecated-removed:: 3.3 4.0
`
1451
1437
`` Part of the old-style :c:type:Py_UNICODE
API; please migrate to using
``
1452
``
`` -
:c:func:PyUnicode_Translate
. or :ref:`generic codec based API
``
1453
``
`` -
`
``
``
1438
`` +
:c:func:PyUnicode_AsCharmapString
or
``
``
1439
`` +
:c:func:PyUnicode_AsEncodedString
.
``
1454
1440
``
1455
1441
``
1456
``
`-
.. c:function:: PyObject* PyUnicode_EncodeCharmap(const Py_UNICODE *s, Py_ssize_t size, \
`
``
1442
`+
The following codec API is special in that maps Unicode to Unicode.
`
``
1443
+
``
1444
`+
.. c:function:: PyObject* PyUnicode_Translate(PyObject *unicode, \
`
1457
1445
` PyObject *mapping, const char *errors)
`
1458
1446
``
1459
``
`` -
Encode the :c:type:Py_UNICODE
buffer of the given size using the given
``
1460
``
`-
mapping object and return a Python string object. Return NULL if an
`
1461
``
`-
exception was raised by the codec.
`
``
1447
`+
Translate a Unicode object using the given mapping object and return the
`
``
1448
`+
resulting Unicode object. Return NULL if an exception was raised by the
`
``
1449
`+
codec.
`
``
1450
+
``
1451
`+
The mapping object must map Unicode ordinal integers to Unicode strings,
`
``
1452
integers (which are then interpreted as Unicode ordinals) or ``None``
``
1453
`+
(causing deletion of the character). Unmapped character ordinals (ones
`
``
1454
`` +
which cause a :exc:LookupError
) are left untouched and are copied as-is.
``
``
1455
+
``
1456
+
``
1457
`+
.. c:function:: PyObject* PyUnicode_TranslateCharmap(const Py_UNICODE *s, Py_ssize_t size, \
`
``
1458
`+
PyObject *mapping, const char *errors)
`
``
1459
+
``
1460
`` +
Translate a :c:type:Py_UNICODE
buffer of the given size by applying a
``
``
1461
`+
character mapping table to it and return the resulting Unicode object.
`
``
1462
`+
Return NULL when an exception was raised by the codec.
`
1462
1463
``
1463
1464
` .. deprecated-removed:: 3.3 4.0
`
1464
1465
`` Part of the old-style :c:type:Py_UNICODE
API; please migrate to using
``
1465
``
`` -
:c:func:PyUnicode_AsCharmapString
or
``
1466
``
`` -
:c:func:PyUnicode_AsEncodedString
.
``
``
1466
`` +
:c:func:PyUnicode_Translate
. or :ref:`generic codec based API
``
``
1467
`` +
`
``
1467
1468
``
1468
1469
``
1469
1470
`MBCS codecs for Windows
`