From 06e2a5e05275f814ec179d0c1dc2980cd237a521 Mon Sep 17 00:00:00 2001
From: Guido van Rossum <guido@python.org>
Date: Wed, 9 Oct 2002 18:17:06 +0000
Subject: [PATCH] Add special consideration for rlcompleter.  As a side effect
 of initializing GNU readline, setlocale(LC_CTYPE, "") is called, which
 changes the <ctype.h> macros to use the "default" locale (which isn't the
 *initial* locale -- the initial locale is the "C" locale in which only ASCII
 characters are printable).  When the default locale is e.g. Latin-1, the
 repr() of string objects can include 8-bit characters with the high bit set;
 I believe this is due to the recent PRINT_MULTIBYTE_STRING changes to
 stringobject.c.  This in turn screws up test_pyexpat and test_rotor, which
 depend on the repr() of 8-bit strings with high bit characters.

The solution (for now) is to force the LC_CTYPE locale to "C" after
importing rlcompleter.  This is the locale required by the test suite
anyway.
---
 Lib/test/test___all__.py | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/Lib/test/test___all__.py b/Lib/test/test___all__.py
index 0a988facf6..a0ffa6524c 100644
--- a/Lib/test/test___all__.py
+++ b/Lib/test/test___all__.py
@@ -132,7 +132,6 @@ check_all("regsub")
 check_all("repr")
 check_all("rexec")
 check_all("rfc822")
-check_all("rlcompleter")
 check_all("robotparser")
 check_all("sched")
 check_all("sgmllib")
@@ -161,3 +160,15 @@ check_all("weakref")
 check_all("webbrowser")
 check_all("xdrlib")
 check_all("zipfile")
+
+# rlcompleter needs special consideration; it import readline which
+# initializes GNU readline which calls setlocale(LC_CTYPE, "")... :-(
+try:
+    check_all("rlcompleter")
+finally:
+    try:
+        import locale
+    except ImportError:
+        pass
+    else:
+        locale.setlocale(locale.LC_CTYPE, 'C')
-- 
2.40.0