File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -105,7 +105,7 @@ def full(self):
105105 if self ._maxsize <= 0 :
106106 return False
107107 else :
108- return self .qsize () = = self ._maxsize
108+ return self .qsize () > = self ._maxsize
109109
110110 @coroutine
111111 def put (self , item ):
@@ -126,7 +126,7 @@ def put(self, item):
126126 self ._put (item )
127127 getter .set_result (self ._get ())
128128
129- elif self ._maxsize > 0 and self ._maxsize = = self .qsize ():
129+ elif self ._maxsize > 0 and self ._maxsize < = self .qsize ():
130130 waiter = futures .Future (loop = self ._loop )
131131
132132 self ._putters .append ((item , waiter ))
@@ -152,7 +152,7 @@ def put_nowait(self, item):
152152 self ._put (item )
153153 getter .set_result (self ._get ())
154154
155- elif self ._maxsize > 0 and self ._maxsize = = self .qsize ():
155+ elif self ._maxsize > 0 and self ._maxsize < = self .qsize ():
156156 raise QueueFull
157157 else :
158158 self ._put (item )
Original file line number Diff line number Diff line change @@ -339,6 +339,21 @@ def test_nonblocking_put_exception(self):
339339 q .put_nowait (1 )
340340 self .assertRaises (asyncio .QueueFull , q .put_nowait , 2 )
341341
342+ def test_float_maxsize (self ):
343+ q = asyncio .Queue (maxsize = 1.3 , loop = self .loop )
344+ q .put_nowait (1 )
345+ q .put_nowait (2 )
346+ self .assertTrue (q .full ())
347+ self .assertRaises (asyncio .QueueFull , q .put_nowait , 3 )
348+
349+ q = asyncio .Queue (maxsize = 1.3 , loop = self .loop )
350+ @asyncio .coroutine
351+ def queue_put ():
352+ yield from q .put (1 )
353+ yield from q .put (2 )
354+ self .assertTrue (q .full ())
355+ self .loop .run_until_complete (queue_put ())
356+
342357 def test_put_cancelled (self ):
343358 q = asyncio .Queue (loop = self .loop )
344359
Original file line number Diff line number Diff line change @@ -27,6 +27,9 @@ Core and Builtins
2727Library
2828-------
2929
30+ - Issue #21723: asyncio.Queue: support any type of number (ex: float) for the
31+ maximum size. Patch written by Vajrasky Kok.
32+
3033- Issue #21326: Add a new is_closed() method to asyncio.BaseEventLoop.
3134 run_forever() and run_until_complete() methods of asyncio.BaseEventLoop now
3235 raise an exception if the event loop was closed.
You can’t perform that action at this time.
0 commit comments