changeset: 91254:a2f115bfa513 parent: 91252:3aeca1fd4c0e parent: 91253:ccfc13183fea user: Victor Stinner date: Tue Jun 17 23:37:35 2014 +0200 files: Misc/NEWS description: (Merge 3.4) Issue #21723: asyncio.Queue: support any type of number (ex: float) for the maximum size. Patch written by Vajrasky Kok. diff -r 3aeca1fd4c0e -r a2f115bfa513 Lib/asyncio/queues.py --- a/Lib/asyncio/queues.py Tue Jun 17 23:31:25 2014 +0200 +++ b/Lib/asyncio/queues.py Tue Jun 17 23:37:35 2014 +0200 @@ -105,7 +105,7 @@ if self._maxsize <= 0: return False else: - return self.qsize() == self._maxsize + return self.qsize() >= self._maxsize @coroutine def put(self, item): @@ -126,7 +126,7 @@ self._put(item) getter.set_result(self._get()) - elif self._maxsize > 0 and self._maxsize == self.qsize(): + elif self._maxsize > 0 and self._maxsize <= self.qsize(): waiter = futures.Future(loop=self._loop) self._putters.append((item, waiter)) @@ -152,7 +152,7 @@ self._put(item) getter.set_result(self._get()) - elif self._maxsize > 0 and self._maxsize == self.qsize(): + elif self._maxsize > 0 and self._maxsize <= self.qsize(): raise QueueFull else: self._put(item) diff -r 3aeca1fd4c0e -r a2f115bfa513 Lib/test/test_asyncio/test_queues.py --- a/Lib/test/test_asyncio/test_queues.py Tue Jun 17 23:31:25 2014 +0200 +++ b/Lib/test/test_asyncio/test_queues.py Tue Jun 17 23:37:35 2014 +0200 @@ -339,6 +339,21 @@ 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) + q.put_nowait(1) + q.put_nowait(2) + self.assertTrue(q.full()) + self.assertRaises(asyncio.QueueFull, q.put_nowait, 3) + + q = asyncio.Queue(maxsize=1.3, loop=self.loop) + @asyncio.coroutine + def queue_put(): + yield from q.put(1) + yield from q.put(2) + self.assertTrue(q.full()) + self.loop.run_until_complete(queue_put()) + def test_put_cancelled(self): q = asyncio.Queue(loop=self.loop) diff -r 3aeca1fd4c0e -r a2f115bfa513 Misc/NEWS --- a/Misc/NEWS Tue Jun 17 23:31:25 2014 +0200 +++ b/Misc/NEWS Tue Jun 17 23:37:35 2014 +0200 @@ -103,6 +103,9 @@ Library ------- +- Issue #21723: asyncio.Queue: support any type of number (ex: float) for the + maximum size. Patch written by Vajrasky Kok. + - Issue #21711: support for "site-python" directories has now been removed from the site module (it was deprecated in 3.4).