Index: src/org/python/core/StdoutWrapper.java =================================================================== --- src/org/python/core/StdoutWrapper.java (revision 5299) +++ src/org/python/core/StdoutWrapper.java (working copy) @@ -105,11 +105,10 @@ file.write(" "); file.softspace = false; } - PyString string = o.__str__(); - String s = string.toString(); - int len = s.length(); - file.write(s); + file.write(o); if (o instanceof PyString) { + String s = o.toString(); + int len = s.length(); if (len == 0 || !Character.isWhitespace(s.charAt(len - 1)) || s.charAt(len - 1) == ' ') { file.softspace = space; @@ -128,11 +127,10 @@ obj.invoke("write", Py.Space); obj.__setattr__("softspace", Py.Zero); } - PyString string = o.__str__(); - String s = o.toString(); - int len = s.length(); - obj.invoke("write", string); + obj.invoke("write", o); if (o instanceof PyString) { + String s = o.toString(); + int len = s.length(); if (len == 0 || !Character.isWhitespace(s.charAt(len - 1)) || s.charAt(len - 1) == ' ') { obj.__setattr__("softspace", space ? Py.One : Py.Zero); Index: src/org/python/core/PyFile.java =================================================================== --- src/org/python/core/PyFile.java (revision 5299) +++ src/org/python/core/PyFile.java (working copy) @@ -411,6 +411,10 @@ } } + public void write(PyObject o) { + file_write(o); + } + final synchronized void file_write(String s) { checkClosed(); softspace = false;