summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Panter <vadmium+py@gmail.com>2016-02-10 04:40:48 (GMT)
committerMartin Panter <vadmium+py@gmail.com>2016-02-10 04:40:48 (GMT)
commit7e3a91a5fc056f72c93f015bb9f4f22aef9e72fb (patch)
tree2d71aaeaad3d6536f20338811d806976577ec7bf
parentb0cb42dfdb422495fb0c3a4374f2fa010f56a5ac (diff)
downloadcpython-7e3a91a5fc056f72c93f015bb9f4f22aef9e72fb.zip
cpython-7e3a91a5fc056f72c93f015bb9f4f22aef9e72fb.tar.gz
cpython-7e3a91a5fc056f72c93f015bb9f4f22aef9e72fb.tar.bz2
Issue #26136: Upgrade the generator_stop warning to DeprecationWarning
Patch by Anish Shah.
-rw-r--r--Doc/whatsnew/3.6.rst8
-rw-r--r--Lib/test/test_contextlib.py2
-rw-r--r--Lib/test/test_generators.py6
-rw-r--r--Lib/test/test_with.py4
-rw-r--r--Misc/NEWS4
-rw-r--r--Objects/genobject.c2
6 files changed, 19 insertions, 7 deletions
diff --git a/Doc/whatsnew/3.6.rst b/Doc/whatsnew/3.6.rst
index 87199df..3822d01 100644
--- a/Doc/whatsnew/3.6.rst
+++ b/Doc/whatsnew/3.6.rst
@@ -234,6 +234,14 @@ Deprecated features
(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 --git a/Lib/test/test_contextlib.py b/Lib/test/test_contextlib.py
index 30a6377..04fc875 100644
--- a/Lib/test/test_contextlib.py
+++ b/Lib/test/test_contextlib.py
@@ -89,7 +89,7 @@ class ContextManagerTestCase(unittest.TestCase):
def woohoo():
yield
try:
- with self.assertWarnsRegex(PendingDeprecationWarning,
+ with self.assertWarnsRegex(DeprecationWarning,
"StopIteration"):
with woohoo():
raise stop_exc
diff --git a/Lib/test/test_generators.py b/Lib/test/test_generators.py
index b92d5ce..0389b48 100644
--- a/Lib/test/test_generators.py
+++ b/Lib/test/test_generators.py
@@ -245,11 +245,11 @@ class ExceptionTest(unittest.TestCase):
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 @@ class ExceptionTest(unittest.TestCase):
g = f()
self.assertEqual(next(g), 1)
- with self.assertWarnsRegex(PendingDeprecationWarning, "StopIteration"):
+ with self.assertWarnsRegex(DeprecationWarning, "StopIteration"):
with self.assertRaises(StopIteration):
next(g)
diff --git a/Lib/test/test_with.py b/Lib/test/test_with.py
index e8d789b..3815062 100644
--- a/Lib/test/test_with.py
+++ b/Lib/test/test_with.py
@@ -454,7 +454,7 @@ class ExceptionalTestCase(ContextmanagerAssertionMixin, unittest.TestCase):
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 @@ class ExceptionalTestCase(ContextmanagerAssertionMixin, unittest.TestCase):
with cm():
raise next(iter([]))
- with self.assertWarnsRegex(PendingDeprecationWarning, "StopIteration"):
+ with self.assertWarnsRegex(DeprecationWarning, "StopIteration"):
self.assertRaises(StopIteration, shouldThrow)
def testRaisedGeneratorExit1(self):
diff --git a/Misc/NEWS b/Misc/NEWS
index 6ce7e2d..7912790 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -10,6 +10,10 @@ Release date: tba
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 --git a/Objects/genobject.c b/Objects/genobject.c
index 81a80b7..8ab7cf1 100644
--- a/Objects/genobject.c
+++ b/Objects/genobject.c
@@ -178,7 +178,7 @@ gen_send_ex(PyGenObject *gen, PyObject *arg, int exc)
/* 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. */