Hi Inada-san, as you may remember, I wasn't happy with the deprecations of the APIs in PEP 393, since there are no C API alternatives for the encoding APIs deprecated in the PEP, which allow direct encoding provided by these important codecs. AFAIK, the situation hasn't changed since then. We can't just remove access to one half of a codec (the decoding part) without at least providing an alternative for C extensions to use. Py_UNICODE can be removed from the API, but only if there are alternative APIs which C extensions can use to the same effect. Given PEP 393, this would be APIs which use wchar_t instead of Py_UNICODE. Thanks, -- Marc-Andre Lemburg eGenix.com Professional Python Services directly from the Experts (#1, Jun 28 2020)
Python Projects, Coaching and Support ... https://www.egenix.com/ Python Product Development ... https://consulting.egenix.com/
::: We implement business ideas - efficiently in both time and costs ::: eGenix.com Software, Skills and Services GmbH Pastor-Loeh-Str.48 D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg Registered at Amtsgericht Duesseldorf: HRB 46611 https://www.egenix.com/company/contact/ https://www.malemburg.com/ On 28.06.2020 04:35, Inada Naoki wrote:
Hi, all.
I proposed PEP 623 to remove Unicode APIs deprecated by PEP 393.
In this thread, I am proposing removal of Py_UNICODE (not Unicode objects) APIs deprecated by PEP 393. Please reply for any comments.
## Undocumented, have Py_DEPRECATED
There is no problem to remove them in Python 3.10. I will just do it.
* Py_UNICODE_str*** functions -- already removed in https://github.com/python/cpython/pull/21164 * PyUnicode_GetMax()
## Documented and have Py_DEPRECATED
* PyLong_FromUnicode * PyUnicode_AsUnicodeCopy * PyUnicode_Encode * PyUnicode_EncodeUTF7 * PyUnicode_EncodeUTF8 * PyUnicode_EncodeUTF16 * PyUnicode_EncodeUTF32 * PyUnicode_EncodeUnicodeEscape * PyUnicode_EncodeRawUnicodeEscape * PyUnicode_EncodeLatin1 * PyUnicode_EncodeASCII * PyUnicode_EncodeCharmap * PyUnicode_TranslateCharmap * PyUnicode_EncodeMBCS
These APIs are documented. The document has ``.. deprecated:: 3.3 4.0`` directive. They have been `Py_DEPRECATED` since Python 3.6 too.
Plan: Change the document to ``.. deprecated:: 3.0 3.10`` and remove them in Python 3.10.
## PyUnicode_EncodeDecimal
It is not documented. It has not been deprecated by Py_DEPRECATED.
Plan: Add Py_DEPRECATED in Python 3.9 and remove it in 3.11.
## PyUnicode_TransformDecimalToASCII
It is documented, but doesn't have ``deprecated`` directive. It is not deprecated by Py_DEPRECATED.
Plan: Add Py_DEPRECATED and ``deprecated 3.3 3.11`` directive in 3.9, and remove it in 3.11.
## _PyUnicode_ToLowercase, _PyUnicode_ToUppercase
They are not deprecated by PEP 393, but bpo-12736. They are documented as deprecated, but don't have ``Py_DEPRECATED``.
Plan: Add Py_DEPRECATED in 3.9, and remove them in 3.11.
Note: _PyUnicode_ToTitlecase has Py_DEPRECATED. It can be removed in 3.10.