[Python-Dev] PEP-393: request for keeping PyUnicode_EncodeDecimal() (original) (raw)

"Martin v. Löwis" martin at v.loewis.de
Sat Oct 1 17:40:28 CEST 2011


longobject.c still used PyUnicodeEncodeDecimal() until 10 months ago (8304bd765bcf). I missed the PyUnicodeTransformDecimalToASCII() commit, probably because #10557 is still open.

That's why I wouldn't like to implement the function myself at least until the API is settled.

I don't understand. If you implement it yourself, you don't have to worry at all what the API is. Py_UNICODE_TODECIMAL has been around for a long time, and will stay, no matter how number parsing is implemented. That's all you need.

out = malloc(PyUnicode_GET_LENGTH(in)+1); for (i = 0; i < PyUnicode_GET_LENGTH(in); i++) { Py_UCS4 ch = PyUnicode_READ_CHAR(in, i); int d = Py_UNICODE_TODIGIT(ch); if (d != -1) { out[i] == '0'+d; continue; } if (ch < 128) out[i] = ch; else { error(); return; } } out[i] = '\0';

OTOH, if number parsing is ever updated (e.g. to consider alternative decimal points), PyUnicode_EncodeDecimal still won't be changed - it will continue to do exactly what it does today.

Will PyUnicodeTransformDecimalAndSpaceToASCII() be public?

It's already included in 3.2, so it can't be removed that easily. I wish it had been private, though - we have way too many API functions dealing with Unicode.

Regards, Martin



More information about the Python-Dev mailing list