summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmaury Forgeot d'Arc <amauryfa@gmail.com>2010-09-12 22:42:57 (GMT)
committerAmaury Forgeot d'Arc <amauryfa@gmail.com>2010-09-12 22:42:57 (GMT)
commitfeb7307db4b4582af9ac01719f7df651c2eed077 (patch)
treefdf12671ce7ea77718886f4ee73370ab8b19c490
parentb2f98401d123b940b282777b8e435f4a9ea0c085 (diff)
downloadcpython-feb7307db4b4582af9ac01719f7df651c2eed077.zip
cpython-feb7307db4b4582af9ac01719f7df651c2eed077.tar.gz
cpython-feb7307db4b4582af9ac01719f7df651c2eed077.tar.bz2
#9210: remove --with-wctype-functions configure option.
The internal unicode database is now always used. (after 5 years: see http://mail.python.org/pipermail/python-dev/2004-December/050193.html )
-rw-r--r--Doc/whatsnew/3.2.rst5
-rw-r--r--Include/unicodeobject.h37
-rw-r--r--Misc/NEWS4
-rw-r--r--Objects/unicodectype.c33
-rw-r--r--Objects/unicodetype_db.h4
-rw-r--r--Tools/unicode/makeunicodedata.py4
-rwxr-xr-xconfigure24
-rw-r--r--configure.in15
-rw-r--r--pyconfig.h.in4
9 files changed, 10 insertions, 120 deletions
diff --git a/Doc/whatsnew/3.2.rst b/Doc/whatsnew/3.2.rst
index 7d8b2e6..0f9366d 100644
--- a/Doc/whatsnew/3.2.rst
+++ b/Doc/whatsnew/3.2.rst
@@ -525,6 +525,11 @@ Changes to Python's build process and to the C API include:
(Contributed by Antoine Pitrou; :issue:`9203`.)
+* The option ``--with-wctype-functions`` was removed. The built-in unicode
+ database is now used for all functions.
+
+ (Contributed by Amaury Forgeot D'Arc; :issue:`9210`.)
+
Porting to Python 3.2
=====================
diff --git a/Include/unicodeobject.h b/Include/unicodeobject.h
index 820850a..111d7e2 100644
--- a/Include/unicodeobject.h
+++ b/Include/unicodeobject.h
@@ -78,7 +78,7 @@ Copyright (c) Corporation for National Research Initiatives.
#define Py_UNICODE_WIDE
#endif
-/* Set these flags if the platform has "wchar.h", "wctype.h" and the
+/* Set these flags if the platform has "wchar.h" and the
wchar_t type is a 16-bit unsigned type */
/* #define HAVE_WCHAR_H */
/* #define HAVE_USABLE_WCHAR_T */
@@ -309,39 +309,6 @@ typedef PY_UNICODE_TYPE Py_UNICODE;
/* --- Internal Unicode Operations ---------------------------------------- */
-/* If you want Python to use the compiler's wctype.h functions instead
- of the ones supplied with Python, define WANT_WCTYPE_FUNCTIONS or
- configure Python using --with-wctype-functions. This reduces the
- interpreter's code size. */
-
-#if defined(Py_UNICODE_WIDE) && defined(HAVE_USABLE_WCHAR_T) && defined(WANT_WCTYPE_FUNCTIONS)
-
-#include <wctype.h>
-
-#define Py_UNICODE_ISSPACE(ch) iswspace(ch)
-
-#define Py_UNICODE_ISLOWER(ch) iswlower(ch)
-#define Py_UNICODE_ISUPPER(ch) iswupper(ch)
-#define Py_UNICODE_ISTITLE(ch) _PyUnicode_IsTitlecase(ch)
-#define Py_UNICODE_ISLINEBREAK(ch) _PyUnicode_IsLinebreak(ch)
-
-#define Py_UNICODE_TOLOWER(ch) towlower(ch)
-#define Py_UNICODE_TOUPPER(ch) towupper(ch)
-#define Py_UNICODE_TOTITLE(ch) _PyUnicode_ToTitlecase(ch)
-
-#define Py_UNICODE_ISDECIMAL(ch) _PyUnicode_IsDecimalDigit(ch)
-#define Py_UNICODE_ISDIGIT(ch) _PyUnicode_IsDigit(ch)
-#define Py_UNICODE_ISNUMERIC(ch) _PyUnicode_IsNumeric(ch)
-#define Py_UNICODE_ISPRINTABLE(ch) _PyUnicode_IsPrintable(ch)
-
-#define Py_UNICODE_TODECIMAL(ch) _PyUnicode_ToDecimalDigit(ch)
-#define Py_UNICODE_TODIGIT(ch) _PyUnicode_ToDigit(ch)
-#define Py_UNICODE_TONUMERIC(ch) _PyUnicode_ToNumeric(ch)
-
-#define Py_UNICODE_ISALPHA(ch) iswalpha(ch)
-
-#else
-
/* Since splitting on whitespace is an important use case, and
whitespace in most situations is solely ASCII whitespace, we
optimize for the common case by using a quick look-up table
@@ -371,8 +338,6 @@ typedef PY_UNICODE_TYPE Py_UNICODE;
#define Py_UNICODE_ISALPHA(ch) _PyUnicode_IsAlpha(ch)
-#endif
-
#define Py_UNICODE_ISALNUM(ch) \
(Py_UNICODE_ISALPHA(ch) || \
Py_UNICODE_ISDECIMAL(ch) || \
diff --git a/Misc/NEWS b/Misc/NEWS
index 7b06c69..caec749 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -10,6 +10,10 @@ What's New in Python 3.2 Alpha 3?
Core and Builtins
-----------------
+- Issue #9210: Configure option --with-wctype-functions was removed. Using the
+ functions from the libc caused the methods .upper() and lower() to become
+ locale aware and created subtly wrong results.
+
- Issue #9738: PyUnicode_FromFormat() and PyErr_Format() raise an error on
a non-ASCII byte in the format string.
diff --git a/Objects/unicodectype.c b/Objects/unicodectype.c
index f6e3250..a41ceb8 100644
--- a/Objects/unicodectype.c
+++ b/Objects/unicodectype.c
@@ -163,8 +163,6 @@ int _PyUnicode_IsPrintable(Py_UCS4 ch)
return (ctype->flags & PRINTABLE_MASK) != 0;
}
-#ifndef WANT_WCTYPE_FUNCTIONS
-
/* Returns 1 for Unicode characters having the category 'Ll', 0
otherwise. */
@@ -223,34 +221,3 @@ int _PyUnicode_IsAlpha(Py_UCS4 ch)
return (ctype->flags & ALPHA_MASK) != 0;
}
-#else
-
-/* Export the interfaces using the wchar_t type for portability
- reasons: */
-
-int _PyUnicode_IsLowercase(Py_UCS4 ch)
-{
- return iswlower(ch);
-}
-
-int _PyUnicode_IsUppercase(Py_UCS4 ch)
-{
- return iswupper(ch);
-}
-
-Py_UCS4 _PyUnicode_ToLowercase(Py_UCS4 ch)
-{
- return towlower(ch);
-}
-
-Py_UCS4 _PyUnicode_ToUppercase(Py_UCS4 ch)
-{
- return towupper(ch);
-}
-
-int _PyUnicode_IsAlpha(Py_UCS4 ch)
-{
- return iswalpha(ch);
-}
-
-#endif
diff --git a/Objects/unicodetype_db.h b/Objects/unicodetype_db.h
index 637f629..ef18b95 100644
--- a/Objects/unicodetype_db.h
+++ b/Objects/unicodetype_db.h
@@ -3247,9 +3247,6 @@ double _PyUnicode_ToNumeric(Py_UCS4 ch)
*/
int _PyUnicode_IsWhitespace(register const Py_UCS4 ch)
{
-#ifdef WANT_WCTYPE_FUNCTIONS
- return iswspace(ch);
-#else
switch (ch) {
case 0x0009:
case 0x000A:
@@ -3284,7 +3281,6 @@ int _PyUnicode_IsWhitespace(register const Py_UCS4 ch)
return 1;
}
return 0;
-#endif
}
/* Returns 1 for Unicode characters having the line break
diff --git a/Tools/unicode/makeunicodedata.py b/Tools/unicode/makeunicodedata.py
index 7266a91..b2615ee 100644
--- a/Tools/unicode/makeunicodedata.py
+++ b/Tools/unicode/makeunicodedata.py
@@ -503,9 +503,6 @@ def makeunicodetype(unicode, trace):
print(" */", file=fp)
print('int _PyUnicode_IsWhitespace(register const Py_UCS4 ch)', file=fp)
print('{', file=fp)
- print('#ifdef WANT_WCTYPE_FUNCTIONS', file=fp)
- print(' return iswspace(ch);', file=fp)
- print('#else', file=fp)
print(' switch (ch) {', file=fp)
for codepoint in sorted(spaces):
@@ -514,7 +511,6 @@ def makeunicodetype(unicode, trace):
print(' }', file=fp)
print(' return 0;', file=fp)
- print('#endif', file=fp)
print('}', file=fp)
print(file=fp)
diff --git a/configure b/configure
index 8bd1ea5..a3826ef 100755
--- a/configure
+++ b/configure
@@ -747,7 +747,6 @@ with_doc_strings
with_tsc
with_pymalloc
with_valgrind
-with_wctype_functions
with_fpectl
with_libm
with_libc
@@ -1418,7 +1417,6 @@ Optional Packages:
--with(out)-tsc enable/disable timestamp counter profile
--with(out)-pymalloc disable/enable specialized mallocs
--with-valgrind Enable Valgrind support
- --with-wctype-functions use wctype.h functions
--with-fpectl enable SIGFPE catching
--with-libm=STRING math library
--with-libc=STRING C library
@@ -9232,28 +9230,6 @@ fi
OPT="-DDYNAMIC_ANNOTATIONS_ENABLED=1 $OPT"
fi
-# Check for --with-wctype-functions
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --with-wctype-functions" >&5
-$as_echo_n "checking for --with-wctype-functions... " >&6; }
-
-# Check whether --with-wctype-functions was given.
-if test "${with_wctype_functions+set}" = set; then :
- withval=$with_wctype_functions;
-if test "$withval" != no
-then
-
-$as_echo "#define WANT_WCTYPE_FUNCTIONS 1" >>confdefs.h
-
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-else
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
-fi
-
# -I${DLINCLDIR} is added to the compile rule for importdl.o
diff --git a/configure.in b/configure.in
index b467284..c6a51a3 100644
--- a/configure.in
+++ b/configure.in
@@ -2493,21 +2493,6 @@ if test "$with_valgrind" != no; then
OPT="-DDYNAMIC_ANNOTATIONS_ENABLED=1 $OPT"
fi
-# Check for --with-wctype-functions
-AC_MSG_CHECKING(for --with-wctype-functions)
-AC_ARG_WITH(wctype-functions,
- AS_HELP_STRING([--with-wctype-functions], [use wctype.h functions]),
-[
-if test "$withval" != no
-then
- AC_DEFINE(WANT_WCTYPE_FUNCTIONS, 1,
- [Define if you want wctype.h functions to be used instead of the
- one supplied by Python itself. (see Include/unicodectype.h).])
- AC_MSG_RESULT(yes)
-else AC_MSG_RESULT(no)
-fi],
-[AC_MSG_RESULT(no)])
-
# -I${DLINCLDIR} is added to the compile rule for importdl.o
AC_SUBST(DLINCLDIR)
DLINCLDIR=.
diff --git a/pyconfig.h.in b/pyconfig.h.in
index b26b441..545dbe3 100644
--- a/pyconfig.h.in
+++ b/pyconfig.h.in
@@ -1077,10 +1077,6 @@
/* Define if you want SIGFPE handled (see Include/pyfpe.h). */
#undef WANT_SIGFPE_HANDLER
-/* Define if you want wctype.h functions to be used instead of the one
- supplied by Python itself. (see Include/unicodectype.h). */
-#undef WANT_WCTYPE_FUNCTIONS
-
/* Define if WINDOW in curses.h offers a field _flags. */
#undef WINDOW_HAS_FLAGS