summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Lib/codecs.py18
-rw-r--r--Lib/copy.py4
-rw-r--r--Lib/test/test_support.py2
-rw-r--r--Misc/NEWS2
-rw-r--r--Modules/_codecsmodule.c14
-rw-r--r--Modules/_tkinter.c4
-rw-r--r--setup.py11
7 files changed, 41 insertions, 14 deletions
diff --git a/Lib/codecs.py b/Lib/codecs.py
index b283925e01..b4103fb6e4 100644
--- a/Lib/codecs.py
+++ b/Lib/codecs.py
@@ -720,11 +720,19 @@ def make_encoding_map(decoding_map):
### error handlers
-strict_errors = lookup_error("strict")
-ignore_errors = lookup_error("ignore")
-replace_errors = lookup_error("replace")
-xmlcharrefreplace_errors = lookup_error("xmlcharrefreplace")
-backslashreplace_errors = lookup_error("backslashreplace")
+try:
+ strict_errors = lookup_error("strict")
+ ignore_errors = lookup_error("ignore")
+ replace_errors = lookup_error("replace")
+ xmlcharrefreplace_errors = lookup_error("xmlcharrefreplace")
+ backslashreplace_errors = lookup_error("backslashreplace")
+except LookupError:
+ # In --disable-unicode builds, these error handler are missing
+ strict_errors = None
+ ignore_errors = None
+ replace_errors = None
+ xmlcharrefreplace_errors = None
+ backslashreplace_errors = None
# Tell modulefinder that using codecs probably needs the encodings
# package
diff --git a/Lib/copy.py b/Lib/copy.py
index b216beb336..dbfe2f58a3 100644
--- a/Lib/copy.py
+++ b/Lib/copy.py
@@ -202,12 +202,12 @@ d[float] = _deepcopy_atomic
d[bool] = _deepcopy_atomic
try:
d[complex] = _deepcopy_atomic
-except AttributeError:
+except NameError:
pass
d[str] = _deepcopy_atomic
try:
d[unicode] = _deepcopy_atomic
-except AttributeError:
+except NameError:
pass
try:
d[types.CodeType] = _deepcopy_atomic
diff --git a/Lib/test/test_support.py b/Lib/test/test_support.py
index 485e9e09f6..a296caf6d0 100644
--- a/Lib/test/test_support.py
+++ b/Lib/test/test_support.py
@@ -144,7 +144,7 @@ else:
TESTFN_UNICODE_UNENCODEABLE = None
else:
# Japanese characters (I think - from bug 846133)
- TESTFN_UNICODE_UNENCODEABLE = u"@test-\u5171\u6709\u3055\u308c\u308b"
+ TESTFN_UNICODE_UNENCODEABLE = eval('u"@test-\u5171\u6709\u3055\u308c\u308b"')
try:
# XXX - Note - should be using TESTFN_ENCODING here - but for
# Windows, "mbcs" currently always operates as if in
diff --git a/Misc/NEWS b/Misc/NEWS
index e387e63f5b..36a21ce3dc 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -221,6 +221,8 @@ Library
Build
-----
+- Bug #1158607: Build with --disable-unicode again.
+
- spwdmodule.c is built only if either HAVE_GETSPNAM or HAVE_HAVE_GETSPENT is
defined. Discovered as a result of not being able to build on OS X.
diff --git a/Modules/_codecsmodule.c b/Modules/_codecsmodule.c
index ccad827586..a6c42b134b 100644
--- a/Modules/_codecsmodule.c
+++ b/Modules/_codecsmodule.c
@@ -104,8 +104,15 @@ codec_encode(PyObject *self, PyObject *args)
if (!PyArg_ParseTuple(args, "O|ss:encode", &v, &encoding, &errors))
return NULL;
+#ifdef Py_USING_UNICODE
if (encoding == NULL)
encoding = PyUnicode_GetDefaultEncoding();
+#else
+ if (encoding == NULL) {
+ PyErr_SetString(PyExc_ValueError, "no encoding specified");
+ return NULL;
+ }
+#endif
/* Encode via the codec registry */
v = PyCodec_Encode(v, encoding, errors);
@@ -137,8 +144,15 @@ codec_decode(PyObject *self, PyObject *args)
if (!PyArg_ParseTuple(args, "O|ss:decode", &v, &encoding, &errors))
return NULL;
+#ifdef Py_USING_UNICODE
if (encoding == NULL)
encoding = PyUnicode_GetDefaultEncoding();
+#else
+ if (encoding == NULL) {
+ PyErr_SetString(PyExc_ValueError, "no encoding specified");
+ return NULL;
+ }
+#endif
/* Decode via the codec registry */
v = PyCodec_Decode(v, encoding, errors);
diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c
index 76c2a4485b..632f3d6c9a 100644
--- a/Modules/_tkinter.c
+++ b/Modules/_tkinter.c
@@ -838,8 +838,10 @@ static PyGetSetDef PyTclObject_getsetlist[] = {
};
static PyMethodDef PyTclObject_methods[] = {
+#ifdef Py_USING_UNICODE
{"__unicode__", (PyCFunction)PyTclObject_unicode, METH_NOARGS,
PyTclObject_unicode__doc__},
+#endif
{0}
};
@@ -991,7 +993,7 @@ FromObj(PyObject* tkapp, Tcl_Obj *value)
}
}
#else
- res = PyString_FromStringAndSize(value->bytes, value->length);
+ result = PyString_FromStringAndSize(value->bytes, value->length);
#endif
return result;
}
diff --git a/setup.py b/setup.py
index 85322a853f..3411643a1d 100644
--- a/setup.py
+++ b/setup.py
@@ -799,11 +799,12 @@ class PyBuildExt(build_ext):
))
# Hye-Shik Chang's CJKCodecs modules.
- exts.append(Extension('_multibytecodec',
- ['cjkcodecs/multibytecodec.c']))
- for loc in ('kr', 'jp', 'cn', 'tw', 'hk', 'iso2022'):
- exts.append(Extension('_codecs_' + loc,
- ['cjkcodecs/_codecs_%s.c' % loc]))
+ if have_unicode:
+ exts.append(Extension('_multibytecodec',
+ ['cjkcodecs/multibytecodec.c']))
+ for loc in ('kr', 'jp', 'cn', 'tw', 'hk', 'iso2022'):
+ exts.append(Extension('_codecs_' + loc,
+ ['cjkcodecs/_codecs_%s.c' % loc]))
# Dynamic loading module
if sys.maxint == 0x7fffffff: