Patch #462849: Pass Unicode objects to file's .write method.

This commit is contained in:
Martin v. Löwis 2001-09-19 13:47:32 +00:00
parent 5b5e0b9bf9
commit 2777c021fc
2 changed files with 13 additions and 3 deletions

View File

@ -3,6 +3,11 @@ What's New in Python 2.2a4?
Core
- PyFile_WriteObject now passes Unicode object to the file's write
method. As a result, all file-like object which may be the target
of a print statement must support Unicode objects, i.e. they must
at least convert them into ASCII strings.
- The builtin file type can be subclassed now. In the usual pattern,
"file" is the name of the builtin type, and file() is a new builtin
constructor, with the same signature as the builtin open() function.

View File

@ -1503,9 +1503,14 @@ PyFile_WriteObject(PyObject *v, PyObject *f, int flags)
writer = PyObject_GetAttrString(f, "write");
if (writer == NULL)
return -1;
if (flags & Py_PRINT_RAW)
value = PyObject_Str(v);
else
if (flags & Py_PRINT_RAW) {
if (PyUnicode_Check(v)) {
value = v;
Py_INCREF(value);
} else
value = PyObject_Str(v);
}
else
value = PyObject_Repr(v);
if (value == NULL) {
Py_DECREF(writer);