diff -urNp Python-2.7.5.orig/Python/bltinmodule.c Python-2.7.5/Python/bltinmodule.c --- Python-2.7.5.orig/Python/bltinmodule.c 2013-05-12 06:32:53.000000000 +0300 +++ Python-2.7.5/Python/bltinmodule.c 2013-07-12 21:19:11.000000000 +0300 @@ -2419,7 +2419,20 @@ builtin_sum(PyObject *self, PyObject *ar empty = [] sum([[x] for x in range(10)], empty) - would change the value of empty. */ + would change the value of empty. + + And what is more important it would break the code, that + has __iadd__ different from __add__ e.g. due to coercion: + + >>> from numpy import array + >>> a = array([1, 2, 3], dtype=int) + >>> b = array([1.4, 2.5, 3.6], dtype=float) + >>> a + b + array([ 2.4, 4.5, 6.6]) + >>> a += b + >>> a + array([2, 4, 6]) + */ temp = PyNumber_Add(result, item); Py_DECREF(result); Py_DECREF(item);