https://github.com/python/cpython/commit/eda613438ffec0d7454f8f1345f6b9d9a6851652
commit: eda613438ffec0d7454f8f1345f6b9d9a6851652
branch: 3.13
author: Miss Islington (bot) <[email protected]>
committer: rhettinger <[email protected]>
date: 2025-07-25T08:48:28-06:00
summary:

[3.13] Fix Queue.shutdown docs for condition to unblock a join (gh-137088) 
(gh-137102)

files:
M Doc/library/asyncio-queue.rst
M Doc/library/queue.rst
M Lib/asyncio/queues.py
M Lib/queue.py

diff --git a/Doc/library/asyncio-queue.rst b/Doc/library/asyncio-queue.rst
index 963bc1fb82c12f..d481a1921d532b 100644
--- a/Doc/library/asyncio-queue.rst
+++ b/Doc/library/asyncio-queue.rst
@@ -120,9 +120,10 @@ Queue
       raise :exc:`QueueShutDown`.
 
       If *immediate* is true, the queue is terminated immediately.
-      The queue is drained to be completely empty.  All callers of
-      :meth:`~Queue.join` are unblocked regardless of the number
-      of unfinished tasks.  Blocked callers of :meth:`~Queue.get`
+      The queue is drained to be completely empty and the count
+      of unfinished tasks is reduced by the number of tasks drained.
+      If unfinished tasks is zero, callers of :meth:`~Queue.join`
+      are unblocked.  Also, blocked callers of :meth:`~Queue.get`
       are unblocked and will raise :exc:`QueueShutDown` because the
       queue is empty.
 
diff --git a/Doc/library/queue.rst b/Doc/library/queue.rst
index 6dcf06aab00295..1b75582f0cf45b 100644
--- a/Doc/library/queue.rst
+++ b/Doc/library/queue.rst
@@ -256,9 +256,10 @@ until empty or terminated immediately with a hard shutdown.
    raise :exc:`ShutDown`.
 
    If *immediate* is true, the queue is terminated immediately.
-   The queue is drained to be completely empty.  All callers of
-   :meth:`~Queue.join` are unblocked regardless of the number
-   of unfinished tasks.  Blocked callers of :meth:`~Queue.get`
+   The queue is drained to be completely empty and the count
+   of unfinished tasks is reduced by the number of tasks drained.
+   If unfinished tasks is zero, callers of :meth:`~Queue.join`
+   are unblocked.  Also, blocked callers of :meth:`~Queue.get`
    are unblocked and will raise :exc:`ShutDown` because the
    queue is empty.
 
diff --git a/Lib/asyncio/queues.py b/Lib/asyncio/queues.py
index e5d6f2e4b61e17..084fccaaff2ff7 100644
--- a/Lib/asyncio/queues.py
+++ b/Lib/asyncio/queues.py
@@ -253,9 +253,11 @@ def shutdown(self, immediate=False):
         By default, gets will only raise once the queue is empty. Set
         'immediate' to True to make gets raise immediately instead.
 
-        All blocked callers of put() and get() will be unblocked. If
-        'immediate', unblock callers of join() regardless of the
-        number of unfinished tasks.
+        All blocked callers of put() and get() will be unblocked.
+
+        If 'immediate', the queue is drained and unfinished tasks
+        is reduced by the number of drained tasks.  If unfinished tasks
+        is reduced to zero, callers of Queue.join are unblocked.
         """
         self._is_shutdown = True
         if immediate:
diff --git a/Lib/queue.py b/Lib/queue.py
index c90de8edc76c34..c0b359876543f7 100644
--- a/Lib/queue.py
+++ b/Lib/queue.py
@@ -236,9 +236,11 @@ def shutdown(self, immediate=False):
         By default, gets will only raise once the queue is empty. Set
         'immediate' to True to make gets raise immediately instead.
 
-        All blocked callers of put() and get() will be unblocked. If
-        'immediate', callers of join() are unblocked regardless of
-        the number of unfinished tasks.
+        All blocked callers of put() and get() will be unblocked.
+
+        If 'immediate', the queue is drained and unfinished tasks
+        is reduced by the number of drained tasks.  If unfinished tasks
+        is reduced to zero, callers of Queue.join are unblocked.
         '''
         with self.mutex:
             self.is_shutdown = True

_______________________________________________
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