]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.13] gh-135110: Fix misleading `generator.close()` documentation (GH-135152) (GH...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Thu, 26 Jun 2025 13:34:11 +0000 (15:34 +0200)
committerGitHub <noreply@github.com>
Thu, 26 Jun 2025 13:34:11 +0000 (13:34 +0000)
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.
(cherry picked from commit 0d76dccc3b4376ba075a1737f58809e3d83aaaa3)

Co-authored-by: Connor Denihan <188690869+cdenihan@users.noreply.github.com>
Doc/howto/functional.rst
Doc/reference/expressions.rst

index 1f0608fb0fc53f02fd8c267f3ca87c14c3a7a803..aff651ffc2b91aa25b3f166a5f5becdb7b820b7d 100644 (file)
@@ -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
index 55bae3df25e49538074be97a17d4540e379030b7..d88134b0edbcad64301ade29b28e479727250cdb 100644 (file)
@@ -627,8 +627,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