[pypy-commit] pypy py3.3: Refuse to sum bytes or bytearrays like cpython3 sum.

kvas noreply at buildbot.pypy.org
Sat Jul 26 18:21:08 CEST 2014


Author: Vasily Kuznetsov <kvas.it at gmail.com>
Branch: py3.3
Changeset: r72537:c4be82e0fa27
Date: 2014-07-26 18:08 +0200
http://bitbucket.org/pypy/pypy/changeset/c4be82e0fa27/

Log:	Refuse to sum bytes or bytearrays like cpython3 sum.

diff --git a/pypy/module/__builtin__/app_functional.py b/pypy/module/__builtin__/app_functional.py
--- a/pypy/module/__builtin__/app_functional.py
+++ b/pypy/module/__builtin__/app_functional.py
@@ -37,6 +37,10 @@
 empty, returns start."""
     if isinstance(start, str):
         raise TypeError("sum() can't sum strings [use ''.join(seq) instead]")
+    if isinstance(start, bytes):
+        raise TypeError("sum() can't sum bytes [use b''.join(seq) instead]")
+    if isinstance(start, bytearray):
+        raise TypeError("sum() can't sum bytearray [use b''.join(seq) instead]")
     last = start
     for x in sequence:
         # Very intentionally *not* +=, that would have different semantics if
diff --git a/pypy/module/__builtin__/test/test_sum.py b/pypy/module/__builtin__/test/test_sum.py
new file mode 100644
--- /dev/null
+++ b/pypy/module/__builtin__/test/test_sum.py
@@ -0,0 +1,9 @@
+class AppTestSum:
+
+    def test_sum(self):
+        raises(TypeError, sum, [b'a', b'c'], b'')
+        raises(TypeError, sum, [bytearray(b'a'), bytearray(b'b')],
+                bytearray(b''))
+        raises(TypeError, sum, [[1], [2], [3]])
+        raises(TypeError, sum, [{2:3}])
+        raises(TypeError, sum, [{2:3}]*2, {2:3})


More information about the pypy-commit mailing list