Commits

Philip Jenvey committed c914d9d

print() should always call str()

  • Participants
  • Parent commits f5eb386
  • Branches py3k

Comments (0)

Files changed (2)

pypy/module/__builtin__/app_io.py

     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):

pypy/module/__builtin__/test/test_builtin.py

         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")