queutils 0.8.2__tar.gz → 0.8.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. {queutils-0.8.2 → queutils-0.8.3}/PKG-INFO +12 -4
  2. {queutils-0.8.2 → queutils-0.8.3}/README.md +11 -3
  3. {queutils-0.8.2 → queutils-0.8.3}/pyproject.toml +1 -1
  4. {queutils-0.8.2 → queutils-0.8.3}/.github/workflows/dependency-review.yml +0 -0
  5. {queutils-0.8.2 → queutils-0.8.3}/.github/workflows/python-package.yml +0 -0
  6. {queutils-0.8.2 → queutils-0.8.3}/.github/workflows/python-publish.yml +0 -0
  7. {queutils-0.8.2 → queutils-0.8.3}/.gitignore +0 -0
  8. {queutils-0.8.2 → queutils-0.8.3}/LICENSE +0 -0
  9. {queutils-0.8.2 → queutils-0.8.3}/codecov.yml +0 -0
  10. {queutils-0.8.2 → queutils-0.8.3}/demos/asyncqueue_demo.py +0 -0
  11. {queutils-0.8.2 → queutils-0.8.3}/demos/filequeue_demo.py +0 -0
  12. {queutils-0.8.2 → queutils-0.8.3}/demos/iterablequeue_demo.py +0 -0
  13. {queutils-0.8.2 → queutils-0.8.3}/docs/asyncqueue.md +0 -0
  14. {queutils-0.8.2 → queutils-0.8.3}/docs/filequeue.md +0 -0
  15. {queutils-0.8.2 → queutils-0.8.3}/docs/iterablequeue.md +0 -0
  16. {queutils-0.8.2 → queutils-0.8.3}/src/queutils/__init__.py +0 -0
  17. {queutils-0.8.2 → queutils-0.8.3}/src/queutils/asyncqueue.py +0 -0
  18. {queutils-0.8.2 → queutils-0.8.3}/src/queutils/countable.py +0 -0
  19. {queutils-0.8.2 → queutils-0.8.3}/src/queutils/filequeue.py +0 -0
  20. {queutils-0.8.2 → queutils-0.8.3}/src/queutils/iterablequeue.py +0 -0
  21. {queutils-0.8.2 → queutils-0.8.3}/tests/test_asyncqueue.py +0 -0
  22. {queutils-0.8.2 → queutils-0.8.3}/tests/test_demos.py +0 -0
  23. {queutils-0.8.2 → queutils-0.8.3}/tests/test_filequeue.py +0 -0
  24. {queutils-0.8.2 → queutils-0.8.3}/tests/test_iterablequeue.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: queutils
3
- Version: 0.8.2
3
+ Version: 0.8.3
4
4
  Summary: Handy Python Queue utilies
5
5
  Project-URL: Homepage, https://github.com/Jylpah/queutils
6
6
  Project-URL: Bug Tracker, https://github.com/Jylpah/queutils/issues
@@ -31,7 +31,7 @@ Description-Content-Type: text/markdown
31
31
 
32
32
  # Queutils
33
33
 
34
- Queutils *[Queue Utils]* is a package if handy Python queue classes:
34
+ Queutils *[Queue Utils]* is a package of handy Python queue classes:
35
35
 
36
36
  - **[AsyncQueue](docs/asyncqueue.md)** - An `async` wrapper for non-async `queue.Queue`
37
37
  - **[IterableQueue](docs/iterablequeue.md)** - An `AsyncIterable` queue that terminates when finished
@@ -41,7 +41,7 @@ Queutils *[Queue Utils]* is a package if handy Python queue classes:
41
41
  # AsyncQueue
42
42
 
43
43
  [`AsyncQueue`](docs/asyncqueue.md) is a async wrapper for non-async `queue.Queue`. It can be used to create
44
- an `asyncio.Queue` compatible out of a (non-async) `multiprocessing.Queue`. This is handy to have `async` code running in `multiprocessing` processes and yet be able to communicate with the parent via (non-async) managed `multiprocessing.Queue` queue.
44
+ an `asyncio.Queue` compatible interface to a (non-async) managed `multiprocessing.Queue` and thus enable `async` code in parent/child processes to communicate over `multiprocessing.Queue` as it were an `asyncio.Queue`.
45
45
 
46
46
  ## Features
47
47
 
@@ -54,6 +54,12 @@ an `asyncio.Queue` compatible out of a (non-async) `multiprocessing.Queue`. This
54
54
 
55
55
  [`IterableQueue`](docs/iterablequeue.md) is an `asyncio.Queue` subclass that is `AsyncIterable[T]` i.e. it can be
56
56
  iterated in `async for` loop. `IterableQueue` terminates automatically when the queue has been filled and emptied.
57
+
58
+ The `IterableQueue` requires "producers" (functions adding items to the queue) to register themselves and it
59
+ keeps count of registered producers which are "finished" adding items to the queue. Once all the registered
60
+ producers are "finished", the queue enters into "filled" state and no new items can be added. Once an
61
+ "filled" queue is emptied, the queue becomes "done" and all new `get()` calls to the queue will
62
+ `raise QueueDone` exception.
57
63
 
58
64
  ## Features
59
65
 
@@ -68,7 +74,9 @@ iterated in `async for` loop. `IterableQueue` terminates automatically when the
68
74
 
69
75
  # FileQueue
70
76
 
71
- [`FileQueue`](docs/filequeue.md) builds a queue (`IterableQueue[pathlib.Path]`) of the matching files found based on search parameters given. It can search both list of files or directories or mixed. Async method `FileQueue.mk_queue()` searches subdirectories of given directories.
77
+ [`FileQueue`](docs/filequeue.md) builds a queue (`IterableQueue[pathlib.Path]`) of the matching
78
+ files found based on search parameters given. It can search both list of files or directories or
79
+ mixed. Async method `FileQueue.mk_queue()` searches subdirectories of given directories.
72
80
 
73
81
  ## Features
74
82
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  # Queutils
4
4
 
5
- Queutils *[Queue Utils]* is a package if handy Python queue classes:
5
+ Queutils *[Queue Utils]* is a package of handy Python queue classes:
6
6
 
7
7
  - **[AsyncQueue](docs/asyncqueue.md)** - An `async` wrapper for non-async `queue.Queue`
8
8
  - **[IterableQueue](docs/iterablequeue.md)** - An `AsyncIterable` queue that terminates when finished
@@ -12,7 +12,7 @@ Queutils *[Queue Utils]* is a package if handy Python queue classes:
12
12
  # AsyncQueue
13
13
 
14
14
  [`AsyncQueue`](docs/asyncqueue.md) is a async wrapper for non-async `queue.Queue`. It can be used to create
15
- an `asyncio.Queue` compatible out of a (non-async) `multiprocessing.Queue`. This is handy to have `async` code running in `multiprocessing` processes and yet be able to communicate with the parent via (non-async) managed `multiprocessing.Queue` queue.
15
+ an `asyncio.Queue` compatible interface to a (non-async) managed `multiprocessing.Queue` and thus enable `async` code in parent/child processes to communicate over `multiprocessing.Queue` as it were an `asyncio.Queue`.
16
16
 
17
17
  ## Features
18
18
 
@@ -25,6 +25,12 @@ an `asyncio.Queue` compatible out of a (non-async) `multiprocessing.Queue`. This
25
25
 
26
26
  [`IterableQueue`](docs/iterablequeue.md) is an `asyncio.Queue` subclass that is `AsyncIterable[T]` i.e. it can be
27
27
  iterated in `async for` loop. `IterableQueue` terminates automatically when the queue has been filled and emptied.
28
+
29
+ The `IterableQueue` requires "producers" (functions adding items to the queue) to register themselves and it
30
+ keeps count of registered producers which are "finished" adding items to the queue. Once all the registered
31
+ producers are "finished", the queue enters into "filled" state and no new items can be added. Once an
32
+ "filled" queue is emptied, the queue becomes "done" and all new `get()` calls to the queue will
33
+ `raise QueueDone` exception.
28
34
 
29
35
  ## Features
30
36
 
@@ -39,7 +45,9 @@ iterated in `async for` loop. `IterableQueue` terminates automatically when the
39
45
 
40
46
  # FileQueue
41
47
 
42
- [`FileQueue`](docs/filequeue.md) builds a queue (`IterableQueue[pathlib.Path]`) of the matching files found based on search parameters given. It can search both list of files or directories or mixed. Async method `FileQueue.mk_queue()` searches subdirectories of given directories.
48
+ [`FileQueue`](docs/filequeue.md) builds a queue (`IterableQueue[pathlib.Path]`) of the matching
49
+ files found based on search parameters given. It can search both list of files or directories or
50
+ mixed. Async method `FileQueue.mk_queue()` searches subdirectories of given directories.
43
51
 
44
52
  ## Features
45
53
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "queutils"
3
- version = "0.8.2"
3
+ version = "0.8.3"
4
4
  authors = [{ name = "Jylpah", email = "jylpah@gmail.com" }]
5
5
  description = "Handy Python Queue utilies"
6
6
  readme = "README.md"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes