bustapi 0.13.1__tar.gz → 0.13.3__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.
Files changed (260) hide show
  1. {bustapi-0.13.1 → bustapi-0.13.3}/.github/workflows/manual-publish.yml +3 -5
  2. {bustapi-0.13.1 → bustapi-0.13.3}/.gitignore +2 -0
  3. bustapi-0.13.3/AGENT_KNOWLEDGE.md +6 -0
  4. {bustapi-0.13.1 → bustapi-0.13.3}/Cargo.lock +80 -86
  5. {bustapi-0.13.1 → bustapi-0.13.3}/Cargo.toml +1 -1
  6. {bustapi-0.13.1 → bustapi-0.13.3}/PKG-INFO +1 -1
  7. {bustapi-0.13.1 → bustapi-0.13.3}/docs/user-guide/responses.md +21 -2
  8. {bustapi-0.13.1 → bustapi-0.13.3}/pyproject.toml +1 -1
  9. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/__init__.py +1 -1
  10. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/http/request.py +2 -0
  11. bustapi-0.13.3/tests/test_discussion_21.py +242 -0
  12. bustapi-0.13.1/check_path.py +0 -22
  13. bustapi-0.13.1/create_issues.sh +0 -10
  14. bustapi-0.13.1/test_trim.rs +0 -13
  15. {bustapi-0.13.1 → bustapi-0.13.3}/- +0 -0
  16. {bustapi-0.13.1 → bustapi-0.13.3}/.github/FUNDING.yml +0 -0
  17. {bustapi-0.13.1 → bustapi-0.13.3}/.github/workflows/ci-multiplatform.yml +0 -0
  18. {bustapi-0.13.1 → bustapi-0.13.3}/.github/workflows/ci.yml +0 -0
  19. {bustapi-0.13.1 → bustapi-0.13.3}/.github/workflows/docs.yml +0 -0
  20. {bustapi-0.13.1 → bustapi-0.13.3}/.python-version +0 -0
  21. {bustapi-0.13.1 → bustapi-0.13.3}/CHANGELOG.md +0 -0
  22. {bustapi-0.13.1 → bustapi-0.13.3}/Dockerfile +0 -0
  23. {bustapi-0.13.1 → bustapi-0.13.3}/LICENSE +0 -0
  24. {bustapi-0.13.1 → bustapi-0.13.3}/README.md +0 -0
  25. {bustapi-0.13.1 → bustapi-0.13.3}/benchmarks/CACHE_BENCHMARK.md +0 -0
  26. {bustapi-0.13.1 → bustapi-0.13.3}/benchmarks/README.md +0 -0
  27. {bustapi-0.13.1 → bustapi-0.13.3}/benchmarks/app.py +0 -0
  28. {bustapi-0.13.1 → bustapi-0.13.3}/benchmarks/benchmark_all.py +0 -0
  29. {bustapi-0.13.1 → bustapi-0.13.3}/benchmarks/benchmark_avg.py +0 -0
  30. {bustapi-0.13.1 → bustapi-0.13.3}/benchmarks/benchmark_cache.py +0 -0
  31. {bustapi-0.13.1 → bustapi-0.13.3}/benchmarks/benchmark_combined.png +0 -0
  32. {bustapi-0.13.1 → bustapi-0.13.3}/benchmarks/bustapi.md +0 -0
  33. {bustapi-0.13.1 → bustapi-0.13.3}/benchmarks/bustapi_bench.py +0 -0
  34. {bustapi-0.13.1 → bustapi-0.13.3}/benchmarks/bustapi_internal.py +0 -0
  35. {bustapi-0.13.1 → bustapi-0.13.3}/benchmarks/comparison_bench.py +0 -0
  36. {bustapi-0.13.1 → bustapi-0.13.3}/benchmarks/comprehensive_benchmark.py +0 -0
  37. {bustapi-0.13.1 → bustapi-0.13.3}/benchmarks/gen_graph.py +0 -0
  38. {bustapi-0.13.1 → bustapi-0.13.3}/benchmarks/quick_bench.py +0 -0
  39. {bustapi-0.13.1 → bustapi-0.13.3}/benchmarks/resource_bench.py +0 -0
  40. {bustapi-0.13.1 → bustapi-0.13.3}/benchmarks/rps_comparison.png +0 -0
  41. {bustapi-0.13.1 → bustapi-0.13.3}/benchmarks/run_comparison_auto.py +0 -0
  42. {bustapi-0.13.1 → bustapi-0.13.3}/benchmarks/ws_benchmark.py +0 -0
  43. {bustapi-0.13.1 → bustapi-0.13.3}/docs/advanced/async.md +0 -0
  44. {bustapi-0.13.1 → bustapi-0.13.3}/docs/advanced/blueprints.md +0 -0
  45. {bustapi-0.13.1 → bustapi-0.13.3}/docs/advanced/dependency_injection.md +0 -0
  46. {bustapi-0.13.1 → bustapi-0.13.3}/docs/advanced/deployment.md +0 -0
  47. {bustapi-0.13.1 → bustapi-0.13.3}/docs/advanced/middleware.md +0 -0
  48. {bustapi-0.13.1 → bustapi-0.13.3}/docs/advanced/security.md +0 -0
  49. {bustapi-0.13.1 → bustapi-0.13.3}/docs/advanced/validation.md +0 -0
  50. {bustapi-0.13.1 → bustapi-0.13.3}/docs/api-reference.md +0 -0
  51. {bustapi-0.13.1 → bustapi-0.13.3}/docs/assets/logo.png +0 -0
  52. {bustapi-0.13.1 → bustapi-0.13.3}/docs/changelog.md +0 -0
  53. {bustapi-0.13.1 → bustapi-0.13.3}/docs/complete-api-reference.md +0 -0
  54. {bustapi-0.13.1 → bustapi-0.13.3}/docs/deployment-performance-guide.md +0 -0
  55. {bustapi-0.13.1 → bustapi-0.13.3}/docs/deployment.md +0 -0
  56. {bustapi-0.13.1 → bustapi-0.13.3}/docs/examples-guide.md +0 -0
  57. {bustapi-0.13.1 → bustapi-0.13.3}/docs/index.md +0 -0
  58. {bustapi-0.13.1 → bustapi-0.13.3}/docs/installation.md +0 -0
  59. {bustapi-0.13.1 → bustapi-0.13.3}/docs/overrides/.gitkeep +0 -0
  60. {bustapi-0.13.1 → bustapi-0.13.3}/docs/quickstart.md +0 -0
  61. {bustapi-0.13.1 → bustapi-0.13.3}/docs/release_track.md +0 -0
  62. {bustapi-0.13.1 → bustapi-0.13.3}/docs/site/advanced/async_support.html +0 -0
  63. {bustapi-0.13.1 → bustapi-0.13.3}/docs/site/advanced/blueprints.html +0 -0
  64. {bustapi-0.13.1 → bustapi-0.13.3}/docs/site/advanced/dependency_injection.html +0 -0
  65. {bustapi-0.13.1 → bustapi-0.13.3}/docs/site/advanced/middleware.html +0 -0
  66. {bustapi-0.13.1 → bustapi-0.13.3}/docs/site/advanced/validation.html +0 -0
  67. {bustapi-0.13.1 → bustapi-0.13.3}/docs/site/api/all.html +0 -0
  68. {bustapi-0.13.1 → bustapi-0.13.3}/docs/site/api/app.html +0 -0
  69. {bustapi-0.13.1 → bustapi-0.13.3}/docs/site/api/context.html +0 -0
  70. {bustapi-0.13.1 → bustapi-0.13.3}/docs/site/api/utilities.html +0 -0
  71. {bustapi-0.13.1 → bustapi-0.13.3}/docs/site/assets/logo.png +0 -0
  72. {bustapi-0.13.1 → bustapi-0.13.3}/docs/site/changelog.html +0 -0
  73. {bustapi-0.13.1 → bustapi-0.13.3}/docs/site/core_concepts/request_data.html +0 -0
  74. {bustapi-0.13.1 → bustapi-0.13.3}/docs/site/core_concepts/responses.html +0 -0
  75. {bustapi-0.13.1 → bustapi-0.13.3}/docs/site/core_concepts/routing.html +0 -0
  76. {bustapi-0.13.1 → bustapi-0.13.3}/docs/site/core_concepts/templates.html +0 -0
  77. {bustapi-0.13.1 → bustapi-0.13.3}/docs/site/examples/index.html +0 -0
  78. {bustapi-0.13.1 → bustapi-0.13.3}/docs/site/getting_started/index.html +0 -0
  79. {bustapi-0.13.1 → bustapi-0.13.3}/docs/site/getting_started/quickstart.html +0 -0
  80. {bustapi-0.13.1 → bustapi-0.13.3}/docs/site/index.html +0 -0
  81. {bustapi-0.13.1 → bustapi-0.13.3}/docs/site/script.js +0 -0
  82. {bustapi-0.13.1 → bustapi-0.13.3}/docs/site/style.css +0 -0
  83. {bustapi-0.13.1 → bustapi-0.13.3}/docs/stylesheets/extra.css +0 -0
  84. {bustapi-0.13.1 → bustapi-0.13.3}/docs/user-guide/authentication.md +0 -0
  85. {bustapi-0.13.1 → bustapi-0.13.3}/docs/user-guide/caching.md +0 -0
  86. {bustapi-0.13.1 → bustapi-0.13.3}/docs/user-guide/cli.md +0 -0
  87. {bustapi-0.13.1 → bustapi-0.13.3}/docs/user-guide/database.md +0 -0
  88. {bustapi-0.13.1 → bustapi-0.13.3}/docs/user-guide/documentation.md +0 -0
  89. {bustapi-0.13.1 → bustapi-0.13.3}/docs/user-guide/error_handling.md +0 -0
  90. {bustapi-0.13.1 → bustapi-0.13.3}/docs/user-guide/jwt.md +0 -0
  91. {bustapi-0.13.1 → bustapi-0.13.3}/docs/user-guide/logging.md +0 -0
  92. {bustapi-0.13.1 → bustapi-0.13.3}/docs/user-guide/multiprocessing.md +0 -0
  93. {bustapi-0.13.1 → bustapi-0.13.3}/docs/user-guide/request_data.md +0 -0
  94. {bustapi-0.13.1 → bustapi-0.13.3}/docs/user-guide/routing.md +0 -0
  95. {bustapi-0.13.1 → bustapi-0.13.3}/docs/user-guide/sessions.md +0 -0
  96. {bustapi-0.13.1 → bustapi-0.13.3}/docs/user-guide/static_files.md +0 -0
  97. {bustapi-0.13.1 → bustapi-0.13.3}/docs/user-guide/templates.md +0 -0
  98. {bustapi-0.13.1 → bustapi-0.13.3}/docs/user-guide/turbo-routes.md +0 -0
  99. {bustapi-0.13.1 → bustapi-0.13.3}/docs/user-guide/video-streaming.md +0 -0
  100. {bustapi-0.13.1 → bustapi-0.13.3}/docs/websockets.md +0 -0
  101. {bustapi-0.13.1 → bustapi-0.13.3}/examples/advanced/08_auto_docs.py +0 -0
  102. {bustapi-0.13.1 → bustapi-0.13.3}/examples/advanced/12_test_modes.py +0 -0
  103. {bustapi-0.13.1 → bustapi-0.13.3}/examples/advanced/13_error_handling.py +0 -0
  104. {bustapi-0.13.1 → bustapi-0.13.3}/examples/advanced/14_middleware.py +0 -0
  105. {bustapi-0.13.1 → bustapi-0.13.3}/examples/advanced/16_middleware_session.py +0 -0
  106. {bustapi-0.13.1 → bustapi-0.13.3}/examples/advanced/20_file_uploads.py +0 -0
  107. {bustapi-0.13.1 → bustapi-0.13.3}/examples/advanced/24_body_and_depends.py +0 -0
  108. {bustapi-0.13.1 → bustapi-0.13.3}/examples/advanced/27_video_stream.py +0 -0
  109. {bustapi-0.13.1 → bustapi-0.13.3}/examples/advanced/28_websocket.py +0 -0
  110. {bustapi-0.13.1 → bustapi-0.13.3}/examples/advanced/29_turbo_websocket.py +0 -0
  111. {bustapi-0.13.1 → bustapi-0.13.3}/examples/basics/01_hello_world.py +0 -0
  112. {bustapi-0.13.1 → bustapi-0.13.3}/examples/basics/02_parameters.py +0 -0
  113. {bustapi-0.13.1 → bustapi-0.13.3}/examples/basics/03_async.py +0 -0
  114. {bustapi-0.13.1 → bustapi-0.13.3}/examples/basics/04_request_data.py +0 -0
  115. {bustapi-0.13.1 → bustapi-0.13.3}/examples/basics/19_all_types.py +0 -0
  116. {bustapi-0.13.1 → bustapi-0.13.3}/examples/database/07_database_raw.py +0 -0
  117. {bustapi-0.13.1 → bustapi-0.13.3}/examples/database/10_database_sqlmodel.py +0 -0
  118. {bustapi-0.13.1 → bustapi-0.13.3}/examples/routing/06_blueprints.py +0 -0
  119. {bustapi-0.13.1 → bustapi-0.13.3}/examples/routing/09_complex_routing.py +0 -0
  120. {bustapi-0.13.1 → bustapi-0.13.3}/examples/routing/21_path_validation.py +0 -0
  121. {bustapi-0.13.1 → bustapi-0.13.3}/examples/routing/22_path_docs.py +0 -0
  122. {bustapi-0.13.1 → bustapi-0.13.3}/examples/routing/23_query_validation.py +0 -0
  123. {bustapi-0.13.1 → bustapi-0.13.3}/examples/routing/blueprint_with_jwt.py +0 -0
  124. {bustapi-0.13.1 → bustapi-0.13.3}/examples/security/10_rate_limit_demo.py +0 -0
  125. {bustapi-0.13.1 → bustapi-0.13.3}/examples/security/11_security_demo.py +0 -0
  126. {bustapi-0.13.1 → bustapi-0.13.3}/examples/security/17_jwt_auth.py +0 -0
  127. {bustapi-0.13.1 → bustapi-0.13.3}/examples/security/17_safe_features.py +0 -0
  128. {bustapi-0.13.1 → bustapi-0.13.3}/examples/security/18_jwt_cookies.py +0 -0
  129. {bustapi-0.13.1 → bustapi-0.13.3}/examples/security/18_safe_advanced.py +0 -0
  130. {bustapi-0.13.1 → bustapi-0.13.3}/examples/security/18_session_login.py +0 -0
  131. {bustapi-0.13.1 → bustapi-0.13.3}/examples/templates/05_templates.py +0 -0
  132. {bustapi-0.13.1 → bustapi-0.13.3}/examples/templates/26_complex_template.py +0 -0
  133. {bustapi-0.13.1 → bustapi-0.13.3}/examples/templates/templates/index.html +0 -0
  134. {bustapi-0.13.1 → bustapi-0.13.3}/examples/turbo/cache_test.py +0 -0
  135. {bustapi-0.13.1 → bustapi-0.13.3}/examples/turbo/fair_benchmark.py +0 -0
  136. {bustapi-0.13.1 → bustapi-0.13.3}/examples/turbo/typed_turbo_example.py +0 -0
  137. {bustapi-0.13.1 → bustapi-0.13.3}/examples/ws/app.py +0 -0
  138. {bustapi-0.13.1 → bustapi-0.13.3}/examples/ws/templates/index.html +0 -0
  139. {bustapi-0.13.1 → bustapi-0.13.3}/examples/ws/websockets_demo.py +0 -0
  140. {bustapi-0.13.1 → bustapi-0.13.3}/examples/ws/ws_limit.py +0 -0
  141. {bustapi-0.13.1 → bustapi-0.13.3}/mkdocs.yml +0 -0
  142. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/app.py +0 -0
  143. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/auth/__init__.py +0 -0
  144. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/auth/csrf.py +0 -0
  145. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/auth/decorators.py +0 -0
  146. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/auth/login.py +0 -0
  147. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/auth/password.py +0 -0
  148. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/auth/tokens.py +0 -0
  149. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/auth/user.py +0 -0
  150. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/cli/__init__.py +0 -0
  151. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/cli/main.py +0 -0
  152. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/context.py +0 -0
  153. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/core/__init__.py +0 -0
  154. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/core/asgi.py +0 -0
  155. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/core/exceptions.py +0 -0
  156. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/core/helpers.py +0 -0
  157. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/core/logging.py +0 -0
  158. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/dependencies.py +0 -0
  159. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/dispatch.py +0 -0
  160. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/documentation/__init__.py +0 -0
  161. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/documentation/generator.py +0 -0
  162. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/extraction.py +0 -0
  163. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/fastapi_compat.py +0 -0
  164. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/hooks.py +0 -0
  165. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/http/__init__.py +0 -0
  166. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/http/response.py +0 -0
  167. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/jwt.py +0 -0
  168. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/logging.py +0 -0
  169. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/middleware.py +0 -0
  170. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/multiprocess.py +0 -0
  171. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/params.py +0 -0
  172. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/py.typed +0 -0
  173. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/responses.py +0 -0
  174. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/routing/__init__.py +0 -0
  175. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/routing/blueprints.py +0 -0
  176. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/routing/decorators.py +0 -0
  177. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/safe/__init__.py +0 -0
  178. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/safe/concurrency.py +0 -0
  179. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/safe/types.py +0 -0
  180. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/security/__init__.py +0 -0
  181. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/security/extension.py +0 -0
  182. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/security/rate_limit.py +0 -0
  183. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/server/__init__.py +0 -0
  184. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/server/runner.py +0 -0
  185. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/server/wsgi.py +0 -0
  186. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/sessions.py +0 -0
  187. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/templating/__init__.py +0 -0
  188. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/templating/engine.py +0 -0
  189. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/templating/mixin.py +0 -0
  190. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/testing/__init__.py +0 -0
  191. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/testing/client.py +0 -0
  192. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/utils.py +0 -0
  193. {bustapi-0.13.1 → bustapi-0.13.3}/python/bustapi/websocket.py +0 -0
  194. {bustapi-0.13.1 → bustapi-0.13.3}/run_all_examples.py +0 -0
  195. {bustapi-0.13.1 → bustapi-0.13.3}/scratch/test_abort.py +0 -0
  196. {bustapi-0.13.1 → bustapi-0.13.3}/scratch/test_headers.py +0 -0
  197. {bustapi-0.13.1 → bustapi-0.13.3}/src/bindings/app.rs +0 -0
  198. {bustapi-0.13.1 → bustapi-0.13.3}/src/bindings/converters.rs +0 -0
  199. {bustapi-0.13.1 → bustapi-0.13.3}/src/bindings/handlers.rs +0 -0
  200. {bustapi-0.13.1 → bustapi-0.13.3}/src/bindings/mod.rs +0 -0
  201. {bustapi-0.13.1 → bustapi-0.13.3}/src/bindings/request.rs +0 -0
  202. {bustapi-0.13.1 → bustapi-0.13.3}/src/bindings/typed_turbo.rs +0 -0
  203. {bustapi-0.13.1 → bustapi-0.13.3}/src/bindings/websocket.rs +0 -0
  204. {bustapi-0.13.1 → bustapi-0.13.3}/src/crypto.rs +0 -0
  205. {bustapi-0.13.1 → bustapi-0.13.3}/src/jwt.rs +0 -0
  206. {bustapi-0.13.1 → bustapi-0.13.3}/src/lib.rs +0 -0
  207. {bustapi-0.13.1 → bustapi-0.13.3}/src/logger.rs +0 -0
  208. {bustapi-0.13.1 → bustapi-0.13.3}/src/rate_limiter.rs +0 -0
  209. {bustapi-0.13.1 → bustapi-0.13.3}/src/request/methods.rs +0 -0
  210. {bustapi-0.13.1 → bustapi-0.13.3}/src/request/mod.rs +0 -0
  211. {bustapi-0.13.1 → bustapi-0.13.3}/src/request/tests.rs +0 -0
  212. {bustapi-0.13.1 → bustapi-0.13.3}/src/response/builders.rs +0 -0
  213. {bustapi-0.13.1 → bustapi-0.13.3}/src/response/methods.rs +0 -0
  214. {bustapi-0.13.1 → bustapi-0.13.3}/src/response/mod.rs +0 -0
  215. {bustapi-0.13.1 → bustapi-0.13.3}/src/router/handlers.rs +0 -0
  216. {bustapi-0.13.1 → bustapi-0.13.3}/src/router/matching.rs +0 -0
  217. {bustapi-0.13.1 → bustapi-0.13.3}/src/router/middleware.rs +0 -0
  218. {bustapi-0.13.1 → bustapi-0.13.3}/src/router/mod.rs +0 -0
  219. {bustapi-0.13.1 → bustapi-0.13.3}/src/router/tests.rs +0 -0
  220. {bustapi-0.13.1 → bustapi-0.13.3}/src/server/handlers.rs +0 -0
  221. {bustapi-0.13.1 → bustapi-0.13.3}/src/server/mod.rs +0 -0
  222. {bustapi-0.13.1 → bustapi-0.13.3}/src/server/startup.rs +0 -0
  223. {bustapi-0.13.1 → bustapi-0.13.3}/src/server/stream.rs +0 -0
  224. {bustapi-0.13.1 → bustapi-0.13.3}/src/static_files.rs +0 -0
  225. {bustapi-0.13.1 → bustapi-0.13.3}/src/templating.rs +0 -0
  226. {bustapi-0.13.1 → bustapi-0.13.3}/src/watcher.rs +0 -0
  227. {bustapi-0.13.1 → bustapi-0.13.3}/src/websocket/config.rs +0 -0
  228. {bustapi-0.13.1 → bustapi-0.13.3}/src/websocket/mod.rs +0 -0
  229. {bustapi-0.13.1 → bustapi-0.13.3}/src/websocket/session.rs +0 -0
  230. {bustapi-0.13.1 → bustapi-0.13.3}/src/websocket/turbo.rs +0 -0
  231. {bustapi-0.13.1 → bustapi-0.13.3}/static/style.css +0 -0
  232. {bustapi-0.13.1 → bustapi-0.13.3}/templates/base.html +0 -0
  233. {bustapi-0.13.1 → bustapi-0.13.3}/templates/complex.html +0 -0
  234. {bustapi-0.13.1 → bustapi-0.13.3}/tests/docs_test_all.py +0 -0
  235. {bustapi-0.13.1 → bustapi-0.13.3}/tests/docs_test_api_reference.py +0 -0
  236. {bustapi-0.13.1 → bustapi-0.13.3}/tests/docs_test_installation.py +0 -0
  237. {bustapi-0.13.1 → bustapi-0.13.3}/tests/docs_test_quickstart.py +0 -0
  238. {bustapi-0.13.1 → bustapi-0.13.3}/tests/docs_test_simple.py +0 -0
  239. {bustapi-0.13.1 → bustapi-0.13.3}/tests/test_050_features.py +0 -0
  240. {bustapi-0.13.1 → bustapi-0.13.3}/tests/test_async_hooks.py +0 -0
  241. {bustapi-0.13.1 → bustapi-0.13.3}/tests/test_async_login.py +0 -0
  242. {bustapi-0.13.1 → bustapi-0.13.3}/tests/test_auth.py +0 -0
  243. {bustapi-0.13.1 → bustapi-0.13.3}/tests/test_examples.py +0 -0
  244. {bustapi-0.13.1 → bustapi-0.13.3}/tests/test_hot_reload.py +0 -0
  245. {bustapi-0.13.1 → bustapi-0.13.3}/tests/test_issue_18.py +0 -0
  246. {bustapi-0.13.1 → bustapi-0.13.3}/tests/test_jwt.py +0 -0
  247. {bustapi-0.13.1 → bustapi-0.13.3}/tests/test_jwt_cookies.py +0 -0
  248. {bustapi-0.13.1 → bustapi-0.13.3}/tests/test_login_manager.py +0 -0
  249. {bustapi-0.13.1 → bustapi-0.13.3}/tests/test_middleware.py +0 -0
  250. {bustapi-0.13.1 → bustapi-0.13.3}/tests/test_multiprocess_stability.py +0 -0
  251. {bustapi-0.13.1 → bustapi-0.13.3}/tests/test_new_examples.py +0 -0
  252. {bustapi-0.13.1 → bustapi-0.13.3}/tests/test_orm_conflict.py +0 -0
  253. {bustapi-0.13.1 → bustapi-0.13.3}/tests/test_path_standalone.py +0 -0
  254. {bustapi-0.13.1 → bustapi-0.13.3}/tests/test_path_validation.py +0 -0
  255. {bustapi-0.13.1 → bustapi-0.13.3}/tests/test_rate_limit_rust.py +0 -0
  256. {bustapi-0.13.1 → bustapi-0.13.3}/tests/test_safe.py +0 -0
  257. {bustapi-0.13.1 → bustapi-0.13.3}/tests/test_security_unit.py +0 -0
  258. {bustapi-0.13.1 → bustapi-0.13.3}/tests/test_sessions.py +0 -0
  259. {bustapi-0.13.1 → bustapi-0.13.3}/tests/test_zero_copy.py +0 -0
  260. {bustapi-0.13.1 → bustapi-0.13.3}/tests/verify_router.py +0 -0
@@ -4,11 +4,9 @@ on:
4
4
  workflow_dispatch:
5
5
  inputs:
6
6
  run_id:
7
- description: 'CI Run ID to download artifacts from'
7
+ description: "CI Run ID to download artifacts from"
8
8
  required: true
9
9
  type: string
10
- release:
11
- types: [published]
12
10
 
13
11
  jobs:
14
12
  publish-to-pypi:
@@ -29,14 +27,14 @@ jobs:
29
27
  path: dist
30
28
  name_is_regexp: true
31
29
  name: "wheels-.*|sdist"
32
-
30
+
33
31
  - name: Flatten artifacts
34
32
  run: |
35
33
  # Move all files from subdirectories to dist/ root
36
34
  find dist -mindepth 2 -type f -exec mv {} dist/ \;
37
35
  # Remove empty subdirectories
38
36
  find dist -type d -empty -delete
39
-
37
+
40
38
  - name: Display collected files
41
39
  run: |
42
40
  echo "Files to be published:"
@@ -163,3 +163,5 @@ plan.md
163
163
  ignore/*.md
164
164
  ignore/
165
165
  issues/
166
+
167
+ *.db
@@ -0,0 +1,6 @@
1
+ # Agent Knowledge
2
+
3
+ To maintain consistency and performance in the BustAPI codebase, all AI agents must follow these instructions:
4
+
5
+ 1. **Python Management**: Use `uv` for all Python-related tasks, including dependency management and running scripts/tests.
6
+ 2. **Quality Control**: Always run linting checks (e.g., `ruff check`) before committing any changes to the repository.
@@ -8,7 +8,7 @@ version = "0.5.2"
8
8
  source = "registry+https://github.com/rust-lang/crates.io-index"
9
9
  checksum = "5f7b0a21988c1bf877cf4759ef5ddaac04c1c9fe808c9142ecb78ba97d97a28a"
10
10
  dependencies = [
11
- "bitflags 2.11.1",
11
+ "bitflags",
12
12
  "bytes",
13
13
  "futures-core",
14
14
  "futures-sink",
@@ -29,7 +29,7 @@ dependencies = [
29
29
  "actix-service",
30
30
  "actix-utils",
31
31
  "actix-web",
32
- "bitflags 2.11.1",
32
+ "bitflags",
33
33
  "bytes",
34
34
  "derive_more 2.1.1",
35
35
  "futures-core",
@@ -53,7 +53,7 @@ dependencies = [
53
53
  "actix-service",
54
54
  "actix-utils",
55
55
  "base64",
56
- "bitflags 2.11.1",
56
+ "bitflags",
57
57
  "brotli",
58
58
  "bytes",
59
59
  "bytestring",
@@ -229,7 +229,7 @@ dependencies = [
229
229
  "serde_json",
230
230
  "serde_urlencoded",
231
231
  "smallvec",
232
- "socket2 0.6.3",
232
+ "socket2 0.6.4",
233
233
  "time",
234
234
  "tracing",
235
235
  "url",
@@ -354,9 +354,9 @@ dependencies = [
354
354
 
355
355
  [[package]]
356
356
  name = "autocfg"
357
- version = "1.5.0"
357
+ version = "1.5.1"
358
358
  source = "registry+https://github.com/rust-lang/crates.io-index"
359
- checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
359
+ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53"
360
360
 
361
361
  [[package]]
362
362
  name = "base64"
@@ -370,12 +370,6 @@ version = "1.8.3"
370
370
  source = "registry+https://github.com/rust-lang/crates.io-index"
371
371
  checksum = "2af50177e190e07a26ab74f8b1efbfe2ef87da2116221318cb1c2e82baf7de06"
372
372
 
373
- [[package]]
374
- name = "bitflags"
375
- version = "1.3.2"
376
- source = "registry+https://github.com/rust-lang/crates.io-index"
377
- checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
378
-
379
373
  [[package]]
380
374
  name = "bitflags"
381
375
  version = "2.11.1"
@@ -411,9 +405,9 @@ dependencies = [
411
405
 
412
406
  [[package]]
413
407
  name = "brotli"
414
- version = "8.0.2"
408
+ version = "8.0.3"
415
409
  source = "registry+https://github.com/rust-lang/crates.io-index"
416
- checksum = "4bd8b9603c7aa97359dbd97ecf258968c95f3adddd6db2f7e7a5bef101c84560"
410
+ checksum = "8119e4516436f5708bbc474a9d395bf12f1b5395e93a92a56e647ac3388c8610"
417
411
  dependencies = [
418
412
  "alloc-no-stdlib",
419
413
  "alloc-stdlib",
@@ -422,9 +416,9 @@ dependencies = [
422
416
 
423
417
  [[package]]
424
418
  name = "brotli-decompressor"
425
- version = "5.0.0"
419
+ version = "5.0.1"
426
420
  source = "registry+https://github.com/rust-lang/crates.io-index"
427
- checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03"
421
+ checksum = "5962523e1b92ce1b5e793d9169b9943eece10d39f62550bc04bb605d75b94924"
428
422
  dependencies = [
429
423
  "alloc-no-stdlib",
430
424
  "alloc-stdlib",
@@ -432,13 +426,13 @@ dependencies = [
432
426
 
433
427
  [[package]]
434
428
  name = "bumpalo"
435
- version = "3.20.2"
429
+ version = "3.20.3"
436
430
  source = "registry+https://github.com/rust-lang/crates.io-index"
437
- checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb"
431
+ checksum = "72f5acc6cb2ba439de613abc23857ec3d78374d8ed5ac84e9d11336e87da8649"
438
432
 
439
433
  [[package]]
440
434
  name = "bustapi_core"
441
- version = "0.13.1"
435
+ version = "0.13.3"
442
436
  dependencies = [
443
437
  "actix-files",
444
438
  "actix-http",
@@ -497,9 +491,9 @@ dependencies = [
497
491
 
498
492
  [[package]]
499
493
  name = "cc"
500
- version = "1.2.61"
494
+ version = "1.2.63"
501
495
  source = "registry+https://github.com/rust-lang/crates.io-index"
502
- checksum = "d16d90359e986641506914ba71350897565610e87ce0ad9e6f28569db3dd5c6d"
496
+ checksum = "556e016178bb5662a08681bbe0f00f8e17631781a4dfc8c45e466e4b185ec27f"
503
497
  dependencies = [
504
498
  "find-msvc-tools",
505
499
  "jobserver",
@@ -659,9 +653,9 @@ dependencies = [
659
653
 
660
654
  [[package]]
661
655
  name = "crypto-common"
662
- version = "0.2.1"
656
+ version = "0.2.2"
663
657
  source = "registry+https://github.com/rust-lang/crates.io-index"
664
- checksum = "77727bb15fa921304124b128af125e7e3b968275d1b108b379190264f4423710"
658
+ checksum = "ce6e4c961d6cd6c9a86db418387425e8bdeaf05b3c8bc1411e6dca4c252f1453"
665
659
  dependencies = [
666
660
  "hybrid-array",
667
661
  ]
@@ -781,20 +775,20 @@ dependencies = [
781
775
 
782
776
  [[package]]
783
777
  name = "digest"
784
- version = "0.11.2"
778
+ version = "0.11.3"
785
779
  source = "registry+https://github.com/rust-lang/crates.io-index"
786
- checksum = "4850db49bf08e663084f7fb5c87d202ef91a3907271aff24a94eb97ff039153c"
780
+ checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2"
787
781
  dependencies = [
788
782
  "block-buffer 0.12.0",
789
783
  "const-oid",
790
- "crypto-common 0.2.1",
784
+ "crypto-common 0.2.2",
791
785
  ]
792
786
 
793
787
  [[package]]
794
788
  name = "displaydoc"
795
- version = "0.2.5"
789
+ version = "0.2.6"
796
790
  source = "registry+https://github.com/rust-lang/crates.io-index"
797
- checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0"
791
+ checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f"
798
792
  dependencies = [
799
793
  "proc-macro2",
800
794
  "quote",
@@ -1059,9 +1053,9 @@ dependencies = [
1059
1053
 
1060
1054
  [[package]]
1061
1055
  name = "hashbrown"
1062
- version = "0.17.0"
1056
+ version = "0.17.1"
1063
1057
  source = "registry+https://github.com/rust-lang/crates.io-index"
1064
- checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51"
1058
+ checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a"
1065
1059
 
1066
1060
  [[package]]
1067
1061
  name = "heck"
@@ -1124,9 +1118,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9"
1124
1118
 
1125
1119
  [[package]]
1126
1120
  name = "hybrid-array"
1127
- version = "0.4.11"
1121
+ version = "0.4.12"
1128
1122
  source = "registry+https://github.com/rust-lang/crates.io-index"
1129
- checksum = "08d46837a0ed51fe95bd3b05de33cd64a1ee88fc797477ca48446872504507c5"
1123
+ checksum = "9155a582abd142abc056962c29e3ce5ff2ad5469f4246b537ed42c5deba857da"
1130
1124
  dependencies = [
1131
1125
  "typenum",
1132
1126
  ]
@@ -1283,7 +1277,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1283
1277
  checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9"
1284
1278
  dependencies = [
1285
1279
  "equivalent",
1286
- "hashbrown 0.17.0",
1280
+ "hashbrown 0.17.1",
1287
1281
  "serde",
1288
1282
  "serde_core",
1289
1283
  ]
@@ -1294,7 +1288,7 @@ version = "0.11.1"
1294
1288
  source = "registry+https://github.com/rust-lang/crates.io-index"
1295
1289
  checksum = "bd5b3eaf1a28b758ac0faa5a4254e8ab2705605496f1b1f3fbbc3988ad73d199"
1296
1290
  dependencies = [
1297
- "bitflags 2.11.1",
1291
+ "bitflags",
1298
1292
  "inotify-sys",
1299
1293
  "libc",
1300
1294
  ]
@@ -1335,9 +1329,9 @@ dependencies = [
1335
1329
 
1336
1330
  [[package]]
1337
1331
  name = "js-sys"
1338
- version = "0.3.97"
1332
+ version = "0.3.99"
1339
1333
  source = "registry+https://github.com/rust-lang/crates.io-index"
1340
- checksum = "a1840c94c045fbcf8ba2812c95db44499f7c64910a912551aaaa541decebcacf"
1334
+ checksum = "142bc4740e452c1e57ade0cbc129f139c9093e354346f0872ef985f4f5cf5f11"
1341
1335
  dependencies = [
1342
1336
  "cfg-if",
1343
1337
  "futures-util",
@@ -1357,11 +1351,11 @@ dependencies = [
1357
1351
 
1358
1352
  [[package]]
1359
1353
  name = "kqueue-sys"
1360
- version = "1.0.4"
1354
+ version = "1.1.2"
1361
1355
  source = "registry+https://github.com/rust-lang/crates.io-index"
1362
- checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b"
1356
+ checksum = "07293a4e297ac234359b510362495713f75ea345d5307140414f20c69ffeb087"
1363
1357
  dependencies = [
1364
- "bitflags 1.3.2",
1358
+ "bitflags",
1365
1359
  "libc",
1366
1360
  ]
1367
1361
 
@@ -1391,9 +1385,9 @@ checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66"
1391
1385
 
1392
1386
  [[package]]
1393
1387
  name = "libmimalloc-sys"
1394
- version = "0.1.47"
1388
+ version = "0.1.49"
1395
1389
  source = "registry+https://github.com/rust-lang/crates.io-index"
1396
- checksum = "2d1eacfa31c33ec25e873c136ba5669f00f9866d0688bea7be4d3f7e43067df6"
1390
+ checksum = "6a45a52f43e1c16f667ccfe4dd8c85b7f7c204fd5e3bf46c5b0db9a5c3c0b8e9"
1397
1391
  dependencies = [
1398
1392
  "cc",
1399
1393
  ]
@@ -1438,9 +1432,9 @@ dependencies = [
1438
1432
 
1439
1433
  [[package]]
1440
1434
  name = "log"
1441
- version = "0.4.29"
1435
+ version = "0.4.30"
1442
1436
  source = "registry+https://github.com/rust-lang/crates.io-index"
1443
- checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897"
1437
+ checksum = "616ec5685824bcc94416c6d4a7a446eea774a31efd7062c8480ba6fd06d7a6e5"
1444
1438
 
1445
1439
  [[package]]
1446
1440
  name = "matchers"
@@ -1459,9 +1453,9 @@ checksum = "2f926ade0c4e170215ae43342bf13b9310a437609c81f29f86c5df6657582ef9"
1459
1453
 
1460
1454
  [[package]]
1461
1455
  name = "memchr"
1462
- version = "2.8.0"
1456
+ version = "2.8.1"
1463
1457
  source = "registry+https://github.com/rust-lang/crates.io-index"
1464
- checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79"
1458
+ checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8"
1465
1459
 
1466
1460
  [[package]]
1467
1461
  name = "memo-map"
@@ -1471,9 +1465,9 @@ checksum = "38d1115007560874e373613744c6fba374c17688327a71c1476d1a5954cc857b"
1471
1465
 
1472
1466
  [[package]]
1473
1467
  name = "mimalloc"
1474
- version = "0.1.50"
1468
+ version = "0.1.52"
1475
1469
  source = "registry+https://github.com/rust-lang/crates.io-index"
1476
- checksum = "b3627c4272df786b9260cabaa46aec1d59c93ede723d4c3ef646c503816b0640"
1470
+ checksum = "2d4139bb28d14ad1facf21d5eb8825051b326e172d216b39f6d31df53cc97862"
1477
1471
  dependencies = [
1478
1472
  "libmimalloc-sys",
1479
1473
  ]
@@ -1496,9 +1490,9 @@ dependencies = [
1496
1490
 
1497
1491
  [[package]]
1498
1492
  name = "minijinja"
1499
- version = "2.19.0"
1493
+ version = "2.20.0"
1500
1494
  source = "registry+https://github.com/rust-lang/crates.io-index"
1501
- checksum = "805bfd7352166bae857ee569628b52bcd85a1cecf7810861ebceb1686b72b75d"
1495
+ checksum = "2929e494b2280e1e18959bb2e121da03347ae896896fdfaceaab43c88a02803f"
1502
1496
  dependencies = [
1503
1497
  "memo-map",
1504
1498
  "serde",
@@ -1517,9 +1511,9 @@ dependencies = [
1517
1511
 
1518
1512
  [[package]]
1519
1513
  name = "mio"
1520
- version = "1.2.0"
1514
+ version = "1.2.1"
1521
1515
  source = "registry+https://github.com/rust-lang/crates.io-index"
1522
- checksum = "50b7e5b27aa02a74bac8c3f23f448f8d87ff11f92d3aac1a6ed369ee08cc56c1"
1516
+ checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda"
1523
1517
  dependencies = [
1524
1518
  "libc",
1525
1519
  "log",
@@ -1533,7 +1527,7 @@ version = "0.30.1"
1533
1527
  source = "registry+https://github.com/rust-lang/crates.io-index"
1534
1528
  checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6"
1535
1529
  dependencies = [
1536
- "bitflags 2.11.1",
1530
+ "bitflags",
1537
1531
  "cfg-if",
1538
1532
  "cfg_aliases",
1539
1533
  "libc",
@@ -1545,7 +1539,7 @@ version = "8.2.0"
1545
1539
  source = "registry+https://github.com/rust-lang/crates.io-index"
1546
1540
  checksum = "4d3d07927151ff8575b7087f245456e549fea62edf0ec4e565a5ee50c8402bc3"
1547
1541
  dependencies = [
1548
- "bitflags 2.11.1",
1542
+ "bitflags",
1549
1543
  "fsevent-sys",
1550
1544
  "inotify",
1551
1545
  "kqueue",
@@ -1563,7 +1557,7 @@ version = "2.1.0"
1563
1557
  source = "registry+https://github.com/rust-lang/crates.io-index"
1564
1558
  checksum = "42b8cfee0e339a0337359f3c88165702ac6e600dc01c0cc9579a92d62b08477a"
1565
1559
  dependencies = [
1566
- "bitflags 2.11.1",
1560
+ "bitflags",
1567
1561
  ]
1568
1562
 
1569
1563
  [[package]]
@@ -1577,9 +1571,9 @@ dependencies = [
1577
1571
 
1578
1572
  [[package]]
1579
1573
  name = "num-conv"
1580
- version = "0.2.1"
1574
+ version = "0.2.2"
1581
1575
  source = "registry+https://github.com/rust-lang/crates.io-index"
1582
- checksum = "c6673768db2d862beb9b39a78fdcb1a69439615d5794a1be50caa9bc92c81967"
1576
+ checksum = "521739c6d2bac4aa25192232afe6841231376b2b26d4d9fae5ecf8ca5772e441"
1583
1577
 
1584
1578
  [[package]]
1585
1579
  name = "num-traits"
@@ -1877,7 +1871,7 @@ version = "0.5.18"
1877
1871
  source = "registry+https://github.com/rust-lang/crates.io-index"
1878
1872
  checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d"
1879
1873
  dependencies = [
1880
- "bitflags 2.11.1",
1874
+ "bitflags",
1881
1875
  ]
1882
1876
 
1883
1877
  [[package]]
@@ -1930,7 +1924,7 @@ version = "1.1.4"
1930
1924
  source = "registry+https://github.com/rust-lang/crates.io-index"
1931
1925
  checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190"
1932
1926
  dependencies = [
1933
- "bitflags 2.11.1",
1927
+ "bitflags",
1934
1928
  "errno",
1935
1929
  "libc",
1936
1930
  "linux-raw-sys",
@@ -2002,9 +1996,9 @@ dependencies = [
2002
1996
 
2003
1997
  [[package]]
2004
1998
  name = "serde_json"
2005
- version = "1.0.149"
1999
+ version = "1.0.150"
2006
2000
  source = "registry+https://github.com/rust-lang/crates.io-index"
2007
- checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86"
2001
+ checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9"
2008
2002
  dependencies = [
2009
2003
  "itoa",
2010
2004
  "memchr",
@@ -2042,7 +2036,7 @@ checksum = "aacc4cc499359472b4abe1bf11d0b12e688af9a805fa5e3016f9a386dc2d0214"
2042
2036
  dependencies = [
2043
2037
  "cfg-if",
2044
2038
  "cpufeatures 0.3.0",
2045
- "digest 0.11.2",
2039
+ "digest 0.11.3",
2046
2040
  ]
2047
2041
 
2048
2042
  [[package]]
@@ -2067,9 +2061,9 @@ dependencies = [
2067
2061
 
2068
2062
  [[package]]
2069
2063
  name = "shlex"
2070
- version = "1.3.0"
2064
+ version = "2.0.1"
2071
2065
  source = "registry+https://github.com/rust-lang/crates.io-index"
2072
- checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
2066
+ checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"
2073
2067
 
2074
2068
  [[package]]
2075
2069
  name = "signal-hook-registry"
@@ -2111,9 +2105,9 @@ dependencies = [
2111
2105
 
2112
2106
  [[package]]
2113
2107
  name = "socket2"
2114
- version = "0.6.3"
2108
+ version = "0.6.4"
2115
2109
  source = "registry+https://github.com/rust-lang/crates.io-index"
2116
- checksum = "3a766e1110788c36f4fa1c2b71b387a7815aa65f88ce0229841826633d93723e"
2110
+ checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51"
2117
2111
  dependencies = [
2118
2112
  "libc",
2119
2113
  "windows-sys 0.61.2",
@@ -2250,9 +2244,9 @@ dependencies = [
2250
2244
 
2251
2245
  [[package]]
2252
2246
  name = "tokio"
2253
- version = "1.52.1"
2247
+ version = "1.52.3"
2254
2248
  source = "registry+https://github.com/rust-lang/crates.io-index"
2255
- checksum = "b67dee974fe86fd92cc45b7a95fdd2f99a36a6d7b0d431a231178d3d670bbcc6"
2249
+ checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe"
2256
2250
  dependencies = [
2257
2251
  "bytes",
2258
2252
  "libc",
@@ -2260,7 +2254,7 @@ dependencies = [
2260
2254
  "parking_lot",
2261
2255
  "pin-project-lite",
2262
2256
  "signal-hook-registry",
2263
- "socket2 0.6.3",
2257
+ "socket2 0.6.4",
2264
2258
  "tokio-macros",
2265
2259
  "windows-sys 0.61.2",
2266
2260
  ]
@@ -2353,9 +2347,9 @@ dependencies = [
2353
2347
 
2354
2348
  [[package]]
2355
2349
  name = "typenum"
2356
- version = "1.20.0"
2350
+ version = "1.20.1"
2357
2351
  source = "registry+https://github.com/rust-lang/crates.io-index"
2358
- checksum = "40ce102ab67701b8526c123c1bab5cbe42d7040ccfd0f64af1a385808d2f43de"
2352
+ checksum = "b6f5e870be6c3b371b77fe0ee0bafb859fa4964b4404c27de1d380043c4dda20"
2359
2353
 
2360
2354
  [[package]]
2361
2355
  name = "unicase"
@@ -2463,9 +2457,9 @@ dependencies = [
2463
2457
 
2464
2458
  [[package]]
2465
2459
  name = "wasm-bindgen"
2466
- version = "0.2.120"
2460
+ version = "0.2.122"
2467
2461
  source = "registry+https://github.com/rust-lang/crates.io-index"
2468
- checksum = "df52b6d9b87e0c74c9edfa1eb2d9bf85e5d63515474513aa50fa181b3c4f5db1"
2462
+ checksum = "3ed04576f974d2b2fba0f38c51dbc5518011e38c36bf1143164be765528fd409"
2469
2463
  dependencies = [
2470
2464
  "cfg-if",
2471
2465
  "once_cell",
@@ -2476,9 +2470,9 @@ dependencies = [
2476
2470
 
2477
2471
  [[package]]
2478
2472
  name = "wasm-bindgen-macro"
2479
- version = "0.2.120"
2473
+ version = "0.2.122"
2480
2474
  source = "registry+https://github.com/rust-lang/crates.io-index"
2481
- checksum = "78b1041f495fb322e64aca85f5756b2172e35cd459376e67f2a6c9dffcedb103"
2475
+ checksum = "916151b09da36bd82f6615cbf3a419e2f0ba23a03c6160e8e92eb6bd4aa1dec6"
2482
2476
  dependencies = [
2483
2477
  "quote",
2484
2478
  "wasm-bindgen-macro-support",
@@ -2486,9 +2480,9 @@ dependencies = [
2486
2480
 
2487
2481
  [[package]]
2488
2482
  name = "wasm-bindgen-macro-support"
2489
- version = "0.2.120"
2483
+ version = "0.2.122"
2490
2484
  source = "registry+https://github.com/rust-lang/crates.io-index"
2491
- checksum = "9dcd0ff20416988a18ac686d4d4d0f6aae9ebf08a389ff5d29012b05af2a1b41"
2485
+ checksum = "299047362ccbfce148b67ab7e73349f77748e00c8296f9542adfad2ad82c5c5e"
2492
2486
  dependencies = [
2493
2487
  "bumpalo",
2494
2488
  "proc-macro2",
@@ -2499,9 +2493,9 @@ dependencies = [
2499
2493
 
2500
2494
  [[package]]
2501
2495
  name = "wasm-bindgen-shared"
2502
- version = "0.2.120"
2496
+ version = "0.2.122"
2503
2497
  source = "registry+https://github.com/rust-lang/crates.io-index"
2504
- checksum = "49757b3c82ebf16c57d69365a142940b384176c24df52a087fb748e2085359ea"
2498
+ checksum = "9a929b2c61f11ba3e9bc35b50c1f25cb38e0e892c0c231ae2b8cf78d5dad4437"
2505
2499
  dependencies = [
2506
2500
  "unicode-ident",
2507
2501
  ]
@@ -2534,7 +2528,7 @@ version = "0.244.0"
2534
2528
  source = "registry+https://github.com/rust-lang/crates.io-index"
2535
2529
  checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe"
2536
2530
  dependencies = [
2537
- "bitflags 2.11.1",
2531
+ "bitflags",
2538
2532
  "hashbrown 0.15.5",
2539
2533
  "indexmap",
2540
2534
  "semver",
@@ -2837,7 +2831,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
2837
2831
  checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2"
2838
2832
  dependencies = [
2839
2833
  "anyhow",
2840
- "bitflags 2.11.1",
2834
+ "bitflags",
2841
2835
  "indexmap",
2842
2836
  "log",
2843
2837
  "serde",
@@ -2898,18 +2892,18 @@ dependencies = [
2898
2892
 
2899
2893
  [[package]]
2900
2894
  name = "zerocopy"
2901
- version = "0.8.48"
2895
+ version = "0.8.50"
2902
2896
  source = "registry+https://github.com/rust-lang/crates.io-index"
2903
- checksum = "eed437bf9d6692032087e337407a86f04cd8d6a16a37199ed57949d415bd68e9"
2897
+ checksum = "3b065d4f0e55f82fae73202e189638116a87c55ab6b8e6c2721e13dd9d854ad1"
2904
2898
  dependencies = [
2905
2899
  "zerocopy-derive",
2906
2900
  ]
2907
2901
 
2908
2902
  [[package]]
2909
2903
  name = "zerocopy-derive"
2910
- version = "0.8.48"
2904
+ version = "0.8.50"
2911
2905
  source = "registry+https://github.com/rust-lang/crates.io-index"
2912
- checksum = "70e3cd084b1788766f53af483dd21f93881ff30d7320490ec3ef7526d203bad4"
2906
+ checksum = "0b631b19d36a892ab55420c92dbc83ccd79274f25be714855d3074aa71cab639"
2913
2907
  dependencies = [
2914
2908
  "proc-macro2",
2915
2909
  "quote",
@@ -2918,9 +2912,9 @@ dependencies = [
2918
2912
 
2919
2913
  [[package]]
2920
2914
  name = "zerofrom"
2921
- version = "0.1.7"
2915
+ version = "0.1.8"
2922
2916
  source = "registry+https://github.com/rust-lang/crates.io-index"
2923
- checksum = "69faa1f2a1ea75661980b013019ed6687ed0e83d069bc1114e2cc74c6c04c4df"
2917
+ checksum = "0ec05a11813ea801ff6d75110ad09cd0824ddba17dfe17128ea0d5f68e6c5272"
2924
2918
  dependencies = [
2925
2919
  "zerofrom-derive",
2926
2920
  ]
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "bustapi_core"
3
- version = "0.13.1"
3
+ version = "0.13.3"
4
4
  edition = "2021"
5
5
  readme = "README.md"
6
6
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bustapi
3
- Version: 0.13.1
3
+ Version: 0.13.3
4
4
  Classifier: Development Status :: 3 - Alpha
5
5
  Classifier: Intended Audience :: Developers
6
6
  Classifier: License :: OSI Approved :: MIT License
@@ -109,9 +109,9 @@ def logout():
109
109
  return resp
110
110
  ```
111
111
 
112
- ## Streaming Responses
112
+ ### StreamingResponse
113
113
 
114
- You can stream data to the client using `StreamingResponse`. This supports both synchronous and asynchronous iterators.
114
+ You can stream data to the client using `StreamingResponse`. This is highly efficient as it uses the Rust backend to poll your iterator without blocking other requests. It supports both synchronous and asynchronous iterators.
115
115
 
116
116
  ```python
117
117
  from bustapi import StreamingResponse
@@ -124,9 +124,28 @@ async def fast_stream():
124
124
 
125
125
  @app.route("/stream")
126
126
  async def stream():
127
+ # Rust handles the streaming polling in the background
127
128
  return StreamingResponse(fast_stream(), media_type="text/plain")
128
129
  ```
129
130
 
131
+ ### FileResponse
132
+
133
+ For serving files efficiently, use `FileResponse`. It uses the Rust backend's zero-copy file serving (via `actix-files`), making it significantly faster than reading files into memory in Python.
134
+
135
+ ```python
136
+ from bustapi import FileResponse
137
+
138
+ @app.route("/download")
139
+ def download():
140
+ return FileResponse(
141
+ path="path/to/large_file.zip",
142
+ media_type="application/zip",
143
+ filename="custom_name.zip"
144
+ )
145
+ ```
146
+
147
+ `FileResponse` also automatically supports **HTTP Range Requests**, allowing browsers to seek through videos or resume large downloads.
148
+
130
149
  ## Redirections & Errors
131
150
 
132
151
  Use the helper functions `redirect` and `abort`.
@@ -4,7 +4,7 @@ build-backend = "maturin"
4
4
 
5
5
  [project]
6
6
  name = "bustapi"
7
- version = "0.13.1"
7
+ version = "0.13.3"
8
8
  description = "High-performance Python web framework with Rust backend"
9
9
  authors = [
10
10
  {name = "GrandpaEJ", email = ""}
@@ -22,7 +22,7 @@ import platform
22
22
  import sys
23
23
  from http import HTTPStatus
24
24
 
25
- __version__ = "0.13.1"
25
+ __version__ = "0.13.3"
26
26
  __author__ = "BustAPI" # with GrandpaEJ
27
27
  __email__ = ""
28
28
 
@@ -47,6 +47,8 @@ class Request:
47
47
  self._files_cache = None
48
48
  self._args_cache = None
49
49
  self._user = None
50
+ self._login_user = None
51
+ self._login_fresh = None
50
52
 
51
53
  @classmethod
52
54
  def _from_rust_request(cls, rust_request) -> "Request":