Fixed bug #1915: Python compiles with --enable-unicode=no again. However several extension methods and modules do not work without unicode support.
diff --git a/Lib/encodings/__init__.py b/Lib/encodings/__init__.py
index 7db44cb..aea7c5e 100644
--- a/Lib/encodings/__init__.py
+++ b/Lib/encodings/__init__.py
@@ -30,6 +30,7 @@
import codecs
from encodings import aliases
+import __builtin__
_cache = {}
_unknown = '--unknown--'
@@ -60,7 +61,7 @@
"""
# Make sure we have an 8-bit string, because .translate() works
# differently for Unicode strings.
- if isinstance(encoding, unicode):
+ if hasattr(__builtin__, "unicode") and isinstance(encoding, unicode):
# Note that .encode('latin-1') does *not* use the codec
# registry, so this call doesn't recurse. (See unicodeobject.c
# PyUnicode_AsEncodedString() for details)
diff --git a/Lib/optparse.py b/Lib/optparse.py
index 62d2f7e..4fbe094 100644
--- a/Lib/optparse.py
+++ b/Lib/optparse.py
@@ -824,7 +824,11 @@
(True, False) = (1, 0)
def isbasestring(x):
- return isinstance(x, types.StringType) or isinstance(x, types.UnicodeType)
+ try:
+ return isinstance(x, basestring)
+ except:
+ return isinstance(x, types.StringType) or isinstance(x, types.UnicodeType)
+
class Values: