cpython: ccfc13183fea (original) (raw)
Mercurial > cpython
changeset 91253:ccfc13183fea 3.4
Issue #21723: asyncio.Queue: support any type of number (ex: float) for the maximum size. Patch written by Vajrasky Kok. [#21723]
Victor Stinner victor.stinner@gmail.com | |
---|---|
date | Tue, 17 Jun 2014 23:36:21 +0200 |
parents | 385d4fea9f13 |
children | a2f115bfa513 2a8ad880f7bf |
files | Lib/asyncio/queues.py Lib/test/test_asyncio/test_queues.py Misc/NEWS |
diffstat | 3 files changed, 21 insertions(+), 3 deletions(-)[+] [-] Lib/asyncio/queues.py 6 Lib/test/test_asyncio/test_queues.py 15 Misc/NEWS 3 |
line wrap: on
line diff
--- a/Lib/asyncio/queues.py +++ b/Lib/asyncio/queues.py @@ -105,7 +105,7 @@ class Queue: if self._maxsize <= 0: return False else:
return self.qsize() == self._maxsize[](#l1.7)
return self.qsize() >= self._maxsize[](#l1.8)
@coroutine def put(self, item): @@ -126,7 +126,7 @@ class Queue: self._put(item) getter.set_result(self._get())
elif self._maxsize > 0 and self._maxsize == self.qsize():[](#l1.16)
elif self._maxsize > 0 and self._maxsize <= self.qsize():[](#l1.17) waiter = futures.Future(loop=self._loop)[](#l1.18)
self._putters.append((item, waiter)) @@ -152,7 +152,7 @@ class Queue: self._put(item) getter.set_result(self._get())
elif self._maxsize > 0 and self._maxsize == self.qsize():[](#l1.25)
elif self._maxsize > 0 and self._maxsize <= self.qsize():[](#l1.26) raise QueueFull[](#l1.27) else:[](#l1.28) self._put(item)[](#l1.29)
--- a/Lib/test/test_asyncio/test_queues.py +++ b/Lib/test/test_asyncio/test_queues.py @@ -339,6 +339,21 @@ class QueuePutTests(_QueueTestBase): q.put_nowait(1) self.assertRaises(asyncio.QueueFull, q.put_nowait, 2)
- def test_float_maxsize(self):
q = asyncio.Queue(maxsize=1.3, loop=self.loop)[](#l2.8)
q.put_nowait(1)[](#l2.9)
q.put_nowait(2)[](#l2.10)
self.assertTrue(q.full())[](#l2.11)
self.assertRaises(asyncio.QueueFull, q.put_nowait, 3)[](#l2.12)
q = asyncio.Queue(maxsize=1.3, loop=self.loop)[](#l2.14)
@asyncio.coroutine[](#l2.15)
def queue_put():[](#l2.16)
yield from q.put(1)[](#l2.17)
yield from q.put(2)[](#l2.18)
self.assertTrue(q.full())[](#l2.19)
self.loop.run_until_complete(queue_put())[](#l2.20)
+ def test_put_cancelled(self): q = asyncio.Queue(loop=self.loop)
--- a/Misc/NEWS +++ b/Misc/NEWS @@ -27,6 +27,9 @@ Core and Builtins Library ------- +- Issue #21723: asyncio.Queue: support any type of number (ex: float) for the