https://github.com/python/cpython/commit/0d76dccc3b4376ba075a1737f58809e3d83aaaa3
commit: 0d76dccc3b4376ba075a1737f58809e3d83aaaa3
branch: main
author: Connor Denihan <[email protected]>
committer: ZeroIntensity <[email protected]>
date: 2025-06-26T09:27:25-04:00
summary:

gh-135110: Fix misleading `generator.close()` documentation (GH-135152)

The documentation incorrectly stated that generator.close() 'raises' a
GeneratorExit exception. This was misleading because the method doesn't
raise the exception to the caller - it sends the exception internally
to the generator and returns None.

files:
M Doc/howto/functional.rst
M Doc/reference/expressions.rst

diff --git a/Doc/howto/functional.rst b/Doc/howto/functional.rst
index b4f3463afee812..78e56e0c64fb10 100644
--- a/Doc/howto/functional.rst
+++ b/Doc/howto/functional.rst
@@ -602,7 +602,7 @@ generators:
   raise an exception inside the generator; the exception is raised by the
   ``yield`` expression where the generator's execution is paused.
 
-* :meth:`~generator.close` raises a :exc:`GeneratorExit` exception inside the
+* :meth:`~generator.close` sends a :exc:`GeneratorExit` exception to the
   generator to terminate the iteration.  On receiving this exception, the
   generator's code must either raise :exc:`GeneratorExit` or
   :exc:`StopIteration`; catching the exception and doing anything else is
diff --git a/Doc/reference/expressions.rst b/Doc/reference/expressions.rst
index 17f39aaf5f57cd..24544a055c3ed2 100644
--- a/Doc/reference/expressions.rst
+++ b/Doc/reference/expressions.rst
@@ -625,8 +625,10 @@ is already executing raises a :exc:`ValueError` exception.
 
 .. method:: generator.close()
 
-   Raises a :exc:`GeneratorExit` at the point where the generator function was
-   paused.  If the generator function catches the exception and returns a
+   Raises a :exc:`GeneratorExit` exception at the point where the generator
+   function was paused (equivalent to calling ``throw(GeneratorExit)``).
+   The exception is raised by the yield expression where the generator was 
paused.
+   If the generator function catches the exception and returns a
    value, this value is returned from :meth:`close`.  If the generator function
    is already closed, or raises :exc:`GeneratorExit` (by not catching the
    exception), :meth:`close` returns :const:`None`.  If the generator yields a

_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3//lists/python-checkins.python.org
Member address: [email protected]

Reply via email to