From 713210985bb9115060be7fcce6fa25b39abb2378 Mon Sep 17 00:00:00 2001 From: "Miss Islington (bot)" <31488909+miss-islington@users.noreply.github.com> Date: Fri, 27 Oct 2023 17:15:06 +0200 Subject: [PATCH] [3.12] gh-111276: Clarify docs and comments about the role of LC_CTYPE (GH-111319) (#111391) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix locale.LC_CTYPE documentation to no longer mention string.lower() et al. Those functions were removed in Python 3.0: https://docs.python.org/2/library/string.htmlGH-deprecated-string-functions Also, fix a comment in logging about locale-specific behavior of `str.lower()`. (cherry picked from commit 6d42759c5e47ab62d60a72b4ff15d29864554579) Co-authored-by: Ɓukasz Langa Co-authored-by: Hugo van Kemenade --- Doc/library/locale.rst | 13 +++++++++---- Lib/logging/handlers.py | 6 ++---- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/Doc/library/locale.rst b/Doc/library/locale.rst index 0817ae5883c..2a6d911d6b4 100644 --- a/Doc/library/locale.rst +++ b/Doc/library/locale.rst @@ -464,11 +464,16 @@ The :mod:`locale` module defines the following exception and functions: .. data:: LC_CTYPE - .. index:: pair: module; string + Locale category for the character type functions. Most importantly, this + category defines the text encoding, i.e. how bytes are interpreted as + Unicode codepoints. See :pep:`538` and :pep:`540` for how this variable + might be automatically coerced to ``C.UTF-8`` to avoid issues created by + invalid settings in containers or incompatible settings passed over remote + SSH connections. - Locale category for the character type functions. Depending on the settings of - this category, the functions of module :mod:`string` dealing with case change - their behaviour. + Python doesn't internally use locale-dependent character transformation functions + from ``ctype.h``. Instead, an internal ``pyctype.h`` provides locale-independent + equivalents like :c:macro:`!Py_TOLOWER`. .. data:: LC_COLLATE diff --git a/Lib/logging/handlers.py b/Lib/logging/handlers.py index 671cc9596b0..6e88184b512 100644 --- a/Lib/logging/handlers.py +++ b/Lib/logging/handlers.py @@ -833,10 +833,8 @@ class SysLogHandler(logging.Handler): "local7": LOG_LOCAL7, } - #The map below appears to be trivially lowercasing the key. However, - #there's more to it than meets the eye - in some locales, lowercasing - #gives unexpected results. See SF #1524081: in the Turkish locale, - #"INFO".lower() != "info" + # Originally added to work around GH-43683. Unnecessary since GH-50043 but kept + # for backwards compatibility. priority_map = { "DEBUG" : "debug", "INFO" : "info",