Added new .isalpha() and .isalnum() methods which provide interfaces
to the new alphabetic lookup APIs in unicodectype.c.
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 59824c6..78ab5ea 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -3588,6 +3588,70 @@
     return PyInt_FromLong(1);
 }
 
+static char isalpha__doc__[] =
+"S.isalpha() -> int\n\
+\n\
+Return 1 if  all characters in S are alphabetic\n\
+and there is at least one character in S, 0 otherwise.";
+
+static PyObject*
+unicode_isalpha(PyUnicodeObject *self, PyObject *args)
+{
+    register const Py_UNICODE *p = PyUnicode_AS_UNICODE(self);
+    register const Py_UNICODE *e;
+
+    if (!PyArg_NoArgs(args))
+        return NULL;
+
+    /* Shortcut for single character strings */
+    if (PyUnicode_GET_SIZE(self) == 1 &&
+	Py_UNICODE_ISALPHA(*p))
+	return PyInt_FromLong(1);
+
+    /* Special case for empty strings */
+    if (PyString_GET_SIZE(self) == 0)
+	return PyInt_FromLong(0);
+
+    e = p + PyUnicode_GET_SIZE(self);
+    for (; p < e; p++) {
+	if (!Py_UNICODE_ISALPHA(*p))
+	    return PyInt_FromLong(0);
+    }
+    return PyInt_FromLong(1);
+}
+
+static char isalnum__doc__[] =
+"S.isalnum() -> int\n\
+\n\
+Return 1 if  all characters in S are alphanumeric\n\
+and there is at least one character in S, 0 otherwise.";
+
+static PyObject*
+unicode_isalnum(PyUnicodeObject *self, PyObject *args)
+{
+    register const Py_UNICODE *p = PyUnicode_AS_UNICODE(self);
+    register const Py_UNICODE *e;
+
+    if (!PyArg_NoArgs(args))
+        return NULL;
+
+    /* Shortcut for single character strings */
+    if (PyUnicode_GET_SIZE(self) == 1 &&
+	Py_UNICODE_ISALNUM(*p))
+	return PyInt_FromLong(1);
+
+    /* Special case for empty strings */
+    if (PyString_GET_SIZE(self) == 0)
+	return PyInt_FromLong(0);
+
+    e = p + PyUnicode_GET_SIZE(self);
+    for (; p < e; p++) {
+	if (!Py_UNICODE_ISALNUM(*p))
+	    return PyInt_FromLong(0);
+    }
+    return PyInt_FromLong(1);
+}
+
 static char isdecimal__doc__[] =
 "S.isdecimal() -> int\n\
 \n\
@@ -4253,6 +4317,8 @@
     {"isdecimal", (PyCFunction) unicode_isdecimal, 0, isdecimal__doc__},
     {"isdigit", (PyCFunction) unicode_isdigit, 0, isdigit__doc__},
     {"isnumeric", (PyCFunction) unicode_isnumeric, 0, isnumeric__doc__},
+    {"isalpha", (PyCFunction) unicode_isalpha, 0, isalpha__doc__},
+    {"isalnum", (PyCFunction) unicode_isalnum, 0, isalnum__doc__},
 #if 0
     {"zfill", (PyCFunction) unicode_zfill, 1, zfill__doc__},
     {"capwords", (PyCFunction) unicode_capwords, 0, capwords__doc__},