tempest-fastapi-sdk 0.75.0__tar.gz → 0.76.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 (449) hide show
  1. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/CHANGELOG.md +13 -0
  2. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/PKG-INFO +10 -10
  3. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/README.md +9 -9
  4. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/br-helpers.en.md +11 -8
  5. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/br-helpers.md +11 -8
  6. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/pyproject.toml +1 -1
  7. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/__init__.py +11 -1
  8. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/utils/__init__.py +10 -0
  9. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/utils/regex.py +24 -10
  10. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/utils/test_regex.py +26 -4
  11. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/uv.lock +1 -1
  12. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/.github/workflows/ci.yml +0 -0
  13. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/.github/workflows/docs.yml +0 -0
  14. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/.github/workflows/release-pypi.yml +0 -0
  15. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/.gitignore +0 -0
  16. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/.python-version +0 -0
  17. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/CLAUDE.md +0 -0
  18. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/Makefile +0 -0
  19. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/architecture.en.md +0 -0
  20. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/architecture.md +0 -0
  21. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/changelog.en.md +0 -0
  22. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/changelog.md +0 -0
  23. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/contributing.en.md +0 -0
  24. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/contributing.md +0 -0
  25. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/index.en.md +0 -0
  26. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/index.md +0 -0
  27. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/installation.en.md +0 -0
  28. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/installation.md +0 -0
  29. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/learning/index.en.md +0 -0
  30. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/learning/index.md +0 -0
  31. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/learning/marketplace/api.en.md +0 -0
  32. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/learning/marketplace/api.md +0 -0
  33. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/learning/marketplace/business-rules.en.md +0 -0
  34. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/learning/marketplace/business-rules.md +0 -0
  35. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/learning/marketplace/domain.en.md +0 -0
  36. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/learning/marketplace/domain.md +0 -0
  37. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/learning/marketplace/flows.en.md +0 -0
  38. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/learning/marketplace/flows.md +0 -0
  39. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/learning/marketplace/index.en.md +0 -0
  40. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/learning/marketplace/index.md +0 -0
  41. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/migration.en.md +0 -0
  42. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/migration.md +0 -0
  43. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/admin.en.md +0 -0
  44. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/admin.md +0 -0
  45. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/audit-trail.en.md +0 -0
  46. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/audit-trail.md +0 -0
  47. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/auth-flow.en.md +0 -0
  48. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/auth-flow.md +0 -0
  49. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/cache.en.md +0 -0
  50. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/cache.md +0 -0
  51. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/cli.en.md +0 -0
  52. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/cli.md +0 -0
  53. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/database.en.md +0 -0
  54. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/database.md +0 -0
  55. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/deploy-safety.en.md +0 -0
  56. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/deploy-safety.md +0 -0
  57. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/downloads.en.md +0 -0
  58. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/downloads.md +0 -0
  59. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/email.en.md +0 -0
  60. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/email.md +0 -0
  61. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/feature-flags.en.md +0 -0
  62. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/feature-flags.md +0 -0
  63. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/http-client.en.md +0 -0
  64. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/http-client.md +0 -0
  65. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/http.en.md +0 -0
  66. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/http.md +0 -0
  67. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/idempotency.en.md +0 -0
  68. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/idempotency.md +0 -0
  69. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/index.en.md +0 -0
  70. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/index.md +0 -0
  71. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/logging.en.md +0 -0
  72. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/logging.md +0 -0
  73. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/metrics.en.md +0 -0
  74. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/metrics.md +0 -0
  75. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/mfa.en.md +0 -0
  76. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/mfa.md +0 -0
  77. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/multi-tenant.en.md +0 -0
  78. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/multi-tenant.md +0 -0
  79. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/observability.en.md +0 -0
  80. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/observability.md +0 -0
  81. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/offline-sync.en.md +0 -0
  82. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/offline-sync.md +0 -0
  83. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/outbox.en.md +0 -0
  84. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/outbox.md +0 -0
  85. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/queue-tasks.en.md +0 -0
  86. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/queue-tasks.md +0 -0
  87. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/realtime.en.md +0 -0
  88. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/realtime.md +0 -0
  89. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/refresh-tokens.en.md +0 -0
  90. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/refresh-tokens.md +0 -0
  91. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/security.en.md +0 -0
  92. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/security.md +0 -0
  93. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/sessions.en.md +0 -0
  94. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/sessions.md +0 -0
  95. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/storage.en.md +0 -0
  96. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/storage.md +0 -0
  97. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/stored-files.en.md +0 -0
  98. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/stored-files.md +0 -0
  99. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/testing.en.md +0 -0
  100. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/testing.md +0 -0
  101. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/typing.en.md +0 -0
  102. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/typing.md +0 -0
  103. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/uploads.en.md +0 -0
  104. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/uploads.md +0 -0
  105. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/utilities.en.md +0 -0
  106. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/utilities.md +0 -0
  107. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/webpush.en.md +0 -0
  108. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/webpush.md +0 -0
  109. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/websocket.en.md +0 -0
  110. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/recipes/websocket.md +0 -0
  111. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/reference.en.md +0 -0
  112. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/reference.md +0 -0
  113. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/roadmap.en.md +0 -0
  114. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/roadmap.md +0 -0
  115. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/tutorial.en.md +0 -0
  116. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/docs/tutorial.md +0 -0
  117. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/mkdocs.yml +0 -0
  118. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/mkdocs_hooks/llmstxt.py +0 -0
  119. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/scripts/extract_recipe.py +0 -0
  120. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/admin/__init__.py +0 -0
  121. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/admin/auth.py +0 -0
  122. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/admin/config.py +0 -0
  123. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/admin/discovery.py +0 -0
  124. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/admin/forms.py +0 -0
  125. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/admin/router.py +0 -0
  126. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/admin/session.py +0 -0
  127. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/admin/site.py +0 -0
  128. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/admin/static/admin.css +0 -0
  129. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/admin/templates/base.html +0 -0
  130. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/admin/templates/dashboard.html +0 -0
  131. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/admin/templates/detail.html +0 -0
  132. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/admin/templates/form.html +0 -0
  133. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/admin/templates/list.html +0 -0
  134. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/admin/templates/login.html +0 -0
  135. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/admin/templates/logs.html +0 -0
  136. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/admin/templates/mfa.html +0 -0
  137. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/admin/theme.py +0 -0
  138. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/api/__init__.py +0 -0
  139. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/api/cookies.py +0 -0
  140. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/api/dependencies/__init__.py +0 -0
  141. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/api/dependencies/auth.py +0 -0
  142. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/api/handlers.py +0 -0
  143. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/api/middlewares/__init__.py +0 -0
  144. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/api/middlewares/body_size.py +0 -0
  145. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/api/middlewares/cors.py +0 -0
  146. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/api/middlewares/csrf.py +0 -0
  147. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/api/middlewares/graceful.py +0 -0
  148. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/api/middlewares/idempotency.py +0 -0
  149. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/api/middlewares/rate_limit.py +0 -0
  150. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/api/middlewares/request_id.py +0 -0
  151. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/api/oauth.py +0 -0
  152. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/api/routers/__init__.py +0 -0
  153. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/api/routers/health.py +0 -0
  154. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/api/routers/logs.py +0 -0
  155. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/api/routers/metrics.py +0 -0
  156. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/api/routers/tool_spec.py +0 -0
  157. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/api/server.py +0 -0
  158. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/api/static.py +0 -0
  159. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/api/tracing.py +0 -0
  160. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/api/webhooks.py +0 -0
  161. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/auth/__init__.py +0 -0
  162. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/auth/guards.py +0 -0
  163. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/auth/locale.py +0 -0
  164. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/auth/page_renderer.py +0 -0
  165. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/auth/router.py +0 -0
  166. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/auth/schemas.py +0 -0
  167. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/auth/service.py +0 -0
  168. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/auth/templates/en-US/activation.html +0 -0
  169. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/auth/templates/en-US/activation_error.html +0 -0
  170. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/auth/templates/en-US/activation_success.html +0 -0
  171. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/auth/templates/en-US/password_reset.html +0 -0
  172. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/auth/templates/en-US/password_reset_error.html +0 -0
  173. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/auth/templates/en-US/password_reset_form.html +0 -0
  174. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/auth/templates/en-US/password_reset_success.html +0 -0
  175. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/auth/templates/pt-BR/activation.html +0 -0
  176. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/auth/templates/pt-BR/activation_error.html +0 -0
  177. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/auth/templates/pt-BR/activation_success.html +0 -0
  178. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/auth/templates/pt-BR/password_reset.html +0 -0
  179. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/auth/templates/pt-BR/password_reset_error.html +0 -0
  180. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/auth/templates/pt-BR/password_reset_form.html +0 -0
  181. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/auth/templates/pt-BR/password_reset_success.html +0 -0
  182. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cache/__init__.py +0 -0
  183. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cache/decorator.py +0 -0
  184. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cache/invalidation.py +0 -0
  185. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cache/redis_manager.py +0 -0
  186. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/__init__.py +0 -0
  187. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/_templates/Dockerfile.tmpl +0 -0
  188. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/_templates/README.md.tmpl +0 -0
  189. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/_templates/dockerignore.tmpl +0 -0
  190. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/_templates/env.example.tmpl +0 -0
  191. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/_templates/gitignore.tmpl +0 -0
  192. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/_templates/main.py.tmpl +0 -0
  193. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/_templates/pyproject.toml.tmpl +0 -0
  194. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/_templates/src/__init__.py.tmpl +0 -0
  195. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/_templates/src/api/__init__.py.tmpl +0 -0
  196. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/_templates/src/api/app.py.tmpl +0 -0
  197. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/_templates/src/api/dependencies/__init__.py.tmpl +0 -0
  198. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/_templates/src/api/dependencies/auth.py.tmpl +0 -0
  199. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/_templates/src/api/dependencies/resources.py.tmpl +0 -0
  200. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/_templates/src/api/routers/__init__.py.tmpl +0 -0
  201. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/_templates/src/controllers/__init__.py.tmpl +0 -0
  202. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/_templates/src/core/__init__.py.tmpl +0 -0
  203. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/_templates/src/core/exceptions.py.tmpl +0 -0
  204. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/_templates/src/core/settings.py.tmpl +0 -0
  205. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/_templates/src/db/__init__.py.tmpl +0 -0
  206. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/_templates/src/db/models/__init__.py.tmpl +0 -0
  207. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/_templates/src/db/models/user.py.tmpl +0 -0
  208. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/_templates/src/db/repositories/__init__.py.tmpl +0 -0
  209. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/_templates/src/schemas/__init__.py.tmpl +0 -0
  210. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/_templates/src/server.py.tmpl +0 -0
  211. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/_templates/src/services/__init__.py.tmpl +0 -0
  212. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/_templates/src/utils/__init__.py.tmpl +0 -0
  213. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/_templates/tests/__init__.py.tmpl +0 -0
  214. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/_templates/tests/test_smoke.py.tmpl +0 -0
  215. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/config.py +0 -0
  216. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/db.py +0 -0
  217. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/docker_compose.py +0 -0
  218. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/generate.py +0 -0
  219. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/lint.py +0 -0
  220. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/main.py +0 -0
  221. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/new.py +0 -0
  222. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/secrets.py +0 -0
  223. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/src_layers.py +0 -0
  224. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/cli/user.py +0 -0
  225. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/controllers/__init__.py +0 -0
  226. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/controllers/base.py +0 -0
  227. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/core/__init__.py +0 -0
  228. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/core/context.py +0 -0
  229. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/core/enums.py +0 -0
  230. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/core/logging.py +0 -0
  231. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/core/typed.py +0 -0
  232. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/db/__init__.py +0 -0
  233. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/db/_alembic_templates/__init__.py +0 -0
  234. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/db/_alembic_templates/env.py.template +0 -0
  235. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/db/alembic_hooks.py +0 -0
  236. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/db/audit.py +0 -0
  237. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/db/backup.py +0 -0
  238. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/db/connection.py +0 -0
  239. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/db/migrations.py +0 -0
  240. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/db/mixins.py +0 -0
  241. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/db/model.py +0 -0
  242. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/db/outbox.py +0 -0
  243. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/db/repository.py +0 -0
  244. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/db/slow_query.py +0 -0
  245. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/db/tenant.py +0 -0
  246. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/db/user_model.py +0 -0
  247. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/db/user_recovery_code_model.py +0 -0
  248. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/db/user_refresh_token_model.py +0 -0
  249. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/db/user_token_model.py +0 -0
  250. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/exceptions/__init__.py +0 -0
  251. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/exceptions/base.py +0 -0
  252. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/exceptions/conflict.py +0 -0
  253. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/exceptions/forbidden.py +0 -0
  254. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/exceptions/i18n.py +0 -0
  255. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/exceptions/jwt.py +0 -0
  256. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/exceptions/not_found.py +0 -0
  257. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/exceptions/too_many_requests.py +0 -0
  258. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/exceptions/unauthorized.py +0 -0
  259. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/exceptions/upload.py +0 -0
  260. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/exceptions/validation.py +0 -0
  261. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/flags/__init__.py +0 -0
  262. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/flags/backends.py +0 -0
  263. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/flags/dependencies.py +0 -0
  264. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/flags/service.py +0 -0
  265. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/py.typed +0 -0
  266. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/queue/__init__.py +0 -0
  267. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/queue/manager.py +0 -0
  268. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/schemas/__init__.py +0 -0
  269. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/schemas/base.py +0 -0
  270. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/schemas/link_headers.py +0 -0
  271. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/schemas/logs.py +0 -0
  272. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/schemas/pagination.py +0 -0
  273. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/schemas/response.py +0 -0
  274. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/services/__init__.py +0 -0
  275. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/services/base.py +0 -0
  276. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/services/file_mixin.py +0 -0
  277. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/sessions/__init__.py +0 -0
  278. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/sessions/dependencies.py +0 -0
  279. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/sessions/middleware.py +0 -0
  280. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/sessions/router.py +0 -0
  281. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/sessions/schemas.py +0 -0
  282. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/sessions/service.py +0 -0
  283. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/sessions/store.py +0 -0
  284. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/settings/__init__.py +0 -0
  285. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/settings/base.py +0 -0
  286. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/settings/mixins.py +0 -0
  287. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/sse/__init__.py +0 -0
  288. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/sse/event_stream.py +0 -0
  289. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/storage/__init__.py +0 -0
  290. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/storage/minio_client.py +0 -0
  291. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/tasks/__init__.py +0 -0
  292. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/tasks/manager.py +0 -0
  293. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/tasks/scheduler.py +0 -0
  294. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/testing/__init__.py +0 -0
  295. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/testing/database.py +0 -0
  296. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/utils/client_ip.py +0 -0
  297. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/utils/data/br_locations.json +0 -0
  298. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/utils/datetime.py +0 -0
  299. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/utils/dict.py +0 -0
  300. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/utils/download.py +0 -0
  301. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/utils/email.py +0 -0
  302. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/utils/http_client.py +0 -0
  303. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/utils/jwt.py +0 -0
  304. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/utils/locations.py +0 -0
  305. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/utils/log.py +0 -0
  306. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/utils/metrics.py +0 -0
  307. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/utils/opaque_token.py +0 -0
  308. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/utils/password.py +0 -0
  309. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/utils/storage_backends.py +0 -0
  310. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/utils/throttle.py +0 -0
  311. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/utils/totp.py +0 -0
  312. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/utils/upload.py +0 -0
  313. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/webpush/__init__.py +0 -0
  314. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/webpush/dispatcher.py +0 -0
  315. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/webpush/schemas.py +0 -0
  316. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/websockets/__init__.py +0 -0
  317. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/websockets/hub.py +0 -0
  318. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/websockets/router.py +0 -0
  319. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tempest_fastapi_sdk/websockets/schemas.py +0 -0
  320. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/__init__.py +0 -0
  321. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/admin/__init__.py +0 -0
  322. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/admin/test_auth.py +0 -0
  323. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/admin/test_discovery.py +0 -0
  324. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/admin/test_forms.py +0 -0
  325. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/admin/test_logs_nav.py +0 -0
  326. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/admin/test_mfa.py +0 -0
  327. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/admin/test_router.py +0 -0
  328. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/admin/test_site.py +0 -0
  329. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/admin/test_theme.py +0 -0
  330. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/admin/test_user_model.py +0 -0
  331. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/api/__init__.py +0 -0
  332. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/api/test_body_size.py +0 -0
  333. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/api/test_cookies.py +0 -0
  334. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/api/test_cors.py +0 -0
  335. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/api/test_csrf.py +0 -0
  336. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/api/test_dependencies_auth.py +0 -0
  337. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/api/test_graceful.py +0 -0
  338. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/api/test_handlers.py +0 -0
  339. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/api/test_health_router.py +0 -0
  340. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/api/test_idempotency.py +0 -0
  341. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/api/test_jwt_dependency.py +0 -0
  342. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/api/test_logs_router.py +0 -0
  343. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/api/test_oauth.py +0 -0
  344. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/api/test_prometheus.py +0 -0
  345. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/api/test_rate_limit.py +0 -0
  346. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/api/test_rate_limit_extras.py +0 -0
  347. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/api/test_request_id_middleware.py +0 -0
  348. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/api/test_role_dependency.py +0 -0
  349. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/api/test_server.py +0 -0
  350. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/api/test_static.py +0 -0
  351. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/api/test_tool_spec.py +0 -0
  352. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/api/test_tracing.py +0 -0
  353. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/api/test_webhooks.py +0 -0
  354. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/api/test_webhooks_rsa.py +0 -0
  355. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/auth/__init__.py +0 -0
  356. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/auth/test_guards.py +0 -0
  357. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/auth/test_locale.py +0 -0
  358. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/auth/test_mfa.py +0 -0
  359. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/auth/test_refresh.py +0 -0
  360. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/auth/test_refresh_db.py +0 -0
  361. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/auth/test_service.py +0 -0
  362. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/cache/__init__.py +0 -0
  363. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/cache/test_decorator.py +0 -0
  364. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/cache/test_invalidation.py +0 -0
  365. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/cache/test_redis_manager.py +0 -0
  366. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/cli/__init__.py +0 -0
  367. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/cli/test_config.py +0 -0
  368. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/cli/test_db.py +0 -0
  369. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/cli/test_db_seed.py +0 -0
  370. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/cli/test_docker_compose.py +0 -0
  371. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/cli/test_generate.py +0 -0
  372. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/cli/test_lint_strictness.py +0 -0
  373. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/cli/test_main.py +0 -0
  374. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/cli/test_secrets.py +0 -0
  375. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/cli/test_user.py +0 -0
  376. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/conftest.py +0 -0
  377. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/controllers/__init__.py +0 -0
  378. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/controllers/test_base.py +0 -0
  379. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/core/__init__.py +0 -0
  380. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/core/test_context.py +0 -0
  381. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/core/test_enums.py +0 -0
  382. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/core/test_logging.py +0 -0
  383. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/core/test_typed.py +0 -0
  384. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/db/__init__.py +0 -0
  385. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/db/test_alembic_hooks.py +0 -0
  386. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/db/test_audit.py +0 -0
  387. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/db/test_backup.py +0 -0
  388. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/db/test_bulk_ops.py +0 -0
  389. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/db/test_connection.py +0 -0
  390. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/db/test_migrations.py +0 -0
  391. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/db/test_mixins.py +0 -0
  392. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/db/test_model.py +0 -0
  393. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/db/test_outbox.py +0 -0
  394. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/db/test_repository.py +0 -0
  395. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/db/test_safe_upgrade.py +0 -0
  396. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/db/test_slow_query.py +0 -0
  397. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/db/test_tenant.py +0 -0
  398. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/exceptions/__init__.py +0 -0
  399. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/exceptions/test_exceptions.py +0 -0
  400. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/exceptions/test_i18n.py +0 -0
  401. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/flags/__init__.py +0 -0
  402. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/flags/test_flags.py +0 -0
  403. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/queue/__init__.py +0 -0
  404. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/queue/test_manager.py +0 -0
  405. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/schemas/__init__.py +0 -0
  406. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/schemas/test_base.py +0 -0
  407. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/schemas/test_cursor_pagination.py +0 -0
  408. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/schemas/test_link_headers.py +0 -0
  409. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/schemas/test_pagination.py +0 -0
  410. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/schemas/test_response.py +0 -0
  411. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/services/__init__.py +0 -0
  412. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/services/test_base.py +0 -0
  413. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/services/test_file_mixin.py +0 -0
  414. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/sessions/__init__.py +0 -0
  415. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/sessions/test_sessions.py +0 -0
  416. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/settings/__init__.py +0 -0
  417. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/settings/test_base.py +0 -0
  418. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/settings/test_mixins.py +0 -0
  419. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/sse/__init__.py +0 -0
  420. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/sse/test_event_stream.py +0 -0
  421. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/storage/__init__.py +0 -0
  422. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/storage/test_minio_client.py +0 -0
  423. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/tasks/__init__.py +0 -0
  424. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/tasks/test_manager.py +0 -0
  425. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/tasks/test_scheduler.py +0 -0
  426. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/testing/__init__.py +0 -0
  427. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/testing/test_database.py +0 -0
  428. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/utils/__init__.py +0 -0
  429. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/utils/test_client_ip.py +0 -0
  430. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/utils/test_datetime.py +0 -0
  431. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/utils/test_dict.py +0 -0
  432. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/utils/test_download.py +0 -0
  433. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/utils/test_email.py +0 -0
  434. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/utils/test_http_client.py +0 -0
  435. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/utils/test_jwt.py +0 -0
  436. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/utils/test_lazy_extras.py +0 -0
  437. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/utils/test_locations.py +0 -0
  438. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/utils/test_log.py +0 -0
  439. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/utils/test_metrics.py +0 -0
  440. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/utils/test_opaque_token.py +0 -0
  441. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/utils/test_password.py +0 -0
  442. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/utils/test_storage_backends.py +0 -0
  443. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/utils/test_throttle.py +0 -0
  444. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/utils/test_upload.py +0 -0
  445. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/webpush/__init__.py +0 -0
  446. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/webpush/test_dispatcher.py +0 -0
  447. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/webpush/test_schemas.py +0 -0
  448. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/websockets/__init__.py +0 -0
  449. {tempest_fastapi_sdk-0.75.0 → tempest_fastapi_sdk-0.76.0}/tests/websockets/test_hub_and_router.py +0 -0
@@ -5,6 +5,19 @@ 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.76.0] — 2026-06-27
9
+
10
+ ### Changed
11
+
12
+ - **BR field types now carry a `Field` suffix.** The Pydantic
13
+ annotated-type aliases were renamed to make their role obvious at the
14
+ import site, matching `UFField` / `CityNameField`: `CPF` -> `CPFField`,
15
+ `CNPJ` -> `CNPJField`, `CPFOrCNPJ` -> `CPFOrCNPJField`,
16
+ `PhoneBR` -> `PhoneBRField`, `CEP` -> `CEPField`. The old names remain
17
+ exported as **deprecated aliases** (identical types), so existing
18
+ imports keep working; prefer the `*Field` names. Slated for removal in
19
+ a future major.
20
+
8
21
  ## [0.75.0] — 2026-06-27
9
22
 
10
23
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: tempest-fastapi-sdk
3
- Version: 0.75.0
3
+ Version: 0.76.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
@@ -259,7 +259,7 @@ Since `0.7.1` every optional dependency is imported lazily at first instantiatio
259
259
  | `tempest_fastapi_sdk.utils.http_client` *(extra: `[http]`)* | `HTTPClient`, `RetryPolicy`, `CircuitOpenError`, `REQUEST_ID_HEADER` — typed httpx wrapper |
260
260
  | `tempest_fastapi_sdk.utils.storage_backends` *(extra: `[upload]`)* | `UploadStorage` protocol, `LocalUploadStorage`, `MinIOUploadStorage`, `UploadResult`, `ContentValidator` |
261
261
  | `tempest_fastapi_sdk.tasks` *(extra: `[tasks]`)* | `AsyncTaskBrokerManager` (TaskIQ lifecycle wrapper), `AsyncTaskScheduler` (periodic / cron tasks) |
262
- | `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)*, `MetricsUtils`/`CPUMetrics`/`MemoryMetrics`/`DiskMetrics`/`GPUMetrics`/`SystemMetrics` *(extra: `[metrics]`)*, BR regex helpers (`CPF`, `CNPJ`, `CPFOrCNPJ`, `PhoneBR`, `CEP`, `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`) |
262
+ | `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)*, `MetricsUtils`/`CPUMetrics`/`MemoryMetrics`/`DiskMetrics`/`GPUMetrics`/`SystemMetrics` *(extra: `[metrics]`)*, 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`) |
263
263
  | `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` |
264
264
 
265
265
  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` and `tempest_fastapi_sdk.tasks` must be imported from their own submodule (`from tempest_fastapi_sdk.queue import AsyncBrokerManager`).
@@ -1609,7 +1609,7 @@ Every helper has its own recipe — this section is the quick map:
1609
1609
  | `DownloadUtils`, `build_content_disposition` | [Serving private files through the API](#serving-private-files-through-the-api-downloadutils) |
1610
1610
  | `LogUtils` + `configure_logging` | [Structured logging & request IDs recipe](#structured-logging--request-ids-recipe) |
1611
1611
  | `MetricsUtils` (CPU/memory/disk/GPU) | [System metrics recipe](#system-metrics-recipe) |
1612
- | `CPF`, `CNPJ`, `CPFOrCNPJ`, `PhoneBR`, `is_valid_*`, `normalize_*`, `only_digits` | [BR document & phone validation recipe](#br-document--phone-validation-recipe) |
1612
+ | `CPFField`, `CNPJField`, `CPFOrCNPJField`, `PhoneBRField`, `CEPField`, `is_valid_*`, `normalize_*`, `only_digits` | [BR document & phone validation recipe](#br-document--phone-validation-recipe) |
1613
1613
 
1614
1614
  ### BR document & phone validation recipe
1615
1615
 
@@ -1622,7 +1622,7 @@ Every helper has its own recipe — this section is the quick map:
1622
1622
  | `is_valid_phone_br` | `(str) -> bool` | BR phone shape: optional `+55`, optional DDD, optional 9th digit. |
1623
1623
  | `normalize_cpf`, `normalize_cnpj`, `normalize_cpf_cnpj`, `normalize_phone_br` | `(str) -> str` | Strip mask to digits-only; raise `ValueError` if invalid. |
1624
1624
  | `only_digits` | `(str) -> str` | Strip every non-digit character. |
1625
- | `CPF`, `CNPJ`, `CPFOrCNPJ`, `PhoneBR` | `Annotated[str, AfterValidator(...)]` | Drop-in Pydantic field types — validate + normalize automatically. |
1625
+ | `CPFField`, `CNPJField`, `CPFOrCNPJField`, `PhoneBRField`, `CEPField` | `Annotated[str, AfterValidator(...)]` | Drop-in Pydantic field types — validate + normalize automatically. The old names without the `Field` suffix (`CPF`, `CNPJ`, …) remain as deprecated aliases since v0.76. |
1626
1626
 
1627
1627
  #### Schema usage
1628
1628
 
@@ -1630,7 +1630,7 @@ Every helper has its own recipe — this section is the quick map:
1630
1630
  from pydantic import EmailStr, Field
1631
1631
 
1632
1632
  from tempest_fastapi_sdk import BaseSchema
1633
- from tempest_fastapi_sdk.utils import CPF, CPFOrCNPJ, PhoneBR
1633
+ from tempest_fastapi_sdk.utils import CPFOrCNPJField, PhoneBRField
1634
1634
 
1635
1635
 
1636
1636
  class CustomerCreateSchema(BaseSchema):
@@ -1644,8 +1644,8 @@ class CustomerCreateSchema(BaseSchema):
1644
1644
 
1645
1645
  name: str = Field(min_length=1, max_length=128)
1646
1646
  email: EmailStr
1647
- document: CPFOrCNPJ
1648
- phone: PhoneBR
1647
+ document: CPFOrCNPJField
1648
+ phone: PhoneBRField
1649
1649
  ```
1650
1650
 
1651
1651
  Valid input:
@@ -2830,15 +2830,15 @@ async def update_perms(user_id: UUID) -> None:
2830
2830
 
2831
2831
  ### CEP (Brazilian zipcode) recipe
2832
2832
 
2833
- `CEP` is an `Annotated[str, AfterValidator(normalize_cep)]` type — drop it into a Pydantic schema and inbound values are accepted as `"01310-100"` or `"01310100"`, normalized to 8 digits, and rejected (`ValidationError` → HTTP 422 envelope) when they don't match the shape. CEPs have no check digits, so validation is format-only.
2833
+ `CEPField` is an `Annotated[str, AfterValidator(normalize_cep)]` type — drop it into a Pydantic schema and inbound values are accepted as `"01310-100"` or `"01310100"`, normalized to 8 digits, and rejected (`ValidationError` → HTTP 422 envelope) when they don't match the shape. CEPs have no check digits, so validation is format-only.
2834
2834
 
2835
2835
  ```python
2836
2836
  from tempest_fastapi_sdk import BaseSchema
2837
- from tempest_fastapi_sdk.utils import CEP
2837
+ from tempest_fastapi_sdk.utils import CEPField
2838
2838
 
2839
2839
 
2840
2840
  class AddressCreateSchema(BaseSchema):
2841
- cep: CEP
2841
+ cep: CEPField
2842
2842
  street: str
2843
2843
  number: str
2844
2844
  ```
@@ -156,7 +156,7 @@ Since `0.7.1` every optional dependency is imported lazily at first instantiatio
156
156
  | `tempest_fastapi_sdk.utils.http_client` *(extra: `[http]`)* | `HTTPClient`, `RetryPolicy`, `CircuitOpenError`, `REQUEST_ID_HEADER` — typed httpx wrapper |
157
157
  | `tempest_fastapi_sdk.utils.storage_backends` *(extra: `[upload]`)* | `UploadStorage` protocol, `LocalUploadStorage`, `MinIOUploadStorage`, `UploadResult`, `ContentValidator` |
158
158
  | `tempest_fastapi_sdk.tasks` *(extra: `[tasks]`)* | `AsyncTaskBrokerManager` (TaskIQ lifecycle wrapper), `AsyncTaskScheduler` (periodic / cron tasks) |
159
- | `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)*, `MetricsUtils`/`CPUMetrics`/`MemoryMetrics`/`DiskMetrics`/`GPUMetrics`/`SystemMetrics` *(extra: `[metrics]`)*, BR regex helpers (`CPF`, `CNPJ`, `CPFOrCNPJ`, `PhoneBR`, `CEP`, `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`) |
159
+ | `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)*, `MetricsUtils`/`CPUMetrics`/`MemoryMetrics`/`DiskMetrics`/`GPUMetrics`/`SystemMetrics` *(extra: `[metrics]`)*, 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`) |
160
160
  | `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` |
161
161
 
162
162
  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` and `tempest_fastapi_sdk.tasks` must be imported from their own submodule (`from tempest_fastapi_sdk.queue import AsyncBrokerManager`).
@@ -1506,7 +1506,7 @@ Every helper has its own recipe — this section is the quick map:
1506
1506
  | `DownloadUtils`, `build_content_disposition` | [Serving private files through the API](#serving-private-files-through-the-api-downloadutils) |
1507
1507
  | `LogUtils` + `configure_logging` | [Structured logging & request IDs recipe](#structured-logging--request-ids-recipe) |
1508
1508
  | `MetricsUtils` (CPU/memory/disk/GPU) | [System metrics recipe](#system-metrics-recipe) |
1509
- | `CPF`, `CNPJ`, `CPFOrCNPJ`, `PhoneBR`, `is_valid_*`, `normalize_*`, `only_digits` | [BR document & phone validation recipe](#br-document--phone-validation-recipe) |
1509
+ | `CPFField`, `CNPJField`, `CPFOrCNPJField`, `PhoneBRField`, `CEPField`, `is_valid_*`, `normalize_*`, `only_digits` | [BR document & phone validation recipe](#br-document--phone-validation-recipe) |
1510
1510
 
1511
1511
  ### BR document & phone validation recipe
1512
1512
 
@@ -1519,7 +1519,7 @@ Every helper has its own recipe — this section is the quick map:
1519
1519
  | `is_valid_phone_br` | `(str) -> bool` | BR phone shape: optional `+55`, optional DDD, optional 9th digit. |
1520
1520
  | `normalize_cpf`, `normalize_cnpj`, `normalize_cpf_cnpj`, `normalize_phone_br` | `(str) -> str` | Strip mask to digits-only; raise `ValueError` if invalid. |
1521
1521
  | `only_digits` | `(str) -> str` | Strip every non-digit character. |
1522
- | `CPF`, `CNPJ`, `CPFOrCNPJ`, `PhoneBR` | `Annotated[str, AfterValidator(...)]` | Drop-in Pydantic field types — validate + normalize automatically. |
1522
+ | `CPFField`, `CNPJField`, `CPFOrCNPJField`, `PhoneBRField`, `CEPField` | `Annotated[str, AfterValidator(...)]` | Drop-in Pydantic field types — validate + normalize automatically. The old names without the `Field` suffix (`CPF`, `CNPJ`, …) remain as deprecated aliases since v0.76. |
1523
1523
 
1524
1524
  #### Schema usage
1525
1525
 
@@ -1527,7 +1527,7 @@ Every helper has its own recipe — this section is the quick map:
1527
1527
  from pydantic import EmailStr, Field
1528
1528
 
1529
1529
  from tempest_fastapi_sdk import BaseSchema
1530
- from tempest_fastapi_sdk.utils import CPF, CPFOrCNPJ, PhoneBR
1530
+ from tempest_fastapi_sdk.utils import CPFOrCNPJField, PhoneBRField
1531
1531
 
1532
1532
 
1533
1533
  class CustomerCreateSchema(BaseSchema):
@@ -1541,8 +1541,8 @@ class CustomerCreateSchema(BaseSchema):
1541
1541
 
1542
1542
  name: str = Field(min_length=1, max_length=128)
1543
1543
  email: EmailStr
1544
- document: CPFOrCNPJ
1545
- phone: PhoneBR
1544
+ document: CPFOrCNPJField
1545
+ phone: PhoneBRField
1546
1546
  ```
1547
1547
 
1548
1548
  Valid input:
@@ -2727,15 +2727,15 @@ async def update_perms(user_id: UUID) -> None:
2727
2727
 
2728
2728
  ### CEP (Brazilian zipcode) recipe
2729
2729
 
2730
- `CEP` is an `Annotated[str, AfterValidator(normalize_cep)]` type — drop it into a Pydantic schema and inbound values are accepted as `"01310-100"` or `"01310100"`, normalized to 8 digits, and rejected (`ValidationError` → HTTP 422 envelope) when they don't match the shape. CEPs have no check digits, so validation is format-only.
2730
+ `CEPField` is an `Annotated[str, AfterValidator(normalize_cep)]` type — drop it into a Pydantic schema and inbound values are accepted as `"01310-100"` or `"01310100"`, normalized to 8 digits, and rejected (`ValidationError` → HTTP 422 envelope) when they don't match the shape. CEPs have no check digits, so validation is format-only.
2731
2731
 
2732
2732
  ```python
2733
2733
  from tempest_fastapi_sdk import BaseSchema
2734
- from tempest_fastapi_sdk.utils import CEP
2734
+ from tempest_fastapi_sdk.utils import CEPField
2735
2735
 
2736
2736
 
2737
2737
  class AddressCreateSchema(BaseSchema):
2738
- cep: CEP
2738
+ cep: CEPField
2739
2739
  street: str
2740
2740
  number: str
2741
2741
  ```
@@ -14,7 +14,10 @@ Document validators (CPF, CNPJ, CEP) and phone number normalizer/validator for B
14
14
  | `is_valid_phone_br` | `(str) -> bool` | BR phone shape: optional `+55`, optional DDD, optional 9th digit. |
15
15
  | `normalize_cpf`, `normalize_cnpj`, `normalize_cpf_cnpj`, `normalize_phone_br` | `(str) -> str` | Strip mask to digits-only; raise `ValueError` if invalid. |
16
16
  | `only_digits` | `(str) -> str` | Strip every non-digit character. |
17
- | `CPF`, `CNPJ`, `CPFOrCNPJ`, `PhoneBR` | `Annotated[str, AfterValidator(...)]` | Drop-in Pydantic field types — validate + normalize automatically. |
17
+ | `CPFField`, `CNPJField`, `CPFOrCNPJField`, `PhoneBRField` | `Annotated[str, AfterValidator(...)]` | Drop-in Pydantic field types — validate + normalize automatically. |
18
+
19
+ !!! info "`Field` suffix (since v0.76)"
20
+ The field types now carry a `Field` suffix (`CPFField`, `CNPJField`, `CPFOrCNPJField`, `PhoneBRField`, `CEPField`) to make it obvious they are schema field types — like `UFField` / `CityNameField`. The old names (`CPF`, `CNPJ`, `CPFOrCNPJ`, `PhoneBR`, `CEP`) still work as **deprecated aliases**; prefer the new ones.
18
21
 
19
22
  #### Schema usage
20
23
 
@@ -22,7 +25,7 @@ Document validators (CPF, CNPJ, CEP) and phone number normalizer/validator for B
22
25
  from pydantic import EmailStr, Field
23
26
 
24
27
  from tempest_fastapi_sdk import BaseSchema
25
- from tempest_fastapi_sdk.utils import CPF, CPFOrCNPJ, PhoneBR
28
+ from tempest_fastapi_sdk.utils import CPFOrCNPJField, PhoneBRField
26
29
 
27
30
 
28
31
  class CustomerCreateSchema(BaseSchema):
@@ -36,8 +39,8 @@ class CustomerCreateSchema(BaseSchema):
36
39
 
37
40
  name: str = Field(min_length=1, max_length=128)
38
41
  email: EmailStr
39
- document: CPFOrCNPJ
40
- phone: PhoneBR
42
+ document: CPFOrCNPJField
43
+ phone: PhoneBRField
41
44
  ```
42
45
 
43
46
  Valid input:
@@ -87,15 +90,15 @@ await repo.get({"document": normalize_cpf_cnpj(query)})
87
90
  ## CEP (zipcode)
88
91
 
89
92
 
90
- `CEP` is an `Annotated[str, AfterValidator(normalize_cep)]` type — drop it into a Pydantic schema and inbound values are accepted as `"01310-100"` or `"01310100"`, normalized to 8 digits, and rejected (`ValidationError` → HTTP 422 envelope) when they don't match the shape. CEPs have no check digits, so validation is format-only.
93
+ `CEPField` is an `Annotated[str, AfterValidator(normalize_cep)]` type — drop it into a Pydantic schema and inbound values are accepted as `"01310-100"` or `"01310100"`, normalized to 8 digits, and rejected (`ValidationError` → HTTP 422 envelope) when they don't match the shape. CEPs have no check digits, so validation is format-only.
91
94
 
92
95
  ```python
93
96
  from tempest_fastapi_sdk import BaseSchema
94
- from tempest_fastapi_sdk.utils import CEP
97
+ from tempest_fastapi_sdk.utils import CEPField
95
98
 
96
99
 
97
100
  class AddressCreateSchema(BaseSchema):
98
- cep: CEP
101
+ cep: CEPField
99
102
  street: str
100
103
  number: str
101
104
  ```
@@ -319,6 +322,6 @@ Every helper has its own recipe — this section is the quick map:
319
322
  | `DownloadUtils`, `build_content_disposition` | [Serving private files through the API](http.md#serving-private-files-through-the-api-downloadutils) |
320
323
  | `LogUtils` + `configure_logging` | [Structured logging & request IDs recipe](logging.md) |
321
324
  | `MetricsUtils` (CPU/memory/disk/GPU) | [System metrics recipe](metrics.md) |
322
- | `CPF`, `CNPJ`, `CPFOrCNPJ`, `PhoneBR`, `is_valid_*`, `normalize_*`, `only_digits` | [CPF / CNPJ / phone](#cpf-cnpj-phone) |
325
+ | `CPFField`, `CNPJField`, `CPFOrCNPJField`, `PhoneBRField`, `CEPField`, `is_valid_*`, `normalize_*`, `only_digits` | [CPF / CNPJ / phone](#cpf-cnpj-phone) |
323
326
  | `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` | [States and municipalities](#states-and-municipalities) |
324
327
 
@@ -14,7 +14,10 @@ Validadores de documentos (CPF, CNPJ, CEP) e normalizador/validador de telefone
14
14
  | `is_valid_phone_br` | `(str) -> bool` | Formato de telefone BR: `+55` opcional, DDD opcional, nono dígito opcional. |
15
15
  | `normalize_cpf`, `normalize_cnpj`, `normalize_cpf_cnpj`, `normalize_phone_br` | `(str) -> str` | Remove a máscara deixando só dígitos; levanta `ValueError` se inválido. |
16
16
  | `only_digits` | `(str) -> str` | Remove todo caractere que não é dígito. |
17
- | `CPF`, `CNPJ`, `CPFOrCNPJ`, `PhoneBR` | `Annotated[str, AfterValidator(...)]` | Tipos de campo Pydantic plug-and-play — validam + normalizam automaticamente. |
17
+ | `CPFField`, `CNPJField`, `CPFOrCNPJField`, `PhoneBRField` | `Annotated[str, AfterValidator(...)]` | Tipos de campo Pydantic plug-and-play — validam + normalizam automaticamente. |
18
+
19
+ !!! info "Sufixo `Field` (a partir da v0.76)"
20
+ Os tipos de campo passaram a usar o sufixo `Field` (`CPFField`, `CNPJField`, `CPFOrCNPJField`, `PhoneBRField`, `CEPField`) pra deixar claro que são campos de schema — igual `UFField` / `CityNameField`. Os nomes antigos (`CPF`, `CNPJ`, `CPFOrCNPJ`, `PhoneBR`, `CEP`) continuam funcionando como **alias deprecado**; prefira os novos.
18
21
 
19
22
  #### Uso em schema
20
23
 
@@ -22,7 +25,7 @@ Validadores de documentos (CPF, CNPJ, CEP) e normalizador/validador de telefone
22
25
  from pydantic import EmailStr, Field
23
26
 
24
27
  from tempest_fastapi_sdk import BaseSchema
25
- from tempest_fastapi_sdk.utils import CPF, CPFOrCNPJ, PhoneBR
28
+ from tempest_fastapi_sdk.utils import CPFOrCNPJField, PhoneBRField
26
29
 
27
30
 
28
31
  class CustomerCreateSchema(BaseSchema):
@@ -36,8 +39,8 @@ class CustomerCreateSchema(BaseSchema):
36
39
 
37
40
  name: str = Field(min_length=1, max_length=128)
38
41
  email: EmailStr
39
- document: CPFOrCNPJ
40
- phone: PhoneBR
42
+ document: CPFOrCNPJField
43
+ phone: PhoneBRField
41
44
  ```
42
45
 
43
46
  Entrada válida:
@@ -87,15 +90,15 @@ await repo.get({"document": normalize_cpf_cnpj(query)})
87
90
  ## CEP
88
91
 
89
92
 
90
- `CEP` é um tipo `Annotated[str, AfterValidator(normalize_cep)]` — coloque-o em um schema Pydantic e os valores de entrada são aceitos como `"01310-100"` ou `"01310100"`, normalizados para 8 dígitos, e rejeitados (`ValidationError` → envelope HTTP 422) quando não casam com o formato. CEPs não têm dígitos verificadores, então a validação é só de formato.
93
+ `CEPField` é um tipo `Annotated[str, AfterValidator(normalize_cep)]` — coloque-o em um schema Pydantic e os valores de entrada são aceitos como `"01310-100"` ou `"01310100"`, normalizados para 8 dígitos, e rejeitados (`ValidationError` → envelope HTTP 422) quando não casam com o formato. CEPs não têm dígitos verificadores, então a validação é só de formato.
91
94
 
92
95
  ```python
93
96
  from tempest_fastapi_sdk import BaseSchema
94
- from tempest_fastapi_sdk.utils import CEP
97
+ from tempest_fastapi_sdk.utils import CEPField
95
98
 
96
99
 
97
100
  class AddressCreateSchema(BaseSchema):
98
- cep: CEP
101
+ cep: CEPField
99
102
  street: str
100
103
  number: str
101
104
  ```
@@ -311,5 +314,5 @@ Todo helper tem sua própria receita — esta seção é o mapa rápido:
311
314
  | `DownloadUtils`, `build_content_disposition` | [Servindo arquivos privados pela API](http.md#servindo-arquivos-privados-pela-api-downloadutils) |
312
315
  | `LogUtils` + `configure_logging` | [Receita de logging estruturado & request IDs](logging.md) |
313
316
  | `MetricsUtils` (CPU/memória/disco/GPU) | [Receita de métricas do sistema](metrics.md) |
314
- | `CPF`, `CNPJ`, `CPFOrCNPJ`, `PhoneBR`, `is_valid_*`, `normalize_*`, `only_digits` | [CPF / CNPJ / telefone](#cpf-cnpj-telefone) |
317
+ | `CPFField`, `CNPJField`, `CPFOrCNPJField`, `PhoneBRField`, `CEPField`, `is_valid_*`, `normalize_*`, `only_digits` | [CPF / CNPJ / telefone](#cpf-cnpj-telefone) |
315
318
  | `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` | [Estados e municípios](#estados-e-municipios) |
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "tempest-fastapi-sdk"
3
- version = "0.75.0"
3
+ version = "0.76.0"
4
4
  description = "Shared FastAPI building blocks: base schemas, ORM model, async repository, exceptions, pagination and settings — the conventions used across Tempest projects."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -245,11 +245,15 @@ from tempest_fastapi_sdk.utils import (
245
245
  REQUEST_ID_HEADER,
246
246
  UF,
247
247
  AttemptThrottle,
248
+ CEPField,
248
249
  ChoiceBR,
249
250
  CircuitOpenError,
250
251
  CityBR,
251
252
  CityNameField,
253
+ CNPJField,
254
+ CPFField,
252
255
  CPFOrCNPJ,
256
+ CPFOrCNPJField,
253
257
  CPUMetrics,
254
258
  DiskMetrics,
255
259
  DownloadUtils,
@@ -264,6 +268,7 @@ from tempest_fastapi_sdk.utils import (
264
268
  MinIOUploadStorage,
265
269
  PasswordUtils,
266
270
  PhoneBR,
271
+ PhoneBRField,
267
272
  Region,
268
273
  RetryPolicy,
269
274
  StateBR,
@@ -323,7 +328,7 @@ from tempest_fastapi_sdk.websockets import (
323
328
  make_websocket_router,
324
329
  )
325
330
 
326
- __version__: str = "0.75.0"
331
+ __version__: str = "0.76.0"
327
332
 
328
333
  __all__: list[str] = [
329
334
  "BASE_COLUMN_ORDER",
@@ -380,8 +385,12 @@ __all__: list[str] = [
380
385
  "BaseUserRefreshTokenModel",
381
386
  "BaseUserTokenModel",
382
387
  "BodySizeLimitMiddleware",
388
+ "CEPField",
389
+ "CNPJField",
383
390
  "CORSSettings",
391
+ "CPFField",
384
392
  "CPFOrCNPJ",
393
+ "CPFOrCNPJField",
385
394
  "CPUMetrics",
386
395
  "CSRFMiddleware",
387
396
  "CachedResponse",
@@ -460,6 +469,7 @@ __all__: list[str] = [
460
469
  "PasswordResetToken",
461
470
  "PasswordUtils",
462
471
  "PhoneBR",
472
+ "PhoneBRField",
463
473
  "PrometheusMiddleware",
464
474
  "RSAWebhookSignatureVerifier",
465
475
  "RabbitMQSettings",
@@ -72,8 +72,13 @@ from tempest_fastapi_sdk.utils.regex import (
72
72
  CPF_CNPJ_PATTERN,
73
73
  CPF_PATTERN,
74
74
  PHONE_BR_PATTERN,
75
+ CEPField,
76
+ CNPJField,
77
+ CPFField,
75
78
  CPFOrCNPJ,
79
+ CPFOrCNPJField,
76
80
  PhoneBR,
81
+ PhoneBRField,
77
82
  is_valid_cep,
78
83
  is_valid_cnpj,
79
84
  is_valid_cpf,
@@ -112,7 +117,11 @@ __all__: list[str] = [
112
117
  "REQUEST_ID_HEADER",
113
118
  "UF",
114
119
  "AttemptThrottle",
120
+ "CEPField",
121
+ "CNPJField",
122
+ "CPFField",
115
123
  "CPFOrCNPJ",
124
+ "CPFOrCNPJField",
116
125
  "CPUMetrics",
117
126
  "ChoiceBR",
118
127
  "CircuitOpenError",
@@ -131,6 +140,7 @@ __all__: list[str] = [
131
140
  "MinIOUploadStorage",
132
141
  "PasswordUtils",
133
142
  "PhoneBR",
143
+ "PhoneBRField",
134
144
  "Region",
135
145
  "RetryPolicy",
136
146
  "StateBR",
@@ -279,20 +279,29 @@ def normalize_phone_br(value: str) -> str:
279
279
  return only_digits(value)
280
280
 
281
281
 
282
- CPF = Annotated[str, AfterValidator(normalize_cpf)]
283
- """Pydantic type that validates and normalizes a CPF to 11 digits."""
282
+ CPFField = Annotated[str, AfterValidator(normalize_cpf)]
283
+ """Pydantic field type that validates and normalizes a CPF to 11 digits."""
284
284
 
285
- CNPJ = Annotated[str, AfterValidator(normalize_cnpj)]
286
- """Pydantic type that validates and normalizes a CNPJ to 14 digits."""
285
+ CNPJField = Annotated[str, AfterValidator(normalize_cnpj)]
286
+ """Pydantic field type that validates and normalizes a CNPJ to 14 digits."""
287
287
 
288
- CPFOrCNPJ = Annotated[str, AfterValidator(normalize_cpf_cnpj)]
289
- """Pydantic type that accepts either a CPF or a CNPJ."""
288
+ CPFOrCNPJField = Annotated[str, AfterValidator(normalize_cpf_cnpj)]
289
+ """Pydantic field type that accepts either a CPF or a CNPJ."""
290
290
 
291
- PhoneBR = Annotated[str, AfterValidator(normalize_phone_br)]
292
- """Pydantic type that validates a BR phone and normalizes to digits."""
291
+ PhoneBRField = Annotated[str, AfterValidator(normalize_phone_br)]
292
+ """Pydantic field type that validates a BR phone and normalizes to digits."""
293
293
 
294
- CEP = Annotated[str, AfterValidator(normalize_cep)]
295
- """Pydantic type that validates a Brazilian CEP and normalizes to 8 digits."""
294
+ CEPField = Annotated[str, AfterValidator(normalize_cep)]
295
+ """Pydantic field type that validates a Brazilian CEP, normalized to 8 digits."""
296
+
297
+ # Deprecated aliases (pre-0.76 names without the ``Field`` suffix). Kept
298
+ # so existing imports keep working; prefer the ``*Field`` names. Slated
299
+ # for removal in a future major.
300
+ CPF = CPFField
301
+ CNPJ = CNPJField
302
+ CPFOrCNPJ = CPFOrCNPJField
303
+ PhoneBR = PhoneBRField
304
+ CEP = CEPField
296
305
 
297
306
 
298
307
  __all__: list[str] = [
@@ -304,8 +313,13 @@ __all__: list[str] = [
304
313
  "CPF_CNPJ_PATTERN",
305
314
  "CPF_PATTERN",
306
315
  "PHONE_BR_PATTERN",
316
+ "CEPField",
317
+ "CNPJField",
318
+ "CPFField",
307
319
  "CPFOrCNPJ",
320
+ "CPFOrCNPJField",
308
321
  "PhoneBR",
322
+ "PhoneBRField",
309
323
  "is_valid_cep",
310
324
  "is_valid_cnpj",
311
325
  "is_valid_cpf",
@@ -7,8 +7,13 @@ from tempest_fastapi_sdk.utils import (
7
7
  CEP,
8
8
  CNPJ,
9
9
  CPF,
10
+ CEPField,
11
+ CNPJField,
12
+ CPFField,
10
13
  CPFOrCNPJ,
14
+ CPFOrCNPJField,
11
15
  PhoneBR,
16
+ PhoneBRField,
12
17
  is_valid_cep,
13
18
  is_valid_cnpj,
14
19
  is_valid_cpf,
@@ -165,19 +170,23 @@ class TestNormalize:
165
170
 
166
171
 
167
172
  class CPFSchema(BaseModel):
168
- document: CPF
173
+ document: CPFField
169
174
 
170
175
 
171
176
  class CNPJSchema(BaseModel):
172
- document: CNPJ
177
+ document: CNPJField
173
178
 
174
179
 
175
180
  class CPFOrCNPJSchema(BaseModel):
176
- document: CPFOrCNPJ
181
+ document: CPFOrCNPJField
177
182
 
178
183
 
179
184
  class PhoneSchema(BaseModel):
180
- phone: PhoneBR
185
+ phone: PhoneBRField
186
+
187
+
188
+ class CEPSchema(BaseModel):
189
+ cep: CEPField
181
190
 
182
191
 
183
192
  class TestPydanticTypes:
@@ -201,6 +210,19 @@ class TestPydanticTypes:
201
210
  assert CPFOrCNPJSchema(document=VALID_CPF_MASKED).document == VALID_CPF
202
211
  assert CPFOrCNPJSchema(document=VALID_CNPJ_MASKED).document == VALID_CNPJ
203
212
 
213
+ def test_cep_type_normalizes(self) -> None:
214
+ assert CEPSchema(cep="01310-100").cep == "01310100"
215
+
216
+
217
+ class TestDeprecatedAliases:
218
+ def test_old_names_alias_the_field_types(self) -> None:
219
+ """Pre-0.76 names still resolve to the same ``*Field`` types."""
220
+ assert CPF is CPFField
221
+ assert CNPJ is CNPJField
222
+ assert CPFOrCNPJ is CPFOrCNPJField
223
+ assert PhoneBR is PhoneBRField
224
+ assert CEP is CEPField
225
+
204
226
  def test_phone_type_normalizes(self) -> None:
205
227
  result = PhoneSchema(phone="(11) 98888-7777")
206
228
  assert result.phone == "11988887777"
@@ -2822,7 +2822,7 @@ wheels = [
2822
2822
 
2823
2823
  [[package]]
2824
2824
  name = "tempest-fastapi-sdk"
2825
- version = "0.75.0"
2825
+ version = "0.76.0"
2826
2826
  source = { editable = "." }
2827
2827
  dependencies = [
2828
2828
  { name = "alembic" },