tempest-fastapi-sdk 0.47.0__tar.gz → 0.48.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.
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/CHANGELOG.md +16 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/PKG-INFO +3 -3
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/README.md +2 -2
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/cli.en.md +16 -1
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/cli.md +16 -1
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/pyproject.toml +1 -1
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/__init__.py +1 -1
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/_templates/env.example.tmpl +5 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/_templates/src/api/app.py.tmpl +5 -4
- tempest_fastapi_sdk-0.48.0/tempest_fastapi_sdk/cli/_templates/src/core/settings.py.tmpl +61 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/uv.lock +1 -1
- tempest_fastapi_sdk-0.47.0/tempest_fastapi_sdk/cli/_templates/src/core/settings.py.tmpl +0 -39
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/.github/workflows/ci.yml +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/.github/workflows/docs.yml +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/.github/workflows/release-pypi.yml +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/.gitignore +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/.python-version +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/CLAUDE.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/Makefile +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/architecture.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/architecture.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/changelog.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/changelog.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/contributing.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/contributing.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/index.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/index.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/installation.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/installation.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/learning/index.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/learning/index.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/learning/marketplace/api.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/learning/marketplace/api.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/learning/marketplace/business-rules.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/learning/marketplace/business-rules.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/learning/marketplace/domain.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/learning/marketplace/domain.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/learning/marketplace/flows.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/learning/marketplace/flows.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/learning/marketplace/index.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/learning/marketplace/index.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/migration.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/migration.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/admin.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/admin.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/auth-flow.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/auth-flow.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/br-helpers.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/br-helpers.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/cache.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/cache.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/database.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/database.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/deploy-safety.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/deploy-safety.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/downloads.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/downloads.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/email.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/email.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/http-client.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/http-client.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/http.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/http.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/idempotency.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/idempotency.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/index.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/index.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/logging.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/logging.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/metrics.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/metrics.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/mfa.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/mfa.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/multi-tenant.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/multi-tenant.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/observability.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/observability.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/outbox.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/outbox.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/queue-tasks.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/queue-tasks.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/realtime.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/realtime.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/security.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/security.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/sessions.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/sessions.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/storage.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/storage.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/testing.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/testing.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/uploads.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/uploads.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/utilities.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/utilities.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/webpush.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/webpush.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/websocket.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/recipes/websocket.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/reference.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/reference.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/roadmap.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/roadmap.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/tutorial.en.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/tutorial.md +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/mkdocs.yml +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/scripts/extract_recipe.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/admin/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/admin/auth.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/admin/config.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/admin/forms.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/admin/router.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/admin/session.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/admin/site.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/admin/static/admin.css +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/admin/templates/base.html +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/admin/templates/dashboard.html +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/admin/templates/detail.html +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/admin/templates/form.html +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/admin/templates/list.html +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/admin/templates/login.html +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/admin/templates/logs.html +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/admin/templates/mfa.html +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/api/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/api/cookies.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/api/dependencies/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/api/dependencies/auth.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/api/handlers.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/api/middlewares/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/api/middlewares/body_size.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/api/middlewares/cors.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/api/middlewares/csrf.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/api/middlewares/graceful.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/api/middlewares/idempotency.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/api/middlewares/rate_limit.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/api/middlewares/request_id.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/api/oauth.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/api/routers/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/api/routers/health.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/api/routers/logs.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/api/routers/metrics.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/api/routers/tool_spec.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/api/server.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/api/static.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/api/tracing.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/api/webhooks.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/auth/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/auth/page_renderer.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/auth/router.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/auth/schemas.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/auth/service.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/auth/templates/activation.html +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/auth/templates/activation_error.html +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/auth/templates/activation_success.html +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/auth/templates/password_reset.html +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/auth/templates/password_reset_error.html +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/auth/templates/password_reset_form.html +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/auth/templates/password_reset_success.html +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cache/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cache/decorator.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cache/redis_manager.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/_templates/README.md.tmpl +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/_templates/gitignore.tmpl +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/_templates/main.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/_templates/pyproject.toml.tmpl +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/_templates/src/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/_templates/src/api/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/_templates/src/api/dependencies/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/_templates/src/api/dependencies/auth.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/_templates/src/api/dependencies/resources.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/_templates/src/api/routers/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/_templates/src/controllers/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/_templates/src/core/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/_templates/src/core/exceptions.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/_templates/src/db/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/_templates/src/db/models/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/_templates/src/db/models/user.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/_templates/src/db/repositories/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/_templates/src/schemas/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/_templates/src/server.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/_templates/src/services/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/_templates/src/utils/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/_templates/tests/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/_templates/tests/test_smoke.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/db.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/docker_compose.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/generate.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/lint.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/main.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/new.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/secrets.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/src_layers.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/cli/user.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/controllers/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/controllers/base.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/core/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/core/context.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/core/enums.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/core/logging.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/db/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/db/_alembic_templates/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/db/_alembic_templates/env.py.template +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/db/alembic_hooks.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/db/connection.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/db/migrations.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/db/mixins.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/db/model.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/db/outbox.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/db/repository.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/db/slow_query.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/db/tenant.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/db/user_model.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/db/user_recovery_code_model.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/db/user_token_model.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/exceptions/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/exceptions/base.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/exceptions/conflict.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/exceptions/forbidden.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/exceptions/jwt.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/exceptions/not_found.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/exceptions/too_many_requests.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/exceptions/unauthorized.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/exceptions/upload.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/exceptions/validation.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/py.typed +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/queue/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/queue/manager.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/schemas/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/schemas/base.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/schemas/link_headers.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/schemas/logs.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/schemas/pagination.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/schemas/response.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/services/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/services/base.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/sessions/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/sessions/dependencies.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/sessions/middleware.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/sessions/router.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/sessions/schemas.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/sessions/service.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/sessions/store.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/settings/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/settings/base.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/settings/mixins.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/sse/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/sse/event_stream.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/storage/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/storage/minio_client.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/tasks/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/tasks/manager.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/tasks/scheduler.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/testing/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/testing/database.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/utils/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/utils/client_ip.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/utils/datetime.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/utils/dict.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/utils/download.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/utils/email.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/utils/http_client.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/utils/jwt.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/utils/log.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/utils/metrics.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/utils/opaque_token.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/utils/password.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/utils/regex.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/utils/storage_backends.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/utils/throttle.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/utils/totp.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/utils/upload.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/webpush/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/webpush/dispatcher.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/webpush/schemas.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/websockets/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/websockets/hub.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/websockets/router.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/websockets/schemas.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/admin/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/admin/test_auth.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/admin/test_forms.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/admin/test_logs_nav.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/admin/test_mfa.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/admin/test_router.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/admin/test_site.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/admin/test_user_model.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/api/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/api/test_body_size.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/api/test_cookies.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/api/test_cors.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/api/test_csrf.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/api/test_dependencies_auth.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/api/test_graceful.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/api/test_handlers.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/api/test_health_router.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/api/test_idempotency.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/api/test_jwt_dependency.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/api/test_logs_router.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/api/test_oauth.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/api/test_prometheus.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/api/test_rate_limit.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/api/test_request_id_middleware.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/api/test_role_dependency.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/api/test_server.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/api/test_static.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/api/test_tool_spec.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/api/test_tracing.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/api/test_webhooks.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/api/test_webhooks_rsa.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/auth/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/auth/test_mfa.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/auth/test_service.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/cache/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/cache/test_decorator.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/cache/test_redis_manager.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/cli/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/cli/test_db.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/cli/test_db_seed.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/cli/test_docker_compose.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/cli/test_generate.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/cli/test_main.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/cli/test_secrets.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/cli/test_user.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/conftest.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/controllers/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/controllers/test_base.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/core/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/core/test_context.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/core/test_enums.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/core/test_logging.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/db/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/db/test_alembic_hooks.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/db/test_bulk_ops.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/db/test_connection.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/db/test_migrations.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/db/test_mixins.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/db/test_model.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/db/test_outbox.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/db/test_repository.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/db/test_safe_upgrade.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/db/test_slow_query.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/db/test_tenant.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/exceptions/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/exceptions/test_exceptions.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/queue/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/queue/test_manager.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/schemas/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/schemas/test_base.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/schemas/test_cursor_pagination.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/schemas/test_link_headers.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/schemas/test_pagination.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/schemas/test_response.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/services/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/services/test_base.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/sessions/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/sessions/test_sessions.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/settings/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/settings/test_base.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/settings/test_mixins.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/sse/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/sse/test_event_stream.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/storage/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/storage/test_minio_client.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/tasks/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/tasks/test_manager.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/tasks/test_scheduler.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/testing/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/testing/test_database.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/utils/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/utils/test_client_ip.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/utils/test_datetime.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/utils/test_dict.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/utils/test_download.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/utils/test_email.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/utils/test_http_client.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/utils/test_jwt.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/utils/test_lazy_extras.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/utils/test_log.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/utils/test_metrics.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/utils/test_opaque_token.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/utils/test_password.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/utils/test_regex.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/utils/test_storage_backends.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/utils/test_throttle.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/utils/test_upload.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/webpush/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/webpush/test_dispatcher.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/webpush/test_schemas.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/websockets/__init__.py +0 -0
- {tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tests/websockets/test_hub_and_router.py +0 -0
|
@@ -5,6 +5,22 @@ 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.48.0] — 2026-06-11
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- **Scaffolded services read their API `title` / `version` /
|
|
13
|
+
`description` from `.env`.** `tempest new` previously hardcoded
|
|
14
|
+
`FastAPI(title="<project>", version="0.1.0")` and the health-router
|
|
15
|
+
version in `src/api/app.py`. The scaffolded `Settings` now carries
|
|
16
|
+
`TITLE`, `DESCRIPTION` and `VERSION` fields (each with `title` /
|
|
17
|
+
`description` / `examples`), `app.py` reads them
|
|
18
|
+
(`FastAPI(title=settings.TITLE, version=settings.VERSION, ...)`,
|
|
19
|
+
`make_health_router(version=settings.VERSION)`,
|
|
20
|
+
`AdminSite(title=f"{settings.TITLE} admin")`), and `.env.example`
|
|
21
|
+
ships a documented `TITLE` / `VERSION` / `DESCRIPTION` block — so the
|
|
22
|
+
OpenAPI docs and admin header are configurable without editing code.
|
|
23
|
+
|
|
8
24
|
## [0.47.0] — 2026-06-11
|
|
9
25
|
|
|
10
26
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tempest-fastapi-sdk
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.48.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
|
|
@@ -3345,7 +3345,7 @@ The skeleton matches the layered architecture documented in this README:
|
|
|
3345
3345
|
my_service/
|
|
3346
3346
|
├── main.py # one-liner → src.server.run()
|
|
3347
3347
|
├── pyproject.toml # pins tempest-fastapi-sdk + ruff/mypy/pytest
|
|
3348
|
-
├── .env.example # HOST/PORT/DATABASE_URL/JWT_SECRET/CORS_ORIGINS
|
|
3348
|
+
├── .env.example # TITLE/VERSION/HOST/PORT/DATABASE_URL/JWT_SECRET/CORS_ORIGINS
|
|
3349
3349
|
├── .gitignore
|
|
3350
3350
|
├── README.md
|
|
3351
3351
|
├── src/
|
|
@@ -3366,7 +3366,7 @@ my_service/
|
|
|
3366
3366
|
└── test_smoke.py # asserts /api/ and /health/liveness boot
|
|
3367
3367
|
```
|
|
3368
3368
|
|
|
3369
|
-
The generated `pyproject.toml` pins the current SDK version (`tempest-fastapi-sdk[auth]>=<version>` by default — change with `--extras`). The scaffolded `.env.example` uses the v0.8.0 settings naming (`SERVER_HOST`/`SERVER_PORT`/`SERVER_DEBUG`/`SERVER_RELOAD`/`LOG_LEVEL`/…), and `src/server.py` delegates to `tempest_fastapi_sdk.run_server` so uvicorn is imported lazily and tests can import the app without it. Validation rules: the project name must match `^[a-z][a-z0-9_]*$` and cannot collide with a Python keyword, so `tempest new Bad-Name` and `tempest new class` exit with code 2 before any file is written.
|
|
3369
|
+
The generated `pyproject.toml` pins the current SDK version (`tempest-fastapi-sdk[auth]>=<version>` by default — change with `--extras`). The scaffolded `.env.example` uses the v0.8.0 settings naming (`SERVER_HOST`/`SERVER_PORT`/`SERVER_DEBUG`/`SERVER_RELOAD`/`LOG_LEVEL`/…), and `src/server.py` delegates to `tempest_fastapi_sdk.run_server` so uvicorn is imported lazily and tests can import the app without it. The API `title`, `version` and `description` shown in the OpenAPI docs (and the `/admin` header) come from the `TITLE` / `VERSION` / `DESCRIPTION` settings — set them in `.env`, no code edits. Validation rules: the project name must match `^[a-z][a-z0-9_]*$` and cannot collide with a Python keyword, so `tempest new Bad-Name` and `tempest new class` exit with code 2 before any file is written.
|
|
3370
3370
|
|
|
3371
3371
|
After scaffolding:
|
|
3372
3372
|
|
|
@@ -3243,7 +3243,7 @@ The skeleton matches the layered architecture documented in this README:
|
|
|
3243
3243
|
my_service/
|
|
3244
3244
|
├── main.py # one-liner → src.server.run()
|
|
3245
3245
|
├── pyproject.toml # pins tempest-fastapi-sdk + ruff/mypy/pytest
|
|
3246
|
-
├── .env.example # HOST/PORT/DATABASE_URL/JWT_SECRET/CORS_ORIGINS
|
|
3246
|
+
├── .env.example # TITLE/VERSION/HOST/PORT/DATABASE_URL/JWT_SECRET/CORS_ORIGINS
|
|
3247
3247
|
├── .gitignore
|
|
3248
3248
|
├── README.md
|
|
3249
3249
|
├── src/
|
|
@@ -3264,7 +3264,7 @@ my_service/
|
|
|
3264
3264
|
└── test_smoke.py # asserts /api/ and /health/liveness boot
|
|
3265
3265
|
```
|
|
3266
3266
|
|
|
3267
|
-
The generated `pyproject.toml` pins the current SDK version (`tempest-fastapi-sdk[auth]>=<version>` by default — change with `--extras`). The scaffolded `.env.example` uses the v0.8.0 settings naming (`SERVER_HOST`/`SERVER_PORT`/`SERVER_DEBUG`/`SERVER_RELOAD`/`LOG_LEVEL`/…), and `src/server.py` delegates to `tempest_fastapi_sdk.run_server` so uvicorn is imported lazily and tests can import the app without it. Validation rules: the project name must match `^[a-z][a-z0-9_]*$` and cannot collide with a Python keyword, so `tempest new Bad-Name` and `tempest new class` exit with code 2 before any file is written.
|
|
3267
|
+
The generated `pyproject.toml` pins the current SDK version (`tempest-fastapi-sdk[auth]>=<version>` by default — change with `--extras`). The scaffolded `.env.example` uses the v0.8.0 settings naming (`SERVER_HOST`/`SERVER_PORT`/`SERVER_DEBUG`/`SERVER_RELOAD`/`LOG_LEVEL`/…), and `src/server.py` delegates to `tempest_fastapi_sdk.run_server` so uvicorn is imported lazily and tests can import the app without it. The API `title`, `version` and `description` shown in the OpenAPI docs (and the `/admin` header) come from the `TITLE` / `VERSION` / `DESCRIPTION` settings — set them in `.env`, no code edits. Validation rules: the project name must match `^[a-z][a-z0-9_]*$` and cannot collide with a Python keyword, so `tempest new Bad-Name` and `tempest new class` exit with code 2 before any file is written.
|
|
3268
3268
|
|
|
3269
3269
|
After scaffolding:
|
|
3270
3270
|
|
|
@@ -39,7 +39,7 @@ The skeleton matches the layered architecture documented in this README:
|
|
|
39
39
|
my_service/
|
|
40
40
|
├── main.py # one-liner → src.server.run()
|
|
41
41
|
├── pyproject.toml # pins tempest-fastapi-sdk + ruff/mypy/pytest
|
|
42
|
-
├── .env.example # HOST/PORT/DATABASE_URL/JWT_SECRET/CORS_ORIGINS
|
|
42
|
+
├── .env.example # TITLE/VERSION/HOST/PORT/DATABASE_URL/JWT_SECRET/CORS_ORIGINS
|
|
43
43
|
├── docker-compose.yaml # services keyed to the chosen extras
|
|
44
44
|
├── .gitignore
|
|
45
45
|
├── README.md
|
|
@@ -63,6 +63,21 @@ my_service/
|
|
|
63
63
|
|
|
64
64
|
The generated `pyproject.toml` pins the current SDK version (`tempest-fastapi-sdk[auth,admin]>=<version>` by default — change with `--extras`). The scaffolded `.env.example` uses the v0.8.0 settings naming (`SERVER_HOST`/`SERVER_PORT`/`SERVER_DEBUG`/`SERVER_RELOAD`/`LOG_LEVEL`/…), and `src/server.py` delegates to `tempest_fastapi_sdk.run_server` so uvicorn is imported lazily and tests can import the app without it. Validation rules: the project name must match `^[a-z][a-z0-9_]*$` and cannot collide with a Python keyword, so `tempest new Bad-Name` and `tempest new class` exit with code 2 before any file is written.
|
|
65
65
|
|
|
66
|
+
!!! tip "API title / version come from `.env`"
|
|
67
|
+
Since v0.48.0 the scaffolded `Settings` carries `TITLE`, `VERSION`
|
|
68
|
+
and `DESCRIPTION`, and `src/api/app.py` consumes them
|
|
69
|
+
(`FastAPI(title=settings.TITLE, version=settings.VERSION,
|
|
70
|
+
description=settings.DESCRIPTION)`, `make_health_router(version=
|
|
71
|
+
settings.VERSION)` and `AdminSite(title=f"{settings.TITLE} admin")`).
|
|
72
|
+
Tune the title shown in Swagger/ReDoc and the `/admin` header from
|
|
73
|
+
`.env`, no code edits:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
TITLE=My API
|
|
77
|
+
VERSION=1.2.0
|
|
78
|
+
DESCRIPTION=Payments API for product X.
|
|
79
|
+
```
|
|
80
|
+
|
|
66
81
|
### Extras-driven `docker-compose.yaml`
|
|
67
82
|
|
|
68
83
|
Since v0.25.0 the scaffold generates a `docker-compose.yaml` carrying **only** the supporting services the chosen extras actually need — no ZooKeeper, no Kafka, nothing you won't use.
|
|
@@ -39,7 +39,7 @@ O esqueleto casa com a arquitetura em camadas documentada neste README:
|
|
|
39
39
|
my_service/
|
|
40
40
|
├── main.py # one-liner → src.server.run()
|
|
41
41
|
├── pyproject.toml # fixa tempest-fastapi-sdk + ruff/mypy/pytest
|
|
42
|
-
├── .env.example # HOST/PORT/DATABASE_URL/JWT_SECRET/CORS_ORIGINS
|
|
42
|
+
├── .env.example # TITLE/VERSION/HOST/PORT/DATABASE_URL/JWT_SECRET/CORS_ORIGINS
|
|
43
43
|
├── docker-compose.yaml # serviços baseados nos extras escolhidos
|
|
44
44
|
├── .gitignore
|
|
45
45
|
├── README.md
|
|
@@ -63,6 +63,21 @@ my_service/
|
|
|
63
63
|
|
|
64
64
|
O `pyproject.toml` gerado fixa a versão atual do SDK (`tempest-fastapi-sdk[auth,admin]>=<versão>` por padrão — mude com `--extras`). O `.env.example` criado usa a nomenclatura de settings da v0.8.0 (`SERVER_HOST`/`SERVER_PORT`/`SERVER_DEBUG`/`SERVER_RELOAD`/`LOG_LEVEL`/…), e `src/server.py` delega a `tempest_fastapi_sdk.run_server` para que o uvicorn seja importado de forma preguiçosa e os testes possam importar o app sem ele. Regras de validação: o nome do projeto deve casar com `^[a-z][a-z0-9_]*$` e não pode colidir com uma palavra-chave do Python, então `tempest new Bad-Name` e `tempest new class` saem com código 2 antes de qualquer arquivo ser escrito.
|
|
65
65
|
|
|
66
|
+
!!! tip "Título / versão da API vêm do `.env`"
|
|
67
|
+
A partir da v0.48.0 o `Settings` scaffoldado carrega `TITLE`,
|
|
68
|
+
`VERSION` e `DESCRIPTION`, e `src/api/app.py` os consome
|
|
69
|
+
(`FastAPI(title=settings.TITLE, version=settings.VERSION,
|
|
70
|
+
description=settings.DESCRIPTION)`, `make_health_router(version=
|
|
71
|
+
settings.VERSION)` e `AdminSite(title=f"{settings.TITLE} admin")`).
|
|
72
|
+
Ajuste o título mostrado no Swagger/ReDoc e no header do `/admin`
|
|
73
|
+
direto no `.env`, sem editar código:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
TITLE=Minha API
|
|
77
|
+
VERSION=1.2.0
|
|
78
|
+
DESCRIPTION=API de pagamentos do produto X.
|
|
79
|
+
```
|
|
80
|
+
|
|
66
81
|
### `docker-compose.yaml` baseado nos extras
|
|
67
82
|
|
|
68
83
|
Desde a v0.25.0 o scaffold gera um `docker-compose.yaml` com **apenas** os serviços que os extras escolhidos precisam — sem ZooKeeper, Kafka ou qualquer outra coisa que você não vai usar.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "tempest-fastapi-sdk"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.48.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"
|
|
@@ -48,8 +48,9 @@ def create_app() -> FastAPI:
|
|
|
48
48
|
FastAPI: A fully wired application ready for uvicorn.
|
|
49
49
|
"""
|
|
50
50
|
app = FastAPI(
|
|
51
|
-
title=
|
|
52
|
-
|
|
51
|
+
title=settings.TITLE,
|
|
52
|
+
description=settings.DESCRIPTION,
|
|
53
|
+
version=settings.VERSION,
|
|
53
54
|
lifespan=lifespan,
|
|
54
55
|
)
|
|
55
56
|
|
|
@@ -58,7 +59,7 @@ def create_app() -> FastAPI:
|
|
|
58
59
|
register_exception_handlers(app)
|
|
59
60
|
|
|
60
61
|
app.include_router(
|
|
61
|
-
make_health_router(db=db, version=
|
|
62
|
+
make_health_router(db=db, version=settings.VERSION),
|
|
62
63
|
)
|
|
63
64
|
app.include_router(
|
|
64
65
|
make_logs_router(
|
|
@@ -72,7 +73,7 @@ def create_app() -> FastAPI:
|
|
|
72
73
|
# Alembic migration:
|
|
73
74
|
# uv run alembic upgrade head
|
|
74
75
|
# uv run python -c "..." # set hashed_password + is_admin=True
|
|
75
|
-
admin_site = AdminSite(title="
|
|
76
|
+
admin_site = AdminSite(title=f"{settings.TITLE} admin")
|
|
76
77
|
admin_site.register(AdminModel(model=UserModel))
|
|
77
78
|
app.include_router(
|
|
78
79
|
make_admin_router(
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"""Application settings — composed from SDK mixins + service overrides."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from pydantic import Field
|
|
6
|
+
|
|
7
|
+
from tempest_fastapi_sdk import (
|
|
8
|
+
BaseAppSettings,
|
|
9
|
+
CORSSettings,
|
|
10
|
+
DatabaseSettings,
|
|
11
|
+
JWTSettings,
|
|
12
|
+
LogSettings,
|
|
13
|
+
ServerSettings,
|
|
14
|
+
TokenSettings,
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class Settings(
|
|
19
|
+
ServerSettings,
|
|
20
|
+
LogSettings,
|
|
21
|
+
DatabaseSettings,
|
|
22
|
+
JWTSettings,
|
|
23
|
+
TokenSettings,
|
|
24
|
+
CORSSettings,
|
|
25
|
+
BaseAppSettings,
|
|
26
|
+
):
|
|
27
|
+
"""Service-wide settings backed by the ``.env`` file.
|
|
28
|
+
|
|
29
|
+
Attributes:
|
|
30
|
+
TITLE (str): API title shown in the OpenAPI docs and the admin
|
|
31
|
+
panel header. Override via the ``TITLE`` env var.
|
|
32
|
+
DESCRIPTION (str): Optional API description shown in the OpenAPI
|
|
33
|
+
docs. Override via the ``DESCRIPTION`` env var.
|
|
34
|
+
VERSION (str): Version surfaced in the OpenAPI docs and on the
|
|
35
|
+
health router. Override via the ``VERSION`` env var.
|
|
36
|
+
"""
|
|
37
|
+
|
|
38
|
+
TITLE: str = Field(
|
|
39
|
+
default="__PROJECT_NAME__",
|
|
40
|
+
title="API title",
|
|
41
|
+
description="Shown in the OpenAPI docs and the admin panel header.",
|
|
42
|
+
examples=["__PROJECT_NAME__"],
|
|
43
|
+
)
|
|
44
|
+
DESCRIPTION: str = Field(
|
|
45
|
+
default="",
|
|
46
|
+
title="API description",
|
|
47
|
+
description="Optional summary shown in the OpenAPI docs.",
|
|
48
|
+
examples=["Backend API for __PROJECT_NAME__."],
|
|
49
|
+
)
|
|
50
|
+
VERSION: str = Field(
|
|
51
|
+
default="0.1.0",
|
|
52
|
+
title="API version",
|
|
53
|
+
description="Surfaced in the OpenAPI docs and the health router.",
|
|
54
|
+
examples=["0.1.0"],
|
|
55
|
+
)
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
settings = Settings()
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
__all__: list[str] = ["Settings", "settings"]
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
"""Application settings — composed from SDK mixins + service overrides."""
|
|
2
|
-
|
|
3
|
-
from __future__ import annotations
|
|
4
|
-
|
|
5
|
-
from pydantic import Field
|
|
6
|
-
|
|
7
|
-
from tempest_fastapi_sdk import (
|
|
8
|
-
BaseAppSettings,
|
|
9
|
-
CORSSettings,
|
|
10
|
-
DatabaseSettings,
|
|
11
|
-
JWTSettings,
|
|
12
|
-
LogSettings,
|
|
13
|
-
ServerSettings,
|
|
14
|
-
TokenSettings,
|
|
15
|
-
)
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
class Settings(
|
|
19
|
-
ServerSettings,
|
|
20
|
-
LogSettings,
|
|
21
|
-
DatabaseSettings,
|
|
22
|
-
JWTSettings,
|
|
23
|
-
TokenSettings,
|
|
24
|
-
CORSSettings,
|
|
25
|
-
BaseAppSettings,
|
|
26
|
-
):
|
|
27
|
-
"""Service-wide settings backed by the ``.env`` file.
|
|
28
|
-
|
|
29
|
-
Attributes:
|
|
30
|
-
VERSION (str): Version surfaced on the health router.
|
|
31
|
-
"""
|
|
32
|
-
|
|
33
|
-
VERSION: str = Field(default="0.1.0")
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
settings = Settings()
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
__all__: list[str] = ["Settings", "settings"]
|
|
File without changes
|
|
File without changes
|
{tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/.github/workflows/release-pypi.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/learning/marketplace/api.en.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/learning/marketplace/domain.en.md
RENAMED
|
File without changes
|
{tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/learning/marketplace/domain.md
RENAMED
|
File without changes
|
{tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/learning/marketplace/flows.en.md
RENAMED
|
File without changes
|
{tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/learning/marketplace/flows.md
RENAMED
|
File without changes
|
{tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/learning/marketplace/index.en.md
RENAMED
|
File without changes
|
{tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/docs/learning/marketplace/index.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/admin/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/admin/config.py
RENAMED
|
File without changes
|
{tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/admin/forms.py
RENAMED
|
File without changes
|
{tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/admin/router.py
RENAMED
|
File without changes
|
{tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/admin/session.py
RENAMED
|
File without changes
|
|
File without changes
|
{tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/admin/static/admin.css
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/api/__init__.py
RENAMED
|
File without changes
|
{tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/api/cookies.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tempest_fastapi_sdk-0.47.0 → tempest_fastapi_sdk-0.48.0}/tempest_fastapi_sdk/api/handlers.py
RENAMED
|
File without changes
|
|
File without changes
|