Updated UCD version and unicode.org links to Unicode 6.0.0

This commit is contained in:
Alexander Belopolsky 2010-12-10 18:11:24 +00:00
parent 070ec70cbe
commit fc55789cae
3 changed files with 38 additions and 33 deletions

View file

@ -13,14 +13,15 @@
single: character single: character
pair: Unicode; database pair: Unicode; database
This module provides access to the Unicode Character Database which defines This module provides access to the Unicode Character Database (UCD) which
character properties for all Unicode characters. The data in this database is defines character properties for all Unicode characters. The data contained in
based on the :file:`UnicodeData.txt` file version 5.2.0 which is publicly this database is compiled from the `UCD version 6.0.0
available from ftp://ftp.unicode.org/. <http://www.unicode.org/Public/6.0.0/ucd>`_.
The module uses the same names and symbols as defined by the UnicodeData File The module uses the same names and symbols as defined by Unicode
Format 5.2.0 (see http://www.unicode.org/reports/tr44/tr44-4.html). Standard Annex #44, `"Unicode Character Database"
It defines the following functions: <http://www.unicode.org/reports/tr44/tr44-6.html>`_. It defines the
following functions:
.. function:: lookup(name) .. function:: lookup(name)

View file

@ -176,31 +176,21 @@ normalizeUserObj(PyObject *obj)
if (fn->m_self == NULL) { if (fn->m_self == NULL) {
/* built-in function: look up the module name */ /* built-in function: look up the module name */
PyObject *mod = fn->m_module; PyObject *mod = fn->m_module;
const char *modname; PyObject *modname;
if (mod && PyUnicode_Check(mod)) { if (mod != NULL) {
/* XXX: The following will truncate module names with embedded if (PyUnicode_Check(mod)) {
* null-characters. It is unlikely that this can happen in modname = mod;
* practice and the concequences are not serious enough to Py_INCREF(modname);
* introduce extra checks here. }
*/ else if (PyModule_Check(mod)) {
modname = _PyUnicode_AsString(mod); modname = PyModule_GetNameObject(mod);
if (modname == NULL) { if (modname == NULL)
modname = "<encoding error>";
PyErr_Clear(); PyErr_Clear();
} }
} }
else if (mod && PyModule_Check(mod)) { if (modname != NULL &&
modname = PyModule_GetName(mod); PyUnicode_CompareWithASCIIString(modname, "builtins") != 0)
if (modname == NULL) { return PyUnicode_FromFormat("<%U.%s>",
PyErr_Clear();
modname = "builtins";
}
}
else {
modname = "builtins";
}
if (strcmp(modname, "builtins") != 0)
return PyUnicode_FromFormat("<%s.%s>",
modname, modname,
fn->m_ml->ml_name); fn->m_ml->ml_name);
else else

View file

@ -168,8 +168,8 @@ PyModule_GetDict(PyObject *m)
return d; return d;
} }
const char * PyObject *
PyModule_GetName(PyObject *m) PyModule_GetNameObject(PyObject *m)
{ {
PyObject *d; PyObject *d;
PyObject *nameobj; PyObject *nameobj;
@ -185,7 +185,21 @@ PyModule_GetName(PyObject *m)
PyErr_SetString(PyExc_SystemError, "nameless module"); PyErr_SetString(PyExc_SystemError, "nameless module");
return NULL; 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* PyObject*