django-slack-tools 0.1.0__tar.gz → 0.2.0__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_slack_tools-0.2.0/.devcontainer/devcontainer.json +36 -0
- django_slack_tools-0.2.0/.devcontainer/onCreateCommand.sh +10 -0
- django_slack_tools-0.2.0/.editorconfig +27 -0
- django_slack_tools-0.2.0/.gitattributes +124 -0
- django_slack_tools-0.2.0/.github/dependabot.yaml +24 -0
- django_slack_tools-0.2.0/.github/workflows/ci.yaml +97 -0
- django_slack_tools-0.2.0/.github/workflows/docs.yaml +50 -0
- django_slack_tools-0.2.0/.github/workflows/release.yaml +58 -0
- django_slack_tools-0.2.0/.gitignore +378 -0
- django_slack_tools-0.2.0/.pre-commit-config.yaml +56 -0
- django_slack_tools-0.2.0/.python-version +1 -0
- django_slack_tools-0.2.0/.vscode/extensions.json +18 -0
- django_slack_tools-0.2.0/.vscode/launch.json +18 -0
- django_slack_tools-0.2.0/.vscode/settings.json +47 -0
- django_slack_tools-0.2.0/CONTRIBUTING.md +48 -0
- django_slack_tools-0.2.0/Makefile +92 -0
- {django_slack_tools-0.1.0 → django_slack_tools-0.2.0}/PKG-INFO +39 -21
- {django_slack_tools-0.1.0 → django_slack_tools-0.2.0}/README.md +10 -4
- django_slack_tools-0.2.0/django_slack_tools/__init__.py +1 -0
- {django_slack_tools-0.1.0 → django_slack_tools-0.2.0}/django_slack_tools/app_settings.py +29 -4
- {django_slack_tools-0.1.0 → django_slack_tools-0.2.0}/django_slack_tools/slack_messages/admin/message.py +1 -1
- {django_slack_tools-0.1.0 → django_slack_tools-0.2.0}/django_slack_tools/slack_messages/apps.py +9 -0
- {django_slack_tools-0.1.0 → django_slack_tools-0.2.0}/django_slack_tools/slack_messages/backends/__init__.py +2 -2
- django_slack_tools-0.2.0/django_slack_tools/slack_messages/backends/base.py +229 -0
- {django_slack_tools-0.1.0 → django_slack_tools-0.2.0}/django_slack_tools/slack_messages/backends/dummy.py +8 -9
- {django_slack_tools-0.1.0 → django_slack_tools-0.2.0}/django_slack_tools/slack_messages/backends/slack.py +29 -91
- django_slack_tools-0.2.0/django_slack_tools/slack_messages/message.py +110 -0
- {django_slack_tools-0.1.0 → django_slack_tools-0.2.0}/django_slack_tools/slack_messages/migrations/0001_initial.py +0 -2
- django_slack_tools-0.2.0/django_slack_tools/slack_messages/migrations/0002_default_policy.py +35 -0
- django_slack_tools-0.2.0/django_slack_tools/slack_messages/migrations/0003_default_recipient.py +35 -0
- django_slack_tools-0.2.0/django_slack_tools/slack_messages/migrations/0004_slackmessagingpolicy_template_type.py +23 -0
- {django_slack_tools-0.1.0 → django_slack_tools-0.2.0}/django_slack_tools/slack_messages/models/messaging_policy.py +29 -3
- django_slack_tools-0.2.0/django_slack_tools/slack_messages/tasks.py +112 -0
- django_slack_tools-0.2.0/django_slack_tools/utils/slack/django.py +29 -0
- django_slack_tools-0.2.0/django_slack_tools/utils/slack/message.py +93 -0
- django_slack_tools-0.2.0/django_slack_tools/utils/template/__init__.py +5 -0
- django_slack_tools-0.2.0/django_slack_tools/utils/template/base.py +17 -0
- django_slack_tools-0.2.0/django_slack_tools/utils/template/dict.py +52 -0
- django_slack_tools-0.2.0/django_slack_tools/utils/template/django.py +140 -0
- {django_slack_tools-0.1.0 → django_slack_tools-0.2.0}/django_slack_tools/views.py +1 -1
- django_slack_tools-0.2.0/docs/api-references/slack-messages/celery.md +3 -0
- django_slack_tools-0.2.0/docs/api-references/slack-messages/messaging-backends.md +3 -0
- django_slack_tools-0.2.0/docs/api-references/slack-messages/models.md +3 -0
- django_slack_tools-0.2.0/docs/api-references/slack-messages/sending-messages.md +3 -0
- django_slack_tools-0.2.0/docs/index.md +33 -0
- django_slack_tools-0.2.0/docs/tutorials/quick-start.md +51 -0
- django_slack_tools-0.2.0/examples/todo/.python-version +1 -0
- django_slack_tools-0.2.0/examples/todo/Makefile +61 -0
- django_slack_tools-0.2.0/examples/todo/README.md +69 -0
- django_slack_tools-0.2.0/examples/todo/docker-compose.yaml +17 -0
- django_slack_tools-0.2.0/examples/todo/manage.py +23 -0
- django_slack_tools-0.2.0/examples/todo/pyproject.toml +22 -0
- django_slack_tools-0.2.0/examples/todo/todo/__init__.py +3 -0
- django_slack_tools-0.2.0/examples/todo/todo/celery.py +29 -0
- django_slack_tools-0.2.0/examples/todo/todo/settings.py +150 -0
- django_slack_tools-0.2.0/examples/todo/todo/slack_app.py +8 -0
- django_slack_tools-0.2.0/examples/todo/todo/urls.py +10 -0
- django_slack_tools-0.2.0/examples/todo/todo/wsgi.py +7 -0
- django_slack_tools-0.2.0/examples/todo/todo_app/__init__.py +0 -0
- django_slack_tools-0.2.0/examples/todo/todo_app/admin.py +0 -0
- django_slack_tools-0.2.0/examples/todo/todo_app/apps.py +9 -0
- django_slack_tools-0.2.0/examples/todo/todo_app/migrations/0001_initial.py +67 -0
- django_slack_tools-0.2.0/examples/todo/todo_app/migrations/__init__.py +0 -0
- django_slack_tools-0.2.0/examples/todo/todo_app/models.py +34 -0
- django_slack_tools-0.2.0/examples/todo/todo_app/services.py +18 -0
- django_slack_tools-0.2.0/examples/todo/todo_app/signals.py +32 -0
- django_slack_tools-0.2.0/examples/todo/todo_app/slack_listeners.py +217 -0
- django_slack_tools-0.2.0/examples/todo/uv.lock +468 -0
- django_slack_tools-0.2.0/manage.py +1 -0
- django_slack_tools-0.2.0/mkdocs.yaml +35 -0
- django_slack_tools-0.2.0/pyproject.toml +109 -0
- django_slack_tools-0.2.0/testproj/__init__.py +0 -0
- django_slack_tools-0.2.0/testproj/config/__init__.py +0 -0
- django_slack_tools-0.2.0/testproj/config/settings.py +182 -0
- django_slack_tools-0.2.0/testproj/config/slack_app.py +8 -0
- django_slack_tools-0.2.0/testproj/config/urls.py +11 -0
- django_slack_tools-0.2.0/testproj/config/wsgi.py +15 -0
- django_slack_tools-0.2.0/testproj/manage.py +23 -0
- django_slack_tools-0.2.0/testproj/templates/001-template.xml +43 -0
- django_slack_tools-0.2.0/testproj/templates/greet.xml +7 -0
- django_slack_tools-0.2.0/tests/__init__.py +0 -0
- django_slack_tools-0.2.0/tests/_factories.py +28 -0
- django_slack_tools-0.2.0/tests/_helpers.py +103 -0
- django_slack_tools-0.2.0/tests/conftest.py +24 -0
- django_slack_tools-0.2.0/tests/slack_messages/__init__.py +0 -0
- django_slack_tools-0.2.0/tests/slack_messages/_factories.py +52 -0
- django_slack_tools-0.2.0/tests/slack_messages/admin/__init__.py +0 -0
- django_slack_tools-0.2.0/tests/slack_messages/admin/test_mention.py +175 -0
- django_slack_tools-0.2.0/tests/slack_messages/admin/test_message.py +120 -0
- django_slack_tools-0.2.0/tests/slack_messages/admin/test_message_recipient.py +121 -0
- django_slack_tools-0.2.0/tests/slack_messages/admin/test_messaging_policy.py +41 -0
- django_slack_tools-0.2.0/tests/slack_messages/backends/__init__.py +0 -0
- django_slack_tools-0.2.0/tests/slack_messages/backends/test_base.py +3 -0
- django_slack_tools-0.2.0/tests/slack_messages/backends/test_dummy.py +19 -0
- django_slack_tools-0.2.0/tests/slack_messages/backends/test_logging.py +19 -0
- django_slack_tools-0.2.0/tests/slack_messages/backends/test_slack.py +190 -0
- django_slack_tools-0.2.0/tests/slack_messages/models/__init__.py +0 -0
- django_slack_tools-0.2.0/tests/slack_messages/models/_factories.py +110 -0
- django_slack_tools-0.2.0/tests/slack_messages/models/test_mention.py +59 -0
- django_slack_tools-0.2.0/tests/slack_messages/models/test_message.py +28 -0
- django_slack_tools-0.2.0/tests/slack_messages/models/test_message_recipient.py +17 -0
- django_slack_tools-0.2.0/tests/slack_messages/models/test_messaging_policy.py +20 -0
- django_slack_tools-0.2.0/tests/slack_messages/test_apps.py +1 -0
- django_slack_tools-0.2.0/tests/slack_messages/test_message.py +233 -0
- django_slack_tools-0.2.0/tests/slack_messages/test_tasks.py +90 -0
- django_slack_tools-0.2.0/tests/test_app_settings.py +130 -0
- django_slack_tools-0.2.0/tests/test_views.py +1 -0
- django_slack_tools-0.2.0/tests/utils/__init__.py +0 -0
- django_slack_tools-0.2.0/tests/utils/slack/__init__.py +0 -0
- django_slack_tools-0.2.0/tests/utils/slack/test_django.py +24 -0
- django_slack_tools-0.2.0/tests/utils/slack/test_message.py +27 -0
- django_slack_tools-0.2.0/tests/utils/slack/test_misc.py +47 -0
- django_slack_tools-0.2.0/tests/utils/template/__init__.py +0 -0
- django_slack_tools-0.2.0/tests/utils/template/test_base.py +0 -0
- django_slack_tools-0.2.0/tests/utils/template/test_dict.py +32 -0
- django_slack_tools-0.2.0/tests/utils/template/test_django.py +102 -0
- django_slack_tools-0.2.0/tests/utils/template/testcases/001.json +87 -0
- django_slack_tools-0.2.0/tests/utils/template/testcases/001.png +0 -0
- django_slack_tools-0.2.0/tests/utils/template/testcases/001.xml +69 -0
- django_slack_tools-0.2.0/tests/utils/test_model_mixins.py +1 -0
- django_slack_tools-0.2.0/tests/utils/test_widgets.py +17 -0
- django_slack_tools-0.2.0/uv.lock +1966 -0
- django_slack_tools-0.1.0/django_slack_tools/__init__.py +0 -1
- django_slack_tools-0.1.0/django_slack_tools/slack_messages/backends/base.py +0 -94
- django_slack_tools-0.1.0/django_slack_tools/slack_messages/message.py +0 -128
- django_slack_tools-0.1.0/django_slack_tools/utils/dict_template.py +0 -55
- django_slack_tools-0.1.0/django_slack_tools/utils/slack/django.py +0 -45
- django_slack_tools-0.1.0/django_slack_tools/utils/slack/message.py +0 -44
- django_slack_tools-0.1.0/pyproject.toml +0 -110
- {django_slack_tools-0.1.0 → django_slack_tools-0.2.0}/LICENSE +0 -0
- {django_slack_tools-0.1.0 → django_slack_tools-0.2.0}/django_slack_tools/locale/ko_KR/LC_MESSAGES/django.po +0 -0
- {django_slack_tools-0.1.0 → django_slack_tools-0.2.0}/django_slack_tools/slack_messages/__init__.py +0 -0
- {django_slack_tools-0.1.0 → django_slack_tools-0.2.0}/django_slack_tools/slack_messages/admin/__init__.py +0 -0
- {django_slack_tools-0.1.0 → django_slack_tools-0.2.0}/django_slack_tools/slack_messages/admin/mention.py +0 -0
- {django_slack_tools-0.1.0 → django_slack_tools-0.2.0}/django_slack_tools/slack_messages/admin/message_recipient.py +0 -0
- {django_slack_tools-0.1.0 → django_slack_tools-0.2.0}/django_slack_tools/slack_messages/admin/messaging_policy.py +0 -0
- {django_slack_tools-0.1.0 → django_slack_tools-0.2.0}/django_slack_tools/slack_messages/backends/logging.py +0 -0
- {django_slack_tools-0.1.0 → django_slack_tools-0.2.0}/django_slack_tools/slack_messages/migrations/__init__.py +0 -0
- {django_slack_tools-0.1.0 → django_slack_tools-0.2.0}/django_slack_tools/slack_messages/models/__init__.py +0 -0
- {django_slack_tools-0.1.0 → django_slack_tools-0.2.0}/django_slack_tools/slack_messages/models/mention.py +0 -0
- {django_slack_tools-0.1.0 → django_slack_tools-0.2.0}/django_slack_tools/slack_messages/models/message.py +0 -0
- {django_slack_tools-0.1.0 → django_slack_tools-0.2.0}/django_slack_tools/slack_messages/models/message_recipient.py +0 -0
- {django_slack_tools-0.1.0 → django_slack_tools-0.2.0}/django_slack_tools/utils/__init__.py +0 -0
- {django_slack_tools-0.1.0 → django_slack_tools-0.2.0}/django_slack_tools/utils/model_mixins.py +0 -0
- {django_slack_tools-0.1.0 → django_slack_tools-0.2.0}/django_slack_tools/utils/slack/__init__.py +0 -0
- {django_slack_tools-0.1.0 → django_slack_tools-0.2.0}/django_slack_tools/utils/slack/misc.py +0 -0
- {django_slack_tools-0.1.0 → django_slack_tools-0.2.0}/django_slack_tools/utils/widgets.py +0 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "lasuillard/django-slack-tools",
|
|
3
|
+
"image": "mcr.microsoft.com/devcontainers/base:1-bookworm",
|
|
4
|
+
"features": {
|
|
5
|
+
"ghcr.io/devcontainers-contrib/features/pre-commit:2": {},
|
|
6
|
+
"ghcr.io/devcontainers-contrib/features/apt-get-packages:1": {
|
|
7
|
+
"packages": "gettext"
|
|
8
|
+
},
|
|
9
|
+
"ghcr.io/devcontainers/features/docker-in-docker:2": {}
|
|
10
|
+
},
|
|
11
|
+
"onCreateCommand": "./.devcontainer/onCreateCommand.sh",
|
|
12
|
+
"updateContentCommand": "make install",
|
|
13
|
+
"customizations": {
|
|
14
|
+
"vscode": {
|
|
15
|
+
"extensions": [
|
|
16
|
+
"ms-python.python",
|
|
17
|
+
"ms-python.vscode-pylance",
|
|
18
|
+
"batisteo.vscode-django",
|
|
19
|
+
"ldez.ignore-files",
|
|
20
|
+
"redhat.vscode-yaml",
|
|
21
|
+
"tamasfe.even-better-toml",
|
|
22
|
+
"streetsidesoftware.code-spell-checker",
|
|
23
|
+
"EditorConfig.EditorConfig",
|
|
24
|
+
"VisualStudioExptTeam.vscodeintellicode",
|
|
25
|
+
"charliermarsh.ruff",
|
|
26
|
+
"ms-python.mypy-type-checker",
|
|
27
|
+
"njpwerner.autodocstring",
|
|
28
|
+
"ms-toolsai.jupyter",
|
|
29
|
+
"ms-python.debugpy"
|
|
30
|
+
]
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"containerEnv": {
|
|
34
|
+
"PYTHONPATH": "${containerWorkspaceFolder}"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
# Add ngrok key
|
|
4
|
+
curl -fsSL https://ngrok-agent.s3.amazonaws.com/ngrok.asc | sudo tee /etc/apt/trusted.gpg.d/ngrok.asc \
|
|
5
|
+
&& echo "deb https://ngrok-agent.s3.amazonaws.com buster main" | sudo tee /etc/apt/sources.list.d/ngrok.list
|
|
6
|
+
|
|
7
|
+
sudo apt-get update && sudo apt-get install -y \
|
|
8
|
+
ngrok
|
|
9
|
+
|
|
10
|
+
pipx install uv
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# http://editorconfig.org
|
|
2
|
+
|
|
3
|
+
root = true
|
|
4
|
+
|
|
5
|
+
[*]
|
|
6
|
+
charset = utf-8
|
|
7
|
+
end_of_line = lf
|
|
8
|
+
insert_final_newline = true
|
|
9
|
+
trim_trailing_whitespace = true
|
|
10
|
+
|
|
11
|
+
[*.{py,rst,ini}]
|
|
12
|
+
indent_style = space
|
|
13
|
+
indent_size = 4
|
|
14
|
+
|
|
15
|
+
[*.{html,css,scss,json,yaml,yml}]
|
|
16
|
+
indent_style = space
|
|
17
|
+
indent_size = 2
|
|
18
|
+
|
|
19
|
+
[*.md]
|
|
20
|
+
trim_trailing_whitespace = false
|
|
21
|
+
|
|
22
|
+
[Dockerfile]
|
|
23
|
+
indent_style = space
|
|
24
|
+
indent_size = 4
|
|
25
|
+
|
|
26
|
+
[Makefile]
|
|
27
|
+
indent_style = tab
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# https://gitattributes.io/api/common%2Cmarkdown%2Cpython%2Csql%2Cdevcontainer%2Cvisualstudiocode
|
|
2
|
+
# Common settings that generally should always be used with your language specific settings
|
|
3
|
+
|
|
4
|
+
# Auto detect text files and perform LF normalization
|
|
5
|
+
* text=auto
|
|
6
|
+
|
|
7
|
+
#
|
|
8
|
+
# The above will handle all files NOT found below
|
|
9
|
+
#
|
|
10
|
+
|
|
11
|
+
# Documents
|
|
12
|
+
*.bibtex text diff=bibtex
|
|
13
|
+
*.doc diff=astextplain
|
|
14
|
+
*.DOC diff=astextplain
|
|
15
|
+
*.docx diff=astextplain
|
|
16
|
+
*.DOCX diff=astextplain
|
|
17
|
+
*.dot diff=astextplain
|
|
18
|
+
*.DOT diff=astextplain
|
|
19
|
+
*.pdf diff=astextplain
|
|
20
|
+
*.PDF diff=astextplain
|
|
21
|
+
*.rtf diff=astextplain
|
|
22
|
+
*.RTF diff=astextplain
|
|
23
|
+
*.md text diff=markdown
|
|
24
|
+
*.mdx text diff=markdown
|
|
25
|
+
*.tex text diff=tex
|
|
26
|
+
*.adoc text
|
|
27
|
+
*.textile text
|
|
28
|
+
*.mustache text
|
|
29
|
+
*.csv text eol=crlf
|
|
30
|
+
*.tab text
|
|
31
|
+
*.tsv text
|
|
32
|
+
*.txt text
|
|
33
|
+
*.sql text
|
|
34
|
+
*.epub diff=astextplain
|
|
35
|
+
|
|
36
|
+
# Graphics
|
|
37
|
+
*.png binary
|
|
38
|
+
*.jpg binary
|
|
39
|
+
*.jpeg binary
|
|
40
|
+
*.gif binary
|
|
41
|
+
*.tif binary
|
|
42
|
+
*.tiff binary
|
|
43
|
+
*.ico binary
|
|
44
|
+
# SVG treated as text by default.
|
|
45
|
+
*.svg text
|
|
46
|
+
# If you want to treat it as binary,
|
|
47
|
+
# use the following line instead.
|
|
48
|
+
# *.svg binary
|
|
49
|
+
*.eps binary
|
|
50
|
+
|
|
51
|
+
# Scripts
|
|
52
|
+
*.bash text eol=lf
|
|
53
|
+
*.fish text eol=lf
|
|
54
|
+
*.sh text eol=lf
|
|
55
|
+
*.zsh text eol=lf
|
|
56
|
+
# These are explicitly windows files and should use crlf
|
|
57
|
+
*.bat text eol=crlf
|
|
58
|
+
*.cmd text eol=crlf
|
|
59
|
+
*.ps1 text eol=crlf
|
|
60
|
+
|
|
61
|
+
# Serialisation
|
|
62
|
+
*.json text
|
|
63
|
+
*.toml text
|
|
64
|
+
*.xml text
|
|
65
|
+
*.yaml text
|
|
66
|
+
*.yml text
|
|
67
|
+
|
|
68
|
+
# Archives
|
|
69
|
+
*.7z binary
|
|
70
|
+
*.gz binary
|
|
71
|
+
*.tar binary
|
|
72
|
+
*.tgz binary
|
|
73
|
+
*.zip binary
|
|
74
|
+
|
|
75
|
+
# Text files where line endings should be preserved
|
|
76
|
+
*.patch -text
|
|
77
|
+
|
|
78
|
+
#
|
|
79
|
+
# Exclude files from exporting
|
|
80
|
+
#
|
|
81
|
+
|
|
82
|
+
.gitattributes export-ignore
|
|
83
|
+
.gitignore export-ignore
|
|
84
|
+
.gitkeep export-ignore
|
|
85
|
+
# Fix syntax highlighting on GitHub to allow comments
|
|
86
|
+
.devcontainer.json linguist-language=JSON-with-Comments
|
|
87
|
+
devcontainer.json linguist-language=JSON-with-Comments
|
|
88
|
+
# Apply override to all files in the directory
|
|
89
|
+
*.md linguist-detectable
|
|
90
|
+
# Basic .gitattributes for a python repo.
|
|
91
|
+
|
|
92
|
+
# Source files
|
|
93
|
+
# ============
|
|
94
|
+
*.pxd text diff=python
|
|
95
|
+
*.py text diff=python
|
|
96
|
+
*.py3 text diff=python
|
|
97
|
+
*.pyw text diff=python
|
|
98
|
+
*.pyx text diff=python
|
|
99
|
+
*.pyz text diff=python
|
|
100
|
+
*.pyi text diff=python
|
|
101
|
+
|
|
102
|
+
# Binary files
|
|
103
|
+
# ============
|
|
104
|
+
*.db binary
|
|
105
|
+
*.p binary
|
|
106
|
+
*.pkl binary
|
|
107
|
+
*.pickle binary
|
|
108
|
+
*.pyc binary export-ignore
|
|
109
|
+
*.pyo binary export-ignore
|
|
110
|
+
*.pyd binary
|
|
111
|
+
|
|
112
|
+
# Jupyter notebook
|
|
113
|
+
*.ipynb text eol=lf
|
|
114
|
+
|
|
115
|
+
# Note: .db, .p, and .pkl files are associated
|
|
116
|
+
# with the python modules ``pickle``, ``dbm.*``,
|
|
117
|
+
# ``shelve``, ``marshal``, ``anydbm``, & ``bsddb``
|
|
118
|
+
# (among others).
|
|
119
|
+
# Basic .gitattributes for sql files
|
|
120
|
+
|
|
121
|
+
*.sql linguist-detectable=true
|
|
122
|
+
*.sql linguist-language=sql
|
|
123
|
+
# Fix syntax highlighting on GitHub to allow comments
|
|
124
|
+
.vscode/*.json linguist-language=JSON-with-Comments
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
|
2
|
+
version: 2
|
|
3
|
+
updates:
|
|
4
|
+
- package-ecosystem: github-actions
|
|
5
|
+
directory: /
|
|
6
|
+
schedule:
|
|
7
|
+
interval: monthly
|
|
8
|
+
|
|
9
|
+
- package-ecosystem: pip
|
|
10
|
+
directory: /
|
|
11
|
+
schedule:
|
|
12
|
+
interval: monthly
|
|
13
|
+
ignore:
|
|
14
|
+
- dependency-name: "*"
|
|
15
|
+
update-types: ["version-update:semver-patch"]
|
|
16
|
+
groups:
|
|
17
|
+
dev-dependencies:
|
|
18
|
+
applies-to: version-updates
|
|
19
|
+
dependency-type: development
|
|
20
|
+
|
|
21
|
+
- package-ecosystem: "devcontainers"
|
|
22
|
+
directory: "/"
|
|
23
|
+
schedule:
|
|
24
|
+
interval: monthly
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
permissions: read-all
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
lint:
|
|
13
|
+
name: Lint
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- name: Checkout
|
|
17
|
+
uses: actions/checkout@v4
|
|
18
|
+
|
|
19
|
+
- name: Set up uv
|
|
20
|
+
uses: astral-sh/setup-uv@v3
|
|
21
|
+
with:
|
|
22
|
+
version: latest
|
|
23
|
+
enable-cache: true
|
|
24
|
+
|
|
25
|
+
- name: Install deps
|
|
26
|
+
run: uv sync --frozen --all-extras
|
|
27
|
+
|
|
28
|
+
- uses: pre-commit/action@v3.0.1
|
|
29
|
+
env:
|
|
30
|
+
SKIP: pytest
|
|
31
|
+
|
|
32
|
+
- uses: pre-commit-ci/lite-action@v1.1.0
|
|
33
|
+
if: always()
|
|
34
|
+
|
|
35
|
+
test:
|
|
36
|
+
name: Test (Python ${{ matrix.python-version }}, Django ${{ matrix.django-version }})
|
|
37
|
+
runs-on: ubuntu-latest
|
|
38
|
+
strategy:
|
|
39
|
+
fail-fast: false
|
|
40
|
+
matrix:
|
|
41
|
+
python-version: ["3.10", "3.11", "3.12"]
|
|
42
|
+
django-version: ["4.2", "5.0", "5.1"]
|
|
43
|
+
include:
|
|
44
|
+
- python-version: "3.8"
|
|
45
|
+
django-version: "4.2"
|
|
46
|
+
|
|
47
|
+
- python-version: "3.9"
|
|
48
|
+
django-version: "4.2"
|
|
49
|
+
|
|
50
|
+
- python-version: "3.13"
|
|
51
|
+
django-version: "5.1"
|
|
52
|
+
|
|
53
|
+
steps:
|
|
54
|
+
- name: Checkout
|
|
55
|
+
uses: actions/checkout@v4
|
|
56
|
+
|
|
57
|
+
- name: Set up uv
|
|
58
|
+
uses: astral-sh/setup-uv@v3
|
|
59
|
+
with:
|
|
60
|
+
version: latest
|
|
61
|
+
enable-cache: true
|
|
62
|
+
|
|
63
|
+
- name: Set Python version
|
|
64
|
+
run: uv python pin "${{ matrix.python-version }}"
|
|
65
|
+
|
|
66
|
+
- name: Install deps
|
|
67
|
+
run: uv sync --frozen --all-extras
|
|
68
|
+
|
|
69
|
+
- name: Install Django
|
|
70
|
+
run: uv pip install Django=="${{ matrix.django-version }}.*"
|
|
71
|
+
|
|
72
|
+
- name: Run tests
|
|
73
|
+
run: uv run --frozen pytest
|
|
74
|
+
|
|
75
|
+
- name: Upload test results to Codecov
|
|
76
|
+
uses: codecov/test-results-action@v1
|
|
77
|
+
with:
|
|
78
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
79
|
+
fail_ci_if_error: false
|
|
80
|
+
files: junit.xml
|
|
81
|
+
flags: >-
|
|
82
|
+
python-${{ matrix.python-version }},
|
|
83
|
+
django-${{ matrix.django-version }}
|
|
84
|
+
|
|
85
|
+
- name: Upload coverage report
|
|
86
|
+
uses: codecov/codecov-action@v4
|
|
87
|
+
env:
|
|
88
|
+
PYTHON: ${{ matrix.python-version }}
|
|
89
|
+
DJANGO: ${{ matrix.django-version }}
|
|
90
|
+
with:
|
|
91
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
92
|
+
fail_ci_if_error: false
|
|
93
|
+
files: coverage.xml
|
|
94
|
+
env_vars: PYTHON,DJANGO
|
|
95
|
+
flags: >-
|
|
96
|
+
python-${{ matrix.python-version }},
|
|
97
|
+
django-${{ matrix.django-version }}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
name: Docs
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags: [v*]
|
|
6
|
+
|
|
7
|
+
permissions: read-all
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
build-docs:
|
|
11
|
+
name: Build Docs
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
steps:
|
|
14
|
+
- name: Checkout
|
|
15
|
+
uses: actions/checkout@v4
|
|
16
|
+
|
|
17
|
+
- name: Set up uv
|
|
18
|
+
uses: astral-sh/setup-uv@v3
|
|
19
|
+
with:
|
|
20
|
+
version: latest
|
|
21
|
+
enable-cache: true
|
|
22
|
+
|
|
23
|
+
- name: Install deps
|
|
24
|
+
run: uv sync --frozen --all-extras
|
|
25
|
+
|
|
26
|
+
- name: Generate API docs
|
|
27
|
+
run: make docs
|
|
28
|
+
|
|
29
|
+
- name: Upload docs artifact
|
|
30
|
+
uses: actions/upload-pages-artifact@v3
|
|
31
|
+
with:
|
|
32
|
+
path: site/
|
|
33
|
+
|
|
34
|
+
deploy-docs:
|
|
35
|
+
name: Deploy Docs
|
|
36
|
+
needs: build-docs
|
|
37
|
+
runs-on: ubuntu-latest
|
|
38
|
+
permissions:
|
|
39
|
+
pages: write
|
|
40
|
+
id-token: write
|
|
41
|
+
environment:
|
|
42
|
+
name: github-pages
|
|
43
|
+
url: ${{ steps.deployment.outputs.page_url }}
|
|
44
|
+
concurrency:
|
|
45
|
+
group: pages
|
|
46
|
+
cancel-in-progress: false
|
|
47
|
+
steps:
|
|
48
|
+
- name: Publish API docs to GitHub Pages
|
|
49
|
+
id: deployment
|
|
50
|
+
uses: actions/deploy-pages@v4
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags: [v*]
|
|
6
|
+
|
|
7
|
+
permissions: read-all
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
release:
|
|
11
|
+
name: Release
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
permissions:
|
|
14
|
+
contents: write
|
|
15
|
+
steps:
|
|
16
|
+
- name: Checkout
|
|
17
|
+
uses: actions/checkout@v4
|
|
18
|
+
|
|
19
|
+
- name: Set up uv
|
|
20
|
+
uses: astral-sh/setup-uv@v3
|
|
21
|
+
with:
|
|
22
|
+
version: latest
|
|
23
|
+
enable-cache: true
|
|
24
|
+
|
|
25
|
+
- name: Install deps
|
|
26
|
+
run: uv sync --frozen --all-extras
|
|
27
|
+
|
|
28
|
+
- name: Build package
|
|
29
|
+
run: uv build
|
|
30
|
+
|
|
31
|
+
- name: Create release
|
|
32
|
+
uses: softprops/action-gh-release@v2
|
|
33
|
+
with:
|
|
34
|
+
generate_release_notes: true
|
|
35
|
+
files: dist/*
|
|
36
|
+
|
|
37
|
+
- name: Upload release distributions
|
|
38
|
+
uses: actions/upload-artifact@v4
|
|
39
|
+
with:
|
|
40
|
+
name: release-dists
|
|
41
|
+
path: dist/
|
|
42
|
+
|
|
43
|
+
publish-pypi:
|
|
44
|
+
name: Publish to PyPI
|
|
45
|
+
runs-on: ubuntu-latest
|
|
46
|
+
needs:
|
|
47
|
+
- release
|
|
48
|
+
permissions:
|
|
49
|
+
id-token: write
|
|
50
|
+
steps:
|
|
51
|
+
- name: Retrieve release distributions
|
|
52
|
+
uses: actions/download-artifact@v4
|
|
53
|
+
with:
|
|
54
|
+
name: release-dists
|
|
55
|
+
path: dist/
|
|
56
|
+
|
|
57
|
+
- name: Publish release distributions to PyPI
|
|
58
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|