]> granicus.if.org Git - python/commitdiff
Updated UCD version and unicode.org links to Unicode 6.0.0
authorAlexander Belopolsky <alexander.belopolsky@gmail.com>
Fri, 10 Dec 2010 18:11:24 +0000 (18:11 +0000)
committerAlexander Belopolsky <alexander.belopolsky@gmail.com>
Fri, 10 Dec 2010 18:11:24 +0000 (18:11 +0000)
Doc/library/unicodedata.rst
Modules/_lsprof.c
Objects/moduleobject.c

index bbbd5d9647cdf49e0198b48f9e0241ca2f6f24b8..bcb3da31145df00b5ca48a80730c691be4a6b0d0 100644 (file)
    single: character
    pair: Unicode; database
 
-This module provides access to the Unicode Character Database which defines
-character properties for all Unicode characters. The data in this database is
-based on the :file:`UnicodeData.txt` file version 5.2.0 which is publicly
-available from ftp://ftp.unicode.org/.
-
-The module uses the same names and symbols as defined by the UnicodeData File
-Format 5.2.0 (see http://www.unicode.org/reports/tr44/tr44-4.html).
-It defines the following functions:
+This module provides access to the Unicode Character Database (UCD) which
+defines character properties for all Unicode characters. The data contained in
+this database is compiled from the `UCD version 6.0.0
+<http://www.unicode.org/Public/6.0.0/ucd>`_.
+
+The module uses the same names and symbols as defined by Unicode
+Standard Annex #44, `"Unicode Character Database"
+<http://www.unicode.org/reports/tr44/tr44-6.html>`_.  It defines the
+following functions:
 
 
 .. function:: lookup(name)
index cc412bfc23283b3340ce9c5ad9ee7060f2177b1c..199c42b68f36afeb792162dd7575fcf3b0a282c2 100644 (file)
@@ -176,31 +176,21 @@ normalizeUserObj(PyObject *obj)
     if (fn->m_self == NULL) {
         /* built-in function: look up the module name */
         PyObject *mod = fn->m_module;
-        const char *modname;
-        if (mod && PyUnicode_Check(mod)) {
-            /* XXX: The following will truncate module names with embedded
-             * null-characters.  It is unlikely that this can happen in
-             * practice and the concequences are not serious enough to
-             * introduce extra checks here.
-             */
-            modname = _PyUnicode_AsString(mod);
-            if (modname == NULL) {
-                modname = "<encoding error>";
-                PyErr_Clear();
+        PyObject *modname;
+        if (mod != NULL) {
+            if (PyUnicode_Check(mod)) {
+                modname = mod;
+                Py_INCREF(modname);
             }
-        }
-        else if (mod && PyModule_Check(mod)) {
-            modname = PyModule_GetName(mod);
-            if (modname == NULL) {
-                PyErr_Clear();
-                modname = "builtins";
+            else if (PyModule_Check(mod)) {
+                modname = PyModule_GetNameObject(mod);
+                if (modname == NULL)
+                    PyErr_Clear();
             }
         }
-        else {
-            modname = "builtins";
-        }
-        if (strcmp(modname, "builtins") != 0)
-            return PyUnicode_FromFormat("<%s.%s>",
+        if (modname != NULL && 
+            PyUnicode_CompareWithASCIIString(modname, "builtins") != 0)
+            return PyUnicode_FromFormat("<%U.%s>",
                                         modname,
                                         fn->m_ml->ml_name);
         else
index 2c095a096870aa2022fab6d247d85914c2250e58..8b22b7dc95a26f7f1ad3f30fbdae632a2956fe9b 100644 (file)
@@ -168,8 +168,8 @@ PyModule_GetDict(PyObject *m)
     return d;
 }
 
-const char *
-PyModule_GetName(PyObject *m)
+PyObject *
+PyModule_GetNameObject(PyObject *m)
 {
     PyObject *d;
     PyObject *nameobj;
@@ -185,7 +185,21 @@ PyModule_GetName(PyObject *m)
         PyErr_SetString(PyExc_SystemError, "nameless module");
         return NULL;
     }
-    return _PyUnicode_AsString(nameobj);
+    Py_INCREF(nameobj);
+    return nameobj;
+}
+
+const char *
+PyModule_GetName(PyObject *m)
+{
+    PyObject *nameobj;
+    char *utf8;
+    nameobj = PyModule_GetNameObject(m);
+    if (nameobj == NULL)
+        return NULL;
+    utf8 = _PyUnicode_AsString(nameobj);
+    Py_DECREF(nameobj);
+    return utf8;
 }
 
 PyObject*