summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Doc/whatsnew/3.6.rst5
-rw-r--r--Include/unicodeobject.h33
-rw-r--r--Misc/NEWS7
-rw-r--r--Objects/unicodeobject.c21
4 files changed, 57 insertions, 9 deletions
diff --git a/Doc/whatsnew/3.6.rst b/Doc/whatsnew/3.6.rst
index b7c8574..e88d618 100644
--- a/Doc/whatsnew/3.6.rst
+++ b/Doc/whatsnew/3.6.rst
@@ -1230,7 +1230,10 @@ Deprecated Python modules, functions and methods
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 <codec-registry>` instead.
Deprecated features
diff --git a/Include/unicodeobject.h b/Include/unicodeobject.h
index 643d10d..5711de0 100644
--- a/Include/unicodeobject.h
+++ b/Include/unicodeobject.h
@@ -1171,22 +1171,30 @@ PyAPI_FUNC(PyObject*) PyUnicode_Decode(
);
/* 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 @@ PyAPI_FUNC(PyObject*) PyUnicode_Encode(
#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 @@ PyAPI_FUNC(PyObject*) PyUnicode_AsEncodedString(
);
/* 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 --git a/Misc/NEWS b/Misc/NEWS
index a6b340f..8665081 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -349,6 +349,13 @@ Windows
- 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 --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 6cf5cb2..e45f3d7 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -3241,6 +3241,11 @@ PyUnicode_AsDecodedObject(PyObject *unicode,
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();
@@ -3260,6 +3265,11 @@ PyUnicode_AsDecodedUnicode(PyObject *unicode,
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();
@@ -3310,6 +3320,12 @@ PyUnicode_AsEncodedObject(PyObject *unicode,
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();
@@ -3635,6 +3651,11 @@ PyUnicode_AsEncodedUnicode(PyObject *unicode,
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();