From 316eb58d17bedca476684171dee59ee8e5333e78 Mon Sep 17 00:00:00 2001 From: Richard Date: Wed, 22 Feb 2017 10:36:14 +0800 Subject: [PATCH] expose the unfinished tasks variable (#34) * expose the unfinished tasks variable * changed to property for consistency with Queue and added test cases * remove whitespace --- janus/__init__.py | 10 ++++++++++ tests/test_mixed.py | 14 ++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/janus/__init__.py b/janus/__init__.py index ba82a25..d05e6d5 100644 --- a/janus/__init__.py +++ b/janus/__init__.py @@ -219,6 +219,11 @@ def qsize(self): '''Return the approximate size of the queue (not reliable!).''' return self._parent._qsize() + @property + def unfinished_tasks(self): + '''Return the number of unfinished tasks.''' + return self._parent._unfinished_tasks + def empty(self): '''Return True if the queue is empty, False otherwise (not reliable!). @@ -341,6 +346,11 @@ def qsize(self): """Number of items in the queue.""" return self._parent._qsize() + @property + def unfinished_tasks(self): + '''Return the number of unfinished tasks.''' + return self._parent._unfinished_tasks + @property def maxsize(self): """Number of items allowed in the queue.""" diff --git a/tests/test_mixed.py b/tests/test_mixed.py index b849b46..dddad64 100644 --- a/tests/test_mixed.py +++ b/tests/test_mixed.py @@ -43,6 +43,20 @@ def test_maxsize_default(self): q = janus.Queue(loop=self.loop) self.assertIs(0, q.maxsize) + def test_unfinished(self): + q = janus.Queue(loop=self.loop) + self.assertEqual(q.sync_q.unfinished_tasks, 0) + self.assertEqual(q.async_q.unfinished_tasks, 0) + q.sync_q.put(1) + self.assertEqual(q.sync_q.unfinished_tasks, 1) + self.assertEqual(q.async_q.unfinished_tasks, 1) + q.sync_q.get() + self.assertEqual(q.sync_q.unfinished_tasks, 1) + self.assertEqual(q.async_q.unfinished_tasks, 1) + q.sync_q.task_done() + self.assertEqual(q.sync_q.unfinished_tasks, 0) + self.assertEqual(q.async_q.unfinished_tasks, 0) + def test_sync_put_async_get(self): q = janus.Queue(loop=self.loop)