django-bolt 0.1.2__tar.gz → 0.2.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.

Potentially problematic release.


This version of django-bolt might be problematic. Click here for more details.

Files changed (246) hide show
  1. {django_bolt-0.1.2 → django_bolt-0.2.2}/.github/workflows/CI.yml +11 -0
  2. django_bolt-0.2.2/BENCHMARK_BASELINE.md +264 -0
  3. {django_bolt-0.1.2 → django_bolt-0.2.2}/BENCHMARK_DEV.md +92 -92
  4. {django_bolt-0.1.2 → django_bolt-0.2.2}/CLAUDE.md +13 -0
  5. {django_bolt-0.1.2 → django_bolt-0.2.2}/Cargo.lock +2 -1
  6. {django_bolt-0.1.2 → django_bolt-0.2.2}/Cargo.toml +2 -1
  7. {django_bolt-0.1.2 → django_bolt-0.2.2}/Makefile +27 -59
  8. {django_bolt-0.1.2 → django_bolt-0.2.2}/PKG-INFO +32 -18
  9. {django_bolt-0.1.2 → django_bolt-0.2.2}/README.md +31 -18
  10. {django_bolt-0.1.2 → django_bolt-0.2.2}/TODO.md +2 -2
  11. {django_bolt-0.1.2 → django_bolt-0.2.2}/docs/MIDDLEWARE.md +130 -0
  12. {django_bolt-0.1.2 → django_bolt-0.2.2}/docs/PUBLISHING.md +41 -12
  13. {django_bolt-0.1.2 → django_bolt-0.2.2}/docs/TESTING_UTILITIES.md +102 -9
  14. {django_bolt-0.1.2 → django_bolt-0.2.2}/pyproject.toml +1 -1
  15. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/testing/__init__.py +1 -2
  16. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/testing/client.py +35 -80
  17. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/testing/helpers.py +1 -44
  18. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/testproject/api.py +2 -1
  19. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/testproject/settings.py +33 -0
  20. django_bolt-0.2.2/python/tests/test_cors_implementation.py +532 -0
  21. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/test_testing_utilities.py +1 -17
  22. django_bolt-0.2.2/scripts/release.sh +201 -0
  23. {django_bolt-0.1.2 → django_bolt-0.2.2}/src/handler.rs +136 -101
  24. {django_bolt-0.1.2 → django_bolt-0.2.2}/src/lib.rs +1 -0
  25. {django_bolt-0.1.2 → django_bolt-0.2.2}/src/metadata.rs +128 -75
  26. {django_bolt-0.1.2 → django_bolt-0.2.2}/src/middleware/rate_limit.rs +1 -1
  27. {django_bolt-0.1.2 → django_bolt-0.2.2}/src/server.rs +112 -10
  28. {django_bolt-0.1.2 → django_bolt-0.2.2}/src/state.rs +5 -2
  29. {django_bolt-0.1.2 → django_bolt-0.2.2}/src/test_state.rs +57 -48
  30. {django_bolt-0.1.2 → django_bolt-0.2.2}/src/testing.rs +69 -49
  31. django_bolt-0.2.2/src/validation.rs +135 -0
  32. {django_bolt-0.1.2 → django_bolt-0.2.2}/uv.lock +13 -8
  33. django_bolt-0.1.2/BENCHMARK_BASELINE.md +0 -203
  34. {django_bolt-0.1.2 → django_bolt-0.2.2}/.gitignore +0 -0
  35. {django_bolt-0.1.2 → django_bolt-0.2.2}/.python-version +0 -0
  36. {django_bolt-0.1.2 → django_bolt-0.2.2}/.vscode/settings.json +0 -0
  37. {django_bolt-0.1.2 → django_bolt-0.2.2}/docs/ANNOTATION_GUIDE.md +0 -0
  38. {django_bolt-0.1.2 → django_bolt-0.2.2}/docs/ASYNC_DJANGO.md +0 -0
  39. {django_bolt-0.1.2 → django_bolt-0.2.2}/docs/CLASS_BASED_VIEWS.md +0 -0
  40. {django_bolt-0.1.2 → django_bolt-0.2.2}/docs/COMPRESSION.md +0 -0
  41. {django_bolt-0.1.2 → django_bolt-0.2.2}/docs/DEPENDENCY_INJECTION.md +0 -0
  42. {django_bolt-0.1.2 → django_bolt-0.2.2}/docs/DJANGO_ADMIN.md +0 -0
  43. {django_bolt-0.1.2 → django_bolt-0.2.2}/docs/EXCEPTIONS.md +0 -0
  44. {django_bolt-0.1.2 → django_bolt-0.2.2}/docs/GETTING_STARTED.md +0 -0
  45. {django_bolt-0.1.2 → django_bolt-0.2.2}/docs/GIL_OPTIMIZATION.md +0 -0
  46. {django_bolt-0.1.2 → django_bolt-0.2.2}/docs/LOGGING.md +0 -0
  47. {django_bolt-0.1.2 → django_bolt-0.2.2}/docs/OPENAPI.md +0 -0
  48. {django_bolt-0.1.2 → django_bolt-0.2.2}/docs/OPENAPI_ERROR_RESPONSES.md +0 -0
  49. {django_bolt-0.1.2 → django_bolt-0.2.2}/docs/OPENAPI_METADATA_IMPLEMENTATION.md +0 -0
  50. {django_bolt-0.1.2 → django_bolt-0.2.2}/docs/PAGINATION.md +0 -0
  51. {django_bolt-0.1.2 → django_bolt-0.2.2}/docs/README.md +0 -0
  52. {django_bolt-0.1.2 → django_bolt-0.2.2}/docs/RESPONSES.md +0 -0
  53. {django_bolt-0.1.2 → django_bolt-0.2.2}/docs/SECURITY.md +0 -0
  54. {django_bolt-0.1.2 → django_bolt-0.2.2}/docs/SERIALIZATION.md +0 -0
  55. {django_bolt-0.1.2 → django_bolt-0.2.2}/docs/favicon.png +0 -0
  56. {django_bolt-0.1.2 → django_bolt-0.2.2}/docs/icon.png +0 -0
  57. {django_bolt-0.1.2 → django_bolt-0.2.2}/docs/logo.png +0 -0
  58. {django_bolt-0.1.2 → django_bolt-0.2.2}/pytest.ini +0 -0
  59. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/__init__.py +0 -0
  60. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/_json.py +0 -0
  61. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/admin/__init__.py +0 -0
  62. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/admin/admin_detection.py +0 -0
  63. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/admin/asgi_bridge.py +0 -0
  64. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/admin/routes.py +0 -0
  65. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/admin/static.py +0 -0
  66. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/admin/static_routes.py +0 -0
  67. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/api.py +0 -0
  68. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/apps.py +0 -0
  69. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/async_collector.py +0 -0
  70. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/auth/__init__.py +0 -0
  71. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/auth/backends.py +0 -0
  72. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/auth/guards.py +0 -0
  73. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/auth/jwt_utils.py +0 -0
  74. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/auth/revocation.py +0 -0
  75. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/auth/token.py +0 -0
  76. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/binding.py +0 -0
  77. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/bootstrap.py +0 -0
  78. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/cli.py +0 -0
  79. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/compression.py +0 -0
  80. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/decorators.py +0 -0
  81. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/dependencies.py +0 -0
  82. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/error_handlers.py +0 -0
  83. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/exceptions.py +0 -0
  84. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/health.py +0 -0
  85. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/logging/__init__.py +0 -0
  86. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/logging/config.py +0 -0
  87. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/logging/middleware.py +0 -0
  88. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/management/__init__.py +0 -0
  89. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/management/commands/__init__.py +0 -0
  90. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/management/commands/runbolt.py +0 -0
  91. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/middleware/__init__.py +0 -0
  92. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/middleware/compiler.py +0 -0
  93. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/middleware/middleware.py +0 -0
  94. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/__init__.py +0 -0
  95. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/config.py +0 -0
  96. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/plugins.py +0 -0
  97. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/routes.py +0 -0
  98. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/schema_generator.py +0 -0
  99. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/__init__.py +0 -0
  100. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/base.py +0 -0
  101. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/callback.py +0 -0
  102. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/components.py +0 -0
  103. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/contact.py +0 -0
  104. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/discriminator.py +0 -0
  105. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/encoding.py +0 -0
  106. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/enums.py +0 -0
  107. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/example.py +0 -0
  108. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/external_documentation.py +0 -0
  109. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/header.py +0 -0
  110. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/info.py +0 -0
  111. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/license.py +0 -0
  112. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/link.py +0 -0
  113. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/media_type.py +0 -0
  114. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/oauth_flow.py +0 -0
  115. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/oauth_flows.py +0 -0
  116. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/open_api.py +0 -0
  117. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/operation.py +0 -0
  118. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/parameter.py +0 -0
  119. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/path_item.py +0 -0
  120. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/paths.py +0 -0
  121. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/reference.py +0 -0
  122. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/request_body.py +0 -0
  123. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/response.py +0 -0
  124. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/responses.py +0 -0
  125. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/schema.py +0 -0
  126. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/security_requirement.py +0 -0
  127. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/security_scheme.py +0 -0
  128. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/server.py +0 -0
  129. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/server_variable.py +0 -0
  130. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/tag.py +0 -0
  131. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/openapi/spec/xml.py +0 -0
  132. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/pagination.py +0 -0
  133. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/param_functions.py +0 -0
  134. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/params.py +0 -0
  135. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/request_parsing.py +0 -0
  136. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/responses.py +0 -0
  137. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/router.py +0 -0
  138. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/serialization.py +0 -0
  139. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/status_codes.py +0 -0
  140. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/typing.py +0 -0
  141. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/django_bolt/views.py +0 -0
  142. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/README.md +0 -0
  143. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/bench/__init__.py +0 -0
  144. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/bench/admin.py +0 -0
  145. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/bench/api.py +0 -0
  146. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/bench/apps.py +0 -0
  147. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/bench/migrations/0001_initial.py +0 -0
  148. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/bench/migrations/__init__.py +0 -0
  149. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/bench/models.py +0 -0
  150. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/bench/tests.py +0 -0
  151. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/bench/views.py +0 -0
  152. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/manage.py +0 -0
  153. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/test_data/100B +0 -0
  154. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/test_data/100B.txt +0 -0
  155. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/test_data/100K +0 -0
  156. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/test_data/100K.json +0 -0
  157. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/test_data/100K.txt +0 -0
  158. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/test_data/10K +0 -0
  159. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/test_data/10K.json +0 -0
  160. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/test_data/10K.txt +0 -0
  161. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/test_data/1K +0 -0
  162. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/test_data/1K.json +0 -0
  163. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/test_data/1K.txt +0 -0
  164. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/test_data/1M +0 -0
  165. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/test_data/1M.json +0 -0
  166. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/test_data/1M.txt +0 -0
  167. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/test_data/500K +0 -0
  168. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/test_data/500K.json +0 -0
  169. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/test_data/500K.txt +0 -0
  170. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/test_data/5M +0 -0
  171. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/test_data/5M.json +0 -0
  172. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/test_data/5M.txt +0 -0
  173. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/test_data/FILE_UPLOAD_1K +0 -0
  174. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/test_data/FILE_UPLOAD_1K_HEADERS.json +0 -0
  175. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/test_data/FORM_URLENCODED_1K +0 -0
  176. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/test_data/FORM_URLENCODED_1K_HEADERS.json +0 -0
  177. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/test_data/MULTIPART_1K +0 -0
  178. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/test_data/MULTIPART_1K_HEADERS.json +0 -0
  179. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/test_data/__init__.py +0 -0
  180. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/test_data/objects.py +0 -0
  181. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/test_data/persons_100.json +0 -0
  182. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/test_data/persons_50.json +0 -0
  183. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/test_data/persons_500.json +0 -0
  184. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/testproject/__init__.py +0 -0
  185. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/testproject/asgi.py +0 -0
  186. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/testproject/test_api.py +0 -0
  187. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/testproject/urls.py +0 -0
  188. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/testproject/views.py +0 -0
  189. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/testproject/wsgi.py +0 -0
  190. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/users/__init__.py +0 -0
  191. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/users/admin.py +0 -0
  192. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/users/api.py +0 -0
  193. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/users/apps.py +0 -0
  194. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/users/migrations/0001_initial.py +0 -0
  195. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/users/migrations/__init__.py +0 -0
  196. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/users/models.py +0 -0
  197. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/users/tests.py +0 -0
  198. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/example/users/views.py +0 -0
  199. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/__init__.py +0 -0
  200. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/admin_tests/__init__.py +0 -0
  201. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/admin_tests/conftest.py +0 -0
  202. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/admin_tests/test_admin_with_django.py +0 -0
  203. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/admin_tests/urls.py +0 -0
  204. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/cbv/__init__.py +0 -0
  205. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/cbv/test_class_views.py +0 -0
  206. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/cbv/test_class_views_django_orm.py +0 -0
  207. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/cbv/test_class_views_features.py +0 -0
  208. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/cbv/test_class_views_with_client.py +0 -0
  209. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/conftest.py +0 -0
  210. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/test_action_decorator.py +0 -0
  211. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/test_auth_secret_key.py +0 -0
  212. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/test_decorator_syntax.py +0 -0
  213. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/test_error_handling.py +0 -0
  214. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/test_file_response.py +0 -0
  215. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/test_global_cors.py +0 -0
  216. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/test_guards_auth.py +0 -0
  217. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/test_guards_integration.py +0 -0
  218. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/test_health.py +0 -0
  219. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/test_integration_validation.py +0 -0
  220. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/test_json_validation.py +0 -0
  221. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/test_jwt_auth.py +0 -0
  222. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/test_jwt_token.py +0 -0
  223. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/test_logging.py +0 -0
  224. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/test_logging_merge.py +0 -0
  225. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/test_middleware.py +0 -0
  226. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/test_middleware_server.py +0 -0
  227. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/test_model_viewset.py +0 -0
  228. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/test_models.py +0 -0
  229. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/test_openapi_docs.py +0 -0
  230. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/test_openapi_metadata.py +0 -0
  231. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/test_pagination.py +0 -0
  232. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/test_parameter_validation.py +0 -0
  233. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/test_syntax.py +0 -0
  234. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/test_testing_utilities_simple.py +0 -0
  235. {django_bolt-0.1.2 → django_bolt-0.2.2}/python/tests/test_viewset_unified.py +0 -0
  236. {django_bolt-0.1.2 → django_bolt-0.2.2}/scripts/benchmark.sh +0 -0
  237. {django_bolt-0.1.2 → django_bolt-0.2.2}/scripts/install_hey.sh +0 -0
  238. {django_bolt-0.1.2 → django_bolt-0.2.2}/src/direct_stream.rs +0 -0
  239. {django_bolt-0.1.2 → django_bolt-0.2.2}/src/error.rs +0 -0
  240. {django_bolt-0.1.2 → django_bolt-0.2.2}/src/json.rs +0 -0
  241. {django_bolt-0.1.2 → django_bolt-0.2.2}/src/middleware/auth.rs +0 -0
  242. {django_bolt-0.1.2 → django_bolt-0.2.2}/src/middleware/mod.rs +0 -0
  243. {django_bolt-0.1.2 → django_bolt-0.2.2}/src/permissions.rs +0 -0
  244. {django_bolt-0.1.2 → django_bolt-0.2.2}/src/request.rs +0 -0
  245. {django_bolt-0.1.2 → django_bolt-0.2.2}/src/router.rs +0 -0
  246. {django_bolt-0.1.2 → django_bolt-0.2.2}/src/streaming.rs +0 -0
@@ -53,6 +53,11 @@ jobs:
53
53
  steps:
54
54
  - uses: actions/checkout@v4
55
55
 
56
+ - name: Free disk space
57
+ run: |
58
+ docker system prune -af
59
+ docker volume prune -f
60
+
56
61
  - name: Build wheels
57
62
  uses: PyO3/maturin-action@v1
58
63
  with:
@@ -60,6 +65,7 @@ jobs:
60
65
  args: --release --out dist --interpreter 3.10 3.11 3.12 3.13 3.14
61
66
  sccache: 'true'
62
67
  manylinux: auto
68
+ docker-options: --pull always
63
69
 
64
70
  - name: Upload wheels
65
71
  uses: actions/upload-artifact@v4
@@ -117,6 +123,11 @@ jobs:
117
123
  steps:
118
124
  - uses: actions/checkout@v4
119
125
 
126
+ - name: Free disk space
127
+ run: |
128
+ docker system prune -af
129
+ docker volume prune -f
130
+
120
131
  - name: Build sdist
121
132
  uses: PyO3/maturin-action@v1
122
133
  with:
@@ -0,0 +1,264 @@
1
+ # Django-Bolt Benchmark
2
+
3
+ Generated: Fri Oct 24 05:46:19 PM PKT 2025
4
+ Config: 8 processes × 1 workers | C=100 N=10000
5
+
6
+ ## Root Endpoint Performance
7
+
8
+ Failed requests: 0
9
+ Requests per second: 87183.20 [#/sec] (mean)
10
+ Time per request: 1.147 [ms] (mean)
11
+ Time per request: 0.011 [ms] (mean, across all concurrent requests)
12
+
13
+ ## 10kb JSON Response Performance
14
+
15
+ ### 10kb JSON (/10k-json)
16
+
17
+ Failed requests: 0
18
+ Requests per second: 70692.86 [#/sec] (mean)
19
+ Time per request: 1.415 [ms] (mean)
20
+ Time per request: 0.014 [ms] (mean, across all concurrent requests)
21
+
22
+ ## Response Type Endpoints
23
+
24
+ ### Header Endpoint (/header)
25
+
26
+ Failed requests: 0
27
+ Requests per second: 84417.39 [#/sec] (mean)
28
+ Time per request: 1.185 [ms] (mean)
29
+ Time per request: 0.012 [ms] (mean, across all concurrent requests)
30
+
31
+ ### Cookie Endpoint (/cookie)
32
+
33
+ Failed requests: 0
34
+ Requests per second: 84801.82 [#/sec] (mean)
35
+ Time per request: 1.179 [ms] (mean)
36
+ Time per request: 0.012 [ms] (mean, across all concurrent requests)
37
+
38
+ ### Exception Endpoint (/exc)
39
+
40
+ Failed requests: 0
41
+ Requests per second: 80854.47 [#/sec] (mean)
42
+ Time per request: 1.237 [ms] (mean)
43
+ Time per request: 0.012 [ms] (mean, across all concurrent requests)
44
+
45
+ ### HTML Response (/html)
46
+
47
+ Failed requests: 0
48
+ Requests per second: 83965.17 [#/sec] (mean)
49
+ Time per request: 1.191 [ms] (mean)
50
+ Time per request: 0.012 [ms] (mean, across all concurrent requests)
51
+
52
+ ### Redirect Response (/redirect)
53
+
54
+ Failed requests: 0
55
+ Requests per second: 86233.66 [#/sec] (mean)
56
+ Time per request: 1.160 [ms] (mean)
57
+ Time per request: 0.012 [ms] (mean, across all concurrent requests)
58
+
59
+ ### File Static via FileResponse (/file-static)
60
+
61
+ Failed requests: 0
62
+ Requests per second: 29754.91 [#/sec] (mean)
63
+ Time per request: 3.361 [ms] (mean)
64
+ Time per request: 0.034 [ms] (mean, across all concurrent requests)
65
+
66
+ ## Streaming and SSE Performance
67
+
68
+ ### Streaming Plain Text (/stream)
69
+
70
+ Total: 0.2257 secs
71
+ Slowest: 0.0204 secs
72
+ Fastest: 0.0002 secs
73
+ Average: 0.0022 secs
74
+ Requests/sec: 44304.1808
75
+ Status code distribution:
76
+
77
+ ### Server-Sent Events (/sse)
78
+
79
+ Total: 0.1886 secs
80
+ Slowest: 0.0086 secs
81
+ Fastest: 0.0001 secs
82
+ Average: 0.0018 secs
83
+ Requests/sec: 53013.3799
84
+ Status code distribution:
85
+
86
+ ### Server-Sent Events (async) (/sse-async)
87
+
88
+ Total: 0.3740 secs
89
+ Slowest: 0.0127 secs
90
+ Fastest: 0.0002 secs
91
+ Average: 0.0035 secs
92
+ Requests/sec: 26737.0049
93
+ Status code distribution:
94
+
95
+ ### OpenAI Chat Completions (stream) (/v1/chat/completions)
96
+
97
+ Total: 0.6987 secs
98
+ Slowest: 0.0294 secs
99
+ Fastest: 0.0004 secs
100
+ Average: 0.0065 secs
101
+ Requests/sec: 14311.5372
102
+ Status code distribution:
103
+
104
+ ### OpenAI Chat Completions (async stream) (/v1/chat/completions-async)
105
+
106
+ Total: 0.8044 secs
107
+ Slowest: 0.0264 secs
108
+ Fastest: 0.0004 secs
109
+ Average: 0.0076 secs
110
+ Requests/sec: 12431.5822
111
+ Status code distribution:
112
+
113
+ ## Items GET Performance (/items/1?q=hello)
114
+
115
+ Failed requests: 0
116
+ Requests per second: 80854.47 [#/sec] (mean)
117
+ Time per request: 1.237 [ms] (mean)
118
+ Time per request: 0.012 [ms] (mean, across all concurrent requests)
119
+
120
+ ## Items PUT JSON Performance (/items/1)
121
+
122
+ Failed requests: 0
123
+ Requests per second: 72544.20 [#/sec] (mean)
124
+ Time per request: 1.378 [ms] (mean)
125
+ Time per request: 0.014 [ms] (mean, across all concurrent requests)
126
+
127
+ ## ORM Performance
128
+
129
+ ### Users Full10 (/users/full10)
130
+
131
+ Failed requests: 0
132
+ Requests per second: 13839.93 [#/sec] (mean)
133
+ Time per request: 7.225 [ms] (mean)
134
+ Time per request: 0.072 [ms] (mean, across all concurrent requests)
135
+
136
+ ### Users Mini10 (/users/mini10)
137
+
138
+ Failed requests: 0
139
+ Requests per second: 13976.96 [#/sec] (mean)
140
+ Time per request: 7.155 [ms] (mean)
141
+ Time per request: 0.072 [ms] (mean, across all concurrent requests)
142
+
143
+ ## Class-Based Views (CBV) Performance
144
+
145
+ ### Simple APIView GET (/cbv-simple)
146
+
147
+ Failed requests: 0
148
+ Requests per second: 80564.60 [#/sec] (mean)
149
+ Time per request: 1.241 [ms] (mean)
150
+ Time per request: 0.012 [ms] (mean, across all concurrent requests)
151
+
152
+ ### Simple APIView POST (/cbv-simple)
153
+
154
+ Failed requests: 0
155
+ Requests per second: 75386.36 [#/sec] (mean)
156
+ Time per request: 1.326 [ms] (mean)
157
+ Time per request: 0.013 [ms] (mean, across all concurrent requests)
158
+
159
+ ### Items100 ViewSet GET (/cbv-items100)
160
+
161
+ Failed requests: 0
162
+ Requests per second: 58646.21 [#/sec] (mean)
163
+ Time per request: 1.705 [ms] (mean)
164
+ Time per request: 0.017 [ms] (mean, across all concurrent requests)
165
+
166
+ ## CBV Items - Basic Operations
167
+
168
+ ### CBV Items GET (Retrieve) (/cbv-items/1)
169
+
170
+ Failed requests: 0
171
+ Requests per second: 78213.60 [#/sec] (mean)
172
+ Time per request: 1.279 [ms] (mean)
173
+ Time per request: 0.013 [ms] (mean, across all concurrent requests)
174
+
175
+ ### CBV Items PUT (Update) (/cbv-items/1)
176
+
177
+ Failed requests: 0
178
+ Requests per second: 76398.28 [#/sec] (mean)
179
+ Time per request: 1.309 [ms] (mean)
180
+ Time per request: 0.013 [ms] (mean, across all concurrent requests)
181
+
182
+ ## CBV Additional Benchmarks
183
+
184
+ ### CBV Bench Parse (POST /cbv-bench-parse)
185
+
186
+ Failed requests: 0
187
+ Requests per second: 76617.20 [#/sec] (mean)
188
+ Time per request: 1.305 [ms] (mean)
189
+ Time per request: 0.013 [ms] (mean, across all concurrent requests)
190
+
191
+ ### CBV Response Types (/cbv-response)
192
+
193
+ Failed requests: 0
194
+ Requests per second: 86009.67 [#/sec] (mean)
195
+ Time per request: 1.163 [ms] (mean)
196
+ Time per request: 0.012 [ms] (mean, across all concurrent requests)
197
+
198
+ ### CBV Streaming Plain Text (/cbv-stream)
199
+
200
+ Total: 0.3938 secs
201
+ Slowest: 0.0206 secs
202
+ Fastest: 0.0002 secs
203
+ Average: 0.0038 secs
204
+ Requests/sec: 25393.5052
205
+ Status code distribution:
206
+
207
+ ### CBV Server-Sent Events (/cbv-sse)
208
+
209
+ Total: 0.3647 secs
210
+ Slowest: 0.0180 secs
211
+ Fastest: 0.0002 secs
212
+ Average: 0.0034 secs
213
+ Requests/sec: 27418.8288
214
+ Status code distribution:
215
+
216
+ ### CBV Chat Completions (stream) (/cbv-chat-completions)
217
+
218
+ Total: 0.8309 secs
219
+ Slowest: 0.0292 secs
220
+ Fastest: 0.0005 secs
221
+ Average: 0.0080 secs
222
+ Requests/sec: 12034.7346
223
+ Status code distribution:
224
+
225
+ ## ORM Performance with CBV
226
+
227
+ ### Users CBV Mini10 (List) (/users/cbv-mini10)
228
+
229
+ Failed requests: 0
230
+ Requests per second: 17062.11 [#/sec] (mean)
231
+ Time per request: 5.861 [ms] (mean)
232
+ Time per request: 0.059 [ms] (mean, across all concurrent requests)
233
+
234
+ ## Form and File Upload Performance
235
+
236
+ ### Form Data (POST /form)
237
+
238
+ Failed requests: 0
239
+ Requests per second: 63357.70 [#/sec] (mean)
240
+ Time per request: 1.578 [ms] (mean)
241
+ Time per request: 0.016 [ms] (mean, across all concurrent requests)
242
+
243
+ ### File Upload (POST /upload)
244
+
245
+ Failed requests: 0
246
+ Requests per second: 50881.78 [#/sec] (mean)
247
+ Time per request: 1.965 [ms] (mean)
248
+ Time per request: 0.020 [ms] (mean, across all concurrent requests)
249
+
250
+ ### Mixed Form with Files (POST /mixed-form)
251
+
252
+ Failed requests: 0
253
+ Requests per second: 48102.36 [#/sec] (mean)
254
+ Time per request: 2.079 [ms] (mean)
255
+ Time per request: 0.021 [ms] (mean, across all concurrent requests)
256
+
257
+ ## Django Ninja-style Benchmarks
258
+
259
+ ### JSON Parse/Validate (POST /bench/parse)
260
+
261
+ Failed requests: 0
262
+ Requests per second: 76979.33 [#/sec] (mean)
263
+ Time per request: 1.299 [ms] (mean)
264
+ Time per request: 0.013 [ms] (mean, across all concurrent requests)
@@ -1,203 +1,203 @@
1
1
  # Django-Bolt Benchmark
2
- Generated: Wed Oct 22 11:50:02 PM PKT 2025
2
+ Generated: Fri Oct 24 06:19:30 PM PKT 2025
3
3
  Config: 8 processes × 1 workers | C=100 N=10000
4
4
 
5
5
  ## Root Endpoint Performance
6
6
  Failed requests: 0
7
- Requests per second: 87911.32 [#/sec] (mean)
8
- Time per request: 1.138 [ms] (mean)
7
+ Requests per second: 88285.41 [#/sec] (mean)
8
+ Time per request: 1.133 [ms] (mean)
9
9
  Time per request: 0.011 [ms] (mean, across all concurrent requests)
10
10
 
11
11
  ## 10kb JSON Response Performance
12
12
  ### 10kb JSON (/10k-json)
13
13
  Failed requests: 0
14
- Requests per second: 69789.03 [#/sec] (mean)
15
- Time per request: 1.433 [ms] (mean)
14
+ Requests per second: 70240.01 [#/sec] (mean)
15
+ Time per request: 1.424 [ms] (mean)
16
16
  Time per request: 0.014 [ms] (mean, across all concurrent requests)
17
17
 
18
18
  ## Response Type Endpoints
19
19
  ### Header Endpoint (/header)
20
20
  Failed requests: 0
21
- Requests per second: 83795.61 [#/sec] (mean)
22
- Time per request: 1.193 [ms] (mean)
21
+ Requests per second: 84286.47 [#/sec] (mean)
22
+ Time per request: 1.186 [ms] (mean)
23
23
  Time per request: 0.012 [ms] (mean, across all concurrent requests)
24
24
  ### Cookie Endpoint (/cookie)
25
25
  Failed requests: 0
26
- Requests per second: 82520.51 [#/sec] (mean)
27
- Time per request: 1.212 [ms] (mean)
26
+ Requests per second: 83989.85 [#/sec] (mean)
27
+ Time per request: 1.191 [ms] (mean)
28
28
  Time per request: 0.012 [ms] (mean, across all concurrent requests)
29
29
  ### Exception Endpoint (/exc)
30
30
  Failed requests: 0
31
- Requests per second: 82648.73 [#/sec] (mean)
32
- Time per request: 1.210 [ms] (mean)
31
+ Requests per second: 82489.87 [#/sec] (mean)
32
+ Time per request: 1.212 [ms] (mean)
33
33
  Time per request: 0.012 [ms] (mean, across all concurrent requests)
34
34
  ### HTML Response (/html)
35
35
  Failed requests: 0
36
- Requests per second: 86434.91 [#/sec] (mean)
37
- Time per request: 1.157 [ms] (mean)
38
- Time per request: 0.012 [ms] (mean, across all concurrent requests)
36
+ Requests per second: 87746.24 [#/sec] (mean)
37
+ Time per request: 1.140 [ms] (mean)
38
+ Time per request: 0.011 [ms] (mean, across all concurrent requests)
39
39
  ### Redirect Response (/redirect)
40
40
  Failed requests: 0
41
- Requests per second: 86174.21 [#/sec] (mean)
42
- Time per request: 1.160 [ms] (mean)
43
- Time per request: 0.012 [ms] (mean, across all concurrent requests)
41
+ Requests per second: 88004.15 [#/sec] (mean)
42
+ Time per request: 1.136 [ms] (mean)
43
+ Time per request: 0.011 [ms] (mean, across all concurrent requests)
44
44
  ### File Static via FileResponse (/file-static)
45
45
  Failed requests: 0
46
- Requests per second: 32293.17 [#/sec] (mean)
47
- Time per request: 3.097 [ms] (mean)
48
- Time per request: 0.031 [ms] (mean, across all concurrent requests)
46
+ Requests per second: 34436.21 [#/sec] (mean)
47
+ Time per request: 2.904 [ms] (mean)
48
+ Time per request: 0.029 [ms] (mean, across all concurrent requests)
49
49
 
50
50
  ## Streaming and SSE Performance
51
51
  ### Streaming Plain Text (/stream)
52
- Total: 0.2098 secs
53
- Slowest: 0.0100 secs
52
+ Total: 0.2044 secs
53
+ Slowest: 0.0085 secs
54
54
  Fastest: 0.0002 secs
55
- Average: 0.0020 secs
56
- Requests/sec: 47661.8461
55
+ Average: 0.0019 secs
56
+ Requests/sec: 48930.2188
57
57
  Status code distribution:
58
58
  ### Server-Sent Events (/sse)
59
- Total: 0.1915 secs
60
- Slowest: 0.0114 secs
59
+ Total: 0.1822 secs
60
+ Slowest: 0.0074 secs
61
61
  Fastest: 0.0002 secs
62
- Average: 0.0018 secs
63
- Requests/sec: 52219.9816
62
+ Average: 0.0017 secs
63
+ Requests/sec: 54896.3878
64
64
  Status code distribution:
65
65
  ### Server-Sent Events (async) (/sse-async)
66
- Total: 0.3733 secs
67
- Slowest: 0.0154 secs
66
+ Total: 0.3923 secs
67
+ Slowest: 0.0156 secs
68
68
  Fastest: 0.0003 secs
69
- Average: 0.0035 secs
70
- Requests/sec: 26786.2922
69
+ Average: 0.0036 secs
70
+ Requests/sec: 25491.1793
71
71
  Status code distribution:
72
72
  ### OpenAI Chat Completions (stream) (/v1/chat/completions)
73
- Total: 0.6960 secs
74
- Slowest: 0.0441 secs
73
+ Total: 0.6629 secs
74
+ Slowest: 0.0206 secs
75
75
  Fastest: 0.0004 secs
76
- Average: 0.0064 secs
77
- Requests/sec: 14367.9304
76
+ Average: 0.0062 secs
77
+ Requests/sec: 15085.7799
78
78
  Status code distribution:
79
79
  ### OpenAI Chat Completions (async stream) (/v1/chat/completions-async)
80
- Total: 0.8356 secs
81
- Slowest: 0.0270 secs
80
+ Total: 0.8085 secs
81
+ Slowest: 0.0275 secs
82
82
  Fastest: 0.0005 secs
83
- Average: 0.0079 secs
84
- Requests/sec: 11967.9144
83
+ Average: 0.0077 secs
84
+ Requests/sec: 12369.3016
85
85
  Status code distribution:
86
86
 
87
87
  ## Items GET Performance (/items/1?q=hello)
88
88
  Failed requests: 0
89
- Requests per second: 82157.12 [#/sec] (mean)
90
- Time per request: 1.217 [ms] (mean)
89
+ Requests per second: 83663.81 [#/sec] (mean)
90
+ Time per request: 1.195 [ms] (mean)
91
91
  Time per request: 0.012 [ms] (mean, across all concurrent requests)
92
92
 
93
93
  ## Items PUT JSON Performance (/items/1)
94
94
  Failed requests: 0
95
- Requests per second: 73552.67 [#/sec] (mean)
96
- Time per request: 1.360 [ms] (mean)
95
+ Requests per second: 73721.85 [#/sec] (mean)
96
+ Time per request: 1.356 [ms] (mean)
97
97
  Time per request: 0.014 [ms] (mean, across all concurrent requests)
98
98
 
99
99
  ## ORM Performance
100
100
  ### Users Full10 (/users/full10)
101
101
  Failed requests: 0
102
- Requests per second: 12584.05 [#/sec] (mean)
103
- Time per request: 7.947 [ms] (mean)
104
- Time per request: 0.079 [ms] (mean, across all concurrent requests)
102
+ Requests per second: 13181.53 [#/sec] (mean)
103
+ Time per request: 7.586 [ms] (mean)
104
+ Time per request: 0.076 [ms] (mean, across all concurrent requests)
105
105
  ### Users Mini10 (/users/mini10)
106
106
  Failed requests: 0
107
- Requests per second: 14530.32 [#/sec] (mean)
108
- Time per request: 6.882 [ms] (mean)
109
- Time per request: 0.069 [ms] (mean, across all concurrent requests)
107
+ Requests per second: 15205.12 [#/sec] (mean)
108
+ Time per request: 6.577 [ms] (mean)
109
+ Time per request: 0.066 [ms] (mean, across all concurrent requests)
110
110
 
111
111
  ## Class-Based Views (CBV) Performance
112
112
  ### Simple APIView GET (/cbv-simple)
113
113
  Failed requests: 0
114
- Requests per second: 87136.10 [#/sec] (mean)
115
- Time per request: 1.148 [ms] (mean)
114
+ Requests per second: 87876.55 [#/sec] (mean)
115
+ Time per request: 1.138 [ms] (mean)
116
116
  Time per request: 0.011 [ms] (mean, across all concurrent requests)
117
117
  ### Simple APIView POST (/cbv-simple)
118
118
  Failed requests: 0
119
- Requests per second: 77909.53 [#/sec] (mean)
120
- Time per request: 1.284 [ms] (mean)
121
- Time per request: 0.013 [ms] (mean, across all concurrent requests)
119
+ Requests per second: 80516.59 [#/sec] (mean)
120
+ Time per request: 1.242 [ms] (mean)
121
+ Time per request: 0.012 [ms] (mean, across all concurrent requests)
122
122
  ### Items100 ViewSet GET (/cbv-items100)
123
123
  Failed requests: 0
124
- Requests per second: 59903.56 [#/sec] (mean)
125
- Time per request: 1.669 [ms] (mean)
126
- Time per request: 0.017 [ms] (mean, across all concurrent requests)
124
+ Requests per second: 61083.62 [#/sec] (mean)
125
+ Time per request: 1.637 [ms] (mean)
126
+ Time per request: 0.016 [ms] (mean, across all concurrent requests)
127
127
 
128
128
  ## CBV Items - Basic Operations
129
129
  ### CBV Items GET (Retrieve) (/cbv-items/1)
130
130
  Failed requests: 0
131
- Requests per second: 80071.74 [#/sec] (mean)
132
- Time per request: 1.249 [ms] (mean)
133
- Time per request: 0.012 [ms] (mean, across all concurrent requests)
131
+ Requests per second: 79926.47 [#/sec] (mean)
132
+ Time per request: 1.251 [ms] (mean)
133
+ Time per request: 0.013 [ms] (mean, across all concurrent requests)
134
134
  ### CBV Items PUT (Update) (/cbv-items/1)
135
135
  Failed requests: 0
136
- Requests per second: 76502.90 [#/sec] (mean)
137
- Time per request: 1.307 [ms] (mean)
136
+ Requests per second: 78868.09 [#/sec] (mean)
137
+ Time per request: 1.268 [ms] (mean)
138
138
  Time per request: 0.013 [ms] (mean, across all concurrent requests)
139
139
 
140
140
  ## CBV Additional Benchmarks
141
141
  ### CBV Bench Parse (POST /cbv-bench-parse)
142
142
  Failed requests: 0
143
- Requests per second: 77787.72 [#/sec] (mean)
144
- Time per request: 1.286 [ms] (mean)
143
+ Requests per second: 78679.44 [#/sec] (mean)
144
+ Time per request: 1.271 [ms] (mean)
145
145
  Time per request: 0.013 [ms] (mean, across all concurrent requests)
146
146
  ### CBV Response Types (/cbv-response)
147
147
  Failed requests: 0
148
- Requests per second: 84578.04 [#/sec] (mean)
149
- Time per request: 1.182 [ms] (mean)
150
- Time per request: 0.012 [ms] (mean, across all concurrent requests)
148
+ Requests per second: 87933.73 [#/sec] (mean)
149
+ Time per request: 1.137 [ms] (mean)
150
+ Time per request: 0.011 [ms] (mean, across all concurrent requests)
151
151
  ### CBV Streaming Plain Text (/cbv-stream)
152
- Total: 0.3853 secs
153
- Slowest: 0.0177 secs
152
+ Total: 0.3408 secs
153
+ Slowest: 0.0155 secs
154
154
  Fastest: 0.0002 secs
155
- Average: 0.0037 secs
156
- Requests/sec: 25954.4278
155
+ Average: 0.0032 secs
156
+ Requests/sec: 29345.2999
157
157
  Status code distribution:
158
158
  ### CBV Server-Sent Events (/cbv-sse)
159
- Total: 0.3769 secs
160
- Slowest: 0.0206 secs
159
+ Total: 0.3192 secs
160
+ Slowest: 0.0160 secs
161
161
  Fastest: 0.0002 secs
162
- Average: 0.0036 secs
163
- Requests/sec: 26535.4889
162
+ Average: 0.0030 secs
163
+ Requests/sec: 31323.9348
164
164
  Status code distribution:
165
165
  ### CBV Chat Completions (stream) (/cbv-chat-completions)
166
- Total: 0.8573 secs
167
- Slowest: 0.0341 secs
166
+ Total: 0.8195 secs
167
+ Slowest: 0.0273 secs
168
168
  Fastest: 0.0005 secs
169
- Average: 0.0082 secs
170
- Requests/sec: 11665.1607
169
+ Average: 0.0078 secs
170
+ Requests/sec: 12202.1721
171
171
  Status code distribution:
172
172
 
173
173
  ## ORM Performance with CBV
174
174
  ### Users CBV Mini10 (List) (/users/cbv-mini10)
175
175
  Failed requests: 0
176
- Requests per second: 16705.87 [#/sec] (mean)
177
- Time per request: 5.986 [ms] (mean)
178
- Time per request: 0.060 [ms] (mean, across all concurrent requests)
176
+ Requests per second: 15768.32 [#/sec] (mean)
177
+ Time per request: 6.342 [ms] (mean)
178
+ Time per request: 0.063 [ms] (mean, across all concurrent requests)
179
179
 
180
180
 
181
181
  ## Form and File Upload Performance
182
182
  ### Form Data (POST /form)
183
183
  Failed requests: 0
184
- Requests per second: 68089.28 [#/sec] (mean)
185
- Time per request: 1.469 [ms] (mean)
184
+ Requests per second: 68852.50 [#/sec] (mean)
185
+ Time per request: 1.452 [ms] (mean)
186
186
  Time per request: 0.015 [ms] (mean, across all concurrent requests)
187
187
  ### File Upload (POST /upload)
188
188
  Failed requests: 0
189
- Requests per second: 54708.49 [#/sec] (mean)
190
- Time per request: 1.828 [ms] (mean)
189
+ Requests per second: 54965.59 [#/sec] (mean)
190
+ Time per request: 1.819 [ms] (mean)
191
191
  Time per request: 0.018 [ms] (mean, across all concurrent requests)
192
192
  ### Mixed Form with Files (POST /mixed-form)
193
193
  Failed requests: 0
194
- Requests per second: 51391.16 [#/sec] (mean)
195
- Time per request: 1.946 [ms] (mean)
194
+ Requests per second: 52050.80 [#/sec] (mean)
195
+ Time per request: 1.921 [ms] (mean)
196
196
  Time per request: 0.019 [ms] (mean, across all concurrent requests)
197
197
 
198
198
  ## Django Ninja-style Benchmarks
199
199
  ### JSON Parse/Validate (POST /bench/parse)
200
200
  Failed requests: 0
201
- Requests per second: 28811.80 [#/sec] (mean)
202
- Time per request: 3.471 [ms] (mean)
203
- Time per request: 0.035 [ms] (mean, across all concurrent requests)
201
+ Requests per second: 80083.29 [#/sec] (mean)
202
+ Time per request: 1.249 [ms] (mean)
203
+ Time per request: 0.012 [ms] (mean, across all concurrent requests)
@@ -78,6 +78,19 @@ python manage.py migrate
78
78
  python manage.py makemigrations [app_name]
79
79
  ```
80
80
 
81
+ ### Release
82
+
83
+ ```bash
84
+ # Create a new release (bumps version, commits, tags, and pushes)
85
+ make release VERSION=0.2.2 # Standard release
86
+ make release VERSION=0.3.0-alpha1 # Pre-release
87
+ make release VERSION=0.2.2 DRY_RUN=1 # Test without changes
88
+
89
+ # Or use the script directly
90
+ ./scripts/release.sh 0.2.2 # Standard release
91
+ ./scripts/release.sh 0.2.2 --dry-run # Test without changes
92
+ ```
93
+
81
94
  ### CLI Tool
82
95
 
83
96
  ```bash
@@ -623,7 +623,7 @@ dependencies = [
623
623
 
624
624
  [[package]]
625
625
  name = "django-bolt"
626
- version = "0.1.2"
626
+ version = "0.2.2"
627
627
  dependencies = [
628
628
  "actix-cors",
629
629
  "actix-files",
@@ -647,6 +647,7 @@ dependencies = [
647
647
  "parking_lot",
648
648
  "pyo3",
649
649
  "pyo3-async-runtimes",
650
+ "regex",
650
651
  "serde",
651
652
  "serde_json",
652
653
  "socket2 0.5.10",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "django-bolt"
3
- version = "0.1.2"
3
+ version = "0.2.2"
4
4
  edition = "2021"
5
5
  readme = "README.md"
6
6
 
@@ -41,3 +41,4 @@ mime = "0.3"
41
41
  url = "2"
42
42
  tempfile = "3"
43
43
  multer = "3"
44
+ regex = "1"