]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-80527: Deprecate PEP 623 Unicode functions (#91801)
authorVictor Stinner <vstinner@python.org>
Fri, 22 Apr 2022 11:05:36 +0000 (13:05 +0200)
committerGitHub <noreply@github.com>
Fri, 22 Apr 2022 11:05:36 +0000 (13:05 +0200)
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().

Include/cpython/unicodeobject.h
Misc/NEWS.d/next/C API/2022-04-21-23-11-35.gh-issue-80527.Cx-95G.rst [new file with mode: 0644]

index 5d050fd0b7563d8ef4f536a07034fe943adecb7e..992588c21c6eea87de5d84e06c91bfed092dc54d 100644 (file)
@@ -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 (file)
index 0000000..45e92f1
--- /dev/null
@@ -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.