django-queuebie 0.3.4__tar.gz → 0.3.6__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.
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/.ambient-package-update/metadata.py +1 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/.github/workflows/ci.yml +11 -9
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/.gitignore +4 -1
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/.pre-commit-config.yaml +6 -6
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/.readthedocs.yaml +1 -1
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/CHANGES.md +6 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/CONTRIBUTING.md +4 -6
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/PKG-INFO +70 -49
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/README.md +37 -25
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/docs/conf.py +0 -1
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/manage.py +1 -1
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/pyproject.toml +50 -40
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/queuebie/__init__.py +1 -1
- django_queuebie-0.3.6/scripts/unix/install_requirements.sh +3 -0
- django_queuebie-0.3.6/scripts/unix/publish_to_pypi.sh +4 -0
- django_queuebie-0.3.6/scripts/windows/install_requirements.ps1 +2 -0
- django_queuebie-0.3.6/scripts/windows/publish_to_pypi.ps1 +3 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/tests/test_database_blocker.py +1 -1
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/tests/test_registry.py +4 -3
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/tests/test_runner.py +3 -4
- django_queuebie-0.3.6/uv.lock +997 -0
- django_queuebie-0.3.4/scripts/unix/install_requirements.sh +0 -4
- django_queuebie-0.3.4/scripts/unix/publish_to_pypi.sh +0 -3
- django_queuebie-0.3.4/scripts/windows/install_requirements.ps1 +0 -3
- django_queuebie-0.3.4/scripts/windows/publish_to_pypi.ps1 +0 -2
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/.ambient-package-update/templates/snippets/content.tpl +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/.ambient-package-update/templates/snippets/tagline.tpl +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/.editorconfig +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/LICENSE +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/LICENSE.md +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/MANIFEST.in +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/SECURITY.md +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/docs/Makefile +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/docs/features/changelog.rst +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/docs/features/getting-started.md +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/docs/features/introduction.md +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/docs/features/motivation.md +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/docs/features/settings.md +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/docs/features/setup.md +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/docs/index.rst +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/docs/make.bat +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/queuebie/apps.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/queuebie/database_blocker.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/queuebie/exceptions.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/queuebie/logger.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/queuebie/management/__init__.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/queuebie/management/commands/__init__.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/queuebie/management/commands/clear_queuebie_registry.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/queuebie/messages.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/queuebie/registry.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/queuebie/runner.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/queuebie/settings.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/queuebie/utils.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/settings.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/testapp/__init__.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/testapp/handlers/__init__.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/testapp/handlers/commands/__init__.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/testapp/handlers/commands/testapp.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/testapp/handlers/events/__init__.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/testapp/handlers/events/testapp.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/testapp/messages/__init__.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/testapp/messages/commands/__init__.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/testapp/messages/commands/my_commands.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/testapp/messages/commands/other_commands.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/testapp/messages/events/__init__.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/testapp/messages/events/my_events.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/testapp/urls.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/tests/__init__.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/tests/helpers/__init__.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/tests/helpers/commands.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/tests/helpers/events.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/tests/management_commands/__init__.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/tests/management_commands/test_clear_queuebie_registry.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/tests/test_apps.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/tests/test_exceptions.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/tests/test_logger.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/tests/test_messages.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/tests/test_settings.py +0 -0
- {django_queuebie-0.3.4 → django_queuebie-0.3.6}/tests/test_utils.py +0 -0
|
@@ -27,6 +27,7 @@ METADATA = PackageMetadata(
|
|
|
27
27
|
development_status=DEPLOYMENT_STATUS_BETA,
|
|
28
28
|
has_migrations=False,
|
|
29
29
|
main_branch="main",
|
|
30
|
+
claim="A simple and synchronous message queue for commands and events for Django",
|
|
30
31
|
readme_content=ReadmeContent(uses_internationalisation=True),
|
|
31
32
|
dependencies=[
|
|
32
33
|
f"Django>={SUPPORTED_DJANGO_VERSIONS[0]}",
|
|
@@ -12,10 +12,10 @@ jobs:
|
|
|
12
12
|
steps:
|
|
13
13
|
- uses: actions/checkout@v4
|
|
14
14
|
|
|
15
|
-
- name: Set up Python 3.
|
|
15
|
+
- name: Set up Python 3.13
|
|
16
16
|
uses: actions/setup-python@v5
|
|
17
17
|
with:
|
|
18
|
-
python-version: "3.
|
|
18
|
+
python-version: "3.13"
|
|
19
19
|
|
|
20
20
|
- name: Install required packages
|
|
21
21
|
run: pip install pre-commit
|
|
@@ -23,7 +23,6 @@ jobs:
|
|
|
23
23
|
- name: Run pre-commit hooks
|
|
24
24
|
run: pre-commit run --all-files
|
|
25
25
|
|
|
26
|
-
|
|
27
26
|
tests:
|
|
28
27
|
name: Python ${{ matrix.python-version }}, django ${{ matrix.django-version }}
|
|
29
28
|
runs-on: ubuntu-24.04
|
|
@@ -46,8 +45,10 @@ jobs:
|
|
|
46
45
|
uses: actions/setup-python@v5
|
|
47
46
|
with:
|
|
48
47
|
python-version: ${{ matrix.python-version }}
|
|
48
|
+
- name: Install uv
|
|
49
|
+
uses: astral-sh/setup-uv@v5
|
|
49
50
|
- name: Install tox
|
|
50
|
-
run: pip install tox
|
|
51
|
+
run: uv pip install --system tox tox-uv
|
|
51
52
|
- name: Run Tests
|
|
52
53
|
env:
|
|
53
54
|
TOXENV: django${{ matrix.django-version }}
|
|
@@ -56,7 +57,7 @@ jobs:
|
|
|
56
57
|
uses: actions/upload-artifact@v4
|
|
57
58
|
with:
|
|
58
59
|
name: coverage-data-${{ matrix.python-version }}-${{ matrix.django-version }}
|
|
59
|
-
path: '${{ github.workspace }}/.coverage
|
|
60
|
+
path: '${{ github.workspace }}/.coverage'
|
|
60
61
|
include-hidden-files: true
|
|
61
62
|
if-no-files-found: error
|
|
62
63
|
|
|
@@ -69,7 +70,7 @@ jobs:
|
|
|
69
70
|
|
|
70
71
|
- uses: actions/setup-python@v5
|
|
71
72
|
with:
|
|
72
|
-
python-version: '3.
|
|
73
|
+
python-version: '3.13'
|
|
73
74
|
|
|
74
75
|
- name: Install dependencies
|
|
75
76
|
run: python -m pip install --upgrade coverage[toml]
|
|
@@ -77,13 +78,14 @@ jobs:
|
|
|
77
78
|
- name: Download data
|
|
78
79
|
uses: actions/download-artifact@v4
|
|
79
80
|
with:
|
|
80
|
-
path: ${{ github.workspace }}
|
|
81
|
+
path: ${{ github.workspace }}/coverage-reports
|
|
81
82
|
pattern: coverage-data-*
|
|
82
|
-
merge-multiple:
|
|
83
|
+
merge-multiple: false
|
|
83
84
|
|
|
84
85
|
- name: Combine coverage and fail if it's <100.0%
|
|
85
86
|
run: |
|
|
86
|
-
python -m coverage combine
|
|
87
|
+
python -m coverage combine coverage-reports/*/.coverage
|
|
88
|
+
python -m coverage xml
|
|
87
89
|
python -m coverage html --skip-covered --skip-empty
|
|
88
90
|
python -m coverage report --fail-under=100.0
|
|
89
91
|
echo "## Coverage summary" >> $GITHUB_STEP_SUMMARY
|
|
@@ -140,7 +140,7 @@ cython_debug/
|
|
|
140
140
|
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
|
|
141
141
|
.idea/
|
|
142
142
|
|
|
143
|
-
#
|
|
143
|
+
# Deprecated dependency files
|
|
144
144
|
requirements.txt
|
|
145
145
|
|
|
146
146
|
# sphinx build folder
|
|
@@ -156,3 +156,6 @@ _build
|
|
|
156
156
|
|
|
157
157
|
# Test databases
|
|
158
158
|
*.sqlite
|
|
159
|
+
|
|
160
|
+
# AI
|
|
161
|
+
.claude/
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
repos:
|
|
5
5
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
6
|
-
rev: v0.
|
|
6
|
+
rev: v0.14.0
|
|
7
7
|
hooks:
|
|
8
8
|
# Run the Ruff formatter.
|
|
9
9
|
- id: ruff-format
|
|
@@ -12,11 +12,11 @@ repos:
|
|
|
12
12
|
args: [--fix, --exit-non-zero-on-fix]
|
|
13
13
|
|
|
14
14
|
- repo: https://github.com/adamchainz/blacken-docs
|
|
15
|
-
rev: 1.
|
|
15
|
+
rev: 1.20.0
|
|
16
16
|
hooks:
|
|
17
17
|
- id: blacken-docs
|
|
18
18
|
additional_dependencies:
|
|
19
|
-
- black==25.
|
|
19
|
+
- black==25.9.0
|
|
20
20
|
files: '(?:README\.md|\.ambient-package-update\/templates\/snippets\/.*\.tpl|docs\/.*\.(?:md|rst))'
|
|
21
21
|
|
|
22
22
|
- repo: https://github.com/asottile/pyupgrade
|
|
@@ -26,13 +26,13 @@ repos:
|
|
|
26
26
|
args: [ --py310-plus ]
|
|
27
27
|
|
|
28
28
|
- repo: https://github.com/adamchainz/django-upgrade
|
|
29
|
-
rev: 1.
|
|
29
|
+
rev: 1.29.0
|
|
30
30
|
hooks:
|
|
31
31
|
- id: django-upgrade
|
|
32
32
|
args: [--target-version, "4.2"]
|
|
33
33
|
|
|
34
34
|
- repo: https://github.com/adamchainz/djade-pre-commit
|
|
35
|
-
rev: 1.
|
|
35
|
+
rev: 1.6.0
|
|
36
36
|
hooks:
|
|
37
37
|
- id: djade
|
|
38
38
|
args: [--target-version, "4.2"]
|
|
@@ -43,7 +43,7 @@ repos:
|
|
|
43
43
|
)$
|
|
44
44
|
|
|
45
45
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
46
|
-
rev:
|
|
46
|
+
rev: v6.0.0
|
|
47
47
|
hooks:
|
|
48
48
|
- id: check-ast
|
|
49
49
|
- id: check-builtin-literals
|
|
@@ -3,9 +3,8 @@
|
|
|
3
3
|
## Setup package for development
|
|
4
4
|
|
|
5
5
|
- Create a Python virtualenv and activate it
|
|
6
|
-
- Install "
|
|
7
|
-
-
|
|
8
|
-
- Sync the dependencies with your virtualenv with `pip-sync`
|
|
6
|
+
- Install "uv" with `pip install -U uv`
|
|
7
|
+
- Sync the requirements with `uv sync --frozen --group dev`
|
|
9
8
|
|
|
10
9
|
## Add functionality
|
|
11
10
|
|
|
@@ -58,7 +57,6 @@ Example: run all hooks of pre-push stage
|
|
|
58
57
|
- To build the documentation, run: `sphinx-build docs/ docs/_build/html/`.
|
|
59
58
|
- Open `docs/_build/html/index.html` to see the documentation.
|
|
60
59
|
|
|
61
|
-
|
|
62
60
|
### Translation files
|
|
63
61
|
|
|
64
62
|
If you have added custom text, make sure to wrap it in `_()` where `_` is
|
|
@@ -66,12 +64,12 @@ gettext_lazy (`from django.utils.translation import gettext_lazy as _`).
|
|
|
66
64
|
|
|
67
65
|
How to create translation file:
|
|
68
66
|
|
|
69
|
-
* Navigate to `
|
|
67
|
+
* Navigate to `queuebie`
|
|
70
68
|
* `python manage.py makemessages -l de`
|
|
71
69
|
* Have a look at the new/changed files within `queuebie/locale`
|
|
72
70
|
|
|
73
71
|
How to compile translation files:
|
|
74
72
|
|
|
75
|
-
* Navigate to `
|
|
73
|
+
* Navigate to `queuebie`
|
|
76
74
|
* `python manage.py compilemessages`
|
|
77
75
|
* Have a look at the new/changed files within `queuebie/locale`
|
|
@@ -1,9 +1,36 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: django-queuebie
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.6
|
|
4
4
|
Summary: A simple and synchronous message queue for commands and events for Django
|
|
5
|
+
Project-URL: Homepage, https://github.com/ambient-innovation/django-queuebie/
|
|
6
|
+
Project-URL: Documentation, https://django-queuebie.readthedocs.io/en/latest/index.html
|
|
7
|
+
Project-URL: Maintained by, https://ambient.digital/
|
|
8
|
+
Project-URL: Bugtracker, https://github.com/ambient-innovation/django-queuebie/issues
|
|
9
|
+
Project-URL: Changelog, https://django-queuebie.readthedocs.io/en/latest/features/changelog.html
|
|
5
10
|
Author-email: Ambient Digital <hello@ambient.digital>
|
|
6
|
-
|
|
11
|
+
License: MIT License
|
|
12
|
+
|
|
13
|
+
Copyright (c) 2025 Ambient Innovation: GmbH
|
|
14
|
+
|
|
15
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
16
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
17
|
+
in the Software without restriction, including without limitation the rights
|
|
18
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
19
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
20
|
+
furnished to do so, subject to the following conditions:
|
|
21
|
+
|
|
22
|
+
The above copyright notice and this permission notice shall be included in all
|
|
23
|
+
copies or substantial portions of the Software.
|
|
24
|
+
|
|
25
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
26
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
27
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
28
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
29
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
30
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
31
|
+
SOFTWARE.
|
|
32
|
+
License-File: LICENSE
|
|
33
|
+
License-File: LICENSE.md
|
|
7
34
|
Classifier: Development Status :: 4 - Beta
|
|
8
35
|
Classifier: Environment :: Web Environment
|
|
9
36
|
Classifier: Framework :: Django
|
|
@@ -21,26 +48,9 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
21
48
|
Classifier: Programming Language :: Python :: 3.12
|
|
22
49
|
Classifier: Programming Language :: Python :: 3.13
|
|
23
50
|
Classifier: Topic :: Utilities
|
|
24
|
-
Requires-
|
|
25
|
-
Requires-Dist:
|
|
26
|
-
|
|
27
|
-
Requires-Dist: pytest-mock~=3.14 ; extra == "dev"
|
|
28
|
-
Requires-Dist: coverage~=7.6 ; extra == "dev"
|
|
29
|
-
Requires-Dist: pre-commit~=4.2 ; extra == "dev"
|
|
30
|
-
Requires-Dist: ruff~=0.11 ; extra == "dev"
|
|
31
|
-
Requires-Dist: sphinx~=7.1 ; extra == "dev"
|
|
32
|
-
Requires-Dist: sphinx-rtd-theme~=2.0 ; extra == "dev"
|
|
33
|
-
Requires-Dist: m2r2==0.3.3.post2 ; extra == "dev"
|
|
34
|
-
Requires-Dist: mistune<2.0.0 ; extra == "dev"
|
|
35
|
-
Requires-Dist: flit~=3.12 ; extra == "dev"
|
|
36
|
-
Requires-Dist: keyring~=25.6 ; extra == "dev"
|
|
37
|
-
Requires-Dist: ambient-package-update ; extra == "dev"
|
|
38
|
-
Project-URL: Bugtracker, https://github.com/ambient-innovation/django-queuebie/issues
|
|
39
|
-
Project-URL: Changelog, https://django-queuebie.readthedocs.io/en/latest/features/changelog.html
|
|
40
|
-
Project-URL: Documentation, https://django-queuebie.readthedocs.io/en/latest/index.html
|
|
41
|
-
Project-URL: Homepage, https://github.com/ambient-innovation/django-queuebie/
|
|
42
|
-
Project-URL: Maintained by, https://ambient.digital/
|
|
43
|
-
Provides-Extra: dev
|
|
51
|
+
Requires-Python: >=3.10
|
|
52
|
+
Requires-Dist: django>=4.2
|
|
53
|
+
Description-Content-Type: text/markdown
|
|
44
54
|
|
|
45
55
|
[](https://pypi.org/project/django-queuebie/)
|
|
46
56
|
[](https://pepy.tech/project/django-queuebie)
|
|
@@ -51,11 +61,9 @@ Provides-Extra: dev
|
|
|
51
61
|
|
|
52
62
|
A simple and synchronous message queue for commands and events for Django.
|
|
53
63
|
|
|
54
|
-
|
|
55
|
-
* [GitHub](https://github.com/ambient-innovation/django-queuebie)
|
|
56
|
-
* [Full documentation](https://django-queuebie.readthedocs.io/en/latest/index.html)
|
|
57
|
-
* Creator & Maintainer: [Ambient Digital](https://ambient.digital/)
|
|
64
|
+
[PyPI](https://pypi.org/project/django-queuebie/) | [GitHub](https://github.com/ambient-innovation/django-queuebie) | [Full documentation](https://django-queuebie.readthedocs.io/en/latest/index.html)
|
|
58
65
|
|
|
66
|
+
Creator & Maintainer: [Ambient Digital](https://ambient.digital/)
|
|
59
67
|
|
|
60
68
|
## Features
|
|
61
69
|
|
|
@@ -117,20 +125,18 @@ handle_message(
|
|
|
117
125
|
|
|
118
126
|
`pip install django_queuebie`
|
|
119
127
|
|
|
120
|
-
or via
|
|
128
|
+
or via uv:
|
|
121
129
|
|
|
122
|
-
`
|
|
130
|
+
`uv add django_queuebie`
|
|
123
131
|
|
|
124
132
|
- Add module to `INSTALLED_APPS` within the main django `settings.py`:
|
|
125
133
|
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
+
```python
|
|
135
|
+
INSTALLED_APPS = (
|
|
136
|
+
# ...
|
|
137
|
+
"queuebie",
|
|
138
|
+
)
|
|
139
|
+
```
|
|
134
140
|
|
|
135
141
|
### Publish to ReadTheDocs.io
|
|
136
142
|
|
|
@@ -138,27 +144,43 @@ handle_message(
|
|
|
138
144
|
- Trigger new build at ReadTheDocs.io (follow instructions in admin panel at RTD) if the GitHub webhook is not yet set
|
|
139
145
|
up.
|
|
140
146
|
|
|
141
|
-
###
|
|
147
|
+
### Preparation and building
|
|
148
|
+
|
|
149
|
+
This package uses [uv](https://github.com/astral-sh/uv) for dependency management and building.
|
|
142
150
|
|
|
143
151
|
- Update documentation about new/changed functionality
|
|
144
152
|
|
|
145
|
-
- Update the `
|
|
153
|
+
- Update the `CHANGES.md`
|
|
146
154
|
|
|
147
155
|
- Increment version in main `__init__.py`
|
|
148
156
|
|
|
149
|
-
- Create pull request / merge to main
|
|
157
|
+
- Create pull request / merge to "main"
|
|
150
158
|
|
|
151
|
-
- This project uses
|
|
152
|
-
|
|
153
|
-
|
|
159
|
+
- This project uses uv to publish to PyPI. This will create distribution files in the `dist/` directory.
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
uv build
|
|
154
163
|
```
|
|
155
164
|
|
|
156
|
-
|
|
157
|
-
shown [here](https://flit.readthedocs.io/en/latest/upload.html#using-pypirc) and use the following command:
|
|
165
|
+
### Publishing to PyPI
|
|
158
166
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
167
|
+
To publish to the production PyPI:
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
uv publish
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
To publish to TestPyPI first (recommended for testing):
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
uv publish --publish-url https://test.pypi.org/legacy/
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
You can then test the installation from TestPyPI:
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
uv pip install --index-url https://test.pypi.org/simple/ ambient-package-update
|
|
183
|
+
```
|
|
162
184
|
|
|
163
185
|
### Maintenance
|
|
164
186
|
|
|
@@ -168,4 +190,3 @@ configuration and setup files. It works similar to well-known updaters like `pyu
|
|
|
168
190
|
|
|
169
191
|
To run an update, refer to the [documentation page](https://pypi.org/project/ambient-package-update/)
|
|
170
192
|
of the "ambient-package-update".
|
|
171
|
-
|
|
@@ -7,11 +7,9 @@
|
|
|
7
7
|
|
|
8
8
|
A simple and synchronous message queue for commands and events for Django.
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
* [GitHub](https://github.com/ambient-innovation/django-queuebie)
|
|
12
|
-
* [Full documentation](https://django-queuebie.readthedocs.io/en/latest/index.html)
|
|
13
|
-
* Creator & Maintainer: [Ambient Digital](https://ambient.digital/)
|
|
10
|
+
[PyPI](https://pypi.org/project/django-queuebie/) | [GitHub](https://github.com/ambient-innovation/django-queuebie) | [Full documentation](https://django-queuebie.readthedocs.io/en/latest/index.html)
|
|
14
11
|
|
|
12
|
+
Creator & Maintainer: [Ambient Digital](https://ambient.digital/)
|
|
15
13
|
|
|
16
14
|
## Features
|
|
17
15
|
|
|
@@ -73,20 +71,18 @@ handle_message(
|
|
|
73
71
|
|
|
74
72
|
`pip install django_queuebie`
|
|
75
73
|
|
|
76
|
-
or via
|
|
74
|
+
or via uv:
|
|
77
75
|
|
|
78
|
-
`
|
|
76
|
+
`uv add django_queuebie`
|
|
79
77
|
|
|
80
78
|
- Add module to `INSTALLED_APPS` within the main django `settings.py`:
|
|
81
79
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
80
|
+
```python
|
|
81
|
+
INSTALLED_APPS = (
|
|
82
|
+
# ...
|
|
83
|
+
"queuebie",
|
|
84
|
+
)
|
|
85
|
+
```
|
|
90
86
|
|
|
91
87
|
### Publish to ReadTheDocs.io
|
|
92
88
|
|
|
@@ -94,27 +90,43 @@ handle_message(
|
|
|
94
90
|
- Trigger new build at ReadTheDocs.io (follow instructions in admin panel at RTD) if the GitHub webhook is not yet set
|
|
95
91
|
up.
|
|
96
92
|
|
|
97
|
-
###
|
|
93
|
+
### Preparation and building
|
|
94
|
+
|
|
95
|
+
This package uses [uv](https://github.com/astral-sh/uv) for dependency management and building.
|
|
98
96
|
|
|
99
97
|
- Update documentation about new/changed functionality
|
|
100
98
|
|
|
101
|
-
- Update the `
|
|
99
|
+
- Update the `CHANGES.md`
|
|
102
100
|
|
|
103
101
|
- Increment version in main `__init__.py`
|
|
104
102
|
|
|
105
|
-
- Create pull request / merge to main
|
|
103
|
+
- Create pull request / merge to "main"
|
|
106
104
|
|
|
107
|
-
- This project uses
|
|
108
|
-
|
|
109
|
-
|
|
105
|
+
- This project uses uv to publish to PyPI. This will create distribution files in the `dist/` directory.
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
uv build
|
|
110
109
|
```
|
|
111
110
|
|
|
112
|
-
|
|
113
|
-
shown [here](https://flit.readthedocs.io/en/latest/upload.html#using-pypirc) and use the following command:
|
|
111
|
+
### Publishing to PyPI
|
|
114
112
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
113
|
+
To publish to the production PyPI:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
uv publish
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
To publish to TestPyPI first (recommended for testing):
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
uv publish --publish-url https://test.pypi.org/legacy/
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
You can then test the installation from TestPyPI:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
uv pip install --index-url https://test.pypi.org/simple/ ambient-package-update
|
|
129
|
+
```
|
|
118
130
|
|
|
119
131
|
### Maintenance
|
|
120
132
|
|
|
@@ -62,7 +62,6 @@ templates_path = ["_templates"]
|
|
|
62
62
|
# This pattern also affects html_static_path and html_extra_path.
|
|
63
63
|
exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]
|
|
64
64
|
|
|
65
|
-
|
|
66
65
|
# -- Options for HTML output -------------------------------------------------
|
|
67
66
|
|
|
68
67
|
# The theme to use for HTML and HTML Help pages. See the documentation for
|
|
@@ -9,7 +9,7 @@ def main():
|
|
|
9
9
|
"""Run administrative tasks."""
|
|
10
10
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
|
|
11
11
|
try:
|
|
12
|
-
from django.core.management import execute_from_command_line
|
|
12
|
+
from django.core.management import execute_from_command_line # noqa: PLC0415
|
|
13
13
|
except ImportError as exc:
|
|
14
14
|
raise ImportError( # noqa: TRY003
|
|
15
15
|
"Couldn't import Django. Are you sure it's installed and "
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[build-system]
|
|
2
|
-
requires = ["
|
|
3
|
-
build-backend = "
|
|
2
|
+
requires = ["hatchling"]
|
|
3
|
+
build-backend = "hatchling.build"
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "django-queuebie"
|
|
@@ -27,35 +27,28 @@ classifiers = [
|
|
|
27
27
|
"Programming Language :: Python :: 3.13",
|
|
28
28
|
"Topic :: Utilities",
|
|
29
29
|
]
|
|
30
|
-
dynamic = ["version"
|
|
30
|
+
dynamic = ["version"]
|
|
31
|
+
description = "A simple and synchronous message queue for commands and events for Django"
|
|
31
32
|
license = {"file" = "LICENSE.md"}
|
|
33
|
+
requires-python = ">=3.10"
|
|
32
34
|
dependencies = [
|
|
33
35
|
'Django>=4.2',
|
|
34
36
|
]
|
|
35
37
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
[project.optional-dependencies]
|
|
38
|
+
[dependency-groups]
|
|
40
39
|
dev = [
|
|
41
|
-
'typer~=0.
|
|
42
|
-
'pytest-
|
|
43
|
-
'pytest-
|
|
44
|
-
'
|
|
45
|
-
'pre-commit~=4.
|
|
46
|
-
'
|
|
47
|
-
'sphinx~=
|
|
48
|
-
'
|
|
49
|
-
'
|
|
50
|
-
'mistune<2.0.0',
|
|
51
|
-
'flit~=3.12',
|
|
52
|
-
'keyring~=25.6',
|
|
40
|
+
'typer~=0.19',
|
|
41
|
+
'pytest-cov~=7.0',
|
|
42
|
+
'pytest-django~=4.11',
|
|
43
|
+
'pytest-mock~=3.15',
|
|
44
|
+
'pre-commit~=4.3',
|
|
45
|
+
'sphinx~=7.4',
|
|
46
|
+
'sphinx-rtd-theme~=3.0',
|
|
47
|
+
'm2r2~=0.3',
|
|
48
|
+
'uv~=0.9',
|
|
53
49
|
'ambient-package-update',
|
|
54
50
|
]
|
|
55
51
|
|
|
56
|
-
[tool.flit.module]
|
|
57
|
-
name = "queuebie"
|
|
58
|
-
|
|
59
52
|
[project.urls]
|
|
60
53
|
'Homepage' = 'https://github.com/ambient-innovation/django-queuebie/'
|
|
61
54
|
'Documentation' = 'https://django-queuebie.readthedocs.io/en/latest/index.html'
|
|
@@ -92,6 +85,7 @@ lint.select = [
|
|
|
92
85
|
"ERA", # Commented out code
|
|
93
86
|
"INP", # Ban PEP-420 implicit namespace packages
|
|
94
87
|
"C90", # McCabe code complexity
|
|
88
|
+
"FURB", # Refurbish Python code
|
|
95
89
|
]
|
|
96
90
|
lint.ignore = [
|
|
97
91
|
"TD002", # Missing author in TODO
|
|
@@ -127,6 +121,7 @@ lint.fixable = [
|
|
|
127
121
|
"ERA", # Commented out code
|
|
128
122
|
"INP", # Ban PEP-420 implicit namespace packages
|
|
129
123
|
"C90", # McCabe code complexity
|
|
124
|
+
"FURB", # Refurbish Python code
|
|
130
125
|
]
|
|
131
126
|
lint.unfixable = []
|
|
132
127
|
|
|
@@ -160,8 +155,8 @@ line-length = 120
|
|
|
160
155
|
# Allow unused variables when underscore-prefixed.
|
|
161
156
|
lint.dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
|
|
162
157
|
|
|
163
|
-
# Assume Python 3.
|
|
164
|
-
target-version = "
|
|
158
|
+
# Assume Python 3.13
|
|
159
|
+
target-version = "py313"
|
|
165
160
|
|
|
166
161
|
[tool.ruff.format]
|
|
167
162
|
# Like Black, use double quotes for strings.
|
|
@@ -199,24 +194,33 @@ line-ending = "auto"
|
|
|
199
194
|
]
|
|
200
195
|
|
|
201
196
|
[tool.tox]
|
|
202
|
-
|
|
203
|
-
[
|
|
197
|
+
requires = ["tox>=4", "tox-uv>=1.0.0"]
|
|
198
|
+
env_list = ["django42", "django51", "django52", ]
|
|
199
|
+
|
|
200
|
+
[tool.tox.env_run_base]
|
|
204
201
|
# Django deprecation overview: https://www.djangoproject.com/download/
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
202
|
+
package = "wheel"
|
|
203
|
+
wheel_build_env = ".pkg"
|
|
204
|
+
runner = "uv-venv-lock-runner"
|
|
205
|
+
dependency_groups = ["dev", ]
|
|
206
|
+
commands = [
|
|
207
|
+
["pytest", "--cov=queuebie", "--cov-report=term", "--cov-report=xml", "--ds", "settings", "tests"]
|
|
208
|
+
]
|
|
212
209
|
|
|
213
|
-
[
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
210
|
+
[tool.tox.env.django42]
|
|
211
|
+
deps = ["Django==4.2.*"]
|
|
212
|
+
|
|
213
|
+
[tool.tox.env.django51]
|
|
214
|
+
deps = ["Django==5.1.*"]
|
|
215
|
+
|
|
216
|
+
[tool.tox.env.django52]
|
|
217
|
+
deps = ["Django==5.2.*"]
|
|
218
|
+
|
|
219
|
+
[tool.tox.gh_actions.python]
|
|
220
|
+
"3.10" = "py310"
|
|
221
|
+
"3.11" = "py311"
|
|
222
|
+
"3.12" = "py312"
|
|
223
|
+
"3.13" = "py313"
|
|
220
224
|
|
|
221
225
|
[tool.pytest.ini_options]
|
|
222
226
|
python_files = [
|
|
@@ -258,3 +262,9 @@ source = [
|
|
|
258
262
|
"queuebie",
|
|
259
263
|
".tox/**/site-packages",
|
|
260
264
|
]
|
|
265
|
+
|
|
266
|
+
[tool.hatch.build.targets.wheel]
|
|
267
|
+
packages = ["queuebie"]
|
|
268
|
+
|
|
269
|
+
[tool.hatch.version]
|
|
270
|
+
path = "queuebie/__init__.py"
|
|
@@ -5,7 +5,7 @@ from queuebie.database_blocker import BlockDatabaseAccess, DatabaseAccessDeniedE
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
def test_block_database_access_use_db():
|
|
8
|
-
with pytest.raises(DatabaseAccessDeniedError, match="Database access is disabled in this context."):
|
|
8
|
+
with pytest.raises(DatabaseAccessDeniedError, match=r"Database access is disabled in this context."):
|
|
9
9
|
with BlockDatabaseAccess():
|
|
10
10
|
User.objects.get(pk=1)
|
|
11
11
|
|