changeset: 90241:d1eba2645b80 parent: 90239:3a414c709f1f parent: 90240:05b3a23b3836 user: Benjamin Peterson date: Sun Apr 13 23:52:43 2014 -0400 files: Misc/NEWS Python/ceval.c description: merge 3.4 (#21209) diff -r 3a414c709f1f -r d1eba2645b80 Lib/test/test_pep380.py --- a/Lib/test/test_pep380.py Sun Apr 13 22:32:12 2014 -0400 +++ b/Lib/test/test_pep380.py Sun Apr 13 23:52:43 2014 -0400 @@ -993,6 +993,25 @@ del inner_gen gc_collect() + def test_send_tuple_with_custom_generator(self): + # See issue #21209. + class MyGen: + def __iter__(self): + return self + def __next__(self): + return 42 + def send(self, what): + nonlocal v + v = what + return None + def outer(): + v = yield from MyGen() + g = outer() + next(g) + v = None + g.send((1, 2, 3, 4)) + self.assertEqual(v, (1, 2, 3, 4)) + def test_main(): from test import support diff -r 3a414c709f1f -r d1eba2645b80 Misc/NEWS --- a/Misc/NEWS Sun Apr 13 22:32:12 2014 -0400 +++ b/Misc/NEWS Sun Apr 13 23:52:43 2014 -0400 @@ -10,6 +10,9 @@ Core and Builtins ----------------- +- Issue #21209: Fix sending tuples to custom generator objects with the yield + from syntax. + - Issue #21193: pow(a, b, c) now raises ValueError rather than TypeError when b is negative. Patch by Josh Rosenberg. diff -r 3a414c709f1f -r d1eba2645b80 Python/ceval.c --- a/Python/ceval.c Sun Apr 13 22:32:12 2014 -0400 +++ b/Python/ceval.c Sun Apr 13 23:52:43 2014 -0400 @@ -1926,7 +1926,7 @@ if (v == Py_None) retval = Py_TYPE(reciever)->tp_iternext(reciever); else - retval = _PyObject_CallMethodId(reciever, &PyId_send, "O", v); + retval = _PyObject_CallMethodIdObjArgs(reciever, &PyId_send, v, NULL); } Py_DECREF(v); if (retval == NULL) {