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.

Files changed (129) hide show
  1. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/.github/workflows/docs.yml +4 -0
  2. django_ninja_aio_crud-2.18.1/.github/workflows/performance.yml +80 -0
  3. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/.gitignore +2 -0
  4. django_ninja_aio_crud-2.18.1/CHANGELOG.md +657 -0
  5. django_ninja_aio_crud-2.18.1/CLAUDE.md +262 -0
  6. django_ninja_aio_crud-2.18.1/PKG-INFO +431 -0
  7. django_ninja_aio_crud-2.18.1/README.md +395 -0
  8. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/api/authentication.md +51 -26
  9. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/api/models/model_serializer.md +68 -26
  10. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/api/models/model_util.md +47 -22
  11. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/api/models/serializers.md +75 -19
  12. django_ninja_aio_crud-2.18.1/docs/api/models/validators.md +344 -0
  13. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/api/pagination.md +65 -30
  14. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/api/renderers/orjson_renderer.md +37 -3
  15. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/api/views/api_view.md +31 -12
  16. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/api/views/api_view_set.md +52 -29
  17. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/api/views/decorators.md +55 -7
  18. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/api/views/mixins.md +44 -3
  19. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/auth.md +63 -24
  20. django_ninja_aio_crud-2.18.1/docs/contributing.md +80 -0
  21. django_ninja_aio_crud-2.18.1/docs/extra.css +911 -0
  22. django_ninja_aio_crud-2.18.1/docs/getting_started/installation.md +61 -0
  23. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/getting_started/quick_start.md +61 -26
  24. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/getting_started/quick_start_serializer.md +33 -10
  25. django_ninja_aio_crud-2.18.1/docs/images/logo-full.png +0 -0
  26. django_ninja_aio_crud-2.18.1/docs/images/logo.png +0 -0
  27. django_ninja_aio_crud-2.18.1/docs/index.md +594 -0
  28. django_ninja_aio_crud-2.18.1/docs/performance.md +132 -0
  29. django_ninja_aio_crud-2.18.1/docs/release_notes.md +3 -0
  30. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/tutorial/authentication.md +133 -103
  31. django_ninja_aio_crud-2.18.1/docs/tutorial/crud.md +868 -0
  32. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/tutorial/filtering.md +96 -50
  33. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/tutorial/model.md +239 -184
  34. django_ninja_aio_crud-2.18.1/docs/tutorial/serializer.md +853 -0
  35. django_ninja_aio_crud-2.18.1/main.py +320 -0
  36. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/mkdocs.yml +14 -0
  37. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/__init__.py +1 -1
  38. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/models/serializers.py +715 -99
  39. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/models/utils.py +235 -35
  40. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/types.py +38 -0
  41. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/views/api.py +108 -9
  42. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/views/mixins.py +25 -9
  43. django_ninja_aio_crud-2.18.1/overrides/main.html +10 -0
  44. django_ninja_aio_crud-2.18.1/overrides/partials/announce.html +4 -0
  45. django_ninja_aio_crud-2.18.1/run-performance.sh +7 -0
  46. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/helpers/test_many_to_many_api.py +30 -0
  47. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/models/test_models_extra.py +161 -0
  48. django_ninja_aio_crud-2.18.1/tests/performance/check_regression.py +172 -0
  49. django_ninja_aio_crud-2.18.1/tests/performance/generate_report.py +511 -0
  50. django_ninja_aio_crud-2.18.1/tests/performance/test_performance.py +482 -0
  51. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/test_app/models.py +44 -0
  52. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/test_app/serializers.py +48 -0
  53. django_ninja_aio_crud-2.18.1/tests/test_decorators.py +160 -0
  54. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/test_serializers.py +733 -3
  55. django_ninja_aio_crud-2.18.1/tests/views/__init__.py +0 -0
  56. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/views/test_views.py +238 -0
  57. django_ninja_aio_crud-2.17.0/PKG-INFO +0 -379
  58. django_ninja_aio_crud-2.17.0/README.md +0 -343
  59. django_ninja_aio_crud-2.17.0/docs/contributing.md +0 -41
  60. django_ninja_aio_crud-2.17.0/docs/extra.css +0 -14
  61. django_ninja_aio_crud-2.17.0/docs/getting_started/installation.md +0 -10
  62. django_ninja_aio_crud-2.17.0/docs/images/logo.png +0 -0
  63. django_ninja_aio_crud-2.17.0/docs/index.md +0 -382
  64. django_ninja_aio_crud-2.17.0/docs/release_notes.md +0 -4
  65. django_ninja_aio_crud-2.17.0/docs/tutorial/crud.md +0 -871
  66. django_ninja_aio_crud-2.17.0/main.py +0 -245
  67. django_ninja_aio_crud-2.17.0/tests/test_decorators.py +0 -84
  68. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/.github/dependabot.yml +0 -0
  69. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/.github/workflows/coverage.yml +0 -0
  70. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/.github/workflows/publish.yml +0 -0
  71. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/.pre-commit-config.yaml +0 -0
  72. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/LICENSE +0 -0
  73. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/CNAME +0 -0
  74. {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
  75. {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
  76. {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
  77. {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
  78. {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
  79. {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
  80. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/images/bar-swagger.png +0 -0
  81. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/images/favicon.ico +0 -0
  82. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/images/foo-swagger.png +0 -0
  83. {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
  84. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/docs/requirements.txt +0 -0
  85. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/api.py +0 -0
  86. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/auth.py +0 -0
  87. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/decorators/__init__.py +0 -0
  88. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/decorators/operations.py +0 -0
  89. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/decorators/views.py +0 -0
  90. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/exceptions.py +0 -0
  91. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/factory/__init__.py +0 -0
  92. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/factory/operations.py +0 -0
  93. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/helpers/__init__.py +0 -0
  94. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/helpers/api.py +0 -0
  95. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/helpers/query.py +0 -0
  96. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/models/__init__.py +0 -0
  97. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/parsers.py +0 -0
  98. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/renders.py +0 -0
  99. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/schemas/__init__.py +0 -0
  100. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/schemas/api.py +0 -0
  101. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/schemas/filters.py +0 -0
  102. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/schemas/generics.py +0 -0
  103. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/schemas/helpers.py +0 -0
  104. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/ninja_aio/views/__init__.py +0 -0
  105. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/pyproject.toml +0 -0
  106. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/requirements.dev.txt +0 -0
  107. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/run-local-coverage.sh +0 -0
  108. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/__init__.py +0 -0
  109. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/core/__init__.py +0 -0
  110. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/core/test_decorators.py +0 -0
  111. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/core/test_exceptions_api.py +0 -0
  112. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/core/test_renderer_parser.py +0 -0
  113. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/generics/__init__.py +0 -0
  114. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/generics/literals.py +0 -0
  115. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/generics/models.py +0 -0
  116. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/generics/request.py +0 -0
  117. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/generics/views.py +0 -0
  118. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/helpers/__init__.py +0 -0
  119. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/models/__init__.py +0 -0
  120. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/models/test_model_util.py +0 -0
  121. {django_ninja_aio_crud-2.17.0/tests/test_app → django_ninja_aio_crud-2.18.1/tests/performance}/__init__.py +0 -0
  122. {django_ninja_aio_crud-2.17.0/tests/views → django_ninja_aio_crud-2.18.1/tests/test_app}/__init__.py +0 -0
  123. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/test_app/schema.py +0 -0
  124. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/test_app/views.py +0 -0
  125. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/test_auth.py +0 -0
  126. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/test_exceptions.py +0 -0
  127. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/test_query_util.py +0 -0
  128. {django_ninja_aio_crud-2.17.0 → django_ninja_aio_crud-2.18.1}/tests/test_settings.py +0 -0
  129. {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'
@@ -293,3 +293,5 @@ docker_script.sh
293
293
  migrations
294
294
  django-test/*
295
295
  test_api
296
+ performance_results.json
297
+ performance_report.html