Author: neal.norwitz
Date: Sun Aug 26 08:45:23 2007
New Revision: 57504

Modified:
   python/branches/py3k/Objects/typeobject.c
   python/branches/py3k/Python/import.c
Log:
Use unicode and remove support for some uses of str8.

Modified: python/branches/py3k/Objects/typeobject.c
==============================================================================
--- python/branches/py3k/Objects/typeobject.c   (original)
+++ python/branches/py3k/Objects/typeobject.c   Sun Aug 26 08:45:23 2007
@@ -44,6 +44,7 @@
 type_set_name(PyTypeObject *type, PyObject *value, void *context)
 {
        PyHeapTypeObject* et;
+       char *tp_name;
 
        if (!(type->tp_flags & Py_TPFLAGS_HEAPTYPE)) {
                PyErr_Format(PyExc_TypeError,
@@ -61,11 +62,10 @@
                             type->tp_name, Py_Type(value)->tp_name);
                return -1;
        }
-       value = _PyUnicode_AsDefaultEncodedString(value, NULL);
-       if (value == NULL)
+       tp_name = PyUnicode_AsString(value);
+       if (tp_name == NULL)
                return -1;
-       if (strlen(PyString_AS_STRING(value))
-           != (size_t)PyString_GET_SIZE(value)) {
+       if (strlen(tp_name) != (size_t)PyUnicode_GET_SIZE(value)) {
                PyErr_Format(PyExc_ValueError,
                             "__name__ must not contain null bytes");
                return -1;
@@ -78,7 +78,7 @@
        Py_DECREF(et->ht_name);
        et->ht_name = value;
 
-       type->tp_name = PyString_AS_STRING(value);
+       type->tp_name = tp_name;
 
        return 0;
 }
@@ -1736,7 +1736,7 @@
                /* Have slots */
 
                /* Make it into a tuple */
-               if (PyString_Check(slots) || PyUnicode_Check(slots))
+               if (PyUnicode_Check(slots))
                        slots = PyTuple_Pack(1, slots);
                else
                        slots = PySequence_Tuple(slots);
@@ -1875,14 +1875,10 @@
        type->tp_as_sequence = &et->as_sequence;
        type->tp_as_mapping = &et->as_mapping;
        type->tp_as_buffer = &et->as_buffer;
-       if (PyString_Check(name))
-               type->tp_name = PyString_AsString(name);
-       else {
-               type->tp_name = PyUnicode_AsString(name);
-               if (!type->tp_name) {
-                       Py_DECREF(type);
-                       return NULL;
-               }
+       type->tp_name = PyUnicode_AsString(name);
+       if (!type->tp_name) {
+               Py_DECREF(type);
+               return NULL;
        }
 
        /* Set tp_base and tp_bases */

Modified: python/branches/py3k/Python/import.c
==============================================================================
--- python/branches/py3k/Python/import.c        (original)
+++ python/branches/py3k/Python/import.c        Sun Aug 26 08:45:23 2007
@@ -453,8 +453,8 @@
                while (PyDict_Next(modules, &pos, &key, &value)) {
                        if (value->ob_refcnt != 1)
                                continue;
-                       if (PyString_Check(key) && PyModule_Check(value)) {
-                               name = PyString_AS_STRING(key);
+                       if (PyUnicode_Check(key) && PyModule_Check(value)) {
+                               name = PyUnicode_AsString(key);
                                if (strcmp(name, "__builtin__") == 0)
                                        continue;
                                if (strcmp(name, "sys") == 0)
@@ -472,8 +472,8 @@
        /* Next, delete all modules (still skipping __builtin__ and sys) */
        pos = 0;
        while (PyDict_Next(modules, &pos, &key, &value)) {
-               if (PyString_Check(key) && PyModule_Check(value)) {
-                       name = PyString_AS_STRING(key);
+               if (PyUnicode_Check(key) && PyModule_Check(value)) {
+                       name = PyUnicode_AsString(key);
                        if (strcmp(name, "__builtin__") == 0)
                                continue;
                        if (strcmp(name, "sys") == 0)
@@ -2008,30 +2008,21 @@
        *buf = '\0';
        *p_buflen = 0;
        modname = PyDict_GetItem(globals, namestr);
-       if (modname == NULL || (!PyString_Check(modname) && 
!PyUnicode_Check(modname)))
+       if (modname == NULL || !PyUnicode_Check(modname))
                return Py_None;
 
-       if (PyUnicode_Check(modname)) {
-               /* XXX need to support Unicode better */
-               modname = _PyUnicode_AsDefaultEncodedString(modname, NULL);
-               if (!modname) {
-                       PyErr_Clear();
-                       return NULL;
-               }
-       }
-
        modpath = PyDict_GetItem(globals, pathstr);
        if (modpath != NULL) {
-               Py_ssize_t len = PyString_GET_SIZE(modname);
+               Py_ssize_t len = PyUnicode_GET_SIZE(modname);
                if (len > MAXPATHLEN) {
                        PyErr_SetString(PyExc_ValueError,
                                        "Module name too long");
                        return NULL;
                }
-               strcpy(buf, PyString_AS_STRING(modname));
+               strcpy(buf, PyUnicode_AsString(modname));
        }
        else {
-               char *start = PyString_AS_STRING(modname);
+               char *start = PyUnicode_AsString(modname);
                char *lastdot = strrchr(start, '.');
                size_t len;
                if (lastdot == NULL && level > 0) {
@@ -2174,19 +2165,9 @@
                        }
                        return 0;
                }
-               if (PyString_Check(item)) {
-                       /* XXX there shouldn't be any str8 objects here */
-                       PyObject *uni = 
PyUnicode_DecodeASCII(PyString_AsString(item),
-                                                             
PyString_Size(item),
-                                                             "strict");
-                       Py_DECREF(item);
-                       if (!uni)
-                               return 0;
-                       item = uni;
-               }
                if (!PyUnicode_Check(item)) {
                        PyErr_SetString(PyExc_TypeError,
-                                       "Item in ``from list'' not a unicode 
string");
+                                       "Item in ``from list'' not a string");
                        Py_DECREF(item);
                        return 0;
                }
@@ -2444,7 +2425,7 @@
    done using whatever import hooks are installed in the current
    environment, e.g. by "rexec".
    A dummy list ["__doc__"] is passed as the 4th argument so that
-   e.g. PyImport_Import(PyString_FromString("win32com.client.gencache"))
+   e.g. PyImport_Import(PyUnicode_FromString("win32com.client.gencache"))
    will return <module "gencache"> instead of <module "win32com">. */
 
 PyObject *
_______________________________________________
Python-3000-checkins mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-3000-checkins

Reply via email to