django-ninja-aio-crud 2.17.0__tar.gz → 2.18.1__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.
Potentially problematic release.
This version of django-ninja-aio-crud might be problematic. Click here for more details.
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/.github/workflows/docs.yml +4 -0
- django_ninja_aio_crud-2.18.1/.github/workflows/performance.yml +80 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/.gitignore +2 -0
- django_ninja_aio_crud-2.18.1/CHANGELOG.md +657 -0
- django_ninja_aio_crud-2.18.1/CLAUDE.md +262 -0
- django_ninja_aio_crud-2.18.1/PKG-INFO +431 -0
- django_ninja_aio_crud-2.18.1/README.md +395 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/api/authentication.md +51 -26
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/api/models/model_serializer.md +68 -26
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/api/models/model_util.md +47 -22
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/api/models/serializers.md +75 -19
- django_ninja_aio_crud-2.18.1/docs/api/models/validators.md +344 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/api/pagination.md +65 -30
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/api/renderers/orjson_renderer.md +37 -3
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/api/views/api_view.md +31 -12
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/api/views/api_view_set.md +52 -29
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/api/views/decorators.md +55 -7
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/api/views/mixins.md +44 -3
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/auth.md +63 -24
- django_ninja_aio_crud-2.18.1/docs/contributing.md +80 -0
- django_ninja_aio_crud-2.18.1/docs/extra.css +911 -0
- django_ninja_aio_crud-2.18.1/docs/getting_started/installation.md +61 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/getting_started/quick_start.md +61 -26
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/getting_started/quick_start_serializer.md +33 -10
- django_ninja_aio_crud-2.18.1/docs/images/logo-full.png +0 -0
- django_ninja_aio_crud-2.18.1/docs/images/logo.png +0 -0
- django_ninja_aio_crud-2.18.1/docs/index.md +594 -0
- django_ninja_aio_crud-2.18.1/docs/performance.md +132 -0
- django_ninja_aio_crud-2.18.1/docs/release_notes.md +3 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/tutorial/authentication.md +133 -103
- django_ninja_aio_crud-2.18.1/docs/tutorial/crud.md +868 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/tutorial/filtering.md +96 -50
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/tutorial/model.md +239 -184
- django_ninja_aio_crud-2.18.1/docs/tutorial/serializer.md +853 -0
- django_ninja_aio_crud-2.18.1/main.py +320 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/mkdocs.yml +14 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/__init__.py +1 -1
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/models/serializers.py +715 -99
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/models/utils.py +235 -35
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/types.py +38 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/views/api.py +108 -9
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/views/mixins.py +25 -9
- django_ninja_aio_crud-2.18.1/overrides/main.html +10 -0
- django_ninja_aio_crud-2.18.1/overrides/partials/announce.html +4 -0
- django_ninja_aio_crud-2.18.1/run-performance.sh +7 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/helpers/test_many_to_many_api.py +30 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/models/test_models_extra.py +161 -0
- django_ninja_aio_crud-2.18.1/tests/performance/check_regression.py +172 -0
- django_ninja_aio_crud-2.18.1/tests/performance/generate_report.py +511 -0
- django_ninja_aio_crud-2.18.1/tests/performance/test_performance.py +482 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/test_app/models.py +44 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/test_app/serializers.py +48 -0
- django_ninja_aio_crud-2.18.1/tests/test_decorators.py +160 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/test_serializers.py +733 -3
- django_ninja_aio_crud-2.18.1/tests/views/__init__.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/views/test_views.py +238 -0
- django_ninja_aio_crud-2.17.0/PKG-INFO +0 -379
- django_ninja_aio_crud-2.17.0/README.md +0 -343
- django_ninja_aio_crud-2.17.0/docs/contributing.md +0 -41
- django_ninja_aio_crud-2.17.0/docs/extra.css +0 -14
- django_ninja_aio_crud-2.17.0/docs/getting_started/installation.md +0 -10
- django_ninja_aio_crud-2.17.0/docs/images/logo.png +0 -0
- django_ninja_aio_crud-2.17.0/docs/index.md +0 -382
- django_ninja_aio_crud-2.17.0/docs/release_notes.md +0 -4
- django_ninja_aio_crud-2.17.0/docs/tutorial/crud.md +0 -871
- django_ninja_aio_crud-2.17.0/main.py +0 -245
- django_ninja_aio_crud-2.17.0/tests/test_decorators.py +0 -84
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/.github/dependabot.yml +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/.github/workflows/coverage.yml +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/.github/workflows/publish.yml +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/.pre-commit-config.yaml +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/LICENSE +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/CNAME +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/getting_started/images/index/foo-index-create-swagger.png +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/getting_started/images/index/foo-index-delete-swagger.png +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/getting_started/images/index/foo-index-list-swagger.png +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/getting_started/images/index/foo-index-retrieve-swagger.png +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/getting_started/images/index/foo-index-swagger.png +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/getting_started/images/index/foo-index-update-swagger.png +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/images/bar-swagger.png +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/images/favicon.ico +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/images/foo-swagger.png +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/images/model_util/foo-reverse-relations-swagger.png +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/requirements.txt +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/api.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/auth.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/decorators/__init__.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/decorators/operations.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/decorators/views.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/exceptions.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/factory/__init__.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/factory/operations.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/helpers/__init__.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/helpers/api.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/helpers/query.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/models/__init__.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/parsers.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/renders.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/schemas/__init__.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/schemas/api.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/schemas/filters.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/schemas/generics.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/schemas/helpers.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/views/__init__.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/pyproject.toml +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/requirements.dev.txt +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/run-local-coverage.sh +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/__init__.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/core/__init__.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/core/test_decorators.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/core/test_exceptions_api.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/core/test_renderer_parser.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/generics/__init__.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/generics/literals.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/generics/models.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/generics/request.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/generics/views.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/helpers/__init__.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/models/__init__.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/models/test_model_util.py +0 -0
- {django_ninja_aio_crud-2.17.0/tests/test_app → django_ninja_aio_crud-2.18.1/tests/performance}/__init__.py +0 -0
- {django_ninja_aio_crud-2.17.0/tests/views → django_ninja_aio_crud-2.18.1/tests/test_app}/__init__.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/test_app/schema.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/test_app/views.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/test_auth.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/test_exceptions.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/test_query_util.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/test_settings.py +0 -0
- {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/views/test_viewset.py +0 -0
|
@@ -29,6 +29,8 @@ on:
|
|
|
29
29
|
- "2.14"
|
|
30
30
|
- "2.15"
|
|
31
31
|
- "2.16"
|
|
32
|
+
- "2.17"
|
|
33
|
+
- "2.18"
|
|
32
34
|
make_latest:
|
|
33
35
|
description: 'Set as "latest" and default?'
|
|
34
36
|
type: boolean
|
|
@@ -61,6 +63,8 @@ on:
|
|
|
61
63
|
- "2.14"
|
|
62
64
|
- "2.15"
|
|
63
65
|
- "2.16"
|
|
66
|
+
- "2.17"
|
|
67
|
+
- "2.18"
|
|
64
68
|
delete_confirm:
|
|
65
69
|
description: 'Confirm deletion of the selected version'
|
|
66
70
|
type: boolean
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
name: Performance
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ main ]
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: write
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
benchmarks:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v6
|
|
18
|
+
- name: Set up Python
|
|
19
|
+
uses: actions/setup-python@v6
|
|
20
|
+
with:
|
|
21
|
+
python-version: '3.14'
|
|
22
|
+
- name: Install Flit
|
|
23
|
+
run: pip install flit
|
|
24
|
+
- name: Install Dependencies
|
|
25
|
+
run: flit install --symlink
|
|
26
|
+
- name: Run Performance Benchmarks
|
|
27
|
+
run: |
|
|
28
|
+
python -m django test tests.performance --settings=tests.test_settings --tag=performance -v2
|
|
29
|
+
- name: Generate Performance Report
|
|
30
|
+
run: python tests/performance/generate_report.py
|
|
31
|
+
|
|
32
|
+
# Download baseline from the latest main branch run
|
|
33
|
+
- name: Download Baseline Performance Results
|
|
34
|
+
if: github.event_name == 'pull_request' || github.ref != 'refs/heads/main'
|
|
35
|
+
uses: dawidd6/action-download-artifact@v6
|
|
36
|
+
continue-on-error: true
|
|
37
|
+
with:
|
|
38
|
+
workflow: performance.yml
|
|
39
|
+
branch: main
|
|
40
|
+
name: performance-report
|
|
41
|
+
path: baseline/
|
|
42
|
+
if_no_artifact_found: warn
|
|
43
|
+
|
|
44
|
+
# Check for regressions
|
|
45
|
+
- name: Check Performance Regression
|
|
46
|
+
if: github.event_name == 'pull_request' || github.ref != 'refs/heads/main'
|
|
47
|
+
run: |
|
|
48
|
+
if [ -f baseline/performance_results.json ]; then
|
|
49
|
+
python tests/performance/check_regression.py \
|
|
50
|
+
--baseline baseline/performance_results.json \
|
|
51
|
+
--current performance_results.json \
|
|
52
|
+
--threshold 20
|
|
53
|
+
else
|
|
54
|
+
echo "⚠️ No baseline found, skipping regression check"
|
|
55
|
+
echo "This is expected for the first benchmark run on main branch"
|
|
56
|
+
fi
|
|
57
|
+
|
|
58
|
+
- name: Upload Performance Report
|
|
59
|
+
uses: actions/upload-artifact@v4
|
|
60
|
+
with:
|
|
61
|
+
name: performance-report
|
|
62
|
+
path: |
|
|
63
|
+
performance_report.html
|
|
64
|
+
performance_results.json
|
|
65
|
+
|
|
66
|
+
# Deploy to GitHub Pages (main branch only)
|
|
67
|
+
- name: Deploy Performance Report to GitHub Pages
|
|
68
|
+
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
|
69
|
+
uses: peaceiris/actions-gh-pages@v4
|
|
70
|
+
with:
|
|
71
|
+
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
72
|
+
publish_dir: ./
|
|
73
|
+
destination_dir: performance
|
|
74
|
+
keep_files: true
|
|
75
|
+
publish_branch: gh-pages
|
|
76
|
+
user_name: 'github-actions[bot]'
|
|
77
|
+
user_email: 'github-actions[bot]@users.noreply.github.com'
|
|
78
|
+
commit_message: 'Deploy performance report'
|
|
79
|
+
enable_jekyll: false
|
|
80
|
+
exclude_assets: '.git*,*.py,*.pyc,ninja_aio/**,tests/**,docs/**,.venv/**,*.toml,*.cfg,*.txt,*.sh,*.md'
|