tempest-fastapi-sdk 0.92.0__tar.gz → 0.93.0__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 (512) hide show
  1. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/CHANGELOG.md +39 -0
  2. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/CLAUDE.md +9 -1
  3. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/PKG-INFO +33 -49
  4. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/README.md +32 -48
  5. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/migration.en.md +1 -1
  6. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/migration.md +1 -1
  7. tempest_fastapi_sdk-0.93.0/docs/recipes/queue-tasks.en.md +234 -0
  8. tempest_fastapi_sdk-0.93.0/docs/recipes/queue-tasks.md +234 -0
  9. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/pyproject.toml +3 -1
  10. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/__init__.py +1 -1
  11. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/queue/__init__.py +7 -1
  12. tempest_fastapi_sdk-0.93.0/tempest_fastapi_sdk/queue/broker.py +336 -0
  13. tempest_fastapi_sdk-0.93.0/tempest_fastapi_sdk/tasks/__init__.py +23 -0
  14. tempest_fastapi_sdk-0.93.0/tempest_fastapi_sdk/tasks/queue.py +459 -0
  15. tempest_fastapi_sdk-0.93.0/tests/queue/test_broker.py +95 -0
  16. tempest_fastapi_sdk-0.93.0/tests/tasks/test_queue.py +114 -0
  17. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/uv.lock +1 -1
  18. tempest_fastapi_sdk-0.92.0/docs/recipes/queue-tasks.en.md +0 -326
  19. tempest_fastapi_sdk-0.92.0/docs/recipes/queue-tasks.md +0 -325
  20. tempest_fastapi_sdk-0.92.0/tempest_fastapi_sdk/tasks/__init__.py +0 -13
  21. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/.github/workflows/ci.yml +0 -0
  22. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/.github/workflows/docs.yml +0 -0
  23. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/.github/workflows/release-pypi.yml +0 -0
  24. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/.gitignore +0 -0
  25. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/.python-version +0 -0
  26. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/Makefile +0 -0
  27. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/architecture.en.md +0 -0
  28. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/architecture.md +0 -0
  29. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/changelog.en.md +0 -0
  30. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/changelog.md +0 -0
  31. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/contributing.en.md +0 -0
  32. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/contributing.md +0 -0
  33. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/index.en.md +0 -0
  34. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/index.md +0 -0
  35. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/installation.en.md +0 -0
  36. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/installation.md +0 -0
  37. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/learning/index.en.md +0 -0
  38. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/learning/index.md +0 -0
  39. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/learning/marketplace/api.en.md +0 -0
  40. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/learning/marketplace/api.md +0 -0
  41. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/learning/marketplace/business-rules.en.md +0 -0
  42. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/learning/marketplace/business-rules.md +0 -0
  43. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/learning/marketplace/domain.en.md +0 -0
  44. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/learning/marketplace/domain.md +0 -0
  45. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/learning/marketplace/flows.en.md +0 -0
  46. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/learning/marketplace/flows.md +0 -0
  47. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/learning/marketplace/index.en.md +0 -0
  48. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/learning/marketplace/index.md +0 -0
  49. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/admin.en.md +0 -0
  50. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/admin.md +0 -0
  51. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/audit-trail.en.md +0 -0
  52. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/audit-trail.md +0 -0
  53. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/auth-flow.en.md +0 -0
  54. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/auth-flow.md +0 -0
  55. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/br-helpers.en.md +0 -0
  56. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/br-helpers.md +0 -0
  57. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/cache.en.md +0 -0
  58. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/cache.md +0 -0
  59. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/cli.en.md +0 -0
  60. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/cli.md +0 -0
  61. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/database.en.md +0 -0
  62. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/database.md +0 -0
  63. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/deploy-safety.en.md +0 -0
  64. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/deploy-safety.md +0 -0
  65. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/downloads.en.md +0 -0
  66. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/downloads.md +0 -0
  67. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/email.en.md +0 -0
  68. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/email.md +0 -0
  69. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/feature-flags.en.md +0 -0
  70. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/feature-flags.md +0 -0
  71. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/fields.en.md +0 -0
  72. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/fields.md +0 -0
  73. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/file-store.en.md +0 -0
  74. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/file-store.md +0 -0
  75. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/http-client.en.md +0 -0
  76. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/http-client.md +0 -0
  77. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/http.en.md +0 -0
  78. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/http.md +0 -0
  79. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/idempotency.en.md +0 -0
  80. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/idempotency.md +0 -0
  81. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/index.en.md +0 -0
  82. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/index.md +0 -0
  83. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/logging.en.md +0 -0
  84. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/logging.md +0 -0
  85. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/metrics.en.md +0 -0
  86. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/metrics.md +0 -0
  87. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/mfa.en.md +0 -0
  88. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/mfa.md +0 -0
  89. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/multi-tenant.en.md +0 -0
  90. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/multi-tenant.md +0 -0
  91. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/observability.en.md +0 -0
  92. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/observability.md +0 -0
  93. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/offline-sync.en.md +0 -0
  94. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/offline-sync.md +0 -0
  95. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/outbox.en.md +0 -0
  96. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/outbox.md +0 -0
  97. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/realtime.en.md +0 -0
  98. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/realtime.md +0 -0
  99. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/refresh-tokens.en.md +0 -0
  100. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/refresh-tokens.md +0 -0
  101. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/security.en.md +0 -0
  102. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/security.md +0 -0
  103. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/sessions.en.md +0 -0
  104. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/sessions.md +0 -0
  105. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/sse.en.md +0 -0
  106. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/sse.md +0 -0
  107. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/storage.en.md +0 -0
  108. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/storage.md +0 -0
  109. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/stored-files.en.md +0 -0
  110. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/stored-files.md +0 -0
  111. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/testing.en.md +0 -0
  112. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/testing.md +0 -0
  113. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/typing.en.md +0 -0
  114. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/typing.md +0 -0
  115. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/uploads.en.md +0 -0
  116. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/uploads.md +0 -0
  117. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/utilities.en.md +0 -0
  118. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/utilities.md +0 -0
  119. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/vision.en.md +0 -0
  120. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/vision.md +0 -0
  121. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/webpush.en.md +0 -0
  122. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/webpush.md +0 -0
  123. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/websocket.en.md +0 -0
  124. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/recipes/websocket.md +0 -0
  125. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/reference.en.md +0 -0
  126. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/reference.md +0 -0
  127. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/roadmap.en.md +0 -0
  128. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/roadmap.md +0 -0
  129. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/ssr.en.md +0 -0
  130. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/ssr.md +0 -0
  131. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/tutorial.en.md +0 -0
  132. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/docs/tutorial.md +0 -0
  133. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/mkdocs.yml +0 -0
  134. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/mkdocs_hooks/llmstxt.py +0 -0
  135. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/scripts/extract_recipe.py +0 -0
  136. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/admin/__init__.py +0 -0
  137. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/admin/actions.py +0 -0
  138. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/admin/auth.py +0 -0
  139. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/admin/config.py +0 -0
  140. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/admin/discovery.py +0 -0
  141. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/admin/forms.py +0 -0
  142. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/admin/router.py +0 -0
  143. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/admin/session.py +0 -0
  144. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/admin/site.py +0 -0
  145. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/admin/static/admin.css +0 -0
  146. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/admin/templates/base.html +0 -0
  147. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/admin/templates/dashboard.html +0 -0
  148. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/admin/templates/detail.html +0 -0
  149. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/admin/templates/form.html +0 -0
  150. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/admin/templates/list.html +0 -0
  151. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/admin/templates/login.html +0 -0
  152. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/admin/templates/logs.html +0 -0
  153. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/admin/templates/mfa.html +0 -0
  154. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/admin/theme.py +0 -0
  155. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/api/__init__.py +0 -0
  156. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/api/cookies.py +0 -0
  157. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/api/dependencies/__init__.py +0 -0
  158. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/api/dependencies/auth.py +0 -0
  159. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/api/handlers.py +0 -0
  160. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/api/middlewares/__init__.py +0 -0
  161. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/api/middlewares/body_size.py +0 -0
  162. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/api/middlewares/cors.py +0 -0
  163. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/api/middlewares/csrf.py +0 -0
  164. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/api/middlewares/graceful.py +0 -0
  165. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/api/middlewares/idempotency.py +0 -0
  166. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/api/middlewares/rate_limit.py +0 -0
  167. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/api/middlewares/request_id.py +0 -0
  168. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/api/oauth.py +0 -0
  169. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/api/routers/__init__.py +0 -0
  170. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/api/routers/health.py +0 -0
  171. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/api/routers/logs.py +0 -0
  172. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/api/routers/metrics.py +0 -0
  173. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/api/routers/tool_spec.py +0 -0
  174. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/api/server.py +0 -0
  175. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/api/static.py +0 -0
  176. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/api/tracing.py +0 -0
  177. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/api/webhooks.py +0 -0
  178. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/__init__.py +0 -0
  179. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/guards.py +0 -0
  180. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/locale.py +0 -0
  181. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/page_renderer.py +0 -0
  182. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/router.py +0 -0
  183. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/schemas.py +0 -0
  184. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/service.py +0 -0
  185. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/templates/en-US/activation.html +0 -0
  186. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/templates/en-US/activation_error.html +0 -0
  187. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/templates/en-US/activation_success.html +0 -0
  188. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/templates/en-US/email_change.html +0 -0
  189. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/templates/en-US/email_change_error.html +0 -0
  190. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/templates/en-US/email_change_success.html +0 -0
  191. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/templates/en-US/email_changed_notice.html +0 -0
  192. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/templates/en-US/email_verification.html +0 -0
  193. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/templates/en-US/email_verification_error.html +0 -0
  194. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/templates/en-US/email_verification_success.html +0 -0
  195. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/templates/en-US/password_reset.html +0 -0
  196. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/templates/en-US/password_reset_error.html +0 -0
  197. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/templates/en-US/password_reset_form.html +0 -0
  198. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/templates/en-US/password_reset_success.html +0 -0
  199. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/templates/pt-BR/activation.html +0 -0
  200. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/templates/pt-BR/activation_error.html +0 -0
  201. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/templates/pt-BR/activation_success.html +0 -0
  202. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/templates/pt-BR/email_change.html +0 -0
  203. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/templates/pt-BR/email_change_error.html +0 -0
  204. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/templates/pt-BR/email_change_success.html +0 -0
  205. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/templates/pt-BR/email_changed_notice.html +0 -0
  206. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/templates/pt-BR/email_verification.html +0 -0
  207. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/templates/pt-BR/email_verification_error.html +0 -0
  208. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/templates/pt-BR/email_verification_success.html +0 -0
  209. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/templates/pt-BR/password_reset.html +0 -0
  210. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/templates/pt-BR/password_reset_error.html +0 -0
  211. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/templates/pt-BR/password_reset_form.html +0 -0
  212. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/templates/pt-BR/password_reset_success.html +0 -0
  213. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/auth/token_delivery.py +0 -0
  214. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cache/__init__.py +0 -0
  215. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cache/decorator.py +0 -0
  216. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cache/invalidation.py +0 -0
  217. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cache/redis_manager.py +0 -0
  218. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/__init__.py +0 -0
  219. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/_templates/Dockerfile.tmpl +0 -0
  220. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/_templates/README.md.tmpl +0 -0
  221. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/_templates/dockerignore.tmpl +0 -0
  222. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/_templates/env.example.tmpl +0 -0
  223. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/_templates/gitignore.tmpl +0 -0
  224. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/_templates/main.py.tmpl +0 -0
  225. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/_templates/pyproject.toml.tmpl +0 -0
  226. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/_templates/src/__init__.py.tmpl +0 -0
  227. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/_templates/src/api/__init__.py.tmpl +0 -0
  228. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/_templates/src/api/app.py.tmpl +0 -0
  229. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/_templates/src/api/dependencies/__init__.py.tmpl +0 -0
  230. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/_templates/src/api/dependencies/auth.py.tmpl +0 -0
  231. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/_templates/src/api/dependencies/resources.py.tmpl +0 -0
  232. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/_templates/src/api/routers/__init__.py.tmpl +0 -0
  233. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/_templates/src/controllers/__init__.py.tmpl +0 -0
  234. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/_templates/src/core/__init__.py.tmpl +0 -0
  235. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/_templates/src/core/exceptions.py.tmpl +0 -0
  236. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/_templates/src/core/settings.py.tmpl +0 -0
  237. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/_templates/src/db/__init__.py.tmpl +0 -0
  238. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/_templates/src/db/models/__init__.py.tmpl +0 -0
  239. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/_templates/src/db/models/user.py.tmpl +0 -0
  240. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/_templates/src/db/repositories/__init__.py.tmpl +0 -0
  241. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/_templates/src/schemas/__init__.py.tmpl +0 -0
  242. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/_templates/src/server.py.tmpl +0 -0
  243. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/_templates/src/services/__init__.py.tmpl +0 -0
  244. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/_templates/src/utils/__init__.py.tmpl +0 -0
  245. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/_templates/tests/__init__.py.tmpl +0 -0
  246. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/_templates/tests/test_smoke.py.tmpl +0 -0
  247. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/config.py +0 -0
  248. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/db.py +0 -0
  249. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/docker_compose.py +0 -0
  250. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/generate.py +0 -0
  251. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/lint.py +0 -0
  252. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/main.py +0 -0
  253. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/new.py +0 -0
  254. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/secrets.py +0 -0
  255. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/src_layers.py +0 -0
  256. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/cli/user.py +0 -0
  257. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/controllers/__init__.py +0 -0
  258. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/controllers/base.py +0 -0
  259. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/core/__init__.py +0 -0
  260. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/core/context.py +0 -0
  261. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/core/enums.py +0 -0
  262. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/core/logging.py +0 -0
  263. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/core/typed.py +0 -0
  264. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/db/__init__.py +0 -0
  265. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/db/_alembic_templates/__init__.py +0 -0
  266. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/db/_alembic_templates/env.py.template +0 -0
  267. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/db/alembic_hooks.py +0 -0
  268. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/db/audit.py +0 -0
  269. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/db/backup.py +0 -0
  270. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/db/connection.py +0 -0
  271. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/db/migrations.py +0 -0
  272. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/db/mixins.py +0 -0
  273. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/db/model.py +0 -0
  274. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/db/outbox.py +0 -0
  275. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/db/repository.py +0 -0
  276. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/db/slow_query.py +0 -0
  277. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/db/tenant.py +0 -0
  278. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/db/user_model.py +0 -0
  279. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/db/user_recovery_code_model.py +0 -0
  280. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/db/user_refresh_token_model.py +0 -0
  281. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/db/user_token_model.py +0 -0
  282. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/db/webpush_subscription_model.py +0 -0
  283. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/exceptions/__init__.py +0 -0
  284. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/exceptions/base.py +0 -0
  285. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/exceptions/conflict.py +0 -0
  286. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/exceptions/forbidden.py +0 -0
  287. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/exceptions/i18n.py +0 -0
  288. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/exceptions/jwt.py +0 -0
  289. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/exceptions/not_found.py +0 -0
  290. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/exceptions/too_many_requests.py +0 -0
  291. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/exceptions/unauthorized.py +0 -0
  292. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/exceptions/upload.py +0 -0
  293. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/exceptions/validation.py +0 -0
  294. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/flags/__init__.py +0 -0
  295. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/flags/backends.py +0 -0
  296. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/flags/dependencies.py +0 -0
  297. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/flags/service.py +0 -0
  298. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/py.typed +0 -0
  299. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/queue/manager.py +0 -0
  300. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/schemas/__init__.py +0 -0
  301. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/schemas/base.py +0 -0
  302. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/schemas/link_headers.py +0 -0
  303. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/schemas/logs.py +0 -0
  304. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/schemas/pagination.py +0 -0
  305. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/schemas/response.py +0 -0
  306. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/services/__init__.py +0 -0
  307. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/services/base.py +0 -0
  308. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/services/file_mixin.py +0 -0
  309. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/sessions/__init__.py +0 -0
  310. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/sessions/dependencies.py +0 -0
  311. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/sessions/middleware.py +0 -0
  312. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/sessions/router.py +0 -0
  313. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/sessions/schemas.py +0 -0
  314. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/sessions/service.py +0 -0
  315. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/sessions/store.py +0 -0
  316. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/settings/__init__.py +0 -0
  317. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/settings/base.py +0 -0
  318. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/settings/mixins.py +0 -0
  319. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/sse/__init__.py +0 -0
  320. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/sse/broker.py +0 -0
  321. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/sse/event_stream.py +0 -0
  322. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/ssr/__init__.py +0 -0
  323. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/ssr/_static/htmx.min.js +0 -0
  324. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/ssr/assets.py +0 -0
  325. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/ssr/page.py +0 -0
  326. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/ssr/response.py +0 -0
  327. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/storage/__init__.py +0 -0
  328. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/storage/minio_client.py +0 -0
  329. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/tasks/manager.py +0 -0
  330. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/tasks/scheduler.py +0 -0
  331. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/testing/__init__.py +0 -0
  332. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/testing/database.py +0 -0
  333. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/utils/__init__.py +0 -0
  334. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/utils/client_ip.py +0 -0
  335. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/utils/data/br_locations.json +0 -0
  336. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/utils/datetime.py +0 -0
  337. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/utils/dict.py +0 -0
  338. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/utils/download.py +0 -0
  339. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/utils/email.py +0 -0
  340. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/utils/fields.py +0 -0
  341. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/utils/file_store.py +0 -0
  342. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/utils/http_client.py +0 -0
  343. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/utils/jwt.py +0 -0
  344. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/utils/locations.py +0 -0
  345. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/utils/log.py +0 -0
  346. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/utils/metrics.py +0 -0
  347. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/utils/opaque_token.py +0 -0
  348. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/utils/password.py +0 -0
  349. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/utils/regex.py +0 -0
  350. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/utils/storage_backends.py +0 -0
  351. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/utils/throttle.py +0 -0
  352. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/utils/totp.py +0 -0
  353. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/utils/upload.py +0 -0
  354. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/vision/__init__.py +0 -0
  355. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/vision/mapping.py +0 -0
  356. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/vision/schemas.py +0 -0
  357. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/webpush/__init__.py +0 -0
  358. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/webpush/dispatcher.py +0 -0
  359. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/webpush/router.py +0 -0
  360. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/webpush/schemas.py +0 -0
  361. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/webpush/service.py +0 -0
  362. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/websockets/__init__.py +0 -0
  363. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/websockets/hub.py +0 -0
  364. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/websockets/router.py +0 -0
  365. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tempest_fastapi_sdk/websockets/schemas.py +0 -0
  366. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/__init__.py +0 -0
  367. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/admin/__init__.py +0 -0
  368. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/admin/test_actions.py +0 -0
  369. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/admin/test_auth.py +0 -0
  370. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/admin/test_discovery.py +0 -0
  371. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/admin/test_forms.py +0 -0
  372. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/admin/test_logs_nav.py +0 -0
  373. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/admin/test_mfa.py +0 -0
  374. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/admin/test_rich_filters.py +0 -0
  375. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/admin/test_router.py +0 -0
  376. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/admin/test_site.py +0 -0
  377. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/admin/test_theme.py +0 -0
  378. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/admin/test_upload_field.py +0 -0
  379. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/admin/test_user_model.py +0 -0
  380. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/api/__init__.py +0 -0
  381. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/api/test_body_size.py +0 -0
  382. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/api/test_cookies.py +0 -0
  383. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/api/test_cors.py +0 -0
  384. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/api/test_csrf.py +0 -0
  385. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/api/test_dependencies_auth.py +0 -0
  386. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/api/test_graceful.py +0 -0
  387. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/api/test_handlers.py +0 -0
  388. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/api/test_health_router.py +0 -0
  389. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/api/test_idempotency.py +0 -0
  390. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/api/test_jwt_dependency.py +0 -0
  391. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/api/test_logs_router.py +0 -0
  392. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/api/test_oauth.py +0 -0
  393. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/api/test_prometheus.py +0 -0
  394. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/api/test_rate_limit.py +0 -0
  395. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/api/test_rate_limit_extras.py +0 -0
  396. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/api/test_request_id_middleware.py +0 -0
  397. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/api/test_role_dependency.py +0 -0
  398. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/api/test_server.py +0 -0
  399. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/api/test_static.py +0 -0
  400. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/api/test_tool_spec.py +0 -0
  401. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/api/test_tracing.py +0 -0
  402. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/api/test_webhooks.py +0 -0
  403. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/api/test_webhooks_rsa.py +0 -0
  404. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/auth/__init__.py +0 -0
  405. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/auth/test_cookie_delivery.py +0 -0
  406. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/auth/test_email_change.py +0 -0
  407. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/auth/test_guards.py +0 -0
  408. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/auth/test_locale.py +0 -0
  409. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/auth/test_mfa.py +0 -0
  410. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/auth/test_refresh.py +0 -0
  411. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/auth/test_refresh_db.py +0 -0
  412. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/auth/test_service.py +0 -0
  413. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/cache/__init__.py +0 -0
  414. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/cache/test_decorator.py +0 -0
  415. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/cache/test_invalidation.py +0 -0
  416. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/cache/test_redis_manager.py +0 -0
  417. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/cli/__init__.py +0 -0
  418. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/cli/test_config.py +0 -0
  419. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/cli/test_db.py +0 -0
  420. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/cli/test_db_seed.py +0 -0
  421. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/cli/test_docker_compose.py +0 -0
  422. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/cli/test_generate.py +0 -0
  423. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/cli/test_lint_strictness.py +0 -0
  424. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/cli/test_main.py +0 -0
  425. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/cli/test_secrets.py +0 -0
  426. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/cli/test_user.py +0 -0
  427. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/conftest.py +0 -0
  428. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/controllers/__init__.py +0 -0
  429. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/controllers/test_base.py +0 -0
  430. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/core/__init__.py +0 -0
  431. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/core/test_context.py +0 -0
  432. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/core/test_enums.py +0 -0
  433. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/core/test_logging.py +0 -0
  434. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/core/test_typed.py +0 -0
  435. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/db/__init__.py +0 -0
  436. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/db/test_alembic_hooks.py +0 -0
  437. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/db/test_audit.py +0 -0
  438. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/db/test_backup.py +0 -0
  439. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/db/test_bulk_ops.py +0 -0
  440. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/db/test_connection.py +0 -0
  441. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/db/test_migrations.py +0 -0
  442. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/db/test_mixins.py +0 -0
  443. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/db/test_model.py +0 -0
  444. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/db/test_outbox.py +0 -0
  445. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/db/test_repository.py +0 -0
  446. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/db/test_safe_upgrade.py +0 -0
  447. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/db/test_slow_query.py +0 -0
  448. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/db/test_tenant.py +0 -0
  449. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/exceptions/__init__.py +0 -0
  450. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/exceptions/test_exceptions.py +0 -0
  451. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/exceptions/test_i18n.py +0 -0
  452. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/flags/__init__.py +0 -0
  453. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/flags/test_flags.py +0 -0
  454. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/queue/__init__.py +0 -0
  455. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/queue/test_manager.py +0 -0
  456. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/schemas/__init__.py +0 -0
  457. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/schemas/test_base.py +0 -0
  458. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/schemas/test_cursor_pagination.py +0 -0
  459. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/schemas/test_link_headers.py +0 -0
  460. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/schemas/test_pagination.py +0 -0
  461. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/schemas/test_response.py +0 -0
  462. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/services/__init__.py +0 -0
  463. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/services/test_base.py +0 -0
  464. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/services/test_file_mixin.py +0 -0
  465. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/sessions/__init__.py +0 -0
  466. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/sessions/test_sessions.py +0 -0
  467. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/settings/__init__.py +0 -0
  468. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/settings/test_base.py +0 -0
  469. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/settings/test_mixins.py +0 -0
  470. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/sse/__init__.py +0 -0
  471. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/sse/test_broker.py +0 -0
  472. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/sse/test_event_stream.py +0 -0
  473. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/ssr/__init__.py +0 -0
  474. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/ssr/test_integration.py +0 -0
  475. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/ssr/test_page.py +0 -0
  476. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/ssr/test_response.py +0 -0
  477. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/storage/__init__.py +0 -0
  478. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/storage/test_minio_client.py +0 -0
  479. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/tasks/__init__.py +0 -0
  480. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/tasks/test_manager.py +0 -0
  481. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/tasks/test_scheduler.py +0 -0
  482. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/testing/__init__.py +0 -0
  483. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/testing/test_database.py +0 -0
  484. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/utils/__init__.py +0 -0
  485. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/utils/test_client_ip.py +0 -0
  486. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/utils/test_datetime.py +0 -0
  487. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/utils/test_dict.py +0 -0
  488. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/utils/test_download.py +0 -0
  489. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/utils/test_email.py +0 -0
  490. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/utils/test_fields.py +0 -0
  491. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/utils/test_file_store.py +0 -0
  492. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/utils/test_http_client.py +0 -0
  493. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/utils/test_jwt.py +0 -0
  494. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/utils/test_lazy_extras.py +0 -0
  495. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/utils/test_locations.py +0 -0
  496. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/utils/test_log.py +0 -0
  497. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/utils/test_metrics.py +0 -0
  498. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/utils/test_opaque_token.py +0 -0
  499. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/utils/test_password.py +0 -0
  500. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/utils/test_regex.py +0 -0
  501. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/utils/test_storage_backends.py +0 -0
  502. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/utils/test_throttle.py +0 -0
  503. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/utils/test_upload.py +0 -0
  504. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/vision/__init__.py +0 -0
  505. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/vision/test_vision.py +0 -0
  506. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/webpush/__init__.py +0 -0
  507. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/webpush/test_dispatcher.py +0 -0
  508. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/webpush/test_router.py +0 -0
  509. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/webpush/test_schemas.py +0 -0
  510. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/webpush/test_service.py +0 -0
  511. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/websockets/__init__.py +0 -0
  512. {tempest_fastapi_sdk-0.92.0 → tempest_fastapi_sdk-0.93.0}/tests/websockets/test_hub_and_router.py +0 -0
@@ -5,6 +5,45 @@ All notable changes to **tempest-fastapi-sdk** are listed below.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.93.0] — 2026-07-05
9
+
10
+ ### Added
11
+
12
+ - **Typed facades over FastStream and TaskIQ** — application code no
13
+ longer imports `faststream` or `taskiq`.
14
+ - **`MessageBroker`** (`tempest_fastapi_sdk.queue`) — transport-agnostic
15
+ pub/sub over FastStream behind a single **channel** concept. Pick the
16
+ transport with a constructor (`MessageBroker.rabbitmq(url)` / `.redis`
17
+ / `.kafka` / `.nats`), declare consumers with `@mq.on("channel")`
18
+ (the handler's Pydantic type hint validates the message), and publish
19
+ channel-first with `await mq.publish("channel", model)`. `.broker`
20
+ stays as the escape hatch.
21
+ - **`TaskQueue`** (`tempest_fastapi_sdk.tasks`) — TaskIQ broker +
22
+ scheduler folded into one object. `TaskQueue.rabbitmq(url)` / `.redis`
23
+ / `.memory()`; `@tq.task` returns a typed **`Task`** with
24
+ `await task.enqueue(...)` (to a worker) and `await task.run(...)`
25
+ (inline, no broker); periodic tasks via `@tq.cron(...)` /
26
+ `@tq.interval(...)`; `start_scheduler()` / `stop_scheduler()` for
27
+ dev, with `tq.broker` / `tq.scheduler` exposed for the standalone
28
+ `taskiq worker` / `taskiq scheduler` CLIs.
29
+ - Both facades keep the SDK-standard lifecycle (`connect` / `disconnect`
30
+ / `lifespan` / `health_check` / `is_connected`).
31
+ - The `OutboxRelay` `publish` callable plugs straight into
32
+ `MessageBroker.publish` (channel-first).
33
+
34
+ ### Changed
35
+
36
+ - The **Queue & Tasks** recipe was rewritten in the tiangolo didactic
37
+ style around the new facades, and its stale claim that the SDK ships no
38
+ outbox primitive was corrected (it ships `BaseOutboxModel` /
39
+ `OutboxRelay` / `save_with_outbox`).
40
+
41
+ ### Deprecated
42
+
43
+ - `AsyncBrokerManager`, `AsyncTaskBrokerManager` and `AsyncTaskScheduler`
44
+ remain fully functional but are superseded by `MessageBroker` /
45
+ `TaskQueue`; new code should prefer the facades.
46
+
8
47
  ## [0.92.0] — 2026-07-05
9
48
 
10
49
  ### Added
@@ -157,7 +157,15 @@ The SDK currently covers (Sep 2025+, post-v0.31.x):
157
157
  `/subscribe` + `/unsubscribe`, aligned with `tempest-react-sdk`);
158
158
  webhook signatures.
159
159
  - **Cache** — Redis manager + `@cached`.
160
- - **Queue / tasks** — FastStream + TaskIQ wrappers.
160
+ - **Queue / tasks** — typed facades hiding FastStream + TaskIQ:
161
+ `MessageBroker` (`.rabbitmq`/`.redis`/`.kafka`/`.nats`, `@mq.on(channel)`
162
+ consumer, channel-first `publish(channel, message)`, `.broker` escape
163
+ hatch) and `TaskQueue` (`.rabbitmq`/`.redis`/`.memory`, `@tq.task` →
164
+ `Task.enqueue`/`.run`, folded `@tq.cron`/`@tq.interval` +
165
+ `start_scheduler`, `tq.broker`/`tq.scheduler` for the CLIs). Legacy
166
+ `AsyncBrokerManager`/`AsyncTaskBrokerManager`/`AsyncTaskScheduler` kept
167
+ as working aliases. Outbox (`BaseOutboxModel`/`OutboxRelay`/
168
+ `save_with_outbox`) plugs its `publish` into `MessageBroker.publish`.
161
169
  - **BR validators** — CPF/CNPJ/CEP/phone, with `*Field` Pydantic types
162
170
  (`CPFField`/`CNPJField`/`CPFOrCNPJField`/`PhoneBRField`/`CEPField`;
163
171
  pre-0.76 unsuffixed names kept as deprecated aliases).
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tempest-fastapi-sdk
3
- Version: 0.92.0
3
+ Version: 0.93.0
4
4
  Summary: Shared FastAPI building blocks: base schemas, ORM model, async repository, exceptions, pagination and settings — the conventions used across Tempest projects.
5
5
  Project-URL: Homepage, https://github.com/mauriciobenjamin700/tempest-fastapi-sdk
6
6
  Project-URL: Repository, https://github.com/mauriciobenjamin700/tempest-fastapi-sdk
@@ -160,8 +160,8 @@ The goal is to start every new backend with the same opinionated foundation alre
160
160
  - [Redis cache (`AsyncRedisManager`)](#redis-cache-recipe)
161
161
  - [Server-Sent Events (SSE)](#server-sent-events-recipe)
162
162
  - [Web Push notifications](#web-push-notifications-recipe)
163
- - [Message queues — FastStream (`AsyncBrokerManager`)](#message-queues--faststream-recipe)
164
- - [Background tasks — TaskIQ (`AsyncTaskBrokerManager`)](#background-tasks--taskiq-recipe)
163
+ - [Message queues — FastStream (`MessageBroker`)](#message-queues--faststream-recipe)
164
+ - [Background tasks — TaskIQ (`TaskQueue`)](#background-tasks--taskiq-recipe)
165
165
  - [Periodic tasks scheduler (`AsyncTaskScheduler`)](#periodic-tasks-scheduler-recipe)
166
166
  - [System metrics (`MetricsUtils`)](#system-metrics-recipe)
167
167
  - [Programmatic server entry point (`run_server`)](#programmatic-server-entry-point-recipe)
@@ -218,8 +218,8 @@ Feature-rich helpers pull in third-party dependencies that you only need when yo
218
218
  | `[cache]` | `redis` | `AsyncRedisManager` |
219
219
  | `[webpush]` | `pywebpush`, `cryptography` | `WebPushDispatcher`, `WebPushSubscriptionService`, `BaseWebPushSubscriptionModel`, `make_web_push_router` |
220
220
  | `[metrics]` | `psutil`, `nvidia-ml-py` | `MetricsUtils` |
221
- | `[queue]` | `faststream[rabbit]` | `AsyncBrokerManager` (FastStream) |
222
- | `[tasks]` | `taskiq`, `taskiq-aio-pika` | `AsyncTaskBrokerManager` (TaskIQ) |
221
+ | `[queue]` | `faststream[rabbit]` | `MessageBroker` (typed FastStream facade) |
222
+ | `[tasks]` | `taskiq`, `taskiq-aio-pika` | `TaskQueue` (typed TaskIQ facade) |
223
223
  | `[admin]` | `jinja2`, `itsdangerous` | `AdminSite`, `AdminModel`, `make_admin_router` |
224
224
  | `[minio]` | `minio` | `AsyncMinIOClient`, `ObjectStat`, `MinIOSettings` |
225
225
  | `[http]` | `httpx` | `HTTPClient`, `RetryPolicy`, `CircuitOpenError`, OAuth2 / OIDC providers |
@@ -262,17 +262,17 @@ Since `0.7.1` every optional dependency is imported lazily at first instantiatio
262
262
  | `tempest_fastapi_sdk.cache` *(extra: `[cache]`)* | `AsyncRedisManager`, `cached` (with `namespace` / `tags`), `CacheInvalidator`, `namespace_registry_key`, `tag_registry_key` |
263
263
  | `tempest_fastapi_sdk.flags` | `FeatureFlags`, `FeatureFlagBackend`, `MemoryFeatureFlagBackend`, `EnvFeatureFlagBackend`, `RedisFeatureFlagBackend`, `CompositeFeatureFlagBackend`, `make_flag_dependency`, `coerce_flag` |
264
264
  | `tempest_fastapi_sdk.webpush` *(extra: `[webpush]`)* | `WebPushDispatcher`, `WebPushSubscriptionService`, `make_web_push_router`, `WebPushError`, `WebPushGoneError`, `WebPushSubscriptionSchema`, `WebPushKeysSchema`, `WebPushPayloadSchema` |
265
- | `tempest_fastapi_sdk.queue` *(extra: `[queue]`)* | `AsyncBrokerManager` (FastStream lifecycle wrapper) |
265
+ | `tempest_fastapi_sdk.queue` *(extra: `[queue]`)* | `MessageBroker` (typed, transport-agnostic FastStream facade — `.rabbitmq`/`.redis`/`.kafka`/`.nats`, `@mq.on(channel)`, channel-first `publish`); `AsyncBrokerManager` (legacy lifecycle wrapper) |
266
266
  | `tempest_fastapi_sdk.storage` *(extra: `[minio]`)* | `AsyncMinIOClient`, `ObjectStat` — async MinIO/S3 facade |
267
267
  | `tempest_fastapi_sdk.utils.http_client` *(extra: `[http]`)* | `HTTPClient`, `RetryPolicy`, `CircuitOpenError`, `REQUEST_ID_HEADER` — typed httpx wrapper |
268
268
  | `tempest_fastapi_sdk.utils.storage_backends` *(extra: `[upload]`)* | `UploadStorage` protocol, `LocalUploadStorage`, `MinIOUploadStorage`, `UploadResult`, `ContentValidator` |
269
- | `tempest_fastapi_sdk.tasks` *(extra: `[tasks]`)* | `AsyncTaskBrokerManager` (TaskIQ lifecycle wrapper), `AsyncTaskScheduler` (periodic / cron tasks) |
269
+ | `tempest_fastapi_sdk.tasks` *(extra: `[tasks]`)* | `TaskQueue` (typed TaskIQ facade — `.rabbitmq`/`.redis`/`.memory`, `@tq.task` → `Task.enqueue`/`.run`, `@tq.cron`/`@tq.interval`, `start_scheduler`), `Task`; `AsyncTaskBrokerManager` / `AsyncTaskScheduler` (legacy wrappers) |
270
270
  | `tempest_fastapi_sdk.vision` *(extra: `[vision]`)* | `Detector`, `Classifier`, `Segmenter` (ONNX, lazy), `DetectionSchema`/`ClassificationSchema`/`SegmentationSchema`/`BoundingBoxSchema`/`ClassProbabilitySchema`, `to_detection_schemas`/`to_classification_schema`/`to_segmentation_schemas` |
271
271
  | `tempest_fastapi_sdk.ssr` *(extra: `[ssr]`)* | `Page` (typed component base), `html_response` (widget tree → `HTMLResponse`, full document or HTMX fragment), `make_htmx_router` (serves bundled HTMX locally, no CDN) |
272
272
  | `tempest_fastapi_sdk.utils` | `to_utc`, `utcnow`, `modify_dict`, `LogUtils`, `AttemptThrottle`/`ThrottleBackend`/`ThrottleStatus`, `generate_opaque_token`/`hash_opaque_token`/`verify_opaque_token`, `get_client_ip`/`get_client_ip_from_scope`, `PasswordUtils` *(extra: `[auth]`)*, `JWTUtils` *(extra: `[auth]`)*, `TOTPHelper` *(extra: `[mfa]`)*, `EmailUtils` *(extra: `[email]`)*, `UploadUtils`/`sniff_mime` *(extra: `[upload]`)*, `DownloadUtils`/`build_content_disposition` *(no extra)*, `FileStoreUtils` — unified upload+download+presign facade *(extra: `[upload]` local / `[minio]` MinIO)*, `MetricsUtils`/`CPUMetrics`/`MemoryMetrics`/`DiskMetrics`/`GPUMetrics`/`SystemMetrics` *(extra: `[metrics]`)*, validated field types (`PositiveIntField`, `NonNegativeIntField`, `CentsField`, `PortField`, `PositiveFloatField`, `NonNegativeFloatField`, `PercentField`, `RatioField`, `LatitudeField`, `LongitudeField`, `PriceField`, `NonEmptyStrField`, `SlugField`, `HexColorField`), BR regex helpers (`CPFField`, `CNPJField`, `CPFOrCNPJField`, `PhoneBRField`, `CEPField` — old names without the suffix kept as deprecated aliases — `is_valid_*`, `normalize_*`, `only_digits`, `*_PATTERN`), BR states/cities (`UF`, `Region`, `StateBR`, `CityBR`, `ChoiceBR`, `UFField`, `CityNameField`, `list_states`, `get_state`, `cities_by_uf`, `states_by_region`, `uf_choices`/`region_choices`/`city_choices`, `is_valid_uf`/`normalize_uf`, `is_valid_city`/`normalize_city`) |
273
273
  | `tempest_fastapi_sdk.cli` | `tempest` console script — `new <name>` (scaffold layered service), `lint` / `format` / `fmt-check` / `type` / `test` / `check` (run preferred quality gates), `version` / `--version` |
274
274
 
275
- Core primitives are re-exported from `tempest_fastapi_sdk` at the top level — `from tempest_fastapi_sdk import BaseModel, BaseRepository, AppException` always works. The extras-gated managers in `tempest_fastapi_sdk.cache`, `tempest_fastapi_sdk.queue`, `tempest_fastapi_sdk.tasks`, `tempest_fastapi_sdk.vision` and `tempest_fastapi_sdk.ssr` must be imported from their own submodule (`from tempest_fastapi_sdk.queue import AsyncBrokerManager`).
275
+ Core primitives are re-exported from `tempest_fastapi_sdk` at the top level — `from tempest_fastapi_sdk import BaseModel, BaseRepository, AppException` always works. The extras-gated managers in `tempest_fastapi_sdk.cache`, `tempest_fastapi_sdk.queue`, `tempest_fastapi_sdk.tasks`, `tempest_fastapi_sdk.vision` and `tempest_fastapi_sdk.ssr` must be imported from their own submodule (`from tempest_fastapi_sdk.queue import MessageBroker`).
276
276
 
277
277
  ---
278
278
 
@@ -2524,92 +2524,76 @@ async def broadcast(subs: list[WebPushSubscriptionSchema], payload: WebPushPaylo
2524
2524
 
2525
2525
  ### Message queues — FastStream recipe
2526
2526
 
2527
- `AsyncBrokerManager` wraps any FastStream broker (RabbitMQ, Kafka, NATS, Redis Streams) with a uniform connect/disconnect/health-check surface. The broker instance is injected so the SDK doesn't pin a single transport.
2527
+ `MessageBroker` is a typed, transport-agnostic facade over FastStream you never import `faststream` in application code. Pick the transport with a constructor and address everything by a single **channel** string.
2528
2528
 
2529
- Install with `[queue]` (pulls `faststream[rabbit]`). Pick the matching FastStream extra for other transports.
2529
+ Install with `[queue]` (pulls `faststream[rabbit]`).
2530
2530
 
2531
2531
  ```python
2532
2532
  # src/queue/__init__.py
2533
- from faststream.rabbit import RabbitBroker
2534
2533
  from pydantic import BaseModel
2535
2534
 
2536
- from tempest_fastapi_sdk.queue import AsyncBrokerManager
2535
+ from tempest_fastapi_sdk.queue import MessageBroker
2537
2536
 
2538
2537
  from src.core.settings import settings
2539
2538
 
2540
2539
 
2541
- broker = RabbitBroker(settings.RABBITMQ_URL)
2542
- queue = AsyncBrokerManager(broker)
2540
+ mq = MessageBroker.rabbitmq(settings.RABBITMQ_URL) # or .redis / .kafka / .nats
2543
2541
 
2544
2542
 
2545
- class OrderMessage(BaseModel):
2543
+ class OrderPaid(BaseModel):
2546
2544
  order_id: str
2547
2545
  user_id: str
2548
2546
 
2549
2547
 
2550
- @broker.subscriber("orders.paid")
2551
- async def handle_order_paid(msg: OrderMessage) -> None:
2552
- await mark_order_paid(msg.order_id, msg.user_id)
2548
+ @mq.on("orders.paid") # consumer; type hint validates the message
2549
+ async def handle_order_paid(event: OrderPaid) -> None:
2550
+ await mark_order_paid(event.order_id, event.user_id)
2553
2551
 
2554
2552
 
2555
2553
  # src/api/app.py lifespan
2556
- await queue.connect()
2554
+ await mq.connect()
2557
2555
  ...
2558
- await queue.disconnect()
2556
+ await mq.disconnect()
2559
2557
 
2560
2558
 
2561
- # Publish from anywhere in the application
2562
- await queue.publish(OrderMessage(order_id="abc", user_id="x"), queue="orders.paid")
2559
+ # Publish from anywhere channel first, message second
2560
+ await mq.publish("orders.paid", OrderPaid(order_id="abc", user_id="x"))
2563
2561
  ```
2564
2562
 
2565
- The manager exposes:
2566
-
2567
- - `connect()` / `disconnect()` — idempotent; safe to call from FastAPI lifespan.
2568
- - `publish(message, *args, **kwargs)` — passthrough to `broker.publish` with a `RuntimeError` guard when the broker isn't started.
2569
- - `lifespan()` — async context manager handling start/stop, handy for short scripts.
2570
- - `broker_dependency` — FastAPI `Depends` that yields the live broker.
2571
- - `health_check()` / `is_connected` — true while the broker is started.
2572
-
2573
- Wire it on the health router with `make_health_router(checks={"queue": queue.health_check})`.
2563
+ `@mq.on(channel)` declares a consumer (the handler's Pydantic type hint validates each message); `publish(channel, message)` sends it. Lifecycle is `connect()` / `disconnect()` / `lifespan()` / `health_check()` / `is_connected`; the raw broker stays at `mq.broker`. Wire it on the health router with `make_health_router(checks={"queue": mq.health_check})`. See the [Queues and Tasks recipe](https://mauriciobenjamin700.github.io/tempest-fastapi-sdk/recipes/queue-tasks/) for the full guide.
2574
2564
 
2575
2565
  ### Background tasks — TaskIQ recipe
2576
2566
 
2577
- `AsyncTaskBrokerManager` wraps any TaskIQ broker (AioPika for RabbitMQ, Redis, in-memory for tests). Install with `[tasks]` (pulls `taskiq` + `taskiq-aio-pika`).
2567
+ `TaskQueue` is a typed facade over TaskIQ (broker + scheduler in one object) — no `taskiq` import in application code. Install with `[tasks]` (pulls `taskiq` + `taskiq-aio-pika`).
2578
2568
 
2579
2569
  ```python
2580
2570
  # src/tasks/__init__.py
2581
- from taskiq_aio_pika import AioPikaBroker
2582
-
2583
- from tempest_fastapi_sdk.tasks import AsyncTaskBrokerManager
2571
+ from tempest_fastapi_sdk.tasks import TaskQueue
2584
2572
 
2585
2573
  from src.core.settings import settings
2586
2574
 
2587
2575
 
2588
- tasks = AsyncTaskBrokerManager(AioPikaBroker(settings.TASKIQ_BROKER_URL))
2576
+ tq = TaskQueue.rabbitmq(settings.TASKIQ_BROKER_URL) # or .redis / .memory (tests)
2589
2577
 
2590
2578
 
2591
- @tasks.task
2579
+ @tq.task
2592
2580
  async def send_welcome_email(to: str, name: str) -> None:
2593
- await email_utils.send(
2594
- to=to,
2595
- subject="Bem-vindo!",
2596
- body=f"Olá, {name} — sua conta foi criada.",
2597
- )
2581
+ await email_utils.send(to=to, subject="Welcome!", body=f"Hi, {name}.")
2598
2582
 
2599
2583
 
2600
2584
  # src/api/app.py lifespan
2601
- await tasks.connect()
2585
+ await tq.connect()
2602
2586
  ...
2603
- await tasks.disconnect()
2587
+ await tq.disconnect()
2604
2588
 
2605
2589
 
2606
- # Enqueue from a request handler
2607
- await send_welcome_email.kiq(to=user.email, name=user.name)
2590
+ # From a request handler: hand it to a worker and return immediately
2591
+ await send_welcome_email.enqueue(to=user.email, name=user.name)
2592
+ # In tests / reuse: run the body inline and get the real value back
2593
+ await send_welcome_email.run(to="a@b.com", name="Ana")
2608
2594
  ```
2609
2595
 
2610
- `register_task(callable, task_name=..., **kwargs)` registers a function without decorator syntax useful when wiring third-party callables that you can't decorate at definition time. For tests, swap the broker for `taskiq.InMemoryBroker()` so kicked tasks execute synchronously.
2611
-
2612
- The same lifespan guard rails as the queue manager apply: `connect()`/`disconnect()`/`lifespan()`/`broker_dependency`/`health_check()`/`is_connected`.
2596
+ `@tq.task` returns a typed `Task` with `enqueue()` (to a worker) and `run()` (inline, no broker). Periodic tasks live on the same object via `@tq.cron(...)` / `@tq.interval(...)`; `tq.broker` / `tq.scheduler` feed the standalone `taskiq worker` / `taskiq scheduler` CLIs. `TaskQueue.memory()` runs tasks synchronously in-process for tests.
2613
2597
 
2614
2598
  ### Periodic tasks scheduler recipe
2615
2599
 
@@ -51,8 +51,8 @@ The goal is to start every new backend with the same opinionated foundation alre
51
51
  - [Redis cache (`AsyncRedisManager`)](#redis-cache-recipe)
52
52
  - [Server-Sent Events (SSE)](#server-sent-events-recipe)
53
53
  - [Web Push notifications](#web-push-notifications-recipe)
54
- - [Message queues — FastStream (`AsyncBrokerManager`)](#message-queues--faststream-recipe)
55
- - [Background tasks — TaskIQ (`AsyncTaskBrokerManager`)](#background-tasks--taskiq-recipe)
54
+ - [Message queues — FastStream (`MessageBroker`)](#message-queues--faststream-recipe)
55
+ - [Background tasks — TaskIQ (`TaskQueue`)](#background-tasks--taskiq-recipe)
56
56
  - [Periodic tasks scheduler (`AsyncTaskScheduler`)](#periodic-tasks-scheduler-recipe)
57
57
  - [System metrics (`MetricsUtils`)](#system-metrics-recipe)
58
58
  - [Programmatic server entry point (`run_server`)](#programmatic-server-entry-point-recipe)
@@ -109,8 +109,8 @@ Feature-rich helpers pull in third-party dependencies that you only need when yo
109
109
  | `[cache]` | `redis` | `AsyncRedisManager` |
110
110
  | `[webpush]` | `pywebpush`, `cryptography` | `WebPushDispatcher`, `WebPushSubscriptionService`, `BaseWebPushSubscriptionModel`, `make_web_push_router` |
111
111
  | `[metrics]` | `psutil`, `nvidia-ml-py` | `MetricsUtils` |
112
- | `[queue]` | `faststream[rabbit]` | `AsyncBrokerManager` (FastStream) |
113
- | `[tasks]` | `taskiq`, `taskiq-aio-pika` | `AsyncTaskBrokerManager` (TaskIQ) |
112
+ | `[queue]` | `faststream[rabbit]` | `MessageBroker` (typed FastStream facade) |
113
+ | `[tasks]` | `taskiq`, `taskiq-aio-pika` | `TaskQueue` (typed TaskIQ facade) |
114
114
  | `[admin]` | `jinja2`, `itsdangerous` | `AdminSite`, `AdminModel`, `make_admin_router` |
115
115
  | `[minio]` | `minio` | `AsyncMinIOClient`, `ObjectStat`, `MinIOSettings` |
116
116
  | `[http]` | `httpx` | `HTTPClient`, `RetryPolicy`, `CircuitOpenError`, OAuth2 / OIDC providers |
@@ -153,17 +153,17 @@ Since `0.7.1` every optional dependency is imported lazily at first instantiatio
153
153
  | `tempest_fastapi_sdk.cache` *(extra: `[cache]`)* | `AsyncRedisManager`, `cached` (with `namespace` / `tags`), `CacheInvalidator`, `namespace_registry_key`, `tag_registry_key` |
154
154
  | `tempest_fastapi_sdk.flags` | `FeatureFlags`, `FeatureFlagBackend`, `MemoryFeatureFlagBackend`, `EnvFeatureFlagBackend`, `RedisFeatureFlagBackend`, `CompositeFeatureFlagBackend`, `make_flag_dependency`, `coerce_flag` |
155
155
  | `tempest_fastapi_sdk.webpush` *(extra: `[webpush]`)* | `WebPushDispatcher`, `WebPushSubscriptionService`, `make_web_push_router`, `WebPushError`, `WebPushGoneError`, `WebPushSubscriptionSchema`, `WebPushKeysSchema`, `WebPushPayloadSchema` |
156
- | `tempest_fastapi_sdk.queue` *(extra: `[queue]`)* | `AsyncBrokerManager` (FastStream lifecycle wrapper) |
156
+ | `tempest_fastapi_sdk.queue` *(extra: `[queue]`)* | `MessageBroker` (typed, transport-agnostic FastStream facade — `.rabbitmq`/`.redis`/`.kafka`/`.nats`, `@mq.on(channel)`, channel-first `publish`); `AsyncBrokerManager` (legacy lifecycle wrapper) |
157
157
  | `tempest_fastapi_sdk.storage` *(extra: `[minio]`)* | `AsyncMinIOClient`, `ObjectStat` — async MinIO/S3 facade |
158
158
  | `tempest_fastapi_sdk.utils.http_client` *(extra: `[http]`)* | `HTTPClient`, `RetryPolicy`, `CircuitOpenError`, `REQUEST_ID_HEADER` — typed httpx wrapper |
159
159
  | `tempest_fastapi_sdk.utils.storage_backends` *(extra: `[upload]`)* | `UploadStorage` protocol, `LocalUploadStorage`, `MinIOUploadStorage`, `UploadResult`, `ContentValidator` |
160
- | `tempest_fastapi_sdk.tasks` *(extra: `[tasks]`)* | `AsyncTaskBrokerManager` (TaskIQ lifecycle wrapper), `AsyncTaskScheduler` (periodic / cron tasks) |
160
+ | `tempest_fastapi_sdk.tasks` *(extra: `[tasks]`)* | `TaskQueue` (typed TaskIQ facade — `.rabbitmq`/`.redis`/`.memory`, `@tq.task` → `Task.enqueue`/`.run`, `@tq.cron`/`@tq.interval`, `start_scheduler`), `Task`; `AsyncTaskBrokerManager` / `AsyncTaskScheduler` (legacy wrappers) |
161
161
  | `tempest_fastapi_sdk.vision` *(extra: `[vision]`)* | `Detector`, `Classifier`, `Segmenter` (ONNX, lazy), `DetectionSchema`/`ClassificationSchema`/`SegmentationSchema`/`BoundingBoxSchema`/`ClassProbabilitySchema`, `to_detection_schemas`/`to_classification_schema`/`to_segmentation_schemas` |
162
162
  | `tempest_fastapi_sdk.ssr` *(extra: `[ssr]`)* | `Page` (typed component base), `html_response` (widget tree → `HTMLResponse`, full document or HTMX fragment), `make_htmx_router` (serves bundled HTMX locally, no CDN) |
163
163
  | `tempest_fastapi_sdk.utils` | `to_utc`, `utcnow`, `modify_dict`, `LogUtils`, `AttemptThrottle`/`ThrottleBackend`/`ThrottleStatus`, `generate_opaque_token`/`hash_opaque_token`/`verify_opaque_token`, `get_client_ip`/`get_client_ip_from_scope`, `PasswordUtils` *(extra: `[auth]`)*, `JWTUtils` *(extra: `[auth]`)*, `TOTPHelper` *(extra: `[mfa]`)*, `EmailUtils` *(extra: `[email]`)*, `UploadUtils`/`sniff_mime` *(extra: `[upload]`)*, `DownloadUtils`/`build_content_disposition` *(no extra)*, `FileStoreUtils` — unified upload+download+presign facade *(extra: `[upload]` local / `[minio]` MinIO)*, `MetricsUtils`/`CPUMetrics`/`MemoryMetrics`/`DiskMetrics`/`GPUMetrics`/`SystemMetrics` *(extra: `[metrics]`)*, validated field types (`PositiveIntField`, `NonNegativeIntField`, `CentsField`, `PortField`, `PositiveFloatField`, `NonNegativeFloatField`, `PercentField`, `RatioField`, `LatitudeField`, `LongitudeField`, `PriceField`, `NonEmptyStrField`, `SlugField`, `HexColorField`), BR regex helpers (`CPFField`, `CNPJField`, `CPFOrCNPJField`, `PhoneBRField`, `CEPField` — old names without the suffix kept as deprecated aliases — `is_valid_*`, `normalize_*`, `only_digits`, `*_PATTERN`), BR states/cities (`UF`, `Region`, `StateBR`, `CityBR`, `ChoiceBR`, `UFField`, `CityNameField`, `list_states`, `get_state`, `cities_by_uf`, `states_by_region`, `uf_choices`/`region_choices`/`city_choices`, `is_valid_uf`/`normalize_uf`, `is_valid_city`/`normalize_city`) |
164
164
  | `tempest_fastapi_sdk.cli` | `tempest` console script — `new <name>` (scaffold layered service), `lint` / `format` / `fmt-check` / `type` / `test` / `check` (run preferred quality gates), `version` / `--version` |
165
165
 
166
- Core primitives are re-exported from `tempest_fastapi_sdk` at the top level — `from tempest_fastapi_sdk import BaseModel, BaseRepository, AppException` always works. The extras-gated managers in `tempest_fastapi_sdk.cache`, `tempest_fastapi_sdk.queue`, `tempest_fastapi_sdk.tasks`, `tempest_fastapi_sdk.vision` and `tempest_fastapi_sdk.ssr` must be imported from their own submodule (`from tempest_fastapi_sdk.queue import AsyncBrokerManager`).
166
+ Core primitives are re-exported from `tempest_fastapi_sdk` at the top level — `from tempest_fastapi_sdk import BaseModel, BaseRepository, AppException` always works. The extras-gated managers in `tempest_fastapi_sdk.cache`, `tempest_fastapi_sdk.queue`, `tempest_fastapi_sdk.tasks`, `tempest_fastapi_sdk.vision` and `tempest_fastapi_sdk.ssr` must be imported from their own submodule (`from tempest_fastapi_sdk.queue import MessageBroker`).
167
167
 
168
168
  ---
169
169
 
@@ -2415,92 +2415,76 @@ async def broadcast(subs: list[WebPushSubscriptionSchema], payload: WebPushPaylo
2415
2415
 
2416
2416
  ### Message queues — FastStream recipe
2417
2417
 
2418
- `AsyncBrokerManager` wraps any FastStream broker (RabbitMQ, Kafka, NATS, Redis Streams) with a uniform connect/disconnect/health-check surface. The broker instance is injected so the SDK doesn't pin a single transport.
2418
+ `MessageBroker` is a typed, transport-agnostic facade over FastStream you never import `faststream` in application code. Pick the transport with a constructor and address everything by a single **channel** string.
2419
2419
 
2420
- Install with `[queue]` (pulls `faststream[rabbit]`). Pick the matching FastStream extra for other transports.
2420
+ Install with `[queue]` (pulls `faststream[rabbit]`).
2421
2421
 
2422
2422
  ```python
2423
2423
  # src/queue/__init__.py
2424
- from faststream.rabbit import RabbitBroker
2425
2424
  from pydantic import BaseModel
2426
2425
 
2427
- from tempest_fastapi_sdk.queue import AsyncBrokerManager
2426
+ from tempest_fastapi_sdk.queue import MessageBroker
2428
2427
 
2429
2428
  from src.core.settings import settings
2430
2429
 
2431
2430
 
2432
- broker = RabbitBroker(settings.RABBITMQ_URL)
2433
- queue = AsyncBrokerManager(broker)
2431
+ mq = MessageBroker.rabbitmq(settings.RABBITMQ_URL) # or .redis / .kafka / .nats
2434
2432
 
2435
2433
 
2436
- class OrderMessage(BaseModel):
2434
+ class OrderPaid(BaseModel):
2437
2435
  order_id: str
2438
2436
  user_id: str
2439
2437
 
2440
2438
 
2441
- @broker.subscriber("orders.paid")
2442
- async def handle_order_paid(msg: OrderMessage) -> None:
2443
- await mark_order_paid(msg.order_id, msg.user_id)
2439
+ @mq.on("orders.paid") # consumer; type hint validates the message
2440
+ async def handle_order_paid(event: OrderPaid) -> None:
2441
+ await mark_order_paid(event.order_id, event.user_id)
2444
2442
 
2445
2443
 
2446
2444
  # src/api/app.py lifespan
2447
- await queue.connect()
2445
+ await mq.connect()
2448
2446
  ...
2449
- await queue.disconnect()
2447
+ await mq.disconnect()
2450
2448
 
2451
2449
 
2452
- # Publish from anywhere in the application
2453
- await queue.publish(OrderMessage(order_id="abc", user_id="x"), queue="orders.paid")
2450
+ # Publish from anywhere channel first, message second
2451
+ await mq.publish("orders.paid", OrderPaid(order_id="abc", user_id="x"))
2454
2452
  ```
2455
2453
 
2456
- The manager exposes:
2457
-
2458
- - `connect()` / `disconnect()` — idempotent; safe to call from FastAPI lifespan.
2459
- - `publish(message, *args, **kwargs)` — passthrough to `broker.publish` with a `RuntimeError` guard when the broker isn't started.
2460
- - `lifespan()` — async context manager handling start/stop, handy for short scripts.
2461
- - `broker_dependency` — FastAPI `Depends` that yields the live broker.
2462
- - `health_check()` / `is_connected` — true while the broker is started.
2463
-
2464
- Wire it on the health router with `make_health_router(checks={"queue": queue.health_check})`.
2454
+ `@mq.on(channel)` declares a consumer (the handler's Pydantic type hint validates each message); `publish(channel, message)` sends it. Lifecycle is `connect()` / `disconnect()` / `lifespan()` / `health_check()` / `is_connected`; the raw broker stays at `mq.broker`. Wire it on the health router with `make_health_router(checks={"queue": mq.health_check})`. See the [Queues and Tasks recipe](https://mauriciobenjamin700.github.io/tempest-fastapi-sdk/recipes/queue-tasks/) for the full guide.
2465
2455
 
2466
2456
  ### Background tasks — TaskIQ recipe
2467
2457
 
2468
- `AsyncTaskBrokerManager` wraps any TaskIQ broker (AioPika for RabbitMQ, Redis, in-memory for tests). Install with `[tasks]` (pulls `taskiq` + `taskiq-aio-pika`).
2458
+ `TaskQueue` is a typed facade over TaskIQ (broker + scheduler in one object) — no `taskiq` import in application code. Install with `[tasks]` (pulls `taskiq` + `taskiq-aio-pika`).
2469
2459
 
2470
2460
  ```python
2471
2461
  # src/tasks/__init__.py
2472
- from taskiq_aio_pika import AioPikaBroker
2473
-
2474
- from tempest_fastapi_sdk.tasks import AsyncTaskBrokerManager
2462
+ from tempest_fastapi_sdk.tasks import TaskQueue
2475
2463
 
2476
2464
  from src.core.settings import settings
2477
2465
 
2478
2466
 
2479
- tasks = AsyncTaskBrokerManager(AioPikaBroker(settings.TASKIQ_BROKER_URL))
2467
+ tq = TaskQueue.rabbitmq(settings.TASKIQ_BROKER_URL) # or .redis / .memory (tests)
2480
2468
 
2481
2469
 
2482
- @tasks.task
2470
+ @tq.task
2483
2471
  async def send_welcome_email(to: str, name: str) -> None:
2484
- await email_utils.send(
2485
- to=to,
2486
- subject="Bem-vindo!",
2487
- body=f"Olá, {name} — sua conta foi criada.",
2488
- )
2472
+ await email_utils.send(to=to, subject="Welcome!", body=f"Hi, {name}.")
2489
2473
 
2490
2474
 
2491
2475
  # src/api/app.py lifespan
2492
- await tasks.connect()
2476
+ await tq.connect()
2493
2477
  ...
2494
- await tasks.disconnect()
2478
+ await tq.disconnect()
2495
2479
 
2496
2480
 
2497
- # Enqueue from a request handler
2498
- await send_welcome_email.kiq(to=user.email, name=user.name)
2481
+ # From a request handler: hand it to a worker and return immediately
2482
+ await send_welcome_email.enqueue(to=user.email, name=user.name)
2483
+ # In tests / reuse: run the body inline and get the real value back
2484
+ await send_welcome_email.run(to="a@b.com", name="Ana")
2499
2485
  ```
2500
2486
 
2501
- `register_task(callable, task_name=..., **kwargs)` registers a function without decorator syntax useful when wiring third-party callables that you can't decorate at definition time. For tests, swap the broker for `taskiq.InMemoryBroker()` so kicked tasks execute synchronously.
2502
-
2503
- The same lifespan guard rails as the queue manager apply: `connect()`/`disconnect()`/`lifespan()`/`broker_dependency`/`health_check()`/`is_connected`.
2487
+ `@tq.task` returns a typed `Task` with `enqueue()` (to a worker) and `run()` (inline, no broker). Periodic tasks live on the same object via `@tq.cron(...)` / `@tq.interval(...)`; `tq.broker` / `tq.scheduler` feed the standalone `taskiq worker` / `taskiq scheduler` CLIs. `TaskQueue.memory()` runs tasks synchronously in-process for tests.
2504
2488
 
2505
2489
  ### Periodic tasks scheduler recipe
2506
2490
 
@@ -144,7 +144,7 @@ Pick what fits. None of these are required.
144
144
  `TASKIQ_*` fields out of the project's `Settings` and onto the
145
145
  matching SDK mixin ([Settings mixins composition](recipes/http.md#settings-mixins-composition)).
146
146
  - Adopt the
147
- [`Outbox dispatcher pattern`](recipes/queue-tasks.md#outbox-dispatcher-pattern) if
147
+ [`Outbox`](recipes/outbox.md) if
148
148
  you already write side-effects from the same transaction as your
149
149
  domain rows.
150
150
 
@@ -144,7 +144,7 @@ Escolha o que se encaixa. Nenhum deles é obrigatório.
144
144
  `TASKIQ_*` do `Settings` do projeto para o mixin correspondente do
145
145
  SDK ([Composição de mixins de settings](recipes/http.md#composicao-de-mixins-de-settings)).
146
146
  - Adote o
147
- [`padrão de outbox dispatcher`](recipes/queue-tasks.md#padrao-outbox-dispatcher) se
147
+ [`Outbox`](recipes/outbox.md) se
148
148
  você já escreve efeitos colaterais a partir da mesma transação que
149
149
  grava as linhas de domínio.
150
150