changeset: 104747:50c28727d91c parent: 104745:a6548e230ed6 parent: 104746:15a494886c5a user: Serhiy Storchaka date: Thu Oct 27 21:08:00 2016 +0300 files: Doc/whatsnew/3.6.rst Misc/NEWS Objects/unicodeobject.c description: Issue #28426: Deprecated undocumented functions PyUnicode_AsEncodedObject(), PyUnicode_AsDecodedObject(), PyUnicode_AsDecodedUnicode() and PyUnicode_AsEncodedUnicode(). diff -r a6548e230ed6 -r 50c28727d91c Doc/whatsnew/3.6.rst --- a/Doc/whatsnew/3.6.rst Thu Oct 27 19:33:22 2016 +0300 +++ b/Doc/whatsnew/3.6.rst Thu Oct 27 21:08:00 2016 +0300 @@ -1231,7 +1231,10 @@ Deprecated functions and types of the C API ------------------------------------------- -* None yet. +* Undocumented functions :c:func:`PyUnicode_AsEncodedObject`, + :c:func:`PyUnicode_AsDecodedObject`, :c:func:`PyUnicode_AsEncodedUnicode` + and :c:func:`PyUnicode_AsDecodedUnicode` are deprecated now. + Use :ref:`generic codec based API ` instead. Deprecated features diff -r a6548e230ed6 -r 50c28727d91c Include/unicodeobject.h --- a/Include/unicodeobject.h Thu Oct 27 19:33:22 2016 +0300 +++ b/Include/unicodeobject.h Thu Oct 27 21:08:00 2016 +0300 @@ -1171,22 +1171,30 @@ ); /* Decode a Unicode object unicode and return the result as Python - object. */ + object. + + This API is DEPRECATED. The only supported standard encoding is rot13. + Use PyCodec_Decode() to decode with rot13 and non-standard codecs + that decode from str. */ PyAPI_FUNC(PyObject*) PyUnicode_AsDecodedObject( PyObject *unicode, /* Unicode object */ const char *encoding, /* encoding */ const char *errors /* error handling */ - ); + ) Py_DEPRECATED(3.6); /* Decode a Unicode object unicode and return the result as Unicode - object. */ + object. + + This API is DEPRECATED. The only supported standard encoding is rot13. + Use PyCodec_Decode() to decode with rot13 and non-standard codecs + that decode from str to str. */ PyAPI_FUNC(PyObject*) PyUnicode_AsDecodedUnicode( PyObject *unicode, /* Unicode object */ const char *encoding, /* encoding */ const char *errors /* error handling */ - ); + ) Py_DEPRECATED(3.6); /* Encodes a Py_UNICODE buffer of the given size and returns a Python string object. */ @@ -1201,13 +1209,18 @@ #endif /* Encodes a Unicode object and returns the result as Python - object. */ + object. + + This API is DEPRECATED. It is superceeded by PyUnicode_AsEncodedString() + since all standard encodings (except rot13) encode str to bytes. + Use PyCodec_Encode() for encoding with rot13 and non-standard codecs + that encode form str to non-bytes. */ PyAPI_FUNC(PyObject*) PyUnicode_AsEncodedObject( PyObject *unicode, /* Unicode object */ const char *encoding, /* encoding */ const char *errors /* error handling */ - ); + ) Py_DEPRECATED(3.6); /* Encodes a Unicode object and returns the result as Python string object. */ @@ -1219,13 +1232,17 @@ ); /* Encodes a Unicode object and returns the result as Unicode - object. */ + object. + + This API is DEPRECATED. The only supported standard encodings is rot13. + Use PyCodec_Encode() to encode with rot13 and non-standard codecs + that encode from str to str. */ PyAPI_FUNC(PyObject*) PyUnicode_AsEncodedUnicode( PyObject *unicode, /* Unicode object */ const char *encoding, /* encoding */ const char *errors /* error handling */ - ); + ) Py_DEPRECATED(3.6); /* Build an encoding map. */ diff -r a6548e230ed6 -r 50c28727d91c Misc/NEWS --- a/Misc/NEWS Thu Oct 27 19:33:22 2016 +0300 +++ b/Misc/NEWS Thu Oct 27 21:08:00 2016 +0300 @@ -345,6 +345,13 @@ - Issue #28138: Windows ._pth file should allow import site +C API +----- + +- Issue #28426: Deprecated undocumented functions PyUnicode_AsEncodedObject(), + PyUnicode_AsDecodedObject(), PyUnicode_AsDecodedUnicode() and + PyUnicode_AsEncodedUnicode(). + Build ----- diff -r a6548e230ed6 -r 50c28727d91c Objects/unicodeobject.c --- a/Objects/unicodeobject.c Thu Oct 27 19:33:22 2016 +0300 +++ b/Objects/unicodeobject.c Thu Oct 27 21:08:00 2016 +0300 @@ -3237,6 +3237,11 @@ return NULL; } + if (PyErr_WarnEx(PyExc_DeprecationWarning, + "PyUnicode_AsDecodedObject() is deprecated; " + "use PyCodec_Decode() to decode from str", 1) < 0) + return NULL; + if (encoding == NULL) encoding = PyUnicode_GetDefaultEncoding(); @@ -3256,6 +3261,11 @@ goto onError; } + if (PyErr_WarnEx(PyExc_DeprecationWarning, + "PyUnicode_AsDecodedUnicode() is deprecated; " + "use PyCodec_Decode() to decode from str to str", 1) < 0) + return NULL; + if (encoding == NULL) encoding = PyUnicode_GetDefaultEncoding(); @@ -3306,6 +3316,12 @@ goto onError; } + if (PyErr_WarnEx(PyExc_DeprecationWarning, + "PyUnicode_AsEncodedObject() is deprecated; " + "use PyUnicode_AsEncodedString() to encode from str to bytes " + "or PyCodec_Encode() for generic encoding", 1) < 0) + return NULL; + if (encoding == NULL) encoding = PyUnicode_GetDefaultEncoding(); @@ -3628,6 +3644,11 @@ goto onError; } + if (PyErr_WarnEx(PyExc_DeprecationWarning, + "PyUnicode_AsEncodedUnicode() is deprecated; " + "use PyCodec_Encode() to encode from str to str", 1) < 0) + return NULL; + if (encoding == NULL) encoding = PyUnicode_GetDefaultEncoding();