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]