classification
Title: remove born-deprecated PyUnicode_AsUnicodeAndSize
Type: Stage:
Components: Unicode Versions: Python 3.3
process
Status: closed Resolution: not a bug
Dependencies: Superseder:
Assigned To: Nosy List: Jim.Jewett, benjamin.peterson, ezio.melotti, lemburg, loewis, vstinner
Priority: normal Keywords:

Created on 2011-12-16 00:55 by Jim.Jewett, last changed 2012-03-29 15:17 by loewis. This issue is now closed.

Messages (6)
msg149585 - (view) Author: Jim Jewett (Jim.Jewett) * (Python triager) Date: 2011-12-16 00:55
In reviewing issue 13604 (aligning PEP 393 with the implementation) Victor Stinner noticed that PyUnicode_AsUnicodeAndSize is new in 3.3, but that it is already deprecated (because it relies on the old PyUnicode type).  

This born-deprecated function is just a shortcut for PyUnicode_AsUnicode plus PyUnicode_GET_SIZE, and should be removed.
msg156845 - (view) Author: Jim Jewett (Jim.Jewett) * (Python triager) Date: 2012-03-26 18:31
It is now a useful function, as PyUnicode_AsUnicode defers to it.

It is still born-deprecated, but that may be unavoidable, as all use of the wstr format is deprecated.
msg156853 - (view) Author: Benjamin Peterson (benjamin.peterson) * (Python committer) Date: 2012-03-26 18:47
It could be made an internal function.
msg156887 - (view) Author: STINNER Victor (vstinner) * (Python committer) Date: 2012-03-27 01:02
The Py_UNICODE* type is deprecated but since Python 3.3, Py_UNICODE=wchar_t and wchar_t* is a common type on Windows. PyUnicode_AsUnicodeAndSize() is used to encode Python strings to call Windows functions.

PyUnicode_AsUnicodeAndSize() is preferred over PyUnicode_AsWideCharString() because PyUnicode_AsWideCharString() stores the result in the Unicode string and the Unicode string releases the memory automatically later. Calling PyUnicode_AsWideCharString() twice on the same string avoids also the need of encoding the string twice because the result is cached.

I proposed to add a new function using wchar_*t and storing the result in the Unicode string, but the idea was rejected. I don't remember why.
msg156897 - (view) Author: Marc-Andre Lemburg (lemburg) * (Python committer) Date: 2012-03-27 07:22
STINNER Victor wrote:
> 
> STINNER Victor <victor.stinner@gmail.com> added the comment:
> 
> The Py_UNICODE* type is deprecated but since Python 3.3, Py_UNICODE=wchar_t and wchar_t* is a common type on Windows. PyUnicode_AsUnicodeAndSize() is used to encode Python strings to call Windows functions.
> 
> PyUnicode_AsUnicodeAndSize() is preferred over PyUnicode_AsWideCharString() because PyUnicode_AsWideCharString() stores the result in the Unicode string and the Unicode string releases the memory automatically later. Calling PyUnicode_AsWideCharString() twice on the same string avoids also the need of encoding the string twice because the result is cached.
> 
> I proposed to add a new function using wchar_*t and storing the result in the Unicode string, but the idea was rejected. I don't remember why.

Could you please clarify what you actually intend to do ? Which
function do you want to remove and why ?

The title and description of this ticket don't match :-)
msg157057 - (view) Author: Martin v. Löwis (loewis) * (Python committer) Date: 2012-03-29 15:17
I fail to see the issue. Even though the function is born-deprecated, there are valid use cases for it, even for new code (see http://www.python.org/dev/peps/pep-0393/#deprecations-removals-and-incompatibilities).

Closing the issue as invalid.
History
Date User Action Args
2012-03-29 15:17:56loewissetstatus: open -> closed

nosy: + loewis
messages: + msg157057

resolution: not a bug
2012-03-27 07:22:15lemburgsetnosy: + lemburg
messages: + msg156897
2012-03-27 01:02:47vstinnersetnosy: + vstinner
messages: + msg156887
2012-03-26 18:47:27benjamin.petersonsetnosy: + benjamin.peterson
messages: + msg156853
2012-03-26 18:31:44Jim.Jewettsetmessages: + msg156845
2011-12-16 00:55:49Jim.Jewettcreate