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
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/.
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 the UnicodeData File
Format 5.2.0 (see http://www.unicode.org/reports/tr44/tr44-4.html).
It defines the following functions:
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)

View 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 (PyModule_Check(mod)) {
modname = PyModule_GetNameObject(mod);
if (modname == NULL)
PyErr_Clear();
}
}
else if (mod && PyModule_Check(mod)) {
modname = PyModule_GetName(mod);
if (modname == NULL) {
PyErr_Clear();
modname = "builtins";
}
}
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

View 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*