Author: Philip Jenvey <[email protected]>
Branch: py3k
Changeset: r59000:c914d9d6c0b8
Date: 2012-11-19 13:28 -0800
http://bitbucket.org/pypy/pypy/changeset/c914d9d6c0b8/

Log:    print() should always call str()

diff --git a/pypy/module/__builtin__/app_io.py 
b/pypy/module/__builtin__/app_io.py
--- a/pypy/module/__builtin__/app_io.py
+++ b/pypy/module/__builtin__/app_io.py
@@ -57,9 +57,7 @@
     if fp is None:
         return
     def write(data):
-        if not isinstance(data, str):
-            data = str(data)
-        fp.write(data)
+        fp.write(str(data))
     sep = kwargs.pop("sep", None)
     if sep is not None:
         if not isinstance(sep, str):
diff --git a/pypy/module/__builtin__/test/test_builtin.py 
b/pypy/module/__builtin__/test/test_builtin.py
--- a/pypy/module/__builtin__/test/test_builtin.py
+++ b/pypy/module/__builtin__/test/test_builtin.py
@@ -629,6 +629,19 @@
         pr(None, file=out)
         assert out.getvalue() == "None\n"
 
+    def test_print_function2(self):
+        import builtins
+        import io
+        class MyStr(str):
+            def __str__(self):
+                return "sqlalchemy"
+        out = io.StringIO()
+        s = MyStr('A')
+        pr = getattr(builtins, 'print')
+        pr(s, file=out)
+        pr(str(s), file=out)
+        assert out.getvalue() == "sqlalchemy\nsqlalchemy\n"
+
     def test_print_exceptions(self):
         import builtins
         pr = getattr(builtins, "print")
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to