tempest-fastapi-sdk 0.78.0__tar.gz → 0.79.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.78.0 → tempest_fastapi_sdk-0.79.0}/CHANGELOG.md +14 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/PKG-INFO +4 -4
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/README.md +3 -3
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/architecture.en.md +1 -1
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/architecture.md +1 -1
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/pyproject.toml +1 -1
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/__init__.py +1 -1
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/controllers/base.py +14 -4
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/services/base.py +16 -5
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/controllers/test_base.py +2 -2
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/services/test_base.py +1 -1
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/uv.lock +1 -1
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/.github/workflows/ci.yml +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/.github/workflows/docs.yml +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/.github/workflows/release-pypi.yml +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/.gitignore +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/.python-version +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/CLAUDE.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/Makefile +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/changelog.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/changelog.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/contributing.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/contributing.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/index.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/index.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/installation.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/installation.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/learning/index.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/learning/index.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/learning/marketplace/api.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/learning/marketplace/api.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/learning/marketplace/business-rules.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/learning/marketplace/business-rules.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/learning/marketplace/domain.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/learning/marketplace/domain.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/learning/marketplace/flows.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/learning/marketplace/flows.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/learning/marketplace/index.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/learning/marketplace/index.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/migration.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/migration.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/admin.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/admin.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/audit-trail.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/audit-trail.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/auth-flow.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/auth-flow.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/br-helpers.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/br-helpers.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/cache.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/cache.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/cli.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/cli.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/database.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/database.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/deploy-safety.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/deploy-safety.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/downloads.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/downloads.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/email.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/email.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/feature-flags.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/feature-flags.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/fields.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/fields.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/http-client.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/http-client.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/http.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/http.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/idempotency.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/idempotency.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/index.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/index.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/logging.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/logging.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/metrics.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/metrics.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/mfa.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/mfa.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/multi-tenant.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/multi-tenant.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/observability.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/observability.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/offline-sync.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/offline-sync.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/outbox.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/outbox.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/queue-tasks.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/queue-tasks.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/realtime.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/realtime.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/refresh-tokens.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/refresh-tokens.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/security.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/security.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/sessions.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/sessions.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/storage.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/storage.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/stored-files.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/stored-files.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/testing.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/testing.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/typing.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/typing.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/uploads.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/uploads.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/utilities.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/utilities.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/webpush.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/webpush.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/websocket.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/recipes/websocket.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/reference.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/reference.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/roadmap.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/roadmap.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/tutorial.en.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/tutorial.md +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/mkdocs.yml +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/mkdocs_hooks/llmstxt.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/scripts/extract_recipe.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/admin/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/admin/auth.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/admin/config.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/admin/discovery.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/admin/forms.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/admin/router.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/admin/session.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/admin/site.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/admin/static/admin.css +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/admin/templates/base.html +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/admin/templates/dashboard.html +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/admin/templates/detail.html +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/admin/templates/form.html +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/admin/templates/list.html +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/admin/templates/login.html +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/admin/templates/logs.html +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/admin/templates/mfa.html +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/admin/theme.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/api/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/api/cookies.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/api/dependencies/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/api/dependencies/auth.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/api/handlers.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/api/middlewares/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/api/middlewares/body_size.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/api/middlewares/cors.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/api/middlewares/csrf.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/api/middlewares/graceful.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/api/middlewares/idempotency.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/api/middlewares/rate_limit.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/api/middlewares/request_id.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/api/oauth.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/api/routers/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/api/routers/health.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/api/routers/logs.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/api/routers/metrics.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/api/routers/tool_spec.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/api/server.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/api/static.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/api/tracing.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/api/webhooks.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/auth/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/auth/guards.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/auth/locale.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/auth/page_renderer.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/auth/router.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/auth/schemas.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/auth/service.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/auth/templates/en-US/activation.html +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/auth/templates/en-US/activation_error.html +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/auth/templates/en-US/activation_success.html +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/auth/templates/en-US/password_reset.html +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/auth/templates/en-US/password_reset_error.html +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/auth/templates/en-US/password_reset_form.html +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/auth/templates/en-US/password_reset_success.html +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/auth/templates/pt-BR/activation.html +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/auth/templates/pt-BR/activation_error.html +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/auth/templates/pt-BR/activation_success.html +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/auth/templates/pt-BR/password_reset.html +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/auth/templates/pt-BR/password_reset_error.html +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/auth/templates/pt-BR/password_reset_form.html +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/auth/templates/pt-BR/password_reset_success.html +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cache/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cache/decorator.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cache/invalidation.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cache/redis_manager.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/_templates/Dockerfile.tmpl +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/_templates/README.md.tmpl +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/_templates/dockerignore.tmpl +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/_templates/env.example.tmpl +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/_templates/gitignore.tmpl +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/_templates/main.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/_templates/pyproject.toml.tmpl +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/_templates/src/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/_templates/src/api/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/_templates/src/api/app.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/_templates/src/api/dependencies/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/_templates/src/api/dependencies/auth.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/_templates/src/api/dependencies/resources.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/_templates/src/api/routers/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/_templates/src/controllers/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/_templates/src/core/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/_templates/src/core/exceptions.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/_templates/src/core/settings.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/_templates/src/db/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/_templates/src/db/models/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/_templates/src/db/models/user.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/_templates/src/db/repositories/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/_templates/src/schemas/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/_templates/src/server.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/_templates/src/services/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/_templates/src/utils/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/_templates/tests/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/_templates/tests/test_smoke.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/config.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/db.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/docker_compose.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/generate.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/lint.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/main.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/new.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/secrets.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/src_layers.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/cli/user.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/controllers/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/core/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/core/context.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/core/enums.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/core/logging.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/core/typed.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/db/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/db/_alembic_templates/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/db/_alembic_templates/env.py.template +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/db/alembic_hooks.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/db/audit.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/db/backup.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/db/connection.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/db/migrations.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/db/mixins.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/db/model.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/db/outbox.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/db/repository.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/db/slow_query.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/db/tenant.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/db/user_model.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/db/user_recovery_code_model.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/db/user_refresh_token_model.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/db/user_token_model.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/exceptions/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/exceptions/base.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/exceptions/conflict.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/exceptions/forbidden.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/exceptions/i18n.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/exceptions/jwt.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/exceptions/not_found.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/exceptions/too_many_requests.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/exceptions/unauthorized.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/exceptions/upload.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/exceptions/validation.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/flags/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/flags/backends.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/flags/dependencies.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/flags/service.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/py.typed +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/queue/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/queue/manager.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/schemas/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/schemas/base.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/schemas/link_headers.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/schemas/logs.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/schemas/pagination.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/schemas/response.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/services/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/services/file_mixin.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/sessions/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/sessions/dependencies.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/sessions/middleware.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/sessions/router.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/sessions/schemas.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/sessions/service.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/sessions/store.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/settings/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/settings/base.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/settings/mixins.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/sse/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/sse/event_stream.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/storage/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/storage/minio_client.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/tasks/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/tasks/manager.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/tasks/scheduler.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/testing/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/testing/database.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/utils/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/utils/client_ip.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/utils/data/br_locations.json +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/utils/datetime.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/utils/dict.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/utils/download.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/utils/email.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/utils/fields.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/utils/http_client.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/utils/jwt.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/utils/locations.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/utils/log.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/utils/metrics.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/utils/opaque_token.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/utils/password.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/utils/regex.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/utils/storage_backends.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/utils/throttle.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/utils/totp.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/utils/upload.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/webpush/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/webpush/dispatcher.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/webpush/schemas.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/websockets/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/websockets/hub.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/websockets/router.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/websockets/schemas.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/admin/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/admin/test_auth.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/admin/test_discovery.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/admin/test_forms.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/admin/test_logs_nav.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/admin/test_mfa.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/admin/test_router.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/admin/test_site.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/admin/test_theme.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/admin/test_user_model.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/api/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/api/test_body_size.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/api/test_cookies.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/api/test_cors.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/api/test_csrf.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/api/test_dependencies_auth.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/api/test_graceful.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/api/test_handlers.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/api/test_health_router.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/api/test_idempotency.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/api/test_jwt_dependency.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/api/test_logs_router.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/api/test_oauth.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/api/test_prometheus.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/api/test_rate_limit.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/api/test_rate_limit_extras.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/api/test_request_id_middleware.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/api/test_role_dependency.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/api/test_server.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/api/test_static.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/api/test_tool_spec.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/api/test_tracing.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/api/test_webhooks.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/api/test_webhooks_rsa.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/auth/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/auth/test_guards.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/auth/test_locale.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/auth/test_mfa.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/auth/test_refresh.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/auth/test_refresh_db.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/auth/test_service.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/cache/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/cache/test_decorator.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/cache/test_invalidation.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/cache/test_redis_manager.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/cli/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/cli/test_config.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/cli/test_db.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/cli/test_db_seed.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/cli/test_docker_compose.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/cli/test_generate.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/cli/test_lint_strictness.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/cli/test_main.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/cli/test_secrets.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/cli/test_user.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/conftest.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/controllers/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/core/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/core/test_context.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/core/test_enums.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/core/test_logging.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/core/test_typed.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/db/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/db/test_alembic_hooks.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/db/test_audit.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/db/test_backup.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/db/test_bulk_ops.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/db/test_connection.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/db/test_migrations.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/db/test_mixins.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/db/test_model.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/db/test_outbox.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/db/test_repository.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/db/test_safe_upgrade.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/db/test_slow_query.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/db/test_tenant.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/exceptions/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/exceptions/test_exceptions.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/exceptions/test_i18n.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/flags/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/flags/test_flags.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/queue/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/queue/test_manager.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/schemas/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/schemas/test_base.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/schemas/test_cursor_pagination.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/schemas/test_link_headers.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/schemas/test_pagination.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/schemas/test_response.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/services/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/services/test_file_mixin.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/sessions/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/sessions/test_sessions.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/settings/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/settings/test_base.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/settings/test_mixins.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/sse/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/sse/test_event_stream.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/storage/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/storage/test_minio_client.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/tasks/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/tasks/test_manager.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/tasks/test_scheduler.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/testing/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/testing/test_database.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/utils/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/utils/test_client_ip.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/utils/test_datetime.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/utils/test_dict.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/utils/test_download.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/utils/test_email.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/utils/test_fields.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/utils/test_http_client.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/utils/test_jwt.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/utils/test_lazy_extras.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/utils/test_locations.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/utils/test_log.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/utils/test_metrics.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/utils/test_opaque_token.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/utils/test_password.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/utils/test_regex.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/utils/test_storage_backends.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/utils/test_throttle.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/utils/test_upload.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/webpush/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/webpush/test_dispatcher.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/webpush/test_schemas.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/websockets/__init__.py +0 -0
- {tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tests/websockets/test_hub_and_router.py +0 -0
|
@@ -5,6 +5,20 @@ 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.79.0] — 2026-06-27
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- **`BaseService` / `BaseController` `update` payload is now generically
|
|
13
|
+
typed.** Both classes gained an optional third type parameter
|
|
14
|
+
`UpdateT` (bound to `BaseSchema`, default `BaseSchema`) so `update`
|
|
15
|
+
accepts the project's own update schema instead of the bare
|
|
16
|
+
`BaseSchema`: `BaseService[Repo, Resp, MyUpdateSchema]` /
|
|
17
|
+
`BaseController[Service, Resp, MyUpdateSchema]`. The default keeps every
|
|
18
|
+
existing two-argument subclass working unchanged. Implemented with a
|
|
19
|
+
PEP 695/696 `TypeVar` default via `typing_extensions` (already present
|
|
20
|
+
through Pydantic).
|
|
21
|
+
|
|
8
22
|
## [0.78.0] — 2026-06-27
|
|
9
23
|
|
|
10
24
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tempest-fastapi-sdk
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.79.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
|
|
@@ -2126,7 +2126,7 @@ Each mixin owns its own env-var prefix — pick only the ones the service needs:
|
|
|
2126
2126
|
|
|
2127
2127
|
`BaseService[RepositoryT, ResponseT]` and `BaseController[ServiceT, ResponseT]` are generic skeletons matching the SDK layering (router → controller → service → repository). They expose pass-through CRUD methods so simple endpoints can subclass them without overriding anything; you override only methods that need orchestration.
|
|
2128
2128
|
|
|
2129
|
-
|
|
2129
|
+
`BaseService[RepositoryT, ResponseT]` accepts an optional third type argument — `BaseService[RepositoryT, ResponseT, UpdateT]` — that types the `update` payload (defaults to `BaseSchema`, so the two-argument form keeps working). What you inherit by subclassing it:
|
|
2130
2130
|
|
|
2131
2131
|
| Method | Returns | Notes |
|
|
2132
2132
|
| --- | --- | --- |
|
|
@@ -2136,7 +2136,7 @@ What you inherit by subclassing `BaseService[RepositoryT, ResponseT]`:
|
|
|
2136
2136
|
| `paginate(filters=None, order_by=None, page=1, page_size=20, ascending=True)` | `dict` with mapped `items` + `total`/`page`/`size`/`pages`. | Offset pagination via `repository.paginate`. |
|
|
2137
2137
|
| `count(filters=None)` | `int` | Pass-through to `repository.count`. |
|
|
2138
2138
|
| `exists(filters)` | `bool` | Pass-through to `repository.exists`. |
|
|
2139
|
-
| `update(id, data)` | `ResponseT` | Fetch by id, copy the fields present in `data` (
|
|
2139
|
+
| `update(id, data)` | `ResponseT` | Fetch by id, copy the fields present in `data` (typed `UpdateT`, the optional 3rd generic param — defaults to `BaseSchema`) onto the row, persist, map. `to_dict()` drops unset/`None`, so it serves PUT and PATCH alike. |
|
|
2140
2140
|
| `delete(id)` | `None` | Hard delete via `repository.delete`. |
|
|
2141
2141
|
|
|
2142
2142
|
`map_to_response` is `await`-ed when it returns a coroutine, so async mappers work transparently — no method override needed.
|
|
@@ -2149,7 +2149,7 @@ What you inherit by subclassing `BaseController[ServiceT, ResponseT]`:
|
|
|
2149
2149
|
| `list(filters, order_by, ascending)` | `service.list` | Same. |
|
|
2150
2150
|
| `paginate(filters, order_by, page, page_size, ascending)` | `service.paginate` | Same. |
|
|
2151
2151
|
| `count(filters)` | `service.count` | Same. |
|
|
2152
|
-
| `update(id, data)` | `service.update` |
|
|
2152
|
+
| `update(id, data)` | `service.update` | `data` typed by the optional 3rd generic param `UpdateT` (defaults to `BaseSchema`). |
|
|
2153
2153
|
| `delete(id)` | `service.delete` | Same. |
|
|
2154
2154
|
|
|
2155
2155
|
When a use case needs domain rules, override the inherited method in the service. When a use case needs to coordinate more than one service, override the inherited method (or add a new one) in the controller. The router never grows — it only depends on the controller.
|
|
@@ -2023,7 +2023,7 @@ Each mixin owns its own env-var prefix — pick only the ones the service needs:
|
|
|
2023
2023
|
|
|
2024
2024
|
`BaseService[RepositoryT, ResponseT]` and `BaseController[ServiceT, ResponseT]` are generic skeletons matching the SDK layering (router → controller → service → repository). They expose pass-through CRUD methods so simple endpoints can subclass them without overriding anything; you override only methods that need orchestration.
|
|
2025
2025
|
|
|
2026
|
-
|
|
2026
|
+
`BaseService[RepositoryT, ResponseT]` accepts an optional third type argument — `BaseService[RepositoryT, ResponseT, UpdateT]` — that types the `update` payload (defaults to `BaseSchema`, so the two-argument form keeps working). What you inherit by subclassing it:
|
|
2027
2027
|
|
|
2028
2028
|
| Method | Returns | Notes |
|
|
2029
2029
|
| --- | --- | --- |
|
|
@@ -2033,7 +2033,7 @@ What you inherit by subclassing `BaseService[RepositoryT, ResponseT]`:
|
|
|
2033
2033
|
| `paginate(filters=None, order_by=None, page=1, page_size=20, ascending=True)` | `dict` with mapped `items` + `total`/`page`/`size`/`pages`. | Offset pagination via `repository.paginate`. |
|
|
2034
2034
|
| `count(filters=None)` | `int` | Pass-through to `repository.count`. |
|
|
2035
2035
|
| `exists(filters)` | `bool` | Pass-through to `repository.exists`. |
|
|
2036
|
-
| `update(id, data)` | `ResponseT` | Fetch by id, copy the fields present in `data` (
|
|
2036
|
+
| `update(id, data)` | `ResponseT` | Fetch by id, copy the fields present in `data` (typed `UpdateT`, the optional 3rd generic param — defaults to `BaseSchema`) onto the row, persist, map. `to_dict()` drops unset/`None`, so it serves PUT and PATCH alike. |
|
|
2037
2037
|
| `delete(id)` | `None` | Hard delete via `repository.delete`. |
|
|
2038
2038
|
|
|
2039
2039
|
`map_to_response` is `await`-ed when it returns a coroutine, so async mappers work transparently — no method override needed.
|
|
@@ -2046,7 +2046,7 @@ What you inherit by subclassing `BaseController[ServiceT, ResponseT]`:
|
|
|
2046
2046
|
| `list(filters, order_by, ascending)` | `service.list` | Same. |
|
|
2047
2047
|
| `paginate(filters, order_by, page, page_size, ascending)` | `service.paginate` | Same. |
|
|
2048
2048
|
| `count(filters)` | `service.count` | Same. |
|
|
2049
|
-
| `update(id, data)` | `service.update` |
|
|
2049
|
+
| `update(id, data)` | `service.update` | `data` typed by the optional 3rd generic param `UpdateT` (defaults to `BaseSchema`). |
|
|
2050
2050
|
| `delete(id)` | `service.delete` | Same. |
|
|
2051
2051
|
|
|
2052
2052
|
When a use case needs domain rules, override the inherited method in the service. When a use case needs to coordinate more than one service, override the inherited method (or add a new one) in the controller. The router never grows — it only depends on the controller.
|
|
@@ -147,7 +147,7 @@ What you inherit by subclassing `BaseService[RepositoryT, ResponseT]`:
|
|
|
147
147
|
| `paginate(filters=None, order_by=None, page=1, page_size=20, ascending=True)` | `dict` with mapped `items` + `total`/`page`/`page_size`/`pages`. | Offset pagination via `repository.paginate`. |
|
|
148
148
|
| `count(filters=None)` | `int` | Pass-through to `repository.count`. |
|
|
149
149
|
| `exists(filters)` | `bool` | Pass-through to `repository.exists`. |
|
|
150
|
-
| `update(id, data)` | `ResponseT` | Fetch by id, copy the fields present in `data` (
|
|
150
|
+
| `update(id, data)` | `ResponseT` | Fetch by id, copy the fields present in `data` (typed by `UpdateT`, the optional 3rd generic param — defaults to `BaseSchema`) onto the row, persist, map. `to_dict()` drops unset/`None`, so it serves PUT and PATCH. |
|
|
151
151
|
| `delete(id)` | `None` | Hard delete via `repository.delete`. |
|
|
152
152
|
|
|
153
153
|
`map_to_response` is `await`-ed when it returns a coroutine, so async mappers work transparently — no method override needed.
|
|
@@ -147,7 +147,7 @@ O que você herda ao subclassear `BaseService[RepositoryT, ResponseT]`:
|
|
|
147
147
|
| `paginate(filters=None, order_by=None, page=1, page_size=20, ascending=True)` | `dict` com `items` mapeados + `total`/`page`/`page_size`/`pages`. | Paginação por offset via `repository.paginate`. |
|
|
148
148
|
| `count(filters=None)` | `int` | Pass-through para `repository.count`. |
|
|
149
149
|
| `exists(filters)` | `bool` | Pass-through para `repository.exists`. |
|
|
150
|
-
| `update(id, data)` | `ResponseT` | Busca por id, copia os campos presentes em `data` (
|
|
150
|
+
| `update(id, data)` | `ResponseT` | Busca por id, copia os campos presentes em `data` (tipado por `UpdateT`, o 3º parâmetro genérico opcional — default `BaseSchema`) na instância, persiste e mapeia. `to_dict()` descarta unset/`None`, então serve PUT e PATCH. |
|
|
151
151
|
| `delete(id)` | `None` | Hard delete via `repository.delete`. |
|
|
152
152
|
|
|
153
153
|
`map_to_response` é aguardado com `await` quando retorna uma coroutine, então mappers async funcionam de forma transparente — sem precisar sobrescrever o método.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "tempest-fastapi-sdk"
|
|
3
|
-
version = "0.
|
|
3
|
+
version = "0.79.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"
|
{tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/controllers/base.py
RENAMED
|
@@ -2,17 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
|
-
from typing import Any, Generic,
|
|
5
|
+
from typing import Any, Generic, cast
|
|
6
6
|
from uuid import UUID
|
|
7
7
|
|
|
8
|
+
from typing_extensions import TypeVar
|
|
9
|
+
|
|
8
10
|
from tempest_fastapi_sdk.schemas.base import BaseSchema
|
|
9
11
|
from tempest_fastapi_sdk.services.base import BaseService
|
|
10
12
|
|
|
11
13
|
ServiceT = TypeVar("ServiceT", bound=BaseService[Any, Any])
|
|
12
14
|
ResponseT = TypeVar("ResponseT")
|
|
15
|
+
UpdateT = TypeVar("UpdateT", bound=BaseSchema, default=BaseSchema)
|
|
16
|
+
"""Update-payload schema for :meth:`BaseController.update`. Defaults to
|
|
17
|
+
:class:`BaseSchema`, so ``BaseController[Service, Resp]`` still works;
|
|
18
|
+
pass a third argument to type the payload precisely."""
|
|
13
19
|
|
|
14
20
|
|
|
15
|
-
class BaseController(Generic[ServiceT, ResponseT]):
|
|
21
|
+
class BaseController(Generic[ServiceT, ResponseT, UpdateT]):
|
|
16
22
|
"""Thin orchestration layer between routers and services.
|
|
17
23
|
|
|
18
24
|
Following the SDK layering rules (router → controller → service →
|
|
@@ -25,6 +31,10 @@ class BaseController(Generic[ServiceT, ResponseT]):
|
|
|
25
31
|
Generic parameters:
|
|
26
32
|
ServiceT: The concrete service class.
|
|
27
33
|
ResponseT: The response schema returned to the router.
|
|
34
|
+
UpdateT: The update-payload schema accepted by :meth:`update`.
|
|
35
|
+
Optional — defaults to :class:`BaseSchema`, so a two-argument
|
|
36
|
+
``BaseController[Service, Resp]`` still works; supply it to
|
|
37
|
+
type the ``update`` payload precisely.
|
|
28
38
|
|
|
29
39
|
Attributes:
|
|
30
40
|
service (ServiceT): The service the controller delegates to.
|
|
@@ -113,12 +123,12 @@ class BaseController(Generic[ServiceT, ResponseT]):
|
|
|
113
123
|
"""
|
|
114
124
|
return await self.service.count(filters)
|
|
115
125
|
|
|
116
|
-
async def update(self, id: UUID, data:
|
|
126
|
+
async def update(self, id: UUID, data: UpdateT) -> ResponseT:
|
|
117
127
|
"""Pass-through to :meth:`BaseService.update`.
|
|
118
128
|
|
|
119
129
|
Args:
|
|
120
130
|
id (UUID): The primary key of the record to update.
|
|
121
|
-
data (
|
|
131
|
+
data (UpdateT): The update payload (unset fields skipped).
|
|
122
132
|
|
|
123
133
|
Returns:
|
|
124
134
|
ResponseT: The mapped, updated response.
|
{tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/services/base.py
RENAMED
|
@@ -3,17 +3,23 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
import inspect
|
|
6
|
-
from typing import Any, Generic
|
|
6
|
+
from typing import Any, Generic
|
|
7
7
|
from uuid import UUID
|
|
8
8
|
|
|
9
|
+
from typing_extensions import TypeVar
|
|
10
|
+
|
|
9
11
|
from tempest_fastapi_sdk.db.repository import BaseRepository
|
|
10
12
|
from tempest_fastapi_sdk.schemas.base import BaseSchema
|
|
11
13
|
|
|
12
14
|
RepositoryT = TypeVar("RepositoryT", bound=BaseRepository[Any])
|
|
13
15
|
ResponseT = TypeVar("ResponseT")
|
|
16
|
+
UpdateT = TypeVar("UpdateT", bound=BaseSchema, default=BaseSchema)
|
|
17
|
+
"""Update-payload schema. Defaults to :class:`BaseSchema`, so a service
|
|
18
|
+
declared as ``BaseService[Repo, Resp]`` keeps working; pass a third
|
|
19
|
+
argument (``BaseService[Repo, Resp, MyUpdateSchema]``) to type ``update``."""
|
|
14
20
|
|
|
15
21
|
|
|
16
|
-
class BaseService(Generic[RepositoryT, ResponseT]):
|
|
22
|
+
class BaseService(Generic[RepositoryT, ResponseT, UpdateT]):
|
|
17
23
|
"""Thin business-logic layer wrapping a :class:`BaseRepository`.
|
|
18
24
|
|
|
19
25
|
The default implementation exposes CRUD pass-through methods that
|
|
@@ -26,6 +32,11 @@ class BaseService(Generic[RepositoryT, ResponseT]):
|
|
|
26
32
|
Generic parameters:
|
|
27
33
|
RepositoryT: The concrete repository class.
|
|
28
34
|
ResponseT: The response schema returned by the service.
|
|
35
|
+
UpdateT: The update-payload schema accepted by :meth:`update`.
|
|
36
|
+
Optional — defaults to :class:`BaseSchema`, so a two-argument
|
|
37
|
+
``BaseService[Repo, Resp]`` still works; supply it
|
|
38
|
+
(``BaseService[Repo, Resp, MyUpdateSchema]``) to type the
|
|
39
|
+
``update`` payload precisely.
|
|
29
40
|
|
|
30
41
|
Attributes:
|
|
31
42
|
repository (RepositoryT): The repository the service delegates to.
|
|
@@ -169,7 +180,7 @@ class BaseService(Generic[RepositoryT, ResponseT]):
|
|
|
169
180
|
"""
|
|
170
181
|
return await self.repository.exists(filters)
|
|
171
182
|
|
|
172
|
-
async def update(self, id: UUID, data:
|
|
183
|
+
async def update(self, id: UUID, data: UpdateT) -> ResponseT:
|
|
173
184
|
"""Apply a partial update to a record and map it to a response.
|
|
174
185
|
|
|
175
186
|
Fetches the row by primary key, copies the fields present in
|
|
@@ -185,8 +196,8 @@ class BaseService(Generic[RepositoryT, ResponseT]):
|
|
|
185
196
|
|
|
186
197
|
Args:
|
|
187
198
|
id (UUID): The primary key of the record to update.
|
|
188
|
-
data (
|
|
189
|
-
``None``) are not applied.
|
|
199
|
+
data (UpdateT): The update payload (a :class:`BaseSchema`).
|
|
200
|
+
Fields left unset (or ``None``) are not applied.
|
|
190
201
|
|
|
191
202
|
Returns:
|
|
192
203
|
ResponseT: The mapped, updated response.
|
|
@@ -46,11 +46,11 @@ class GadgetRepository(BaseRepository[Gadget]):
|
|
|
46
46
|
)
|
|
47
47
|
|
|
48
48
|
|
|
49
|
-
class GadgetService(BaseService[GadgetRepository, GadgetResponse]):
|
|
49
|
+
class GadgetService(BaseService[GadgetRepository, GadgetResponse, GadgetUpdate]):
|
|
50
50
|
pass
|
|
51
51
|
|
|
52
52
|
|
|
53
|
-
class GadgetController(BaseController[GadgetService, GadgetResponse]):
|
|
53
|
+
class GadgetController(BaseController[GadgetService, GadgetResponse, GadgetUpdate]):
|
|
54
54
|
pass
|
|
55
55
|
|
|
56
56
|
|
|
File without changes
|
|
File without changes
|
{tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.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
|
{tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/learning/marketplace/api.en.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/learning/marketplace/domain.en.md
RENAMED
|
File without changes
|
{tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/learning/marketplace/domain.md
RENAMED
|
File without changes
|
{tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/learning/marketplace/flows.en.md
RENAMED
|
File without changes
|
{tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/learning/marketplace/flows.md
RENAMED
|
File without changes
|
{tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/docs/learning/marketplace/index.en.md
RENAMED
|
File without changes
|
{tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.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
|
|
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.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/admin/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/admin/config.py
RENAMED
|
File without changes
|
{tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/admin/discovery.py
RENAMED
|
File without changes
|
{tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/admin/forms.py
RENAMED
|
File without changes
|
{tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/admin/router.py
RENAMED
|
File without changes
|
{tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.0}/tempest_fastapi_sdk/admin/session.py
RENAMED
|
File without changes
|
|
File without changes
|
{tempest_fastapi_sdk-0.78.0 → tempest_fastapi_sdk-0.79.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
|