django-bolt 0.1.0__tar.gz → 0.1.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 (256) hide show
  1. {django_bolt-0.1.0 → django_bolt-0.1.2}/.github/workflows/CI.yml +1 -1
  2. django_bolt-0.1.2/BENCHMARK_BASELINE.md +203 -0
  3. django_bolt-0.1.2/BENCHMARK_DEV.md +203 -0
  4. {django_bolt-0.1.0 → django_bolt-0.1.2}/CLAUDE.md +227 -17
  5. {django_bolt-0.1.0 → django_bolt-0.1.2}/Cargo.lock +1 -1
  6. {django_bolt-0.1.0 → django_bolt-0.1.2}/Cargo.toml +1 -1
  7. {django_bolt-0.1.0 → django_bolt-0.1.2}/Makefile +5 -5
  8. {django_bolt-0.1.0 → django_bolt-0.1.2}/PKG-INFO +180 -200
  9. {django_bolt-0.1.0 → django_bolt-0.1.2}/README.md +178 -195
  10. {django_bolt-0.1.0 → django_bolt-0.1.2}/TODO.md +6 -2
  11. {django_bolt-0.1.0 → django_bolt-0.1.2}/docs/ASYNC_DJANGO.md +50 -37
  12. {django_bolt-0.1.0 → django_bolt-0.1.2}/docs/CLASS_BASED_VIEWS.md +1223 -1
  13. django_bolt-0.1.2/docs/DEPENDENCY_INJECTION.md +1300 -0
  14. django_bolt-0.1.2/docs/GETTING_STARTED.md +1459 -0
  15. django_bolt-0.1.2/docs/LOGGING.md +1168 -0
  16. django_bolt-0.1.2/docs/MIDDLEWARE.md +465 -0
  17. django_bolt-0.1.2/docs/OPENAPI.md +1232 -0
  18. django_bolt-0.1.2/docs/OPENAPI_METADATA_IMPLEMENTATION.md +236 -0
  19. {django_bolt-0.1.0 → django_bolt-0.1.2}/docs/PAGINATION.md +25 -11
  20. django_bolt-0.1.2/docs/README.md +468 -0
  21. django_bolt-0.1.2/docs/RESPONSES.md +1065 -0
  22. {django_bolt-0.1.0 → django_bolt-0.1.2}/docs/SECURITY.md +192 -24
  23. django_bolt-0.1.2/docs/SERIALIZATION.md +1266 -0
  24. {django_bolt-0.1.0 → django_bolt-0.1.2}/docs/TESTING_UTILITIES.md +6 -6
  25. {django_bolt-0.1.0 → django_bolt-0.1.2}/pyproject.toml +7 -5
  26. {django_bolt-0.1.0 → django_bolt-0.1.2}/pytest.ini +1 -1
  27. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/__init__.py +2 -2
  28. django_bolt-0.1.2/python/django_bolt/_json.py +169 -0
  29. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/admin/static_routes.py +15 -21
  30. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/api.py +181 -61
  31. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/auth/__init__.py +2 -2
  32. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/decorators.py +15 -3
  33. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/dependencies.py +30 -24
  34. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/error_handlers.py +2 -1
  35. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/plugins.py +3 -2
  36. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/schema_generator.py +65 -20
  37. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/pagination.py +2 -1
  38. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/responses.py +3 -2
  39. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/serialization.py +5 -4
  40. django_bolt-0.1.2/python/example/test_data/100B +1 -0
  41. django_bolt-0.1.2/python/example/test_data/100B.txt +2 -0
  42. django_bolt-0.1.2/python/example/test_data/100K +0 -0
  43. django_bolt-0.1.2/python/example/test_data/100K.json +3146 -0
  44. django_bolt-0.1.2/python/example/test_data/100K.txt +1299 -0
  45. django_bolt-0.1.2/python/example/test_data/10K +0 -0
  46. django_bolt-0.1.2/python/example/test_data/10K.json +298 -0
  47. django_bolt-0.1.2/python/example/test_data/10K.txt +130 -0
  48. django_bolt-0.1.2/python/example/test_data/1K +0 -0
  49. django_bolt-0.1.2/python/example/test_data/1K.json +30 -0
  50. django_bolt-0.1.2/python/example/test_data/1K.txt +13 -0
  51. django_bolt-0.1.2/python/example/test_data/1M +0 -0
  52. django_bolt-0.1.2/python/example/test_data/1M.json +32138 -0
  53. django_bolt-0.1.2/python/example/test_data/1M.txt +12988 -0
  54. django_bolt-0.1.2/python/example/test_data/500K +0 -0
  55. django_bolt-0.1.2/python/example/test_data/500K.json +15466 -0
  56. django_bolt-0.1.2/python/example/test_data/500K.txt +6494 -0
  57. django_bolt-0.1.2/python/example/test_data/5M +0 -0
  58. django_bolt-0.1.2/python/example/test_data/5M.json +150398 -0
  59. django_bolt-0.1.2/python/example/test_data/5M.txt +64936 -0
  60. django_bolt-0.1.2/python/example/test_data/FILE_UPLOAD_1K +0 -0
  61. django_bolt-0.1.2/python/example/test_data/FILE_UPLOAD_1K_HEADERS.json +1 -0
  62. django_bolt-0.1.2/python/example/test_data/FORM_URLENCODED_1K +1 -0
  63. django_bolt-0.1.2/python/example/test_data/FORM_URLENCODED_1K_HEADERS.json +1 -0
  64. django_bolt-0.1.2/python/example/test_data/MULTIPART_1K +82 -0
  65. django_bolt-0.1.2/python/example/test_data/MULTIPART_1K_HEADERS.json +1 -0
  66. django_bolt-0.1.2/python/example/test_data/__init__.py +51 -0
  67. django_bolt-0.1.2/python/example/test_data/objects.py +56 -0
  68. django_bolt-0.1.2/python/example/test_data/persons_100.json +1 -0
  69. django_bolt-0.1.2/python/example/test_data/persons_50.json +1 -0
  70. django_bolt-0.1.2/python/example/test_data/persons_500.json +1 -0
  71. {django_bolt-0.1.0/python/examples/testproject → django_bolt-0.1.2/python/example}/testproject/api.py +13 -6
  72. {django_bolt-0.1.0/python/examples/testproject → django_bolt-0.1.2/python/example}/testproject/urls.py +2 -1
  73. django_bolt-0.1.2/python/example/testproject/views.py +5 -0
  74. django_bolt-0.1.2/python/tests/cbv/__init__.py +0 -0
  75. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/cbv/test_class_views_features.py +0 -48
  76. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/conftest.py +2 -2
  77. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/test_integration_validation.py +17 -17
  78. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/test_jwt_auth.py +6 -6
  79. django_bolt-0.1.2/python/tests/test_openapi_docs.py +102 -0
  80. django_bolt-0.1.2/python/tests/test_openapi_metadata.py +326 -0
  81. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/test_pagination.py +1 -1
  82. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/test_parameter_validation.py +14 -14
  83. {django_bolt-0.1.0 → django_bolt-0.1.2}/scripts/benchmark.sh +35 -31
  84. {django_bolt-0.1.0 → django_bolt-0.1.2}/src/handler.rs +362 -54
  85. {django_bolt-0.1.0 → django_bolt-0.1.2}/src/lib.rs +3 -3
  86. {django_bolt-0.1.0 → django_bolt-0.1.2}/src/metadata.rs +165 -1
  87. django_bolt-0.1.2/src/middleware/mod.rs +2 -0
  88. {django_bolt-0.1.0 → django_bolt-0.1.2}/src/middleware/rate_limit.rs +7 -19
  89. {django_bolt-0.1.0 → django_bolt-0.1.2}/src/server.rs +2 -10
  90. {django_bolt-0.1.0 → django_bolt-0.1.2}/src/state.rs +2 -3
  91. {django_bolt-0.1.0 → django_bolt-0.1.2}/src/streaming.rs +10 -14
  92. {django_bolt-0.1.0 → django_bolt-0.1.2}/src/test_state.rs +109 -63
  93. {django_bolt-0.1.0 → django_bolt-0.1.2}/src/testing.rs +2 -6
  94. django_bolt-0.1.2/uv.lock +1449 -0
  95. django_bolt-0.1.0/BENCHMARKS.md +0 -79
  96. django_bolt-0.1.0/BENCHMARK_BASELINE.md +0 -196
  97. django_bolt-0.1.0/BENCHMARK_DEV.md +0 -196
  98. django_bolt-0.1.0/BOLT.md +0 -173
  99. django_bolt-0.1.0/Fast.md +0 -166
  100. django_bolt-0.1.0/PLATFORM_SUPPORT.md +0 -134
  101. django_bolt-0.1.0/docs/LOGGING.md +0 -103
  102. django_bolt-0.1.0/docs/MIDDLEWARE.md +0 -128
  103. django_bolt-0.1.0/python/django_bolt/auth/README.md +0 -464
  104. django_bolt-0.1.0/python/django_bolt/auth/REVOCATION_EXAMPLE.md +0 -391
  105. django_bolt-0.1.0/python/examples/testproject/README.md +0 -102
  106. django_bolt-0.1.0/src/middleware/cors.rs +0 -180
  107. django_bolt-0.1.0/src/middleware/mod.rs +0 -94
  108. django_bolt-0.1.0/uv.lock +0 -1190
  109. {django_bolt-0.1.0 → django_bolt-0.1.2}/.gitignore +0 -0
  110. {django_bolt-0.1.0 → django_bolt-0.1.2}/.python-version +0 -0
  111. {django_bolt-0.1.0 → django_bolt-0.1.2}/.vscode/settings.json +0 -0
  112. {django_bolt-0.1.0 → django_bolt-0.1.2}/docs/ANNOTATION_GUIDE.md +0 -0
  113. {django_bolt-0.1.0 → django_bolt-0.1.2}/docs/COMPRESSION.md +0 -0
  114. {django_bolt-0.1.0 → django_bolt-0.1.2}/docs/DJANGO_ADMIN.md +0 -0
  115. {django_bolt-0.1.0 → django_bolt-0.1.2}/docs/EXCEPTIONS.md +0 -0
  116. {django_bolt-0.1.0 → django_bolt-0.1.2}/docs/GIL_OPTIMIZATION.md +0 -0
  117. {django_bolt-0.1.0 → django_bolt-0.1.2}/docs/OPENAPI_ERROR_RESPONSES.md +0 -0
  118. {django_bolt-0.1.0 → django_bolt-0.1.2}/docs/PUBLISHING.md +0 -0
  119. {django_bolt-0.1.0 → django_bolt-0.1.2}/docs/favicon.png +0 -0
  120. {django_bolt-0.1.0 → django_bolt-0.1.2}/docs/icon.png +0 -0
  121. {django_bolt-0.1.0 → django_bolt-0.1.2}/docs/logo.png +0 -0
  122. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/admin/__init__.py +0 -0
  123. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/admin/admin_detection.py +0 -0
  124. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/admin/asgi_bridge.py +0 -0
  125. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/admin/routes.py +0 -0
  126. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/admin/static.py +0 -0
  127. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/apps.py +0 -0
  128. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/async_collector.py +0 -0
  129. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/auth/backends.py +0 -0
  130. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/auth/guards.py +0 -0
  131. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/auth/jwt_utils.py +0 -0
  132. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/auth/revocation.py +0 -0
  133. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/auth/token.py +0 -0
  134. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/binding.py +0 -0
  135. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/bootstrap.py +0 -0
  136. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/cli.py +0 -0
  137. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/compression.py +0 -0
  138. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/exceptions.py +0 -0
  139. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/health.py +0 -0
  140. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/logging/__init__.py +0 -0
  141. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/logging/config.py +0 -0
  142. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/logging/middleware.py +0 -0
  143. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/management/__init__.py +0 -0
  144. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/management/commands/__init__.py +0 -0
  145. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/management/commands/runbolt.py +0 -0
  146. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/middleware/__init__.py +0 -0
  147. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/middleware/compiler.py +0 -0
  148. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/middleware/middleware.py +0 -0
  149. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/__init__.py +0 -0
  150. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/config.py +0 -0
  151. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/routes.py +0 -0
  152. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/__init__.py +0 -0
  153. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/base.py +0 -0
  154. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/callback.py +0 -0
  155. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/components.py +0 -0
  156. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/contact.py +0 -0
  157. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/discriminator.py +0 -0
  158. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/encoding.py +0 -0
  159. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/enums.py +0 -0
  160. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/example.py +0 -0
  161. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/external_documentation.py +0 -0
  162. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/header.py +0 -0
  163. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/info.py +0 -0
  164. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/license.py +0 -0
  165. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/link.py +0 -0
  166. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/media_type.py +0 -0
  167. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/oauth_flow.py +0 -0
  168. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/oauth_flows.py +0 -0
  169. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/open_api.py +0 -0
  170. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/operation.py +0 -0
  171. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/parameter.py +0 -0
  172. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/path_item.py +0 -0
  173. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/paths.py +0 -0
  174. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/reference.py +0 -0
  175. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/request_body.py +0 -0
  176. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/response.py +0 -0
  177. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/responses.py +0 -0
  178. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/schema.py +0 -0
  179. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/security_requirement.py +0 -0
  180. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/security_scheme.py +0 -0
  181. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/server.py +0 -0
  182. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/server_variable.py +0 -0
  183. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/tag.py +0 -0
  184. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/openapi/spec/xml.py +0 -0
  185. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/param_functions.py +0 -0
  186. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/params.py +0 -0
  187. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/request_parsing.py +0 -0
  188. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/router.py +0 -0
  189. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/status_codes.py +0 -0
  190. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/testing/__init__.py +0 -0
  191. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/testing/client.py +0 -0
  192. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/testing/helpers.py +0 -0
  193. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/typing.py +0 -0
  194. {django_bolt-0.1.0 → django_bolt-0.1.2}/python/django_bolt/views.py +0 -0
  195. /django_bolt-0.1.0/python/django_bolt/tests/__init__.py → /django_bolt-0.1.2/python/example/README.md +0 -0
  196. {django_bolt-0.1.0/python/django_bolt/tests/cbv → django_bolt-0.1.2/python/example/bench}/__init__.py +0 -0
  197. {django_bolt-0.1.0/python/examples/testproject → django_bolt-0.1.2/python/example}/bench/admin.py +0 -0
  198. {django_bolt-0.1.0/python/examples/testproject → django_bolt-0.1.2/python/example}/bench/api.py +0 -0
  199. {django_bolt-0.1.0/python/examples/testproject → django_bolt-0.1.2/python/example}/bench/apps.py +0 -0
  200. {django_bolt-0.1.0/python/examples/testproject → django_bolt-0.1.2/python/example}/bench/migrations/0001_initial.py +0 -0
  201. {django_bolt-0.1.0/python/examples/testproject/bench → django_bolt-0.1.2/python/example/bench/migrations}/__init__.py +0 -0
  202. {django_bolt-0.1.0/python/examples/testproject → django_bolt-0.1.2/python/example}/bench/models.py +0 -0
  203. {django_bolt-0.1.0/python/examples/testproject → django_bolt-0.1.2/python/example}/bench/tests.py +0 -0
  204. {django_bolt-0.1.0/python/examples/testproject → django_bolt-0.1.2/python/example}/bench/views.py +0 -0
  205. {django_bolt-0.1.0/python/examples/testproject → django_bolt-0.1.2/python/example}/manage.py +0 -0
  206. {django_bolt-0.1.0/python/examples/testproject/bench/migrations → django_bolt-0.1.2/python/example/testproject}/__init__.py +0 -0
  207. {django_bolt-0.1.0/python/examples/testproject → django_bolt-0.1.2/python/example}/testproject/asgi.py +0 -0
  208. {django_bolt-0.1.0/python/examples/testproject → django_bolt-0.1.2/python/example}/testproject/settings.py +0 -0
  209. {django_bolt-0.1.0/python/examples/testproject → django_bolt-0.1.2/python/example}/testproject/test_api.py +0 -0
  210. {django_bolt-0.1.0/python/examples/testproject → django_bolt-0.1.2/python/example}/testproject/wsgi.py +0 -0
  211. {django_bolt-0.1.0/python/examples/testproject/testproject → django_bolt-0.1.2/python/example/users}/__init__.py +0 -0
  212. {django_bolt-0.1.0/python/examples/testproject → django_bolt-0.1.2/python/example}/users/admin.py +0 -0
  213. {django_bolt-0.1.0/python/examples/testproject → django_bolt-0.1.2/python/example}/users/api.py +0 -0
  214. {django_bolt-0.1.0/python/examples/testproject → django_bolt-0.1.2/python/example}/users/apps.py +0 -0
  215. {django_bolt-0.1.0/python/examples/testproject → django_bolt-0.1.2/python/example}/users/migrations/0001_initial.py +0 -0
  216. {django_bolt-0.1.0/python/examples/testproject/users → django_bolt-0.1.2/python/example/users/migrations}/__init__.py +0 -0
  217. {django_bolt-0.1.0/python/examples/testproject → django_bolt-0.1.2/python/example}/users/models.py +0 -0
  218. {django_bolt-0.1.0/python/examples/testproject → django_bolt-0.1.2/python/example}/users/tests.py +0 -0
  219. {django_bolt-0.1.0/python/examples/testproject → django_bolt-0.1.2/python/example}/users/views.py +0 -0
  220. {django_bolt-0.1.0/python/examples/testproject/users/migrations → django_bolt-0.1.2/python/tests}/__init__.py +0 -0
  221. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/admin_tests/__init__.py +0 -0
  222. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/admin_tests/conftest.py +0 -0
  223. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/admin_tests/test_admin_with_django.py +0 -0
  224. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/admin_tests/urls.py +0 -0
  225. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/cbv/test_class_views.py +0 -0
  226. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/cbv/test_class_views_django_orm.py +0 -0
  227. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/cbv/test_class_views_with_client.py +0 -0
  228. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/test_action_decorator.py +0 -0
  229. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/test_auth_secret_key.py +0 -0
  230. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/test_decorator_syntax.py +0 -0
  231. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/test_error_handling.py +0 -0
  232. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/test_file_response.py +0 -0
  233. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/test_global_cors.py +0 -0
  234. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/test_guards_auth.py +0 -0
  235. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/test_guards_integration.py +0 -0
  236. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/test_health.py +0 -0
  237. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/test_json_validation.py +0 -0
  238. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/test_jwt_token.py +0 -0
  239. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/test_logging.py +0 -0
  240. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/test_logging_merge.py +0 -0
  241. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/test_middleware.py +0 -0
  242. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/test_middleware_server.py +0 -0
  243. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/test_model_viewset.py +0 -0
  244. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/test_models.py +0 -0
  245. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/test_syntax.py +0 -0
  246. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/test_testing_utilities.py +0 -0
  247. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/test_testing_utilities_simple.py +0 -0
  248. {django_bolt-0.1.0/python/django_bolt → django_bolt-0.1.2/python}/tests/test_viewset_unified.py +0 -0
  249. {django_bolt-0.1.0 → django_bolt-0.1.2}/scripts/install_hey.sh +0 -0
  250. {django_bolt-0.1.0 → django_bolt-0.1.2}/src/direct_stream.rs +0 -0
  251. {django_bolt-0.1.0 → django_bolt-0.1.2}/src/error.rs +0 -0
  252. {django_bolt-0.1.0 → django_bolt-0.1.2}/src/json.rs +0 -0
  253. {django_bolt-0.1.0 → django_bolt-0.1.2}/src/middleware/auth.rs +0 -0
  254. {django_bolt-0.1.0 → django_bolt-0.1.2}/src/permissions.rs +0 -0
  255. {django_bolt-0.1.0 → django_bolt-0.1.2}/src/request.rs +0 -0
  256. {django_bolt-0.1.0 → django_bolt-0.1.2}/src/router.rs +0 -0
@@ -43,7 +43,7 @@ jobs:
43
43
  run: uv run maturin develop --release
44
44
 
45
45
  - name: Run tests
46
- run: uv run --with pytest pytest python/django_bolt/tests -s -vv
46
+ run: uv run --with pytest pytest python/tests -s -vv
47
47
 
48
48
  # Build wheels for Linux x86_64 (covers most Linux users including Arch)
49
49
  linux:
@@ -0,0 +1,203 @@
1
+ # Django-Bolt Benchmark
2
+ Generated: Wed Oct 22 11:49:31 PM PKT 2025
3
+ Config: 8 processes × 1 workers | C=100 N=10000
4
+
5
+ ## Root Endpoint Performance
6
+ Failed requests: 0
7
+ Requests per second: 75788.01 [#/sec] (mean)
8
+ Time per request: 1.319 [ms] (mean)
9
+ Time per request: 0.013 [ms] (mean, across all concurrent requests)
10
+
11
+ ## 10kb JSON Response Performance
12
+ ### 10kb JSON (/10k-json)
13
+ Failed requests: 0
14
+ Requests per second: 62156.20 [#/sec] (mean)
15
+ Time per request: 1.609 [ms] (mean)
16
+ Time per request: 0.016 [ms] (mean, across all concurrent requests)
17
+
18
+ ## Response Type Endpoints
19
+ ### Header Endpoint (/header)
20
+ Failed requests: 0
21
+ Requests per second: 73022.55 [#/sec] (mean)
22
+ Time per request: 1.369 [ms] (mean)
23
+ Time per request: 0.014 [ms] (mean, across all concurrent requests)
24
+ ### Cookie Endpoint (/cookie)
25
+ Failed requests: 0
26
+ Requests per second: 71119.20 [#/sec] (mean)
27
+ Time per request: 1.406 [ms] (mean)
28
+ Time per request: 0.014 [ms] (mean, across all concurrent requests)
29
+ ### Exception Endpoint (/exc)
30
+ Failed requests: 0
31
+ Requests per second: 69398.18 [#/sec] (mean)
32
+ Time per request: 1.441 [ms] (mean)
33
+ Time per request: 0.014 [ms] (mean, across all concurrent requests)
34
+ ### HTML Response (/html)
35
+ Failed requests: 0
36
+ Requests per second: 75268.33 [#/sec] (mean)
37
+ Time per request: 1.329 [ms] (mean)
38
+ Time per request: 0.013 [ms] (mean, across all concurrent requests)
39
+ ### Redirect Response (/redirect)
40
+ Failed requests: 0
41
+ Requests per second: 81905.45 [#/sec] (mean)
42
+ Time per request: 1.221 [ms] (mean)
43
+ Time per request: 0.012 [ms] (mean, across all concurrent requests)
44
+ ### File Static via FileResponse (/file-static)
45
+ Failed requests: 0
46
+ Requests per second: 22422.03 [#/sec] (mean)
47
+ Time per request: 4.460 [ms] (mean)
48
+ Time per request: 0.045 [ms] (mean, across all concurrent requests)
49
+
50
+ ## Streaming and SSE Performance
51
+ ### Streaming Plain Text (/stream)
52
+ Total: 0.2433 secs
53
+ Slowest: 0.0146 secs
54
+ Fastest: 0.0002 secs
55
+ Average: 0.0023 secs
56
+ Requests/sec: 41097.7240
57
+ Status code distribution:
58
+ ### Server-Sent Events (/sse)
59
+ Total: 0.2444 secs
60
+ Slowest: 0.0121 secs
61
+ Fastest: 0.0002 secs
62
+ Average: 0.0023 secs
63
+ Requests/sec: 40918.9412
64
+ Status code distribution:
65
+ ### Server-Sent Events (async) (/sse-async)
66
+ Total: 0.4208 secs
67
+ Slowest: 0.0164 secs
68
+ Fastest: 0.0003 secs
69
+ Average: 0.0040 secs
70
+ Requests/sec: 23766.0131
71
+ Status code distribution:
72
+ ### OpenAI Chat Completions (stream) (/v1/chat/completions)
73
+ Total: 0.7807 secs
74
+ Slowest: 0.0328 secs
75
+ Fastest: 0.0005 secs
76
+ Average: 0.0068 secs
77
+ Requests/sec: 12808.5086
78
+ Status code distribution:
79
+ ### OpenAI Chat Completions (async stream) (/v1/chat/completions-async)
80
+ Total: 1.0009 secs
81
+ Slowest: 0.0465 secs
82
+ Fastest: 0.0005 secs
83
+ Average: 0.0094 secs
84
+ Requests/sec: 9990.9942
85
+ Status code distribution:
86
+
87
+ ## Items GET Performance (/items/1?q=hello)
88
+ Failed requests: 0
89
+ Requests per second: 69759.33 [#/sec] (mean)
90
+ Time per request: 1.433 [ms] (mean)
91
+ Time per request: 0.014 [ms] (mean, across all concurrent requests)
92
+
93
+ ## Items PUT JSON Performance (/items/1)
94
+ Failed requests: 0
95
+ Requests per second: 65544.54 [#/sec] (mean)
96
+ Time per request: 1.526 [ms] (mean)
97
+ Time per request: 0.015 [ms] (mean, across all concurrent requests)
98
+
99
+ ## ORM Performance
100
+ ### Users Full10 (/users/full10)
101
+ Failed requests: 0
102
+ Requests per second: 12058.51 [#/sec] (mean)
103
+ Time per request: 8.293 [ms] (mean)
104
+ Time per request: 0.083 [ms] (mean, across all concurrent requests)
105
+ ### Users Mini10 (/users/mini10)
106
+ Failed requests: 0
107
+ Requests per second: 13532.07 [#/sec] (mean)
108
+ Time per request: 7.390 [ms] (mean)
109
+ Time per request: 0.074 [ms] (mean, across all concurrent requests)
110
+
111
+ ## Class-Based Views (CBV) Performance
112
+ ### Simple APIView GET (/cbv-simple)
113
+ Failed requests: 0
114
+ Requests per second: 74997.94 [#/sec] (mean)
115
+ Time per request: 1.333 [ms] (mean)
116
+ Time per request: 0.013 [ms] (mean, across all concurrent requests)
117
+ ### Simple APIView POST (/cbv-simple)
118
+ Failed requests: 0
119
+ Requests per second: 65872.68 [#/sec] (mean)
120
+ Time per request: 1.518 [ms] (mean)
121
+ Time per request: 0.015 [ms] (mean, across all concurrent requests)
122
+ ### Items100 ViewSet GET (/cbv-items100)
123
+ Failed requests: 0
124
+ Requests per second: 52685.93 [#/sec] (mean)
125
+ Time per request: 1.898 [ms] (mean)
126
+ Time per request: 0.019 [ms] (mean, across all concurrent requests)
127
+
128
+ ## CBV Items - Basic Operations
129
+ ### CBV Items GET (Retrieve) (/cbv-items/1)
130
+ Failed requests: 0
131
+ Requests per second: 68210.50 [#/sec] (mean)
132
+ Time per request: 1.466 [ms] (mean)
133
+ Time per request: 0.015 [ms] (mean, across all concurrent requests)
134
+ ### CBV Items PUT (Update) (/cbv-items/1)
135
+ Failed requests: 0
136
+ Requests per second: 66305.52 [#/sec] (mean)
137
+ Time per request: 1.508 [ms] (mean)
138
+ Time per request: 0.015 [ms] (mean, across all concurrent requests)
139
+
140
+ ## CBV Additional Benchmarks
141
+ ### CBV Bench Parse (POST /cbv-bench-parse)
142
+ Failed requests: 0
143
+ Requests per second: 70979.88 [#/sec] (mean)
144
+ Time per request: 1.409 [ms] (mean)
145
+ Time per request: 0.014 [ms] (mean, across all concurrent requests)
146
+ ### CBV Response Types (/cbv-response)
147
+ Failed requests: 0
148
+ Requests per second: 75799.50 [#/sec] (mean)
149
+ Time per request: 1.319 [ms] (mean)
150
+ Time per request: 0.013 [ms] (mean, across all concurrent requests)
151
+ ### CBV Streaming Plain Text (/cbv-stream)
152
+ Total: 0.5386 secs
153
+ Slowest: 0.0587 secs
154
+ Fastest: 0.0002 secs
155
+ Average: 0.0052 secs
156
+ Requests/sec: 18567.4536
157
+ Status code distribution:
158
+ ### CBV Server-Sent Events (/cbv-sse)
159
+ Total: 0.4330 secs
160
+ Slowest: 0.0231 secs
161
+ Fastest: 0.0002 secs
162
+ Average: 0.0041 secs
163
+ Requests/sec: 23096.7184
164
+ Status code distribution:
165
+ ### CBV Chat Completions (stream) (/cbv-chat-completions)
166
+ Total: 0.9752 secs
167
+ Slowest: 0.0433 secs
168
+ Fastest: 0.0005 secs
169
+ Average: 0.0094 secs
170
+ Requests/sec: 10253.8036
171
+ Status code distribution:
172
+
173
+ ## ORM Performance with CBV
174
+ ### Users CBV Mini10 (List) (/users/cbv-mini10)
175
+ Failed requests: 0
176
+ Requests per second: 15136.79 [#/sec] (mean)
177
+ Time per request: 6.606 [ms] (mean)
178
+ Time per request: 0.066 [ms] (mean, across all concurrent requests)
179
+
180
+
181
+ ## Form and File Upload Performance
182
+ ### Form Data (POST /form)
183
+ Failed requests: 0
184
+ Requests per second: 55836.60 [#/sec] (mean)
185
+ Time per request: 1.791 [ms] (mean)
186
+ Time per request: 0.018 [ms] (mean, across all concurrent requests)
187
+ ### File Upload (POST /upload)
188
+ Failed requests: 0
189
+ Requests per second: 46085.50 [#/sec] (mean)
190
+ Time per request: 2.170 [ms] (mean)
191
+ Time per request: 0.022 [ms] (mean, across all concurrent requests)
192
+ ### Mixed Form with Files (POST /mixed-form)
193
+ Failed requests: 0
194
+ Requests per second: 45716.38 [#/sec] (mean)
195
+ Time per request: 2.187 [ms] (mean)
196
+ Time per request: 0.022 [ms] (mean, across all concurrent requests)
197
+
198
+ ## Django Ninja-style Benchmarks
199
+ ### JSON Parse/Validate (POST /bench/parse)
200
+ Failed requests: 0
201
+ Requests per second: 72966.07 [#/sec] (mean)
202
+ Time per request: 1.371 [ms] (mean)
203
+ Time per request: 0.014 [ms] (mean, across all concurrent requests)
@@ -0,0 +1,203 @@
1
+ # Django-Bolt Benchmark
2
+ Generated: Wed Oct 22 11:50:02 PM PKT 2025
3
+ Config: 8 processes × 1 workers | C=100 N=10000
4
+
5
+ ## Root Endpoint Performance
6
+ Failed requests: 0
7
+ Requests per second: 87911.32 [#/sec] (mean)
8
+ Time per request: 1.138 [ms] (mean)
9
+ Time per request: 0.011 [ms] (mean, across all concurrent requests)
10
+
11
+ ## 10kb JSON Response Performance
12
+ ### 10kb JSON (/10k-json)
13
+ Failed requests: 0
14
+ Requests per second: 69789.03 [#/sec] (mean)
15
+ Time per request: 1.433 [ms] (mean)
16
+ Time per request: 0.014 [ms] (mean, across all concurrent requests)
17
+
18
+ ## Response Type Endpoints
19
+ ### Header Endpoint (/header)
20
+ Failed requests: 0
21
+ Requests per second: 83795.61 [#/sec] (mean)
22
+ Time per request: 1.193 [ms] (mean)
23
+ Time per request: 0.012 [ms] (mean, across all concurrent requests)
24
+ ### Cookie Endpoint (/cookie)
25
+ Failed requests: 0
26
+ Requests per second: 82520.51 [#/sec] (mean)
27
+ Time per request: 1.212 [ms] (mean)
28
+ Time per request: 0.012 [ms] (mean, across all concurrent requests)
29
+ ### Exception Endpoint (/exc)
30
+ Failed requests: 0
31
+ Requests per second: 82648.73 [#/sec] (mean)
32
+ Time per request: 1.210 [ms] (mean)
33
+ Time per request: 0.012 [ms] (mean, across all concurrent requests)
34
+ ### HTML Response (/html)
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)
39
+ ### Redirect Response (/redirect)
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)
44
+ ### File Static via FileResponse (/file-static)
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)
49
+
50
+ ## Streaming and SSE Performance
51
+ ### Streaming Plain Text (/stream)
52
+ Total: 0.2098 secs
53
+ Slowest: 0.0100 secs
54
+ Fastest: 0.0002 secs
55
+ Average: 0.0020 secs
56
+ Requests/sec: 47661.8461
57
+ Status code distribution:
58
+ ### Server-Sent Events (/sse)
59
+ Total: 0.1915 secs
60
+ Slowest: 0.0114 secs
61
+ Fastest: 0.0002 secs
62
+ Average: 0.0018 secs
63
+ Requests/sec: 52219.9816
64
+ Status code distribution:
65
+ ### Server-Sent Events (async) (/sse-async)
66
+ Total: 0.3733 secs
67
+ Slowest: 0.0154 secs
68
+ Fastest: 0.0003 secs
69
+ Average: 0.0035 secs
70
+ Requests/sec: 26786.2922
71
+ Status code distribution:
72
+ ### OpenAI Chat Completions (stream) (/v1/chat/completions)
73
+ Total: 0.6960 secs
74
+ Slowest: 0.0441 secs
75
+ Fastest: 0.0004 secs
76
+ Average: 0.0064 secs
77
+ Requests/sec: 14367.9304
78
+ Status code distribution:
79
+ ### OpenAI Chat Completions (async stream) (/v1/chat/completions-async)
80
+ Total: 0.8356 secs
81
+ Slowest: 0.0270 secs
82
+ Fastest: 0.0005 secs
83
+ Average: 0.0079 secs
84
+ Requests/sec: 11967.9144
85
+ Status code distribution:
86
+
87
+ ## Items GET Performance (/items/1?q=hello)
88
+ Failed requests: 0
89
+ Requests per second: 82157.12 [#/sec] (mean)
90
+ Time per request: 1.217 [ms] (mean)
91
+ Time per request: 0.012 [ms] (mean, across all concurrent requests)
92
+
93
+ ## Items PUT JSON Performance (/items/1)
94
+ Failed requests: 0
95
+ Requests per second: 73552.67 [#/sec] (mean)
96
+ Time per request: 1.360 [ms] (mean)
97
+ Time per request: 0.014 [ms] (mean, across all concurrent requests)
98
+
99
+ ## ORM Performance
100
+ ### Users Full10 (/users/full10)
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)
105
+ ### Users Mini10 (/users/mini10)
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)
110
+
111
+ ## Class-Based Views (CBV) Performance
112
+ ### Simple APIView GET (/cbv-simple)
113
+ Failed requests: 0
114
+ Requests per second: 87136.10 [#/sec] (mean)
115
+ Time per request: 1.148 [ms] (mean)
116
+ Time per request: 0.011 [ms] (mean, across all concurrent requests)
117
+ ### Simple APIView POST (/cbv-simple)
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)
122
+ ### Items100 ViewSet GET (/cbv-items100)
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)
127
+
128
+ ## CBV Items - Basic Operations
129
+ ### CBV Items GET (Retrieve) (/cbv-items/1)
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)
134
+ ### CBV Items PUT (Update) (/cbv-items/1)
135
+ Failed requests: 0
136
+ Requests per second: 76502.90 [#/sec] (mean)
137
+ Time per request: 1.307 [ms] (mean)
138
+ Time per request: 0.013 [ms] (mean, across all concurrent requests)
139
+
140
+ ## CBV Additional Benchmarks
141
+ ### CBV Bench Parse (POST /cbv-bench-parse)
142
+ Failed requests: 0
143
+ Requests per second: 77787.72 [#/sec] (mean)
144
+ Time per request: 1.286 [ms] (mean)
145
+ Time per request: 0.013 [ms] (mean, across all concurrent requests)
146
+ ### CBV Response Types (/cbv-response)
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)
151
+ ### CBV Streaming Plain Text (/cbv-stream)
152
+ Total: 0.3853 secs
153
+ Slowest: 0.0177 secs
154
+ Fastest: 0.0002 secs
155
+ Average: 0.0037 secs
156
+ Requests/sec: 25954.4278
157
+ Status code distribution:
158
+ ### CBV Server-Sent Events (/cbv-sse)
159
+ Total: 0.3769 secs
160
+ Slowest: 0.0206 secs
161
+ Fastest: 0.0002 secs
162
+ Average: 0.0036 secs
163
+ Requests/sec: 26535.4889
164
+ Status code distribution:
165
+ ### CBV Chat Completions (stream) (/cbv-chat-completions)
166
+ Total: 0.8573 secs
167
+ Slowest: 0.0341 secs
168
+ Fastest: 0.0005 secs
169
+ Average: 0.0082 secs
170
+ Requests/sec: 11665.1607
171
+ Status code distribution:
172
+
173
+ ## ORM Performance with CBV
174
+ ### Users CBV Mini10 (List) (/users/cbv-mini10)
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)
179
+
180
+
181
+ ## Form and File Upload Performance
182
+ ### Form Data (POST /form)
183
+ Failed requests: 0
184
+ Requests per second: 68089.28 [#/sec] (mean)
185
+ Time per request: 1.469 [ms] (mean)
186
+ Time per request: 0.015 [ms] (mean, across all concurrent requests)
187
+ ### File Upload (POST /upload)
188
+ Failed requests: 0
189
+ Requests per second: 54708.49 [#/sec] (mean)
190
+ Time per request: 1.828 [ms] (mean)
191
+ Time per request: 0.018 [ms] (mean, across all concurrent requests)
192
+ ### Mixed Form with Files (POST /mixed-form)
193
+ Failed requests: 0
194
+ Requests per second: 51391.16 [#/sec] (mean)
195
+ Time per request: 1.946 [ms] (mean)
196
+ Time per request: 0.019 [ms] (mean, across all concurrent requests)
197
+
198
+ ## Django Ninja-style Benchmarks
199
+ ### JSON Parse/Validate (POST /bench/parse)
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)