queutils 0.8.1__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.3/.github/workflows/dependency-review.yml +39 -0
  2. queutils-0.8.3/.github/workflows/python-publish.yml +39 -0
  3. {queutils-0.8.1 → queutils-0.8.3}/PKG-INFO +16 -7
  4. {queutils-0.8.1 → queutils-0.8.3}/README.md +15 -6
  5. {queutils-0.8.1 → queutils-0.8.3}/pyproject.toml +1 -1
  6. {queutils-0.8.1 → queutils-0.8.3}/.github/workflows/python-package.yml +0 -0
  7. {queutils-0.8.1 → queutils-0.8.3}/.gitignore +0 -0
  8. {queutils-0.8.1 → queutils-0.8.3}/LICENSE +0 -0
  9. {queutils-0.8.1 → queutils-0.8.3}/codecov.yml +0 -0
  10. {queutils-0.8.1 → queutils-0.8.3}/demos/asyncqueue_demo.py +0 -0
  11. {queutils-0.8.1 → queutils-0.8.3}/demos/filequeue_demo.py +0 -0
  12. {queutils-0.8.1 → queutils-0.8.3}/demos/iterablequeue_demo.py +0 -0
  13. {queutils-0.8.1 → queutils-0.8.3}/docs/asyncqueue.md +0 -0
  14. {queutils-0.8.1 → queutils-0.8.3}/docs/filequeue.md +0 -0
  15. {queutils-0.8.1 → queutils-0.8.3}/docs/iterablequeue.md +0 -0
  16. {queutils-0.8.1 → queutils-0.8.3}/src/queutils/__init__.py +0 -0
  17. {queutils-0.8.1 → queutils-0.8.3}/src/queutils/asyncqueue.py +0 -0
  18. {queutils-0.8.1 → queutils-0.8.3}/src/queutils/countable.py +0 -0
  19. {queutils-0.8.1 → queutils-0.8.3}/src/queutils/filequeue.py +0 -0
  20. {queutils-0.8.1 → queutils-0.8.3}/src/queutils/iterablequeue.py +0 -0
  21. {queutils-0.8.1 → queutils-0.8.3}/tests/test_asyncqueue.py +0 -0
  22. {queutils-0.8.1 → queutils-0.8.3}/tests/test_demos.py +0 -0
  23. {queutils-0.8.1 → queutils-0.8.3}/tests/test_filequeue.py +0 -0
  24. {queutils-0.8.1 → queutils-0.8.3}/tests/test_iterablequeue.py +0 -0
@@ -0,0 +1,39 @@
1
+ # Dependency Review Action
2
+ #
3
+ # This Action will scan dependency manifest files that change as part of a Pull Request,
4
+ # surfacing known-vulnerable versions of the packages declared or updated in the PR.
5
+ # Once installed, if the workflow run is marked as required, PRs introducing known-vulnerable
6
+ # packages will be blocked from merging.
7
+ #
8
+ # Source repository: https://github.com/actions/dependency-review-action
9
+ # Public documentation: https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review#dependency-review-enforcement
10
+ name: 'Dependency review'
11
+ on:
12
+ pull_request:
13
+ branches: [ "main" ]
14
+
15
+ # If using a dependency submission action in this workflow this permission will need to be set to:
16
+ #
17
+ # permissions:
18
+ # contents: write
19
+ #
20
+ # https://docs.github.com/en/enterprise-cloud@latest/code-security/supply-chain-security/understanding-your-software-supply-chain/using-the-dependency-submission-api
21
+ permissions:
22
+ contents: read
23
+ # Write permissions for pull-requests are required for using the `comment-summary-in-pr` option, comment out if you aren't using this option
24
+ pull-requests: write
25
+
26
+ jobs:
27
+ dependency-review:
28
+ runs-on: ubuntu-latest
29
+ steps:
30
+ - name: 'Checkout repository'
31
+ uses: actions/checkout@v4
32
+ - name: 'Dependency Review'
33
+ uses: actions/dependency-review-action@v4
34
+ # Commonly enabled options, see https://github.com/actions/dependency-review-action#configuration-options for all available options.
35
+ with:
36
+ comment-summary-in-pr: always
37
+ # fail-on-severity: moderate
38
+ # deny-licenses: GPL-1.0-or-later, LGPL-2.0-or-later
39
+ # retry-on-snapshot-warnings: true
@@ -0,0 +1,39 @@
1
+ # This workflow will upload a Python Package using Twine when a release is created
2
+ # For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python#publishing-to-package-registries
3
+
4
+ # This workflow uses actions that are not certified by GitHub.
5
+ # They are provided by a third-party and are governed by
6
+ # separate terms of service, privacy policy, and support
7
+ # documentation.
8
+
9
+ name: Upload Python Package
10
+
11
+ on:
12
+ release:
13
+ types: [published]
14
+
15
+ permissions:
16
+ contents: read
17
+
18
+ jobs:
19
+ deploy:
20
+
21
+ runs-on: ubuntu-latest
22
+
23
+ steps:
24
+ - uses: actions/checkout@v4
25
+ - name: Set up Python
26
+ uses: actions/setup-python@v5
27
+ with:
28
+ python-version: '3.11'
29
+ - name: Install dependencies
30
+ run: |
31
+ python -m pip install --upgrade pip
32
+ pip install build
33
+ - name: Build package
34
+ run: python -m build
35
+ - name: Publish package
36
+ uses: pypa/gh-action-pypi-publish@27b31702a0e7fc50959f5ad993c78deac1bdfc29
37
+ with:
38
+ user: __token__
39
+ password: ${{ secrets.PYPI_API_TOKEN }}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: queutils
3
- Version: 0.8.1
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,16 +31,17 @@ Description-Content-Type: text/markdown
31
31
 
32
32
  # Queutils
33
33
 
34
- Queutils *[Queue Utils]* is a package if handy Python queue classes:
35
- - **[AsyncQueue](docs/asyncqueue.md)** - `async` wrapper for `queue.Queue`
36
- - **[IterableQueue](docs/iterablequeue.md)** - `AsyncIterable` queue
37
- - **[FileQueue](docs/filequeue.md)** - builds a queue of filenames from input
34
+ Queutils *[Queue Utils]* is a package of handy Python queue classes:
35
+
36
+ - **[AsyncQueue](docs/asyncqueue.md)** - An `async` wrapper for non-async `queue.Queue`
37
+ - **[IterableQueue](docs/iterablequeue.md)** - An `AsyncIterable` queue that terminates when finished
38
+ - **[FileQueue](docs/filequeue.md)** - Builds an iterable queue of filenames from files/dirs given as input
38
39
 
39
40
 
40
41
  # AsyncQueue
41
42
 
42
43
  [`AsyncQueue`](docs/asyncqueue.md) is a async wrapper for non-async `queue.Queue`. It can be used to create
43
- 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`.
44
45
 
45
46
  ## Features
46
47
 
@@ -53,6 +54,12 @@ an `asyncio.Queue` compatible out of a (non-async) `multiprocessing.Queue`. This
53
54
 
54
55
  [`IterableQueue`](docs/iterablequeue.md) is an `asyncio.Queue` subclass that is `AsyncIterable[T]` i.e. it can be
55
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.
56
63
 
57
64
  ## Features
58
65
 
@@ -67,7 +74,9 @@ iterated in `async for` loop. `IterableQueue` terminates automatically when the
67
74
 
68
75
  # FileQueue
69
76
 
70
- [`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.
71
80
 
72
81
  ## Features
73
82
 
@@ -2,16 +2,17 @@
2
2
 
3
3
  # Queutils
4
4
 
5
- Queutils *[Queue Utils]* is a package if handy Python queue classes:
6
- - **[AsyncQueue](docs/asyncqueue.md)** - `async` wrapper for `queue.Queue`
7
- - **[IterableQueue](docs/iterablequeue.md)** - `AsyncIterable` queue
8
- - **[FileQueue](docs/filequeue.md)** - builds a queue of filenames from input
5
+ Queutils *[Queue Utils]* is a package of handy Python queue classes:
6
+
7
+ - **[AsyncQueue](docs/asyncqueue.md)** - An `async` wrapper for non-async `queue.Queue`
8
+ - **[IterableQueue](docs/iterablequeue.md)** - An `AsyncIterable` queue that terminates when finished
9
+ - **[FileQueue](docs/filequeue.md)** - Builds an iterable queue of filenames from files/dirs given as input
9
10
 
10
11
 
11
12
  # AsyncQueue
12
13
 
13
14
  [`AsyncQueue`](docs/asyncqueue.md) is a async wrapper for non-async `queue.Queue`. It can be used to create
14
- 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`.
15
16
 
16
17
  ## Features
17
18
 
@@ -24,6 +25,12 @@ an `asyncio.Queue` compatible out of a (non-async) `multiprocessing.Queue`. This
24
25
 
25
26
  [`IterableQueue`](docs/iterablequeue.md) is an `asyncio.Queue` subclass that is `AsyncIterable[T]` i.e. it can be
26
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.
27
34
 
28
35
  ## Features
29
36
 
@@ -38,7 +45,9 @@ iterated in `async for` loop. `IterableQueue` terminates automatically when the
38
45
 
39
46
  # FileQueue
40
47
 
41
- [`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.
42
51
 
43
52
  ## Features
44
53
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "queutils"
3
- version = "0.8.1"
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