From: Victor Stinner Date: Fri, 22 Apr 2022 11:05:36 +0000 (+0200) Subject: gh-80527: Deprecate PEP 623 Unicode functions (#91801) X-Git-Tag: v3.11.0b1~249 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9e146bbb7e1c0d872817ac63c60454a201b50039;p=thirdparty%2FPython%2Fcpython.git gh-80527: Deprecate PEP 623 Unicode functions (#91801) Deprecate functions: * PyUnicode_AS_DATA() * PyUnicode_AS_UNICODE() * PyUnicode_GET_DATA_SIZE() * PyUnicode_GET_SIZE() Previously, these functions were macros and so it wasn't possible to decorate them with Py_DEPRECATED(). --- diff --git a/Include/cpython/unicodeobject.h b/Include/cpython/unicodeobject.h index 5d050fd0b756..992588c21c6e 100644 --- a/Include/cpython/unicodeobject.h +++ b/Include/cpython/unicodeobject.h @@ -613,7 +613,7 @@ static inline Py_ssize_t PyUnicode_WSTR_LENGTH(PyObject *op) If the Py_UNICODE representation is not available, it will be computed on request. Use PyUnicode_GET_LENGTH() for the length in code points. */ -/* Py_DEPRECATED(3.3) */ +Py_DEPRECATED(3.3) static inline Py_ssize_t PyUnicode_GET_SIZE(PyObject *op) { _Py_COMP_DIAG_PUSH @@ -627,10 +627,13 @@ static inline Py_ssize_t PyUnicode_GET_SIZE(PyObject *op) } #define PyUnicode_GET_SIZE(op) PyUnicode_GET_SIZE(_PyObject_CAST(op)) - /* Py_DEPRECATED(3.3) */ - static inline Py_ssize_t PyUnicode_GET_DATA_SIZE(PyObject *op) +Py_DEPRECATED(3.3) +static inline Py_ssize_t PyUnicode_GET_DATA_SIZE(PyObject *op) { + _Py_COMP_DIAG_PUSH + _Py_COMP_DIAG_IGNORE_DEPR_DECLS return PyUnicode_GET_SIZE(op) * Py_UNICODE_SIZE; + _Py_COMP_DIAG_POP } #define PyUnicode_GET_DATA_SIZE(op) PyUnicode_GET_DATA_SIZE(_PyObject_CAST(op)) @@ -639,7 +642,7 @@ static inline Py_ssize_t PyUnicode_GET_SIZE(PyObject *op) try to port your code to use the new PyUnicode_*BYTE_DATA() macros or use PyUnicode_WRITE() and PyUnicode_READ(). */ -/* Py_DEPRECATED(3.3) */ +Py_DEPRECATED(3.3) static inline Py_UNICODE* PyUnicode_AS_UNICODE(PyObject *op) { wchar_t *wstr = _PyASCIIObject_CAST(op)->wstr; @@ -654,10 +657,13 @@ static inline Py_UNICODE* PyUnicode_AS_UNICODE(PyObject *op) } #define PyUnicode_AS_UNICODE(op) PyUnicode_AS_UNICODE(_PyObject_CAST(op)) -/* Py_DEPRECATED(3.3) */ +Py_DEPRECATED(3.3) static inline const char* PyUnicode_AS_DATA(PyObject *op) { + _Py_COMP_DIAG_PUSH + _Py_COMP_DIAG_IGNORE_DEPR_DECLS return (const char *)PyUnicode_AS_UNICODE(op); + _Py_COMP_DIAG_POP } #define PyUnicode_AS_DATA(op) PyUnicode_AS_DATA(_PyObject_CAST(op)) diff --git a/Misc/NEWS.d/next/C API/2022-04-21-23-11-35.gh-issue-80527.Cx-95G.rst b/Misc/NEWS.d/next/C API/2022-04-21-23-11-35.gh-issue-80527.Cx-95G.rst new file mode 100644 index 000000000000..45e92f1b9675 --- /dev/null +++ b/Misc/NEWS.d/next/C API/2022-04-21-23-11-35.gh-issue-80527.Cx-95G.rst @@ -0,0 +1,3 @@ +Mark functions as deprecated by :pep:`623`: :c:func:`PyUnicode_AS_DATA`, +:c:func:`PyUnicode_AS_UNICODE`, :c:func:`PyUnicode_GET_DATA_SIZE`, +:c:func:`PyUnicode_GET_SIZE`. Patch by Victor Stinner.