diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2018-01-15 22:23:47 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-15 22:23:47 (GMT) |
commit | 5f959c4f9eca404b8bc4bc6348fed27c4b907b89 (patch) | |
tree | 29b215542b7705687eb5644a0640896e587646b7 /Doc/library | |
parent | fb8569e36f2629654d5bc9c7ba05978edce408f4 (diff) | |
download | cpython-5f959c4f9eca404b8bc4bc6348fed27c4b907b89.zip cpython-5f959c4f9eca404b8bc4bc6348fed27c4b907b89.tar.gz cpython-5f959c4f9eca404b8bc4bc6348fed27c4b907b89.tar.bz2 |
[3.6] bpo-31900: Fix localeconv() encoding for LC_NUMERIC (#4174) (#5192)
* Add _Py_GetLocaleconvNumeric() function: decode decimal_point and
thousands_sep fields of localeconv() from the LC_NUMERIC encoding,
rather than decoding from the LC_CTYPE encoding.
* Modify locale.localeconv() and "n" formatter of str.format() (for
int, float and complex to use _Py_GetLocaleconvNumeric()
internally.
(cherry picked from commit cb064fc2321ce8673fe365e9ef60445a27657f54)
Diffstat (limited to 'Doc/library')
-rw-r--r-- | Doc/library/locale.rst | 10 | ||||
-rw-r--r-- | Doc/library/stdtypes.rst | 14 |
2 files changed, 24 insertions, 0 deletions
diff --git a/Doc/library/locale.rst b/Doc/library/locale.rst index b04442b..9a0c570 100644 --- a/Doc/library/locale.rst +++ b/Doc/library/locale.rst @@ -147,6 +147,16 @@ The :mod:`locale` module defines the following exception and functions: | ``CHAR_MAX`` | Nothing is specified in this locale. | +--------------+-----------------------------------------+ + The function sets temporarily the ``LC_CTYPE`` locale to the ``LC_NUMERIC`` + locale to decode ``decimal_point`` and ``thousands_sep`` byte strings if + they are non-ASCII or longer than 1 byte, and the ``LC_NUMERIC`` locale is + different than the ``LC_CTYPE`` locale. This temporary change affects other + threads. + + .. versionchanged:: 3.6.5 + The function now sets temporarily the ``LC_CTYPE`` locale to the + ``LC_NUMERIC`` locale in some cases. + .. function:: nl_langinfo(option) diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst index 196a4c0..d8a1647 100644 --- a/Doc/library/stdtypes.rst +++ b/Doc/library/stdtypes.rst @@ -1599,6 +1599,20 @@ expression support in the :mod:`re` module). See :ref:`formatstrings` for a description of the various formatting options that can be specified in format strings. + .. note:: + When formatting a number (:class:`int`, :class:`float`, :class:`float` + and subclasses) with the ``n`` type (ex: ``'{:n}'.format(1234)``), the + function sets temporarily the ``LC_CTYPE`` locale to the ``LC_NUMERIC`` + locale to decode ``decimal_point`` and ``thousands_sep`` fields of + :c:func:`localeconv` if they are non-ASCII or longer than 1 byte, and the + ``LC_NUMERIC`` locale is different than the ``LC_CTYPE`` locale. This + temporary change affects other threads. + + .. versionchanged:: 3.6.5 + When formatting a number with the ``n`` type, the function sets + temporarily the ``LC_CTYPE`` locale to the ``LC_NUMERIC`` locale in some + cases. + .. method:: str.format_map(mapping) |