]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-133610: Remove PyUnicode_AsDecoded/Encoded functions (#133612)
authorStan Ulbrych <89152624+StanFromIreland@users.noreply.github.com>
Fri, 9 May 2025 15:31:24 +0000 (16:31 +0100)
committerGitHub <noreply@github.com>
Fri, 9 May 2025 15:31:24 +0000 (17:31 +0200)
Doc/data/stable_abi.dat
Doc/whatsnew/3.15.rst
Include/unicodeobject.h
Misc/NEWS.d/next/C_API/2025-05-07-21-18-00.gh-issue-133610.asdfjs.rst [new file with mode: 0644]
Misc/stable_abi.toml
Objects/unicodeobject.c

index d84addc7ecf851460e87a458b1d824e5b035569b..e71a40e55e918c0edc5446555b3cd2a01797335b 100644 (file)
@@ -739,11 +739,7 @@ func,PyUnicode_Append,3.2,,
 func,PyUnicode_AppendAndDel,3.2,,
 func,PyUnicode_AsASCIIString,3.2,,
 func,PyUnicode_AsCharmapString,3.2,,
-func,PyUnicode_AsDecodedObject,3.2,,
-func,PyUnicode_AsDecodedUnicode,3.2,,
-func,PyUnicode_AsEncodedObject,3.2,,
 func,PyUnicode_AsEncodedString,3.2,,
-func,PyUnicode_AsEncodedUnicode,3.2,,
 func,PyUnicode_AsLatin1String,3.2,,
 func,PyUnicode_AsMBCSString,3.7,on Windows,
 func,PyUnicode_AsRawUnicodeEscapeString,3.2,,
index f92e383cce570f1445b6078e98cb1c1807559490..d1e58c1b764eb90fcae43fecdd90ea04f0651f24 100644 (file)
@@ -167,6 +167,21 @@ Deprecated C APIs
 Removed C APIs
 --------------
 
+* Remove deprecated ``PyUnicode`` functions:
+
+  * :c:func:`!PyUnicode_AsDecodedObject`:
+    Use :c:func:`PyCodec_Decode` instead.
+  * :c:func:`!PyUnicode_AsDecodedUnicode`:
+    Use :c:func:`PyCodec_Decode` instead; Note that some codecs (for example, "base64")
+    may return a type other than :class:`str`, such as :class:`bytes`.
+  * :c:func:`!PyUnicode_AsEncodedObject`:
+    Use :c:func:`PyCodec_Encode` instead.
+  * :c:func:`!PyUnicode_AsEncodedUnicode`:
+    Use :c:func:`PyCodec_Encode` instead; Note that some codecs (for example, "base64")
+    may return a type other than :class:`bytes`, such as :class:`str`.
+
+  (Contributed by Stan Ulbrych in :gh:`133612`)
+
 * :c:func:`!PyImport_ImportModuleNoBlock`: deprecated alias
   of :c:func:`PyImport_ImportModule`.
 
index f8bcaecb98fb9c567658d158e2fdbfdd09096c0c..b72d581ec25804be82e990263e194511c25b24b4 100644 (file)
@@ -341,49 +341,6 @@ PyAPI_FUNC(PyObject*) PyUnicode_Decode(
     const char *errors          /* error handling */
     );
 
-/* Decode a Unicode object unicode and return the result as Python
-   object.
-
-   This API is DEPRECATED and will be removed in 3.15.
-   The only supported standard encoding is rot13.
-   Use PyCodec_Decode() to decode with rot13 and non-standard codecs
-   that decode from str. */
-
-Py_DEPRECATED(3.6) PyAPI_FUNC(PyObject*) PyUnicode_AsDecodedObject(
-    PyObject *unicode,          /* Unicode object */
-    const char *encoding,       /* encoding */
-    const char *errors          /* error handling */
-    );
-
-/* Decode a Unicode object unicode and return the result as Unicode
-   object.
-
-   This API is DEPRECATED and will be removed in 3.15.
-   The only supported standard encoding is rot13.
-   Use PyCodec_Decode() to decode with rot13 and non-standard codecs
-   that decode from str to str. */
-
-Py_DEPRECATED(3.6) PyAPI_FUNC(PyObject*) PyUnicode_AsDecodedUnicode(
-    PyObject *unicode,          /* Unicode object */
-    const char *encoding,       /* encoding */
-    const char *errors          /* error handling */
-    );
-
-/* Encodes a Unicode object and returns the result as Python
-   object.
-
-   This API is DEPRECATED and will be removed in 3.15.
-   It is superseded 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. */
-
-Py_DEPRECATED(3.6) PyAPI_FUNC(PyObject*) PyUnicode_AsEncodedObject(
-    PyObject *unicode,          /* Unicode object */
-    const char *encoding,       /* encoding */
-    const char *errors          /* error handling */
-    );
-
 /* Encodes a Unicode object and returns the result as Python string
    object. */
 
@@ -393,20 +350,6 @@ PyAPI_FUNC(PyObject*) PyUnicode_AsEncodedString(
     const char *errors          /* error handling */
     );
 
-/* Encodes a Unicode object and returns the result as Unicode
-   object.
-
-   This API is DEPRECATED and will be removed in 3.15.
-   The only supported standard encodings is rot13.
-   Use PyCodec_Encode() to encode with rot13 and non-standard codecs
-   that encode from str to str. */
-
-Py_DEPRECATED(3.6) PyAPI_FUNC(PyObject*) PyUnicode_AsEncodedUnicode(
-    PyObject *unicode,          /* Unicode object */
-    const char *encoding,       /* encoding */
-    const char *errors          /* error handling */
-    );
-
 /* Build an encoding map. */
 
 PyAPI_FUNC(PyObject*) PyUnicode_BuildEncodingMap(
diff --git a/Misc/NEWS.d/next/C_API/2025-05-07-21-18-00.gh-issue-133610.asdfjs.rst b/Misc/NEWS.d/next/C_API/2025-05-07-21-18-00.gh-issue-133610.asdfjs.rst
new file mode 100644 (file)
index 0000000..bdc5333
--- /dev/null
@@ -0,0 +1,3 @@
+Remove deprecated functions :c:func:`!PyUnicode_AsDecodedObject`,
+:c:func:`!PyUnicode_AsDecodedUnicode`, :c:func:`!PyUnicode_AsEncodedObject`,
+and :c:func:`!PyUnicode_AsEncodedUnicode`.
index 76bfaab26ed1b6d52013787b834ee0eeb16f5316..d38919a8ea9b62716452810945356aff004b7df9 100644 (file)
     added = '3.2'
 [function.PyUnicode_AsDecodedObject]
     added = '3.2'
+    abi_only = true
 [function.PyUnicode_AsDecodedUnicode]
     added = '3.2'
+    abi_only = true
 [function.PyUnicode_AsEncodedObject]
     added = '3.2'
+    abi_only = true
 [function.PyUnicode_AsEncodedString]
     added = '3.2'
 [function.PyUnicode_AsEncodedUnicode]
     added = '3.2'
+    abi_only = true
 [function.PyUnicode_AsLatin1String]
     added = '3.2'
 [function.PyUnicode_AsRawUnicodeEscapeString]
index eb3e1c48fd405096f327da3c6408aa424792ff1d..f3f0c9646a652e148215d0762a6f80fe4dcee219 100644 (file)
@@ -3730,7 +3730,7 @@ PyUnicode_Decode(const char *s,
     return NULL;
 }
 
-PyObject *
+PyAPI_FUNC(PyObject *)
 PyUnicode_AsDecodedObject(PyObject *unicode,
                           const char *encoding,
                           const char *errors)
@@ -3740,12 +3740,6 @@ PyUnicode_AsDecodedObject(PyObject *unicode,
         return NULL;
     }
 
-    if (PyErr_WarnEx(PyExc_DeprecationWarning,
-                     "PyUnicode_AsDecodedObject() is deprecated "
-                     "and will be removed in 3.15; "
-                     "use PyCodec_Decode() to decode from str", 1) < 0)
-        return NULL;
-
     if (encoding == NULL)
         encoding = PyUnicode_GetDefaultEncoding();
 
@@ -3753,7 +3747,7 @@ PyUnicode_AsDecodedObject(PyObject *unicode,
     return PyCodec_Decode(unicode, encoding, errors);
 }
 
-PyObject *
+PyAPI_FUNC(PyObject *)
 PyUnicode_AsDecodedUnicode(PyObject *unicode,
                            const char *encoding,
                            const char *errors)
@@ -3765,12 +3759,6 @@ PyUnicode_AsDecodedUnicode(PyObject *unicode,
         goto onError;
     }
 
-    if (PyErr_WarnEx(PyExc_DeprecationWarning,
-                     "PyUnicode_AsDecodedUnicode() is deprecated "
-                     "and will be removed in 3.15; "
-                     "use PyCodec_Decode() to decode from str to str", 1) < 0)
-        return NULL;
-
     if (encoding == NULL)
         encoding = PyUnicode_GetDefaultEncoding();
 
@@ -3793,7 +3781,7 @@ PyUnicode_AsDecodedUnicode(PyObject *unicode,
     return NULL;
 }
 
-PyObject *
+PyAPI_FUNC(PyObject *)
 PyUnicode_AsEncodedObject(PyObject *unicode,
                           const char *encoding,
                           const char *errors)
@@ -3805,13 +3793,6 @@ PyUnicode_AsEncodedObject(PyObject *unicode,
         goto onError;
     }
 
-    if (PyErr_WarnEx(PyExc_DeprecationWarning,
-                     "PyUnicode_AsEncodedObject() is deprecated "
-                     "and will be removed in 3.15; "
-                     "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();
 
@@ -4017,7 +3998,7 @@ PyUnicode_AsEncodedString(PyObject *unicode,
     return NULL;
 }
 
-PyObject *
+PyAPI_FUNC(PyObject *)
 PyUnicode_AsEncodedUnicode(PyObject *unicode,
                            const char *encoding,
                            const char *errors)
@@ -4029,12 +4010,6 @@ PyUnicode_AsEncodedUnicode(PyObject *unicode,
         goto onError;
     }
 
-    if (PyErr_WarnEx(PyExc_DeprecationWarning,
-                     "PyUnicode_AsEncodedUnicode() is deprecated "
-                     "and will be removed in 3.15; "
-                     "use PyCodec_Encode() to encode from str to str", 1) < 0)
-        return NULL;
-
     if (encoding == NULL)
         encoding = PyUnicode_GetDefaultEncoding();