django-ninja-aio-crud 2.18.0__tar.gz → 2.18.2__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_ninja_aio_crud-2.18.2/.github/workflows/performance.yml +80 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/.gitignore +2 -0
- django_ninja_aio_crud-2.18.2/CHANGELOG.md +738 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/CLAUDE.md +71 -8
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/PKG-INFO +11 -5
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/README.md +10 -4
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/api/authentication.md +1 -5
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/api/pagination.md +2 -5
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/extra.css +376 -4
- django_ninja_aio_crud-2.18.2/docs/images/logo-full.png +0 -0
- django_ninja_aio_crud-2.18.2/docs/images/logo.png +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/index.md +16 -1
- django_ninja_aio_crud-2.18.2/docs/performance.md +132 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/tutorial/authentication.md +50 -66
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/tutorial/crud.md +298 -351
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/tutorial/filtering.md +6 -11
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/main.py +21 -2
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/mkdocs.yml +1 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/ninja_aio/__init__.py +1 -1
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/ninja_aio/models/serializers.py +180 -74
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/ninja_aio/models/utils.py +158 -35
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/ninja_aio/types.py +38 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/ninja_aio/views/api.py +108 -9
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/ninja_aio/views/mixins.py +25 -9
- django_ninja_aio_crud-2.18.2/run-performance.sh +7 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/tests/helpers/test_many_to_many_api.py +30 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/tests/models/test_models_extra.py +139 -0
- django_ninja_aio_crud-2.18.2/tests/performance/check_regression.py +172 -0
- django_ninja_aio_crud-2.18.2/tests/performance/generate_report.py +511 -0
- django_ninja_aio_crud-2.18.2/tests/performance/test_performance.py +482 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/tests/test_serializers.py +312 -1
- django_ninja_aio_crud-2.18.2/tests/views/__init__.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/tests/views/test_views.py +238 -0
- django_ninja_aio_crud-2.18.0/CHANGELOG.md +0 -272
- django_ninja_aio_crud-2.18.0/docs/images/logo.png +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/.github/dependabot.yml +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/.github/workflows/coverage.yml +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/.github/workflows/docs.yml +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/.github/workflows/publish.yml +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/.pre-commit-config.yaml +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/LICENSE +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/CNAME +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/api/models/model_serializer.md +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/api/models/model_util.md +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/api/models/serializers.md +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/api/models/validators.md +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/api/renderers/orjson_renderer.md +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/api/views/api_view.md +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/api/views/api_view_set.md +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/api/views/decorators.md +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/api/views/mixins.md +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/auth.md +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/contributing.md +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/getting_started/images/index/foo-index-create-swagger.png +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/getting_started/images/index/foo-index-delete-swagger.png +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/getting_started/images/index/foo-index-list-swagger.png +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/getting_started/images/index/foo-index-retrieve-swagger.png +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/getting_started/images/index/foo-index-swagger.png +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/getting_started/images/index/foo-index-update-swagger.png +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/getting_started/installation.md +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/getting_started/quick_start.md +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/getting_started/quick_start_serializer.md +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/images/bar-swagger.png +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/images/favicon.ico +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/images/foo-swagger.png +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/images/model_util/foo-reverse-relations-swagger.png +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/release_notes.md +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/requirements.txt +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/tutorial/model.md +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/docs/tutorial/serializer.md +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/ninja_aio/api.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/ninja_aio/auth.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/ninja_aio/decorators/__init__.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/ninja_aio/decorators/operations.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/ninja_aio/decorators/views.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/ninja_aio/exceptions.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/ninja_aio/factory/__init__.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/ninja_aio/factory/operations.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/ninja_aio/helpers/__init__.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/ninja_aio/helpers/api.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/ninja_aio/helpers/query.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/ninja_aio/models/__init__.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/ninja_aio/parsers.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/ninja_aio/renders.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/ninja_aio/schemas/__init__.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/ninja_aio/schemas/api.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/ninja_aio/schemas/filters.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/ninja_aio/schemas/generics.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/ninja_aio/schemas/helpers.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/ninja_aio/views/__init__.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/overrides/main.html +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/overrides/partials/announce.html +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/pyproject.toml +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/requirements.dev.txt +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/run-local-coverage.sh +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/tests/__init__.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/tests/core/__init__.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/tests/core/test_decorators.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/tests/core/test_exceptions_api.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/tests/core/test_renderer_parser.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/tests/generics/__init__.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/tests/generics/literals.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/tests/generics/models.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/tests/generics/request.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/tests/generics/views.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/tests/helpers/__init__.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/tests/models/__init__.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/tests/models/test_model_util.py +0 -0
- {django_ninja_aio_crud-2.18.0/tests/test_app → django_ninja_aio_crud-2.18.2/tests/performance}/__init__.py +0 -0
- {django_ninja_aio_crud-2.18.0/tests/views → django_ninja_aio_crud-2.18.2/tests/test_app}/__init__.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/tests/test_app/models.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/tests/test_app/schema.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/tests/test_app/serializers.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/tests/test_app/views.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/tests/test_auth.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/tests/test_decorators.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/tests/test_exceptions.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/tests/test_query_util.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/tests/test_settings.py +0 -0
- {django_ninja_aio_crud-2.18.0 → django_ninja_aio_crud-2.18.2}/tests/views/test_viewset.py +0 -0
|
@@ -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'
|