# HG changeset patch # User Manuel Jacob # Date 1593359549 -7200 # Node ID f2dc337117b981c47b7fced5f7b61b8855c4c507 # Parent a65c60f3280eb1221045d5b643488256b6cb89e0 compat: back out a25343d16ebe (initialize LC_CTYPE locale on all Python ...) As Yuya Nishihara pointed out, setting LC_CTYPE changes the behavior of some str methods on Python 2. diff -r a65c60f3280e -r f2dc337117b9 mercurial/pycompat.py --- a/mercurial/pycompat.py Sun Jun 28 17:49:14 2020 +0200 +++ b/mercurial/pycompat.py Sun Jun 28 17:52:29 2020 +0200 @@ -13,7 +13,6 @@ import getopt import inspect import json -import locale import os import shlex import sys @@ -94,26 +93,6 @@ return _rapply(f, xs) -# Passing the '' locale means that the locale should be set according to the -# user settings (environment variables). -# Python sometimes avoids setting the global locale settings. When interfacing -# with C code (e.g. the curses module or the Subversion bindings), the global -# locale settings must be initialized correctly. Python 2 does not initialize -# the global locale settings on interpreter startup. Python 3 sometimes -# initializes LC_CTYPE, but not consistently at least on Windows. Therefore we -# explicitly initialize it to get consistent behavior if it's not already -# initialized. Since CPython commit 177d921c8c03d30daa32994362023f777624b10d, -# LC_CTYPE is always initialized. If we require Python 3.8+, we should re-check -# if we can remove this code. -if locale.setlocale(locale.LC_CTYPE, None) == 'C': - try: - locale.setlocale(locale.LC_CTYPE, '') - except locale.Error: - # The likely case is that the locale from the environment variables is - # unknown. - pass - - if ispy3: import builtins import codecs