(original) (raw)
changeset: 100209:73f89182bb4d user: Martin Panter vadmium+py@gmail.com date: Wed Feb 10 04:40:48 2016 +0000 files: Doc/whatsnew/3.6.rst Lib/test/test_contextlib.py Lib/test/test_generators.py Lib/test/test_with.py Misc/NEWS Objects/genobject.c description: Issue #26136: Upgrade the generator_stop warning to DeprecationWarning Patch by Anish Shah. diff -r dc758f51b8f5 -r 73f89182bb4d Doc/whatsnew/3.6.rst --- a/Doc/whatsnew/3.6.rst Wed Feb 10 10:45:54 2016 +0000 +++ b/Doc/whatsnew/3.6.rst Wed Feb 10 04:40:48 2016 +0000 @@ -234,6 +234,14 @@ (Contributed by Rose Ames in :issue:`25791`.) +Deprecated Python behavior +-------------------------- + +* Raising the :exc:`StopIteration` exception inside a generator will now generate a + :exc:`DeprecationWarning`, and will trigger a :exc:`RuntimeError` in Python 3.7. + See :ref:`whatsnew-pep-479` for details. + + Removed ======= diff -r dc758f51b8f5 -r 73f89182bb4d Lib/test/test_contextlib.py --- a/Lib/test/test_contextlib.py Wed Feb 10 10:45:54 2016 +0000 +++ b/Lib/test/test_contextlib.py Wed Feb 10 04:40:48 2016 +0000 @@ -89,7 +89,7 @@ def woohoo(): yield try: - with self.assertWarnsRegex(PendingDeprecationWarning, + with self.assertWarnsRegex(DeprecationWarning, "StopIteration"): with woohoo(): raise stop_exc diff -r dc758f51b8f5 -r 73f89182bb4d Lib/test/test_generators.py --- a/Lib/test/test_generators.py Wed Feb 10 10:45:54 2016 +0000 +++ b/Lib/test/test_generators.py Wed Feb 10 04:40:48 2016 +0000 @@ -245,11 +245,11 @@ yield with self.assertRaises(StopIteration), \ - self.assertWarnsRegex(PendingDeprecationWarning, "StopIteration"): + self.assertWarnsRegex(DeprecationWarning, "StopIteration"): next(gen()) - with self.assertRaisesRegex(PendingDeprecationWarning, + with self.assertRaisesRegex(DeprecationWarning, "generator .* raised StopIteration"), \ warnings.catch_warnings(): @@ -268,7 +268,7 @@ g = f() self.assertEqual(next(g), 1) - with self.assertWarnsRegex(PendingDeprecationWarning, "StopIteration"): + with self.assertWarnsRegex(DeprecationWarning, "StopIteration"): with self.assertRaises(StopIteration): next(g) diff -r dc758f51b8f5 -r 73f89182bb4d Lib/test/test_with.py --- a/Lib/test/test_with.py Wed Feb 10 10:45:54 2016 +0000 +++ b/Lib/test/test_with.py Wed Feb 10 04:40:48 2016 +0000 @@ -454,7 +454,7 @@ with cm(): raise StopIteration("from with") - with self.assertWarnsRegex(PendingDeprecationWarning, "StopIteration"): + with self.assertWarnsRegex(DeprecationWarning, "StopIteration"): self.assertRaises(StopIteration, shouldThrow) def testRaisedStopIteration2(self): @@ -482,7 +482,7 @@ with cm(): raise next(iter([])) - with self.assertWarnsRegex(PendingDeprecationWarning, "StopIteration"): + with self.assertWarnsRegex(DeprecationWarning, "StopIteration"): self.assertRaises(StopIteration, shouldThrow) def testRaisedGeneratorExit1(self): diff -r dc758f51b8f5 -r 73f89182bb4d Misc/NEWS --- a/Misc/NEWS Wed Feb 10 10:45:54 2016 +0000 +++ b/Misc/NEWS Wed Feb 10 04:40:48 2016 +0000 @@ -10,6 +10,10 @@ Core and Builtins ----------------- +- Issue #26136: Upgrade the warning when a generator raises StopIteration + from PendingDeprecationWarning to DeprecationWarning. Patch by Anish + Shah. + - Issue #26204: The compiler now ignores all constant statements: bytes, str, int, float, complex, name constants (None, False, True), Ellipsis and ast.Constant; not only str and int. For example, ``1.0`` is now ignored diff -r dc758f51b8f5 -r 73f89182bb4d Objects/genobject.c --- a/Objects/genobject.c Wed Feb 10 10:45:54 2016 +0000 +++ b/Objects/genobject.c Wed Feb 10 04:40:48 2016 +0000 @@ -178,7 +178,7 @@ /* Pop the exception before issuing a warning. */ PyErr_Fetch(&exc, &val, &tb); - if (PyErr_WarnFormat(PyExc_PendingDeprecationWarning, 1, + if (PyErr_WarnFormat(PyExc_DeprecationWarning, 1, "generator '%.50S' raised StopIteration", gen->gi_qualname)) { /* Warning was converted to an error. */ /vadmium+py@gmail.com