Skip to content

Commit

Permalink
gh-111276: Clarify docs and comments about the role of LC_CTYPE (#111319
Browse files Browse the repository at this point in the history
)

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.html#deprecated-string-functions

Also, fix a comment in logging about locale-specific behavior of `str.lower()`.

Co-authored-by: Hugo van Kemenade <[email protected]>
  • Loading branch information
ambv and hugovk authored Oct 27, 2023
1 parent 74f0772 commit 6d42759
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 9 deletions.
15 changes: 10 additions & 5 deletions Doc/library/locale.rst
Original file line number Diff line number Diff line change
Expand Up @@ -454,11 +454,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. Depending on the settings of
this category, the functions of module :mod:`string` dealing with case change
their behaviour.
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.

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
Expand Down
6 changes: 2 additions & 4 deletions Lib/logging/handlers.py
Original file line number Diff line number Diff line change
Expand Up @@ -830,10 +830,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",
Expand Down

0 comments on commit 6d42759

Please sign in to comment.