tempest-fastapi-sdk 0.294.0__tar.gz → 0.296.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.294.0 → tempest_fastapi_sdk-0.296.0}/CHANGELOG.md +183 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/PKG-INFO +101 -2
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/README.md +100 -1
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/SHIPPED.md +42 -1
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/architecture.en.md +53 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/architecture.md +53 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/index.en.md +4 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/index.md +4 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/cli.en.md +562 -2
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/cli.md +565 -2
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/reference.md +1 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/tutorial.en.md +1 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/tutorial.md +1 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/pyproject.toml +1 -1
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/__init__.py +5 -1
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/api/__init__.py +4 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/api/handlers.py +49 -9
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/api/middlewares/__init__.py +8 -0
- tempest_fastapi_sdk-0.296.0/tempest_fastapi_sdk/api/middlewares/error_envelope.py +154 -0
- tempest_fastapi_sdk-0.296.0/tempest_fastapi_sdk/cli/agents.py +158 -0
- tempest_fastapi_sdk-0.296.0/tempest_fastapi_sdk/cli/cache.py +229 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/db.py +44 -0
- tempest_fastapi_sdk-0.296.0/tempest_fastapi_sdk/cli/doctor.py +414 -0
- tempest_fastapi_sdk-0.296.0/tempest_fastapi_sdk/cli/email.py +122 -0
- tempest_fastapi_sdk-0.296.0/tempest_fastapi_sdk/cli/flags.py +158 -0
- tempest_fastapi_sdk-0.296.0/tempest_fastapi_sdk/cli/integrations.py +264 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/main.py +32 -0
- tempest_fastapi_sdk-0.296.0/tempest_fastapi_sdk/cli/openapi_export.py +240 -0
- tempest_fastapi_sdk-0.296.0/tempest_fastapi_sdk/cli/project.py +365 -0
- tempest_fastapi_sdk-0.296.0/tempest_fastapi_sdk/cli/queue.py +174 -0
- tempest_fastapi_sdk-0.296.0/tempest_fastapi_sdk/cli/routes.py +239 -0
- tempest_fastapi_sdk-0.296.0/tempest_fastapi_sdk/cli/secrets.py +548 -0
- tempest_fastapi_sdk-0.296.0/tempest_fastapi_sdk/cli/serve.py +97 -0
- tempest_fastapi_sdk-0.296.0/tempest_fastapi_sdk/cli/shell.py +245 -0
- tempest_fastapi_sdk-0.296.0/tempest_fastapi_sdk/cli/storage.py +239 -0
- tempest_fastapi_sdk-0.296.0/tempest_fastapi_sdk/cli/tasks.py +208 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/user.py +570 -0
- tempest_fastapi_sdk-0.296.0/tests/api/test_error_envelope.py +296 -0
- tempest_fastapi_sdk-0.296.0/tests/cli/test_agents.py +193 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/cli/test_db.py +105 -0
- tempest_fastapi_sdk-0.296.0/tests/cli/test_doctor.py +124 -0
- tempest_fastapi_sdk-0.296.0/tests/cli/test_email_storage.py +363 -0
- tempest_fastapi_sdk-0.296.0/tests/cli/test_flags_cache.py +138 -0
- tempest_fastapi_sdk-0.296.0/tests/cli/test_integrations.py +207 -0
- tempest_fastapi_sdk-0.296.0/tests/cli/test_openapi_export.py +140 -0
- tempest_fastapi_sdk-0.296.0/tests/cli/test_queue_tasks.py +243 -0
- tempest_fastapi_sdk-0.296.0/tests/cli/test_routes.py +188 -0
- tempest_fastapi_sdk-0.296.0/tests/cli/test_secrets.py +349 -0
- tempest_fastapi_sdk-0.296.0/tests/cli/test_serve.py +138 -0
- tempest_fastapi_sdk-0.296.0/tests/cli/test_shell.py +152 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/cli/test_user.py +371 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/test_docs_signature_guard.py +9 -1
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/uv.lock +1 -1
- tempest_fastapi_sdk-0.294.0/tempest_fastapi_sdk/cli/secrets.py +0 -177
- tempest_fastapi_sdk-0.294.0/tests/cli/test_secrets.py +0 -111
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/.github/ISSUE_TEMPLATE/docs.yml +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/.github/ISSUE_TEMPLATE/question.yml +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/.github/workflows/ci.yml +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/.github/workflows/docs.yml +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/.github/workflows/nightly-model.yml +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/.github/workflows/release-pypi.yml +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/.gitignore +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/.python-version +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/CLAUDE.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/LESSONS.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/Makefile +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/CLAUDE.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/admin-showcase.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/admin-showcase.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/changelog.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/changelog.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/contributing.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/contributing.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/fullstack-web.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/fullstack-web.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/genai-examples.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/genai-examples.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/getting-started/first-project.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/getting-started/first-project.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/getting-started/python-versions.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/getting-started/python-versions.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/getting-started/references.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/getting-started/references.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/getting-started/uv.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/getting-started/uv.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/installation.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/installation.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/integrated.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/integrated.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/learning/index.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/learning/index.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/learning/marketplace/api.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/learning/marketplace/api.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/learning/marketplace/business-rules.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/learning/marketplace/business-rules.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/learning/marketplace/domain.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/learning/marketplace/domain.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/learning/marketplace/flows.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/learning/marketplace/flows.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/learning/marketplace/index.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/learning/marketplace/index.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/marketplace-local.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/marketplace-local.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/migration.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/migration.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/admin-sql-console.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/admin-sql-console.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/admin.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/admin.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/agents-advanced.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/agents-advanced.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/agents-architecture.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/agents-architecture.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/agents-concepts.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/agents-concepts.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/agents-db.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/agents-db.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/agents-testing.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/agents-testing.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/agents.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/agents.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/app-errors.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/app-errors.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/artifact-registry.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/artifact-registry.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/asyncapi-client.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/asyncapi-client.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/audit-trail.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/audit-trail.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/auth-flow.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/auth-flow.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/authz.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/authz.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/br-helpers.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/br-helpers.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/cache.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/cache.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/chat.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/chat.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/database.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/database.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/deploy-safety.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/deploy-safety.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/downloads.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/downloads.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/email.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/email.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/enum-columns.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/enum-columns.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/faces.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/faces.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/fakes.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/fakes.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/feature-flags.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/feature-flags.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/fields.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/fields.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/file-store.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/file-store.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/firebase-auth.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/firebase-auth.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/genai.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/genai.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/geo.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/geo.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/hostbridge.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/hostbridge.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/http-client.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/http-client.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/http.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/http.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/idempotency.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/idempotency.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/image-generation.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/image-generation.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/index.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/index.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/introspection-auth.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/introspection-auth.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/jobs.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/jobs.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/logging.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/logging.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/management-commands.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/management-commands.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/mercado-pago.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/mercado-pago.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/metrics.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/metrics.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/mfa.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/mfa.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/migrations.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/migrations.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/model-weights.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/model-weights.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/modelops.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/modelops.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/models.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/models.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/multi-tenant.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/multi-tenant.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/oauth.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/oauth.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/observability.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/observability.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/offline-sync.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/offline-sync.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/openapi-client.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/openapi-client.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/openapi-errors.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/openapi-errors.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/openpix-subscriptions.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/openpix-subscriptions.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/openpix.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/openpix.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/outbox.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/outbox.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/pdf.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/pdf.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/permission-guards.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/permission-guards.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/pix-protocol.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/pix-protocol.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/push.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/push.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/query-plans.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/query-plans.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/queue-tasks.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/queue-tasks.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/react-spa.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/react-spa.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/realtime.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/realtime.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/refresh-tokens.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/refresh-tokens.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/reviews.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/reviews.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/security.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/security.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/sessions.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/sessions.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/spreadsheets.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/spreadsheets.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/sse.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/sse.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/storage.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/storage.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/stored-files.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/stored-files.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/stripe.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/stripe.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/system-checks.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/system-checks.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/tempestweb-frontend.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/tempestweb-frontend.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/testing.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/testing.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/text-search.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/text-search.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/transactions.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/transactions.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/transcription-pipeline.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/transcription-pipeline.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/typing.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/typing.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/ui-css.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/ui-css.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/ui-forms.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/ui-forms.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/ui.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/ui.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/uploads.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/uploads.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/utilities.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/utilities.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/vision.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/vision.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/webauthn.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/webauthn.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/webpush.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/webpush.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/websocket.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/websocket.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/zap.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/recipes/zap.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/reference.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/roadmap.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/roadmap.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/ssr.en.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/docs/ssr.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/mkdocs.yml +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/mkdocs_hooks/llmstxt.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/planning/genai/README.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/planning/genai/manual-validation.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/planning/genai/phase-0.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/planning/genai/phase-1.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/planning/genai/phase-2.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/planning/genai/phase-3.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/planning/genai/validation-strategy.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/scripts/export_order.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/scripts/extract_recipe.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/scripts/face_separation.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/scripts/mercadopago_diff.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/scripts/mercadopago_overlay.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/scripts/openpix_diff.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/scripts/openpix_overlay.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/scripts/regen_mercado_pago.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/scripts/regen_openpix.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/scripts/regen_stripe.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/scripts/regen_zap.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/scripts/regen_zap_ws.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/admin/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/admin/actions.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/admin/auth.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/admin/config.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/admin/dashboard.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/admin/discovery.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/admin/forms.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/admin/permissions.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/admin/router.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/admin/session.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/admin/site.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/admin/sql_shell.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/admin/static/admin.css +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/admin/tasks.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/admin/templates/autocomplete.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/admin/templates/base.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/admin/templates/dashboard.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/admin/templates/detail.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/admin/templates/form.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/admin/templates/import.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/admin/templates/list.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/admin/templates/login.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/admin/templates/logs.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/admin/templates/mfa.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/admin/templates/sql_shell.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/admin/templates/task_detail.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/admin/templates/tasks.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/admin/theme.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/agents/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/agents/agent.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/agents/builtin.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/agents/fact_stores.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/agents/loop.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/agents/memory.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/agents/multi.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/agents/protocols.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/agents/router.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/agents/schemas.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/agents/skills.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/agents/storage.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/agents/structured.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/agents/testing.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/agents/tools.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/agents/typed.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/api/cookies.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/api/dependencies/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/api/dependencies/auth.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/api/error_docs.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/api/middlewares/_exempt.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/api/middlewares/_streaming.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/api/middlewares/access_log.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/api/middlewares/body_size.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/api/middlewares/cors.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/api/middlewares/csrf.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/api/middlewares/graceful.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/api/middlewares/honeypot.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/api/middlewares/idempotency.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/api/middlewares/quota.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/api/middlewares/rate_limit.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/api/middlewares/request_id.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/api/middlewares/response_cache.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/api/oauth.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/api/routers/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/api/routers/health.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/api/routers/logs.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/api/routers/metrics.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/api/routers/tool_spec.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/api/server.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/api/spa.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/api/static.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/api/tracing.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/api/webhooks.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/app_errors/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/app_errors/constants.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/app_errors/models.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/app_errors/router.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/app_errors/schemas.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/app_errors/service.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/artifacts/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/artifacts/actions.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/artifacts/digest.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/artifacts/model.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/artifacts/registry.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/asyncapi/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/asyncapi/emit_stream.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/asyncapi/generate.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/asyncapi/ir.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/asyncapi/loader.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/asyncapi/parse.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/firebase.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/guards.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/introspection.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/locale.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/page_renderer.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/router.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/schemas.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/service.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/templates/en-US/activation.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/templates/en-US/activation_error.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/templates/en-US/activation_success.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/templates/en-US/email_change.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/templates/en-US/email_change_error.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/templates/en-US/email_change_success.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/templates/en-US/email_changed_notice.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/templates/en-US/email_verification.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/templates/en-US/email_verification_error.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/templates/en-US/email_verification_success.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/templates/en-US/password_reset.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/templates/en-US/password_reset_error.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/templates/en-US/password_reset_form.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/templates/en-US/password_reset_success.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/templates/pt-BR/activation.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/templates/pt-BR/activation_error.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/templates/pt-BR/activation_success.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/templates/pt-BR/email_change.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/templates/pt-BR/email_change_error.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/templates/pt-BR/email_change_success.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/templates/pt-BR/email_changed_notice.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/templates/pt-BR/email_verification.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/templates/pt-BR/email_verification_error.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/templates/pt-BR/email_verification_success.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/templates/pt-BR/password_reset.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/templates/pt-BR/password_reset_error.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/templates/pt-BR/password_reset_form.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/templates/pt-BR/password_reset_success.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/token_delivery.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/auth/webauthn.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/authz/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/authz/dependencies.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/authz/permissions.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/authz/requires.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cache/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cache/decorator.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cache/invalidation.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cache/redis_manager.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/chat/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/chat/constants.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/chat/models.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/chat/router.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/chat/schemas.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/chat/service.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/checks/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/checks/builtins.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/checks/messages.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/checks/registry.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/_templates/CLAUDE.md.tmpl +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/_templates/Dockerfile.tmpl +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/_templates/README.md.tmpl +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/_templates/dockerignore.tmpl +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/_templates/env.example.tmpl +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/_templates/gitignore.tmpl +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/_templates/main.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/_templates/pyproject.toml.tmpl +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/_templates/src/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/_templates/src/api/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/_templates/src/api/app.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/_templates/src/api/dependencies/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/_templates/src/api/dependencies/auth.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/_templates/src/api/dependencies/resources.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/_templates/src/api/routers/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/_templates/src/controllers/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/_templates/src/core/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/_templates/src/core/exceptions.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/_templates/src/core/settings.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/_templates/src/db/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/_templates/src/db/configs/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/_templates/src/db/configs/names.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/_templates/src/db/models/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/_templates/src/db/models/user.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/_templates/src/db/repositories/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/_templates/src/schemas/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/_templates/src/server.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/_templates/src/services/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/_templates/src/utils/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/_templates/tests/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/_templates/tests/test_smoke.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/commands.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/config.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/docker_compose.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/generate.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/lint.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/model.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/new.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/openapi_errors.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/openapi_fix.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/pdf.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/permissions.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/pr_prompt.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/src_layers.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/cli/voice.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/controllers/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/controllers/base.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/core/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/core/context.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/core/enums.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/core/logging.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/core/typed.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/db/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/db/_alembic_templates/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/db/_alembic_templates/env.py.template +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/db/alembic_hooks.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/db/audit.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/db/backup.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/db/connection.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/db/datetime_type.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/db/device_token_model.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/db/enum_migrations.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/db/enums.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/db/explain.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/db/expressions.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/db/integrity.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/db/migrations.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/db/mixins.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/db/model.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/db/outbox.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/db/repository.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/db/search.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/db/signals.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/db/slow_query.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/db/tenant.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/db/transaction.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/db/user_model.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/db/user_oauth_account_model.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/db/user_recovery_code_model.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/db/user_refresh_token_model.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/db/user_token_model.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/db/user_webauthn_credential_model.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/db/voice_profile_model.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/db/webpush_subscription_model.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/exceptions/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/exceptions/base.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/exceptions/conflict.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/exceptions/factories.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/exceptions/forbidden.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/exceptions/i18n.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/exceptions/jwt.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/exceptions/not_found.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/exceptions/oauth.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/exceptions/too_many_requests.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/exceptions/unauthorized.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/exceptions/upload.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/exceptions/validation.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/exceptions/value_errors.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/faces/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/faces/detector.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/faces/geometry.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/faces/models.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/faces/recognizer.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/faces/schemas.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/flags/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/flags/backends.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/flags/dependencies.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/flags/service.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/admin.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/audio/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/audio/conversation.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/audio/diarization.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/audio/language.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/audio/profiles.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/audio/router.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/audio/schemas.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/audio/speaker_count.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/audio/stt.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/audio/tts.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/audio/voiceprint.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/batching.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/catalog.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/embeddings.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/generation_cache.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/hardware.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/hub.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/image.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/inventory.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/metrics.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/moderation.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/ollama.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/onnx_embed.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/openai_compat.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/pipeline.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/rag/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/rag/chroma.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/rag/chunking.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/rag/context.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/rag/extract.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/rag/fusion.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/rag/hybrid.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/rag/pdf.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/rag/rerank.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/rag/retriever.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/rag/schemas.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/rag/search.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/rag/vectorstore.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/registry.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/router.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/schemas.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/structured.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/text.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/tokens.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/tracing.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/usage.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/genai/vision_text.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/geo/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/geo/br.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/geo/db.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/geo/distance.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/geo/enums.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/geo/estimate.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/geo/geocoding.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/geo/geometry.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/geo/polyline.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/geo/routing.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/geo/schemas.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/hostbridge/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/hostbridge/bridge.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/hostbridge/config.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/hostbridge/exceptions.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/hostbridge/paths.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/hostbridge/router.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/hostbridge/schemas.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/hostbridge/shell.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/CLAUDE.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/messaging/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/messaging/zap/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/messaging/zap/client.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/messaging/zap/schemas.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/messaging/zap_ws/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/messaging/zap_ws/schemas.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/messaging/zap_ws/stream.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/payment/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/payment/adapters/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/payment/adapters/openpix.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/payment/base.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/payment/mercado_pago/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/payment/mercado_pago/client.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/payment/mercado_pago/environment.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/payment/mercado_pago/events.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/payment/mercado_pago/money.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/payment/mercado_pago/pix.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/payment/mercado_pago/schemas.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/payment/mercado_pago/webhooks.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/payment/openpix/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/payment/openpix/client.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/payment/openpix/environment.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/payment/openpix/events.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/payment/openpix/money.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/payment/openpix/schemas.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/payment/openpix/webhooks.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/payment/stripe/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/payment/stripe/client.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/payment/stripe/environment.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/payment/stripe/events.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/payment/stripe/money.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/payment/stripe/schemas.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/integrations/payment/stripe/webhooks.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/modelops/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/modelops/_fs.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/modelops/bench.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/modelops/compact.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/modelops/compose.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/modelops/edge.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/modelops/energy.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/modelops/export.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/modelops/monitoring.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/modelops/pickled.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/modelops/quantize.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/modelops/ranking.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/modelops/router.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/modelops/schemas.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/modelops/serving.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/modelops/sklearn.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/modelops/static.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/openapi/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/openapi/emit_client.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/openapi/emit_schemas.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/openapi/generate.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/openapi/ir.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/openapi/loader.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/openapi/naming.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/openapi/parse.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/openapi/source.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/pdf/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/pdf/assets.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/pdf/documents.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/pdf/formatting.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/pdf/pages.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/pdf/reader.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/pdf/renderer.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/pdf/router.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/pdf/templates/_base.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/pdf/templates/_party.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/pdf/templates/_styles.css +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/pdf/templates/contract.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/pdf/templates/quote.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/pdf/templates/receipt.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/pdf/templates/report.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/pdf/templates/voucher.html +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/push/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/push/dispatcher.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/push/router.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/push/schemas.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/push/service.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/push/transports/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/push/transports/fcm.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/push/transports/webpush.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/py.typed +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/queue/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/queue/broker.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/queue/consumer.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/queue/dedup.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/queue/manager.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/queue/publisher.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/queue/reliability.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/queue/topology.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/queue/tracing.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/reviews/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/reviews/models.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/reviews/router.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/reviews/schemas.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/reviews/service.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/schemas/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/schemas/base.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/schemas/errors.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/schemas/link_headers.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/schemas/logs.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/schemas/pagination.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/schemas/response.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/services/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/services/base.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/services/file_mixin.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/sessions/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/sessions/dependencies.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/sessions/middleware.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/sessions/router.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/sessions/schemas.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/sessions/service.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/sessions/store.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/settings/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/settings/base.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/settings/mixins.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/spreadsheet/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/spreadsheet/formats.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/spreadsheet/styles.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/spreadsheet/writer.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/sse/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/sse/broker.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/sse/event_stream.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ssr/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ssr/_static/htmx.min.js +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ssr/assets.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ssr/attributes.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ssr/page.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ssr/response.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ssr/webapp.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/storage/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/storage/minio_client.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/tasks/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/tasks/cancellation.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/tasks/cron.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/tasks/dead_letter.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/tasks/jobs.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/tasks/lock.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/tasks/manager.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/tasks/observability.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/tasks/oop.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/tasks/progress.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/tasks/queue.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/tasks/scheduler.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/tasks/stages.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/testing/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/testing/database.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/testing/factories.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/testing/fakes/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/testing/fakes/_control.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/testing/fakes/email.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/testing/fakes/genai.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/testing/fakes/geo.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/testing/fakes/payment.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/testing/fakes/push.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/testing/fakes/search.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ui/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ui/_core.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ui/components/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ui/components/alert.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ui/components/card.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ui/components/classes.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ui/components/empty.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ui/components/nav.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ui/components/pagination.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ui/components/styles.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ui/components/table.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ui/css/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ui/css/router.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ui/css/rules.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ui/css/tokens.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ui/forms/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ui/forms/introspect.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ui/forms/parse.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ui/forms/render.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ui/forms/spec.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ui/forms/styles.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ui/layout/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ui/layout/grid.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ui/layout/shell.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ui/pages/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ui/pages/page.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/ui/stylesheet.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/utils/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/utils/client_ip.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/utils/currency.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/utils/data/br_locations.json +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/utils/datetime.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/utils/dict.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/utils/download.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/utils/email.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/utils/fields.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/utils/file_store.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/utils/forms.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/utils/http_client.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/utils/jwt.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/utils/locations.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/utils/log.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/utils/metrics.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/utils/naming.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/utils/opaque_token.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/utils/password.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/utils/regex.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/utils/retry.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/utils/storage_backends.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/utils/throttle.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/utils/token_types.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/utils/totp.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/utils/upload.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/vision/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/vision/mapping.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/vision/router.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/vision/schemas.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/webpush/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/webpush/dispatcher.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/webpush/router.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/webpush/schemas.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/webpush/service.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/websockets/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/websockets/heartbeat.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/websockets/hub.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/websockets/router.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tempest_fastapi_sdk/websockets/schemas.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/CLAUDE.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/admin/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/admin/test_actions.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/admin/test_audit_viewer.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/admin/test_auth.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/admin/test_autocomplete_fk.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/admin/test_csv_import.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/admin/test_dashboard_cards.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/admin/test_discovery.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/admin/test_display_timezone.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/admin/test_form_error_rollback.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/admin/test_forms.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/admin/test_inlines.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/admin/test_lenses.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/admin/test_logs_nav.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/admin/test_logs_traceback_export.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/admin/test_mfa.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/admin/test_password_field.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/admin/test_rbac.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/admin/test_rich_filters.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/admin/test_router.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/admin/test_site.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/admin/test_sql_shell.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/admin/test_sql_shell_page.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/admin/test_tasks_panel.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/admin/test_theme.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/admin/test_upload_field.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/admin/test_user_model.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/admin/test_widgets_json_time.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/agents/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/agents/test_agent.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/agents/test_agent_router.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/agents/test_builtin_tools.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/agents/test_fact_stores.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/agents/test_memory.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/agents/test_multi_agent.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/agents/test_skills.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/agents/test_typed_tools.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_access_log.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_body_size.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_business_metrics.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_client_error_envelope.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_cookies.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_cors.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_csrf.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_dependencies_auth.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_error_docs.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_error_field.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_graceful.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_handlers.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_health_router.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_honeypot.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_idempotency.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_jwt_dependency.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_logs_router.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_middleware_exempt_semantics.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_oauth.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_outbound_webhooks.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_prometheus.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_quota.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_rate_limit.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_rate_limit_envelope.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_rate_limit_extras.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_rate_limit_fail_open.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_rate_limit_redis_proxy.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_request_id_middleware.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_response_cache.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_role_dependency.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_server.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_server_error_notify.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_spa.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_static.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_streaming_passthrough.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_token_type_strict.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_tool_spec.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_tracing.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_validation_envelope.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_webhooks.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/api/test_webhooks_rsa.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/app_errors/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/app_errors/test_app_errors.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/artifacts/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/artifacts/support.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/artifacts/test_actions.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/artifacts/test_digest.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/artifacts/test_registry.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/asyncapi/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/asyncapi/conftest.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/asyncapi/test_generate.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/asyncapi/test_loader.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/asyncapi/test_parse.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/auth/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/auth/test_cookie_delivery.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/auth/test_email_change.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/auth/test_expire_on_commit.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/auth/test_firebase.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/auth/test_guards.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/auth/test_introspection.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/auth/test_locale.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/auth/test_me.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/auth/test_mfa.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/auth/test_oauth_login.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/auth/test_oauth_token_login.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/auth/test_refresh.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/auth/test_refresh_db.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/auth/test_router_session_sharing.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/auth/test_service.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/auth/test_signup_extension.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/auth/test_signup_mounting.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/auth/test_token_supersede.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/auth/test_webauthn.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/auth/webauthn_authenticator.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/authz/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/authz/test_dependencies.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/authz/test_permissions.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/authz/test_requires.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/cache/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/cache/test_decorator.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/cache/test_invalidation.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/cache/test_redis_manager.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/chat/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/chat/test_chat.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/chat/test_messenger.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/chat/test_messenger_router.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/checks/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/checks/test_check_config_cli.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/checks/test_checks.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/cli/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/cli/test_config.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/cli/test_db_alembic_errors.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/cli/test_db_resolution.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/cli/test_db_seed.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/cli/test_docker_compose.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/cli/test_dockerfile_spa.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/cli/test_generate.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/cli/test_main.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/cli/test_management_commands.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/cli/test_model.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/cli/test_openapi_errors.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/cli/test_openapi_errors_bare_calls.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/cli/test_openapi_errors_callgraph.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/cli/test_openapi_errors_configured.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/cli/test_openapi_errors_delegation.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/cli/test_openapi_fix.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/cli/test_permissions.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/cli/test_project_claude_md.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/cli/test_quality_gate_integration.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/cli/test_scaffold_placeholders.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/cli/test_scaffold_runtime.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/conftest.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/controllers/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/controllers/test_base.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/controllers/test_generic_bounds.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/core/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/core/test_context.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/core/test_enums.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/core/test_logging.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/core/test_typed.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/db/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/db/test_alembic_hooks.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/db/test_audit.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/db/test_backup.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/db/test_bulk_ops.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/db/test_connection.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/db/test_cursor_types.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/db/test_eager_load.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/db/test_enum_column.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/db/test_enum_migrations.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/db/test_explain.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/db/test_expressions.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/db/test_integrity.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/db/test_integrity_live.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/db/test_migrations.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/db/test_mixins.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/db/test_model.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/db/test_none_filter_is_null.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/db/test_outbox.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/db/test_repository.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/db/test_repository_conflict_exceptions.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/db/test_safe_upgrade.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/db/test_schema_sync.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/db/test_search.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/db/test_signals.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/db/test_slow_query.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/db/test_sqlite_wal.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/db/test_tenant.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/db/test_transaction.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/db/test_utc_datetime.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/exceptions/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/exceptions/test_exceptions.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/exceptions/test_factories.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/exceptions/test_i18n.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/exceptions/test_inherited_code_warning.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/exceptions/test_value_error_codes.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/faces/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/faces/test_faces.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/flags/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/flags/test_flags.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/_eval/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/_eval/corpus.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/audio/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/audio/test_audio.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/audio/test_audio_runtime_extra.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/audio/test_concurrency.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/audio/test_diarization.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/audio/test_language.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/audio/test_profiles.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/audio/test_speaker_count.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/audio/test_stt_loading.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/audio/test_voice_router.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/conftest.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_batching.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_chat_memory.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_embedding_cache_redis.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_embeddings.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_env_defaults.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_eval_harness.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_genai_metrics.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_genai_observability.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_generation_cache.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_generation_config.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_gpu_validation.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_hardware.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_hub.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_hybrid.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_image.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_inventory.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_moderation.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_ollama.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_onnx_embed.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_openai_compat.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_pipeline.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_pipeline_integration.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_precision_kwarg.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_rag.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_refinements.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_rerank.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_router.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_structured.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_structured_extraction.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_structured_parity.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_structured_retry.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_text.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_textgen_embed_metrics.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_tokens.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_tracing.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_usage.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_usage_cache_hit.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_vectorstore.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/genai/test_vision_text.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/geo/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/geo/test_br.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/geo/test_db.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/geo/test_distance.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/geo/test_estimate.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/geo/test_geocoding.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/geo/test_geometry.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/geo/test_polyline.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/geo/test_routing.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/geo/test_routing_extra.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/hostbridge/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/hostbridge/conftest.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/hostbridge/test_bridge_files.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/hostbridge/test_bridge_host.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/hostbridge/test_messages.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/hostbridge/test_paths.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/hostbridge/test_router.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/hostbridge/test_shell.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/integrations/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/integrations/messaging/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/integrations/messaging/zap/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/integrations/messaging/zap/test_generated_drift.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/integrations/messaging/zap_ws/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/integrations/messaging/zap_ws/test_generated_drift.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/integrations/payment/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/integrations/payment/adapters/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/integrations/payment/adapters/test_openpix_adapter.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/integrations/payment/adapters/test_openpix_adapter_wire.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/integrations/payment/mercado_pago/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/integrations/payment/mercado_pago/test_generated_drift.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/integrations/payment/mercado_pago/test_mercado_pago.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/integrations/payment/mercado_pago/test_overlay.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/integrations/payment/mercado_pago/test_pix.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/integrations/payment/mercado_pago/test_provenance.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/integrations/payment/mercado_pago/test_sdk_coverage.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/integrations/payment/openpix/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/integrations/payment/openpix/test_generated_drift.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/integrations/payment/openpix/test_openpix.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/integrations/payment/openpix/test_overlay.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/integrations/payment/openpix/test_real_payload_shapes.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/integrations/payment/openpix/test_request_body_shape.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/integrations/payment/openpix/test_spec_type_conflicts.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/integrations/payment/stripe/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/integrations/payment/stripe/test_client.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/integrations/payment/stripe/test_generated_drift.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/integrations/payment/stripe/test_money.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/integrations/payment/stripe/test_webhooks.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/integrations/payment/test_contract.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/modelops/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/modelops/conftest.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/modelops/test_bench.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/modelops/test_compact.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/modelops/test_compose.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/modelops/test_edge.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/modelops/test_energy.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/modelops/test_export.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/modelops/test_monitoring.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/modelops/test_pickled.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/modelops/test_quantize.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/modelops/test_ranking.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/modelops/test_serving.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/modelops/test_sklearn_export.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/modelops/test_static.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/openapi/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/openapi/conftest.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/openapi/test_divergent_success.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/openapi/test_form_bodies.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/openapi/test_generate.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/openapi/test_hostile_spec.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/openapi/test_loader.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/openapi/test_multipart_bodies.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/openapi/test_naming.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/openapi/test_nested_capture.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/openapi/test_parse.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/openapi/test_payload_arrays.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/openapi/test_raw_responses.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/pdf/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/pdf/test_assets.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/pdf/test_formatting.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/pdf/test_pages.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/pdf/test_reader.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/pdf/test_renderer.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/pdf/test_router_and_cli.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/push/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/push/test_router.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/push/test_service.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/push/test_transports.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/queue/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/queue/test_broker.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/queue/test_consumer.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/queue/test_dedup.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/queue/test_manager.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/queue/test_prefetch.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/queue/test_publisher.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/queue/test_reliability.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/queue/test_topology.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/queue/test_tracing.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/reviews/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/reviews/test_reviews.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/schemas/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/schemas/test_base.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/schemas/test_cursor_pagination.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/schemas/test_errors.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/schemas/test_link_headers.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/schemas/test_pagination.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/schemas/test_response.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/services/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/services/test_base.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/services/test_file_mixin.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/sessions/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/sessions/test_sessions.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/settings/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/settings/test_base.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/settings/test_mixins.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/spreadsheet/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/spreadsheet/test_formats.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/spreadsheet/test_writer.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/sse/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/sse/test_broker.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/sse/test_event_stream.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/ssr/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/ssr/test_attributes.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/ssr/test_integration.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/ssr/test_page.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/ssr/test_response.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/ssr/test_web_app_theme.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/ssr/test_webapp.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/storage/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/storage/test_minio_client.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/tasks/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/tasks/test_cancellation.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/tasks/test_cron.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/tasks/test_dead_letter.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/tasks/test_jobs.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/tasks/test_jobs_cancellation.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/tasks/test_manager.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/tasks/test_observability.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/tasks/test_oop.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/tasks/test_progress.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/tasks/test_queue.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/tasks/test_queue_from_settings.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/tasks/test_queue_lifecycle_hooks.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/tasks/test_scheduler.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/tasks/test_scheduler_lease.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/tasks/test_stages.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/test_agent_docs_guard.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/test_alias_guard.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/test_constraint_shape_guard.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/test_docs_api_guard.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/test_docs_examples_compile.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/test_docs_examples_names.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/test_docs_method_guard.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/test_docs_organization.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/test_docs_type_guard.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/test_docstring_example_guard.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/test_enum_schema_guard.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/test_i18n_coverage_guard.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/test_kwargs_guard.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/test_llmstxt.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/test_lock_version_guard.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/test_protocol_shape_guard.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/test_pydantic_error_types_guard.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/test_pydantic_mypy_guard.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/test_reexport_guard.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/test_reference_coverage.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/test_schedule_projection_guard.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/test_sdist_payload.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/test_settings_passthrough_guard.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/test_testclient_httpx2_guard.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/test_vacuous_guard.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/test_version_agreement.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/test_wheel_payload.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/testing/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/testing/test_database.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/testing/test_factories.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/testing/test_fakes_behaviour.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/testing/test_fakes_contract.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/ui/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/ui/test_components.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/ui/test_core_contract.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/ui/test_css.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/ui/test_css_router.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/ui/test_forms_introspect.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/ui/test_forms_parse.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/ui/test_forms_render.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/ui/test_integration.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/ui/test_layout_and_pages.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/ui/test_stylesheet.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/utils/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/utils/test_client_ip.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/utils/test_currency.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/utils/test_datetime.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/utils/test_dict.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/utils/test_download.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/utils/test_email.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/utils/test_fields.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/utils/test_file_store.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/utils/test_forms.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/utils/test_http_client.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/utils/test_jwt.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/utils/test_lazy_extras.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/utils/test_locations.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/utils/test_log.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/utils/test_metrics.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/utils/test_opaque_token.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/utils/test_password.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/utils/test_regex.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/utils/test_retry.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/utils/test_storage_backends.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/utils/test_throttle.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/utils/test_token_types.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/utils/test_upload.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/utils/test_upload_signature_policy.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/vision/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/vision/test_detect_classify.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/vision/test_router.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/vision/test_vision.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/webpush/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/webpush/test_dispatcher.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/webpush/test_router.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/webpush/test_schemas.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/webpush/test_service.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/websockets/__init__.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/websockets/test_heartbeat.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/tests/websockets/test_hub_and_router.py +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/vendor/PROVENANCE.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/vendor/mercadopago-evidence.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/vendor/mercadopago-openapi.yaml +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/vendor/openpix-evidence.md +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/vendor/openpix-openapi.json +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/vendor/stripe-api-facts.yaml +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/vendor/zap-asyncapi.yaml +0 -0
- {tempest_fastapi_sdk-0.294.0 → tempest_fastapi_sdk-0.296.0}/vendor/zap-openapi.yaml +0 -0
|
@@ -5,6 +5,189 @@ 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.296.0] — 2026-09-22
|
|
9
|
+
|
|
10
|
+
O `500` de uma exceção não tratada saía **fora** do `CORSMiddleware`. O
|
|
11
|
+
navegador descartava a resposta, e o front via só `TypeError: Failed to
|
|
12
|
+
fetch` — sem status, sem `code`, sem `X-Request-ID`. O scaffold do
|
|
13
|
+
`tempest new` gerava exatamente essa pilha (#287).
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
|
|
17
|
+
- **O envelope de 500 passa pela pilha de middleware.** O Starlette
|
|
18
|
+
executa o handler de `Exception` no `ServerErrorMiddleware`, a camada
|
|
19
|
+
mais externa, então o envelope nunca voltava por `CORSMiddleware` nem
|
|
20
|
+
por `RequestIDMiddleware`. Medido antes da correção, com `RequestID` +
|
|
21
|
+
`apply_cors` + `register_exception_handlers` na ordem do template: `500`
|
|
22
|
+
sem `Access-Control-Allow-Origin`, sem `X-Request-ID` e com `details: {}`.
|
|
23
|
+
Agora `register_exception_handlers` instala também o
|
|
24
|
+
`ErrorEnvelopeMiddleware` como o middleware de usuário **mais interno**
|
|
25
|
+
(`append` em `user_middleware`, enquanto `add_middleware` sempre insere
|
|
26
|
+
no índice 0), e o mesmo `500` sai com o header de CORS, com o
|
|
27
|
+
`X-Request-ID` e com `details.request_id` igual ao header — **em
|
|
28
|
+
qualquer ordem** das três chamadas, e por isso o template não precisou
|
|
29
|
+
mudar. A camada não decide CORS: origem fora da allowlist continua sem
|
|
30
|
+
header no 500. O handler de `Exception` continua registrado para a
|
|
31
|
+
exceção levantada por um middleware, que a camada interna não vê.
|
|
32
|
+
Medido no Starlette 0.46.0 (o piso que `fastapi>=0.141.1` aceita) e no
|
|
33
|
+
1.6.0.
|
|
34
|
+
|
|
35
|
+
### Added
|
|
36
|
+
|
|
37
|
+
- **`ErrorEnvelopeMiddleware`** (e o alias `ErrorEnvelopeHandler`, em
|
|
38
|
+
`tempest_fastapi_sdk.api.middlewares`), para quem monta a pilha à mão
|
|
39
|
+
com um handler próprio.
|
|
40
|
+
|
|
41
|
+
### Changed
|
|
42
|
+
|
|
43
|
+
- **`register_exception_handlers` levanta `RuntimeError` numa aplicação
|
|
44
|
+
que já montou a pilha** (já serviu requisição ou subiu). Antes a
|
|
45
|
+
chamada tardia registrava handlers que o Starlette nunca lia; agora
|
|
46
|
+
falha em vez de parecer funcionar, e falha antes de registrar qualquer
|
|
47
|
+
handler, então a aplicação recusada fica intocada. Chamar duas vezes
|
|
48
|
+
instala a camada
|
|
49
|
+
uma vez só, com o handler da segunda chamada.
|
|
50
|
+
- A exceção **continua sendo re-levantada** depois do envelope, como o
|
|
51
|
+
`ServerErrorMiddleware` já fazia: o servidor ASGI segue logando, e um
|
|
52
|
+
`TestClient` com o default `raise_server_exceptions=True` segue
|
|
53
|
+
levantando no teste do consumidor. Falha depois de a resposta começar
|
|
54
|
+
(stream quebrado no meio) é re-levantada sem segunda resposta.
|
|
55
|
+
- **Stream quebrado no meio passa a chegar ao `on_server_error`.** O
|
|
56
|
+
callback vai como `BackgroundTask` da resposta de erro, e uma resposta
|
|
57
|
+
que nunca é enviada nunca roda a background: medido antes, a falha era
|
|
58
|
+
logada e o `on_server_error` não disparava nenhuma vez. Agora a camada
|
|
59
|
+
interna roda a background da resposta que o handler construiu, e o
|
|
60
|
+
callback dispara uma vez, com o log também uma vez.
|
|
61
|
+
|
|
62
|
+
## [0.295.0] — 2026-09-19
|
|
63
|
+
|
|
64
|
+
A CLI sabia **criar** serviço e rodar os gates. Não sabia **operar** o
|
|
65
|
+
serviço que já existe: nada listava as rotas servidas, nada exportava o
|
|
66
|
+
contrato, nada conectava nas dependências, e mexer em flag, cache, fila,
|
|
67
|
+
sessão ou bucket era `redis-cli`, script descartável ou SQL na mão.
|
|
68
|
+
|
|
69
|
+
### Added
|
|
70
|
+
|
|
71
|
+
- **`tempest secrets generate|init|vapid`.** O grupo só sabia
|
|
72
|
+
`rotate`. `generate` imprime N segredos (crus, `KEY=value` com
|
|
73
|
+
`--keys`, ou JSON) e **não escreve arquivo nenhum** — é o que se pipa
|
|
74
|
+
num secret manager; `--count` junto de `--keys` é erro de uso, porque
|
|
75
|
+
os dois dizem a mesma coisa. `init` preenche só as chaves ausentes,
|
|
76
|
+
vazias ou ainda com o placeholder `change-me-change-me-change-me-32`
|
|
77
|
+
que o `tempest new` escreve (os valores que o `check_secrets` reporta
|
|
78
|
+
como `security.W001`/`W004`), mantém toda chave já configurada e
|
|
79
|
+
portanto é idempotente; `--force` substitui valor real e faz backup
|
|
80
|
+
antes. `vapid` gera o par P-256 do Web Push no formato que o
|
|
81
|
+
`WebPushSettings` e o `pywebpush` leem — escalar de 32 bytes e ponto
|
|
82
|
+
não-comprimido de 65, base64url sem padding — e **recusa sobrescrever
|
|
83
|
+
um par existente sem `--force`**, porque trocar o par invalida toda
|
|
84
|
+
subscrição ativa de browser. O formato não foi deduzido: a chave
|
|
85
|
+
privada é lida de volta por `py_vapid.Vapid02` e assina um header no
|
|
86
|
+
teste.
|
|
87
|
+
|
|
88
|
+
- **`tempest routes`.** Lista toda rota efetiva, com router montado
|
|
89
|
+
expandido. Lê `fastapi.routing.iter_route_contexts` — a mesma
|
|
90
|
+
expansão que o gerador de OpenAPI percorre — porque desde o FastAPI
|
|
91
|
+
0.141.1 o `include_router` guarda uma entrada `_IncludedRouter` e uma
|
|
92
|
+
compreensão sobre `app.routes` não lista **nenhum** path do router
|
|
93
|
+
incluído. Rota fora do schema aparece com `SCHEMA=no`, e a coluna
|
|
94
|
+
`GUARDS` nomeia as dependências herdadas do `include_router`, não só
|
|
95
|
+
as declaradas na rota.
|
|
96
|
+
|
|
97
|
+
- **`tempest openapi-export [--check]`.** Escreve o documento OpenAPI do
|
|
98
|
+
próprio serviço (JSON, ou YAML com o extra `[openapi]`) sem subir
|
|
99
|
+
nada. `--check` compara com o arquivo commitado e **nomeia** o que
|
|
100
|
+
mudou (`+ DELETE /x`, `- GET /y`, `~ /z changed`), saindo 1 — "a spec
|
|
101
|
+
mudou" não é mensagem revisável.
|
|
102
|
+
|
|
103
|
+
- **`tempest db check`.** Roda a comparação de autogenerate do Alembic e
|
|
104
|
+
sai 1 listando as operações que uma revision conteria. O
|
|
105
|
+
`revision --autogenerate` grava o diff quando alguém pede; nada
|
|
106
|
+
percebia quando ninguém pediu.
|
|
107
|
+
|
|
108
|
+
- **`tempest serve` e `tempest shell`.** O `serve` entrega ao uvicorn a
|
|
109
|
+
**string** de import, nunca o objeto — o reloader reimporta no
|
|
110
|
+
processo filho, e passar a instância transforma `--reload` em nada, em
|
|
111
|
+
silêncio. `--reload` tem três estados, então `--no-reload` desliga de
|
|
112
|
+
verdade um `SERVER_RELOAD=true`; junto de `--workers` sai 2. O `shell`
|
|
113
|
+
abre um REPL com `settings`, cada model mapeado **que o projeto
|
|
114
|
+
define** (a `BaseModel` do SDK fica de fora), `select`, `text` e uma
|
|
115
|
+
`session` aberta; compila com `ast.PyCF_ALLOW_TOP_LEVEL_AWAIT` e roda
|
|
116
|
+
a corrotina **no loop em que a sessão foi aberta** — um helper
|
|
117
|
+
`run(coro)` pareceria equivalente e levantaria `MissingGreenlet` no
|
|
118
|
+
primeiro lazy load.
|
|
119
|
+
|
|
120
|
+
- **`tempest doctor`.** O `check-config` lê as settings e não abre
|
|
121
|
+
socket; este conecta de verdade em banco, Redis, RabbitMQ, SMTP e
|
|
122
|
+
MinIO, dobra o registry de checagens estáticas e sai 1 em qualquer
|
|
123
|
+
falha, servindo de smoke test de deploy. Capacidade não configurada
|
|
124
|
+
aparece como `skip`, **nunca** `ok` — e default de mixin conta como
|
|
125
|
+
não configurado (`SMTP_HOST=localhost`, `MINIO_ENDPOINT=localhost:9000`),
|
|
126
|
+
comparado contra `model_fields[campo].default`, a régua do
|
|
127
|
+
`check_secrets`.
|
|
128
|
+
|
|
129
|
+
- **`tempest user show|activate|deactivate|sessions|delete`.** O `show`
|
|
130
|
+
imprime toda coluna mapeada com o `hashed_password` redigido.
|
|
131
|
+
`deactivate` revoga os refresh tokens **na mesma transação** que o
|
|
132
|
+
flag, porque `is_active=False` sozinho não encerra nada. `sessions`
|
|
133
|
+
lista (ou revoga com `--revoke`, contando só o que aquela execução
|
|
134
|
+
matou); usuário sem sessão sai 0. `delete` apaga os refresh tokens
|
|
135
|
+
antes da linha do usuário — a FK scaffoldada não tem
|
|
136
|
+
`ON DELETE CASCADE`, então a ordem óbvia falharia citando uma
|
|
137
|
+
constraint em vez da causa — e exige `--yes` fora de um TTY.
|
|
138
|
+
|
|
139
|
+
- **`tempest flags` e `tempest cache`.** `flags list/get/enable/disable`
|
|
140
|
+
falam pelo `RedisFeatureFlagBackend`; `get` separa `unset` (código 1,
|
|
141
|
+
o serviço cai no default do chamador) de um `off` guardado (código 0).
|
|
142
|
+
`cache ping/stats/flush` usa o `CacheInvalidator` nas opções
|
|
143
|
+
direcionadas; `--all` é `FLUSHDB` e exige `--yes`, porque o banco
|
|
144
|
+
costuma guardar também sessão, contador de rate limit e as flags
|
|
145
|
+
acima.
|
|
146
|
+
|
|
147
|
+
- **`tempest email test` e `tempest storage`.** O `email test` manda uma
|
|
148
|
+
mensagem por `EmailUtils(**settings.email_kwargs())` e, na recusa, sai
|
|
149
|
+
1 com a resposta do servidor mais a linha que lembra o par que mais
|
|
150
|
+
custa tempo: 587 quer STARTTLS (`SMTP_USE_TLS`), 465 quer TLS
|
|
151
|
+
implícito (`SMTP_USE_SSL`). O `storage check/ls/put/get/presign/rm`
|
|
152
|
+
dirige o `AsyncMinIOClient(**settings.minio_kwargs())`, endpoint
|
|
153
|
+
público incluído — o `presign` diz no `stderr` para qual host assinou,
|
|
154
|
+
porque URL assinada contra `minio:9000` é válida e inútil no browser.
|
|
155
|
+
|
|
156
|
+
- **`tempest queue` e `tempest tasks`.** `queue publish` conecta,
|
|
157
|
+
publica e **fecha**, nessa ordem, num processo só; `queue handlers`
|
|
158
|
+
lista os canais consumidos, importando os módulos de handler antes,
|
|
159
|
+
porque subscriber só existe no broker depois do import. `tasks list`
|
|
160
|
+
imprime o nome que o TaskIQ registra (`<módulo>:<função>`), que não é
|
|
161
|
+
o nome no arquivo e é o que o `run` recebe; `tasks run` **enfileira**,
|
|
162
|
+
e diz isso — quem executa é o worker.
|
|
163
|
+
|
|
164
|
+
- **`tempest integrations list|verify`.** `list` mostra os clientes que
|
|
165
|
+
o SDK ships e se este projeto tem a credencial; `verify` faz a leitura
|
|
166
|
+
autenticada mais barata de cada provedor (OpenPix `GET /company`,
|
|
167
|
+
Mercado Pago `GET /users/me`), que não move dinheiro nem cria
|
|
168
|
+
registro. Como isso é tabela mantida à mão sobre cliente gerado, um
|
|
169
|
+
guard assere que cada método nomeado ainda existe e não exige
|
|
170
|
+
argumento — ele já pagou por si: o campo é `MERCADOPAGO_ACCESS_TOKEN`,
|
|
171
|
+
não `MERCADO_PAGO_ACCESS_TOKEN`.
|
|
172
|
+
|
|
173
|
+
- **`tempest agents tools|run`.** `tools` lista as ferramentas sem
|
|
174
|
+
chamar modelo nenhum (zero token, funciona sem credencial de backend).
|
|
175
|
+
`run` segue `AgentRun.succeeded` no código de saída, não "não levantou
|
|
176
|
+
exceção": run cortado pelo orçamento ainda devolve texto, e tratar
|
|
177
|
+
esse texto como resposta é o erro que o comando se recusa a cometer
|
|
178
|
+
pelo chamador.
|
|
179
|
+
|
|
180
|
+
### Changed
|
|
181
|
+
|
|
182
|
+
- `tempest secrets rotate` passou a usar o mesmo helper de backup dos
|
|
183
|
+
comandos novos; comportamento inalterado (backup antes de reescrever,
|
|
184
|
+
`0600` no arquivo e no `.bak`).
|
|
185
|
+
- `tempest_fastapi_sdk/cli/project.py` centraliza a resolução de
|
|
186
|
+
projeto usada pelos comandos novos: app FastAPI (por spec ou pelos
|
|
187
|
+
lugares scaffoldados, reportando **cada** tentativa com a causa),
|
|
188
|
+
instância de settings por tipo sob `src`/`app`, e URL de Redis
|
|
189
|
+
(`--redis-url` > `REDIS_URL` > settings).
|
|
190
|
+
|
|
8
191
|
## [0.294.0] — 2026-09-19
|
|
9
192
|
|
|
10
193
|
Um assistente local que roda dentro do WSL precisa agir na máquina que o
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: tempest-fastapi-sdk
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.296.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
|
|
@@ -4082,6 +4082,28 @@ tempest check # lint + fmt-check + type + test
|
|
|
4082
4082
|
|
|
4083
4083
|
Every command returns the underlying tool's exit code, so `tempest check` is safe to wire into CI (`tempest check || exit 1`) or pre-commit hooks. When neither the executable nor `uv` is on `PATH`, the wrapper prints `error: '<tool>' is not on PATH and 'uv' is unavailable` and exits with `127` instead of failing silently.
|
|
4084
4084
|
|
|
4085
|
+
#### Diagnostics — `tempest doctor`
|
|
4086
|
+
|
|
4087
|
+
```bash
|
|
4088
|
+
tempest doctor # one line per dependency, real connections
|
|
4089
|
+
tempest doctor --json # for deployment health checks
|
|
4090
|
+
tempest doctor --timeout 2 # tighten each network probe
|
|
4091
|
+
```
|
|
4092
|
+
|
|
4093
|
+
`check-config` reads the settings; `doctor` connects. It probes the database, Redis, RabbitMQ, SMTP and MinIO, folds in the static check registry, and exits `1` when anything failed. A capability the project never configured reads `skip`, never `ok` — and a mixin default (`SMTP_HOST=localhost`, `MINIO_ENDPOINT=localhost:9000`) counts as unconfigured, compared against `model_fields[field].default` the way `check_secrets` does it.
|
|
4094
|
+
|
|
4095
|
+
#### Run and inspect — `tempest serve` / `tempest shell`
|
|
4096
|
+
|
|
4097
|
+
```bash
|
|
4098
|
+
tempest serve # host/port/reload from the project's settings
|
|
4099
|
+
tempest serve --reload --port 9000 # override for this run
|
|
4100
|
+
tempest serve --workers 4 # several processes (refused with --reload)
|
|
4101
|
+
tempest shell # async REPL: settings, models, open session
|
|
4102
|
+
tempest shell --no-db # skip the database connection
|
|
4103
|
+
```
|
|
4104
|
+
|
|
4105
|
+
`tempest serve` hands uvicorn the import *string* (`src.server:app`), which is what keeps `--reload` working, and resolves host/port/reload the way `run_server` does: flag > project settings > SDK default. `tempest shell` opens a console with `settings`, every mapped model the project defines, `select`, `text` and an already-open `session`; it compiles with `ast.PyCF_ALLOW_TOP_LEVEL_AWAIT` and runs coroutines on the loop that session belongs to, so `await session.execute(...)` works at the prompt instead of raising `MissingGreenlet`.
|
|
4106
|
+
|
|
4085
4107
|
#### Database — `tempest db`
|
|
4086
4108
|
|
|
4087
4109
|
Alembic wrapper backed by `AlembicHelper`. Reads `DATABASE_URL` from `--database-url` > env var > `src.core.settings.settings.DATABASE_URL` > `alembic.ini`.
|
|
@@ -4094,6 +4116,7 @@ tempest db upgrade # alembic upgrade head
|
|
|
4094
4116
|
tempest db upgrade <rev> # upgrade to a specific revision
|
|
4095
4117
|
tempest db downgrade # roll back one step
|
|
4096
4118
|
tempest db current # print the applied revision
|
|
4119
|
+
tempest db check # exit 1 when models drifted from the tree
|
|
4097
4120
|
tempest db history -v # revisions newest → oldest, verbose
|
|
4098
4121
|
tempest db stamp head # mark the DB without running migrations
|
|
4099
4122
|
tempest db squash -m "init" --yes # collapse history into 1 migration
|
|
@@ -4111,15 +4134,71 @@ tempest db seed --seed src.db.fixtures:demo # custom seed callable
|
|
|
4111
4134
|
|
|
4112
4135
|
#### Secrets — `tempest secrets`
|
|
4113
4136
|
|
|
4114
|
-
|
|
4137
|
+
Four commands, ordered by how much they touch your `.env`: `generate` never writes, `init` fills only what is unset, `rotate` always replaces, and `vapid` mints the Web Push key pair.
|
|
4115
4138
|
|
|
4116
4139
|
```bash
|
|
4140
|
+
tempest secrets generate # one value on stdout, nothing written
|
|
4141
|
+
tempest secrets generate --count 3 # three of them
|
|
4142
|
+
tempest secrets generate --keys JWT_SECRET --json # JSON, for a secret manager
|
|
4143
|
+
tempest secrets init # fill the keys `tempest new` left unset
|
|
4144
|
+
tempest secrets init --force # replace real values too (backs up first)
|
|
4117
4145
|
tempest secrets rotate # rotate JWT_SECRET + TOKEN_SECRET in .env
|
|
4118
4146
|
tempest secrets rotate --print # just print, write nothing
|
|
4119
4147
|
tempest secrets rotate --keys JWT_SECRET,SESSION_SECRET --env .env.prod
|
|
4120
4148
|
tempest secrets rotate --length 64 --no-backup
|
|
4149
|
+
tempest secrets vapid --subject mailto:ops@example.com # Web Push key pair
|
|
4121
4150
|
```
|
|
4122
4151
|
|
|
4152
|
+
`tempest secrets init` treats a key as unset when it is missing, empty, or still carries the `change-me` placeholder `tempest new` writes — the values `tempest check-config` reports as `security.W001` / `security.W004` — and keeps every configured key, so it is safe to re-run. `tempest secrets vapid` writes `VAPID_PUBLIC_KEY` / `VAPID_PRIVATE_KEY` in the shape `WebPushSettings` and `pywebpush` read (32-byte scalar, 65-byte uncompressed point, base64url), and refuses to overwrite an existing pair without `--force`, because replacing it invalidates every active browser subscription.
|
|
4153
|
+
|
|
4154
|
+
#### Integrations and agents — `tempest integrations` / `tempest agents`
|
|
4155
|
+
|
|
4156
|
+
```bash
|
|
4157
|
+
tempest integrations list # bundled clients + credential state
|
|
4158
|
+
tempest integrations verify openpix # one real authenticated read
|
|
4159
|
+
tempest agents tools --agent src.agents:agent # tools, with no model call
|
|
4160
|
+
tempest agents run "summarise the report" --agent src.agents:agent --trace
|
|
4161
|
+
```
|
|
4162
|
+
|
|
4163
|
+
`integrations verify` builds the client from `settings.<provider>_kwargs()` and calls the cheapest authenticated read each API offers (OpenPix `GET /company`, Mercado Pago `GET /users/me`) — a guard asserts those methods still exist on the generated clients and take no argument, so an upstream rename fails a test rather than an operator's terminal. `agents tools` spends no token; `agents run` exits `1` when the run was cut short by its budget, because a truncated run still returns text and treating it as an answer is the mistake worth refusing.
|
|
4164
|
+
|
|
4165
|
+
#### Queue and tasks — `tempest queue` / `tempest tasks`
|
|
4166
|
+
|
|
4167
|
+
```bash
|
|
4168
|
+
tempest queue publish orders.paid '{"order_id": 7}' --json
|
|
4169
|
+
tempest queue handlers # channels this service consumes
|
|
4170
|
+
tempest tasks list # registered task names
|
|
4171
|
+
tempest tasks run src.tasks:send_welcome --arg ana@example.com --kwarg retries=2
|
|
4172
|
+
```
|
|
4173
|
+
|
|
4174
|
+
`queue publish` connects, publishes and closes in one process, so the message is flushed before the command returns. `tasks list` imports the job modules first — a task exists on the broker only once its module has been imported — and prints the name TaskIQ registers (`<module>:<function>`), which is the name `run` takes. `run` enqueues; the worker executes, so success means the message was accepted, not that the job passed. Both default to the scaffolded `<root>.queue:broker` and `<root>.tasks:tq`.
|
|
4175
|
+
|
|
4176
|
+
#### Email and object store — `tempest email` / `tempest storage`
|
|
4177
|
+
|
|
4178
|
+
```bash
|
|
4179
|
+
tempest email test --to you@example.com # send through the project's SMTP settings
|
|
4180
|
+
tempest storage check # endpoint reachable, bucket present
|
|
4181
|
+
tempest storage ls reports/ # keys under a prefix
|
|
4182
|
+
tempest storage put ./note.pdf --key notes/2026-09.pdf
|
|
4183
|
+
tempest storage presign notes/2026-09.pdf --expires 900
|
|
4184
|
+
```
|
|
4185
|
+
|
|
4186
|
+
`email test` builds `EmailUtils(**settings.email_kwargs())`, so a message that arrives came through the same path the app uses; a refusal exits `1` with the server's reply and a reminder that port 587 wants `SMTP_USE_TLS` (STARTTLS) while 465 wants `SMTP_USE_SSL`. `storage` uses `AsyncMinIOClient(**settings.minio_kwargs())`, including the public endpoint — `presign` reports on stderr which host it signed for, because a URL signed against `minio:9000` is valid and unusable from a browser.
|
|
4187
|
+
|
|
4188
|
+
#### Feature flags and cache — `tempest flags` / `tempest cache`
|
|
4189
|
+
|
|
4190
|
+
```bash
|
|
4191
|
+
tempest flags list # everything the Redis backend holds
|
|
4192
|
+
tempest flags enable new-checkout # on, for every process reading it
|
|
4193
|
+
tempest flags get new-checkout # exit 1 when unset, 0 when stored
|
|
4194
|
+
tempest cache ping # PONG, or exit 1
|
|
4195
|
+
tempest cache stats # version, keys, memory, hit ratio
|
|
4196
|
+
tempest cache flush --namespace orders # invalidate what @cached registered
|
|
4197
|
+
tempest cache flush --all --yes # FLUSHDB (deletes non-cache keys too)
|
|
4198
|
+
```
|
|
4199
|
+
|
|
4200
|
+
Both resolve the URL from `--redis-url` > `REDIS_URL` > the project's settings, and both speak through the SDK's own classes — `RedisFeatureFlagBackend` and `CacheInvalidator` — so the CLI writes what the service reads. `flags get` separates `unset` (exit 1, the service falls back to the caller's default) from a stored `off` (exit 0). `cache flush --all` is `FLUSHDB` and needs `--yes`, because sessions, rate-limit counters and flags usually share that database.
|
|
4201
|
+
|
|
4123
4202
|
#### Users — `tempest user`
|
|
4124
4203
|
|
|
4125
4204
|
Seeds or lists users via the project's concrete `UserModel` (default `src.db.models:UserModel`). Bootstraps the first admin row so `/admin` login works without manual SQL.
|
|
@@ -4135,14 +4214,34 @@ tempest user set-password --email ana@example.com # prompt, hash, revoke ses
|
|
|
4135
4214
|
tempest user set-password --email ana@example.com --keep-sessions
|
|
4136
4215
|
tempest user list # everyone
|
|
4137
4216
|
tempest user list --admin # admins only
|
|
4217
|
+
tempest user show --email ana@example.com # the whole row (hash redacted)
|
|
4218
|
+
tempest user deactivate --email ana@example.com # is_active=False + revoke sessions
|
|
4219
|
+
tempest user activate --email ana@example.com # back on
|
|
4220
|
+
tempest user sessions --email ana@example.com # list refresh tokens
|
|
4221
|
+
tempest user sessions --email ana@example.com --revoke
|
|
4222
|
+
tempest user delete --email ana@example.com --yes # irreversible, removes the tokens too
|
|
4138
4223
|
```
|
|
4139
4224
|
|
|
4225
|
+
`show` redacts `hashed_password` — no question it answers needs the hash, and printing one puts a credential in terminal scrollback and CI logs. `deactivate` revokes the user's refresh tokens in the same transaction as the flag, because `is_active=False` on its own leaves an issued token exchangeable. `sessions` lists one line per token and exits `0` on a user with none; `--revoke` reports how many *that run* killed. `delete` deletes the refresh-token rows first (the scaffolded FK has no `ON DELETE CASCADE`) and requires `--yes` outside a TTY.
|
|
4226
|
+
|
|
4140
4227
|
When `tempest user create` runs in an interactive terminal **without** `--admin`/`--no-admin`, it asks `Should this user be an administrator? [y/N]`. Non-interactive runs (CI, pipes) skip the prompt and create a regular user. `promote` / `revoke` look the user up by email (case-insensitive) and exit `1` with `no user found` when nothing matches.
|
|
4141
4228
|
|
|
4142
4229
|
`tempest user set-password` replaces an existing user's password, hashing with the model's own `set_password`. Because changing the hash does not end a session on its own, it also revokes the user's DB-backed refresh tokens **in the same transaction** — resolving `src.db.models:UserRefreshTokenModel` by default, `--refresh-token-model` for a table elsewhere, `--keep-sessions` to opt out. Every path reports which of the two happened. From code, the same revocation is `await service.revoke_user_sessions(session, user_id=user.id)`.
|
|
4143
4230
|
|
|
4144
4231
|
Both `create` and `set-password` validate the plaintext with `check_password_policy` against the project's `AUTH_PASSWORD_*` settings (or the `PasswordPolicy` defaults: 12 characters minimum, 72 **bytes** maximum — the unit bcrypt counts), so the CLI accepts exactly the passwords `signup` and the admin panel accept.
|
|
4145
4232
|
|
|
4233
|
+
#### Routes and contract — `tempest routes` / `tempest openapi-export`
|
|
4234
|
+
|
|
4235
|
+
```bash
|
|
4236
|
+
tempest routes # every route, mounted routers included
|
|
4237
|
+
tempest routes --match /api/orders --method post # filtered
|
|
4238
|
+
tempest routes --json # machine-readable
|
|
4239
|
+
tempest openapi-export --out contracts/openapi.json # write this service's own spec
|
|
4240
|
+
tempest openapi-export --out contracts/openapi.json --check # exit 1 when it drifted
|
|
4241
|
+
```
|
|
4242
|
+
|
|
4243
|
+
`tempest routes` reads the effective paths from FastAPI's own route expansion, so a router mounted with `include_router` is listed (a comprehension over `app.routes` lists none of its paths since FastAPI 0.141.1), and routes kept out of the schema — HTML pages, internal endpoints — are listed with `SCHEMA=no` next to the dependencies guarding them. `tempest openapi-export` writes the document `openapi-client` (or any other generator) consumes without booting the service; `--check` compares it against the committed file and names the operations that moved, which is the CI guard against an undeclared contract change. Both take `--app module:attr` when the app does not sit at one of the scaffolded locations.
|
|
4244
|
+
|
|
4146
4245
|
#### Generate artifacts in an existing project — `tempest generate`
|
|
4147
4246
|
|
|
4148
4247
|
```bash
|
|
@@ -3879,6 +3879,28 @@ tempest check # lint + fmt-check + type + test
|
|
|
3879
3879
|
|
|
3880
3880
|
Every command returns the underlying tool's exit code, so `tempest check` is safe to wire into CI (`tempest check || exit 1`) or pre-commit hooks. When neither the executable nor `uv` is on `PATH`, the wrapper prints `error: '<tool>' is not on PATH and 'uv' is unavailable` and exits with `127` instead of failing silently.
|
|
3881
3881
|
|
|
3882
|
+
#### Diagnostics — `tempest doctor`
|
|
3883
|
+
|
|
3884
|
+
```bash
|
|
3885
|
+
tempest doctor # one line per dependency, real connections
|
|
3886
|
+
tempest doctor --json # for deployment health checks
|
|
3887
|
+
tempest doctor --timeout 2 # tighten each network probe
|
|
3888
|
+
```
|
|
3889
|
+
|
|
3890
|
+
`check-config` reads the settings; `doctor` connects. It probes the database, Redis, RabbitMQ, SMTP and MinIO, folds in the static check registry, and exits `1` when anything failed. A capability the project never configured reads `skip`, never `ok` — and a mixin default (`SMTP_HOST=localhost`, `MINIO_ENDPOINT=localhost:9000`) counts as unconfigured, compared against `model_fields[field].default` the way `check_secrets` does it.
|
|
3891
|
+
|
|
3892
|
+
#### Run and inspect — `tempest serve` / `tempest shell`
|
|
3893
|
+
|
|
3894
|
+
```bash
|
|
3895
|
+
tempest serve # host/port/reload from the project's settings
|
|
3896
|
+
tempest serve --reload --port 9000 # override for this run
|
|
3897
|
+
tempest serve --workers 4 # several processes (refused with --reload)
|
|
3898
|
+
tempest shell # async REPL: settings, models, open session
|
|
3899
|
+
tempest shell --no-db # skip the database connection
|
|
3900
|
+
```
|
|
3901
|
+
|
|
3902
|
+
`tempest serve` hands uvicorn the import *string* (`src.server:app`), which is what keeps `--reload` working, and resolves host/port/reload the way `run_server` does: flag > project settings > SDK default. `tempest shell` opens a console with `settings`, every mapped model the project defines, `select`, `text` and an already-open `session`; it compiles with `ast.PyCF_ALLOW_TOP_LEVEL_AWAIT` and runs coroutines on the loop that session belongs to, so `await session.execute(...)` works at the prompt instead of raising `MissingGreenlet`.
|
|
3903
|
+
|
|
3882
3904
|
#### Database — `tempest db`
|
|
3883
3905
|
|
|
3884
3906
|
Alembic wrapper backed by `AlembicHelper`. Reads `DATABASE_URL` from `--database-url` > env var > `src.core.settings.settings.DATABASE_URL` > `alembic.ini`.
|
|
@@ -3891,6 +3913,7 @@ tempest db upgrade # alembic upgrade head
|
|
|
3891
3913
|
tempest db upgrade <rev> # upgrade to a specific revision
|
|
3892
3914
|
tempest db downgrade # roll back one step
|
|
3893
3915
|
tempest db current # print the applied revision
|
|
3916
|
+
tempest db check # exit 1 when models drifted from the tree
|
|
3894
3917
|
tempest db history -v # revisions newest → oldest, verbose
|
|
3895
3918
|
tempest db stamp head # mark the DB without running migrations
|
|
3896
3919
|
tempest db squash -m "init" --yes # collapse history into 1 migration
|
|
@@ -3908,15 +3931,71 @@ tempest db seed --seed src.db.fixtures:demo # custom seed callable
|
|
|
3908
3931
|
|
|
3909
3932
|
#### Secrets — `tempest secrets`
|
|
3910
3933
|
|
|
3911
|
-
|
|
3934
|
+
Four commands, ordered by how much they touch your `.env`: `generate` never writes, `init` fills only what is unset, `rotate` always replaces, and `vapid` mints the Web Push key pair.
|
|
3912
3935
|
|
|
3913
3936
|
```bash
|
|
3937
|
+
tempest secrets generate # one value on stdout, nothing written
|
|
3938
|
+
tempest secrets generate --count 3 # three of them
|
|
3939
|
+
tempest secrets generate --keys JWT_SECRET --json # JSON, for a secret manager
|
|
3940
|
+
tempest secrets init # fill the keys `tempest new` left unset
|
|
3941
|
+
tempest secrets init --force # replace real values too (backs up first)
|
|
3914
3942
|
tempest secrets rotate # rotate JWT_SECRET + TOKEN_SECRET in .env
|
|
3915
3943
|
tempest secrets rotate --print # just print, write nothing
|
|
3916
3944
|
tempest secrets rotate --keys JWT_SECRET,SESSION_SECRET --env .env.prod
|
|
3917
3945
|
tempest secrets rotate --length 64 --no-backup
|
|
3946
|
+
tempest secrets vapid --subject mailto:ops@example.com # Web Push key pair
|
|
3918
3947
|
```
|
|
3919
3948
|
|
|
3949
|
+
`tempest secrets init` treats a key as unset when it is missing, empty, or still carries the `change-me` placeholder `tempest new` writes — the values `tempest check-config` reports as `security.W001` / `security.W004` — and keeps every configured key, so it is safe to re-run. `tempest secrets vapid` writes `VAPID_PUBLIC_KEY` / `VAPID_PRIVATE_KEY` in the shape `WebPushSettings` and `pywebpush` read (32-byte scalar, 65-byte uncompressed point, base64url), and refuses to overwrite an existing pair without `--force`, because replacing it invalidates every active browser subscription.
|
|
3950
|
+
|
|
3951
|
+
#### Integrations and agents — `tempest integrations` / `tempest agents`
|
|
3952
|
+
|
|
3953
|
+
```bash
|
|
3954
|
+
tempest integrations list # bundled clients + credential state
|
|
3955
|
+
tempest integrations verify openpix # one real authenticated read
|
|
3956
|
+
tempest agents tools --agent src.agents:agent # tools, with no model call
|
|
3957
|
+
tempest agents run "summarise the report" --agent src.agents:agent --trace
|
|
3958
|
+
```
|
|
3959
|
+
|
|
3960
|
+
`integrations verify` builds the client from `settings.<provider>_kwargs()` and calls the cheapest authenticated read each API offers (OpenPix `GET /company`, Mercado Pago `GET /users/me`) — a guard asserts those methods still exist on the generated clients and take no argument, so an upstream rename fails a test rather than an operator's terminal. `agents tools` spends no token; `agents run` exits `1` when the run was cut short by its budget, because a truncated run still returns text and treating it as an answer is the mistake worth refusing.
|
|
3961
|
+
|
|
3962
|
+
#### Queue and tasks — `tempest queue` / `tempest tasks`
|
|
3963
|
+
|
|
3964
|
+
```bash
|
|
3965
|
+
tempest queue publish orders.paid '{"order_id": 7}' --json
|
|
3966
|
+
tempest queue handlers # channels this service consumes
|
|
3967
|
+
tempest tasks list # registered task names
|
|
3968
|
+
tempest tasks run src.tasks:send_welcome --arg ana@example.com --kwarg retries=2
|
|
3969
|
+
```
|
|
3970
|
+
|
|
3971
|
+
`queue publish` connects, publishes and closes in one process, so the message is flushed before the command returns. `tasks list` imports the job modules first — a task exists on the broker only once its module has been imported — and prints the name TaskIQ registers (`<module>:<function>`), which is the name `run` takes. `run` enqueues; the worker executes, so success means the message was accepted, not that the job passed. Both default to the scaffolded `<root>.queue:broker` and `<root>.tasks:tq`.
|
|
3972
|
+
|
|
3973
|
+
#### Email and object store — `tempest email` / `tempest storage`
|
|
3974
|
+
|
|
3975
|
+
```bash
|
|
3976
|
+
tempest email test --to you@example.com # send through the project's SMTP settings
|
|
3977
|
+
tempest storage check # endpoint reachable, bucket present
|
|
3978
|
+
tempest storage ls reports/ # keys under a prefix
|
|
3979
|
+
tempest storage put ./note.pdf --key notes/2026-09.pdf
|
|
3980
|
+
tempest storage presign notes/2026-09.pdf --expires 900
|
|
3981
|
+
```
|
|
3982
|
+
|
|
3983
|
+
`email test` builds `EmailUtils(**settings.email_kwargs())`, so a message that arrives came through the same path the app uses; a refusal exits `1` with the server's reply and a reminder that port 587 wants `SMTP_USE_TLS` (STARTTLS) while 465 wants `SMTP_USE_SSL`. `storage` uses `AsyncMinIOClient(**settings.minio_kwargs())`, including the public endpoint — `presign` reports on stderr which host it signed for, because a URL signed against `minio:9000` is valid and unusable from a browser.
|
|
3984
|
+
|
|
3985
|
+
#### Feature flags and cache — `tempest flags` / `tempest cache`
|
|
3986
|
+
|
|
3987
|
+
```bash
|
|
3988
|
+
tempest flags list # everything the Redis backend holds
|
|
3989
|
+
tempest flags enable new-checkout # on, for every process reading it
|
|
3990
|
+
tempest flags get new-checkout # exit 1 when unset, 0 when stored
|
|
3991
|
+
tempest cache ping # PONG, or exit 1
|
|
3992
|
+
tempest cache stats # version, keys, memory, hit ratio
|
|
3993
|
+
tempest cache flush --namespace orders # invalidate what @cached registered
|
|
3994
|
+
tempest cache flush --all --yes # FLUSHDB (deletes non-cache keys too)
|
|
3995
|
+
```
|
|
3996
|
+
|
|
3997
|
+
Both resolve the URL from `--redis-url` > `REDIS_URL` > the project's settings, and both speak through the SDK's own classes — `RedisFeatureFlagBackend` and `CacheInvalidator` — so the CLI writes what the service reads. `flags get` separates `unset` (exit 1, the service falls back to the caller's default) from a stored `off` (exit 0). `cache flush --all` is `FLUSHDB` and needs `--yes`, because sessions, rate-limit counters and flags usually share that database.
|
|
3998
|
+
|
|
3920
3999
|
#### Users — `tempest user`
|
|
3921
4000
|
|
|
3922
4001
|
Seeds or lists users via the project's concrete `UserModel` (default `src.db.models:UserModel`). Bootstraps the first admin row so `/admin` login works without manual SQL.
|
|
@@ -3932,14 +4011,34 @@ tempest user set-password --email ana@example.com # prompt, hash, revoke ses
|
|
|
3932
4011
|
tempest user set-password --email ana@example.com --keep-sessions
|
|
3933
4012
|
tempest user list # everyone
|
|
3934
4013
|
tempest user list --admin # admins only
|
|
4014
|
+
tempest user show --email ana@example.com # the whole row (hash redacted)
|
|
4015
|
+
tempest user deactivate --email ana@example.com # is_active=False + revoke sessions
|
|
4016
|
+
tempest user activate --email ana@example.com # back on
|
|
4017
|
+
tempest user sessions --email ana@example.com # list refresh tokens
|
|
4018
|
+
tempest user sessions --email ana@example.com --revoke
|
|
4019
|
+
tempest user delete --email ana@example.com --yes # irreversible, removes the tokens too
|
|
3935
4020
|
```
|
|
3936
4021
|
|
|
4022
|
+
`show` redacts `hashed_password` — no question it answers needs the hash, and printing one puts a credential in terminal scrollback and CI logs. `deactivate` revokes the user's refresh tokens in the same transaction as the flag, because `is_active=False` on its own leaves an issued token exchangeable. `sessions` lists one line per token and exits `0` on a user with none; `--revoke` reports how many *that run* killed. `delete` deletes the refresh-token rows first (the scaffolded FK has no `ON DELETE CASCADE`) and requires `--yes` outside a TTY.
|
|
4023
|
+
|
|
3937
4024
|
When `tempest user create` runs in an interactive terminal **without** `--admin`/`--no-admin`, it asks `Should this user be an administrator? [y/N]`. Non-interactive runs (CI, pipes) skip the prompt and create a regular user. `promote` / `revoke` look the user up by email (case-insensitive) and exit `1` with `no user found` when nothing matches.
|
|
3938
4025
|
|
|
3939
4026
|
`tempest user set-password` replaces an existing user's password, hashing with the model's own `set_password`. Because changing the hash does not end a session on its own, it also revokes the user's DB-backed refresh tokens **in the same transaction** — resolving `src.db.models:UserRefreshTokenModel` by default, `--refresh-token-model` for a table elsewhere, `--keep-sessions` to opt out. Every path reports which of the two happened. From code, the same revocation is `await service.revoke_user_sessions(session, user_id=user.id)`.
|
|
3940
4027
|
|
|
3941
4028
|
Both `create` and `set-password` validate the plaintext with `check_password_policy` against the project's `AUTH_PASSWORD_*` settings (or the `PasswordPolicy` defaults: 12 characters minimum, 72 **bytes** maximum — the unit bcrypt counts), so the CLI accepts exactly the passwords `signup` and the admin panel accept.
|
|
3942
4029
|
|
|
4030
|
+
#### Routes and contract — `tempest routes` / `tempest openapi-export`
|
|
4031
|
+
|
|
4032
|
+
```bash
|
|
4033
|
+
tempest routes # every route, mounted routers included
|
|
4034
|
+
tempest routes --match /api/orders --method post # filtered
|
|
4035
|
+
tempest routes --json # machine-readable
|
|
4036
|
+
tempest openapi-export --out contracts/openapi.json # write this service's own spec
|
|
4037
|
+
tempest openapi-export --out contracts/openapi.json --check # exit 1 when it drifted
|
|
4038
|
+
```
|
|
4039
|
+
|
|
4040
|
+
`tempest routes` reads the effective paths from FastAPI's own route expansion, so a router mounted with `include_router` is listed (a comprehension over `app.routes` lists none of its paths since FastAPI 0.141.1), and routes kept out of the schema — HTML pages, internal endpoints — are listed with `SCHEMA=no` next to the dependencies guarding them. `tempest openapi-export` writes the document `openapi-client` (or any other generator) consumes without booting the service; `--check` compares it against the committed file and names the operations that moved, which is the CI guard against an undeclared contract change. Both take `--app module:attr` when the app does not sit at one of the scaffolded locations.
|
|
4041
|
+
|
|
3943
4042
|
#### Generate artifacts in an existing project — `tempest generate`
|
|
3944
4043
|
|
|
3945
4044
|
```bash
|
|
@@ -1700,10 +1700,35 @@ The SDK currently covers (Sep 2025+, post-v0.31.x):
|
|
|
1700
1700
|
default, and both it and `create` validate the plaintext with
|
|
1701
1701
|
`check_password_policy` against the project's own `AUTH_PASSWORD_*`
|
|
1702
1702
|
settings),
|
|
1703
|
-
`tempest secrets rotate
|
|
1703
|
+
`tempest secrets generate/init/rotate/vapid` (**v0.294.0**: `generate`
|
|
1704
|
+
prints without writing, `init` fills only missing/empty/`change-me`
|
|
1705
|
+
keys and is idempotent, `vapid` mints the Web Push P-256 pair and
|
|
1706
|
+
refuses to replace one without `--force`),
|
|
1704
1707
|
`tempest model analyze/bench/optimize/quantize/export-ort/hardware/
|
|
1705
1708
|
pull/cache-list/cache-rm`,
|
|
1706
1709
|
`tempest pdf list/schema/render`,
|
|
1710
|
+
**Operating an existing service (v0.294.0)** — `tempest routes` (every
|
|
1711
|
+
effective route, mounted routers expanded via
|
|
1712
|
+
`fastapi.routing.iter_route_contexts`, schema-excluded routes listed
|
|
1713
|
+
with their guards), `tempest openapi-export [--check]` (this service's
|
|
1714
|
+
own document; `--check` names the operations added/removed/changed),
|
|
1715
|
+
`tempest db check` (Alembic autogenerate drift, exit 1),
|
|
1716
|
+
`tempest serve` / `tempest shell` (uvicorn with the project's
|
|
1717
|
+
resolution; async REPL with settings, the project's own models and an
|
|
1718
|
+
open session, top-level `await` on that session's loop),
|
|
1719
|
+
`tempest doctor` (real connections to database/Redis/RabbitMQ/SMTP/
|
|
1720
|
+
MinIO plus the check registry; unconfigured reads `skip`, and a mixin
|
|
1721
|
+
default counts as unconfigured),
|
|
1722
|
+
`tempest user show/activate/deactivate/sessions/delete` (hash
|
|
1723
|
+
redacted; deactivate and delete take the refresh tokens with them),
|
|
1724
|
+
`tempest flags list/get/enable/disable` (`unset` is exit 1, distinct
|
|
1725
|
+
from a stored `off`), `tempest cache ping/stats/flush`
|
|
1726
|
+
(`--all` is FLUSHDB and demands `--yes`), `tempest email test`,
|
|
1727
|
+
`tempest storage check/ls/put/get/presign/rm` (presign reports which
|
|
1728
|
+
host it signed for), `tempest queue publish/handlers`,
|
|
1729
|
+
`tempest tasks list/run`, `tempest integrations list/verify`
|
|
1730
|
+
(cheapest authenticated read per provider, with a guard on the table),
|
|
1731
|
+
`tempest agents tools/run` (exit follows `AgentRun.succeeded`),
|
|
1707
1732
|
plus quality gates (`lint`, `fix`, `format`, `fmt-check`, `type`,
|
|
1708
1733
|
`test`, `check`), `openapi-errors`, `openapi-client`, `permissions`.
|
|
1709
1734
|
**`tempest pr-prompt` (v0.210.0)** — builds the prompt that makes an AI
|
|
@@ -2162,3 +2187,19 @@ coluna e tabela que o `[pdf-read]` entrega intercaladas, e o caminho com
|
|
|
2162
2187
|
senha distingue documento cifrado de arquivo corrompido — o que só ficou
|
|
2163
2188
|
verdade depois de descobrir que o `pdfplumber` embrulha `PDFPasswordIncorrect`
|
|
2164
2189
|
num `PdfminerException`, fazendo o `except` específico nunca disparar.
|
|
2190
|
+
|
|
2191
|
+
## O 500 volta a passar pelo CORS, v0.296.0 (2026-09-22)
|
|
2192
|
+
|
|
2193
|
+
`register_exception_handlers` instala o `ErrorEnvelopeMiddleware` como o
|
|
2194
|
+
middleware de usuário mais interno (#287). O handler de `Exception` do
|
|
2195
|
+
Starlette mora no `ServerErrorMiddleware`, fora de toda a pilha, e o
|
|
2196
|
+
envelope de 500 saía sem `Access-Control-Allow-Origin`: o navegador
|
|
2197
|
+
descartava, e o front via `Failed to fetch` num login que já estava em
|
|
2198
|
+
produção — escondendo a causa real por horas, porque todo `curl` mostrava
|
|
2199
|
+
as camadas funcionando.
|
|
2200
|
+
|
|
2201
|
+
A lição é a mesma do OAuth: o issue propunha documentar a ordem certa de
|
|
2202
|
+
registro e corrigir o template. Ordem que o consumidor precisa acertar é
|
|
2203
|
+
ordem que um dia ele inverte sem teste falhando. `append` em
|
|
2204
|
+
`user_middleware` deixa a camada no fundo **qualquer que seja a ordem**,
|
|
2205
|
+
então a regra deixou de existir em vez de ganhar um aviso.
|
|
@@ -123,6 +123,15 @@ Details in [UI layer](recipes/ui.md),
|
|
|
123
123
|
[Forms from Pydantic schemas](recipes/ui-forms.md) and
|
|
124
124
|
[Typed CSS](recipes/ui-css.md).
|
|
125
125
|
|
|
126
|
+
!!! tip "And when the frontend is an app, not a page"
|
|
127
|
+
The `ui` layer renders HTML **on the server**. When the screen needs
|
|
128
|
+
client-side state — a SPA — the path is still Python:
|
|
129
|
+
**[tempestweb](recipes/tempestweb-frontend.md)** writes the interface
|
|
130
|
+
and compiles it to WASM (or runs it in server-mode), and the SDK serves
|
|
131
|
+
the build through `make_web_app_router` / `build_web_app`, on the same
|
|
132
|
+
origin as the API. The two live together:
|
|
133
|
+
[Fullstack web](fullstack-web.md) compares when to use which.
|
|
134
|
+
|
|
126
135
|
## Request lifecycle
|
|
127
136
|
|
|
128
137
|
```mermaid
|
|
@@ -171,6 +180,50 @@ The SDK ships [`AppException`][tempest_fastapi_sdk.AppException] + [`register_ex
|
|
|
171
180
|
|
|
172
181
|
The frontend branches on `code` (stable, machine-readable), never on the (potentially translated) `detail`.
|
|
173
182
|
|
|
183
|
+
### The 500 goes through CORS too
|
|
184
|
+
|
|
185
|
+
An exception no handler catches becomes a `500` with `code: "INTERNAL_SERVER_ERROR"`. Starlette runs the `Exception` handler inside `ServerErrorMiddleware`, the **outermost** layer of the stack, so on its own that envelope would leave without passing through `CORSMiddleware`: with no `Access-Control-Allow-Origin` the browser discards the response and `fetch` rejects with `TypeError: Failed to fetch` — no status, no `code`, no `X-Request-ID`.
|
|
186
|
+
|
|
187
|
+
That is why `register_exception_handlers` also installs [`ErrorEnvelopeMiddleware`][tempest_fastapi_sdk.ErrorEnvelopeMiddleware] as the **innermost** middleware. From there the 500 passes through every middleware you added, and the order of the calls stops mattering:
|
|
188
|
+
|
|
189
|
+
```python
|
|
190
|
+
from fastapi import FastAPI
|
|
191
|
+
from fastapi.testclient import TestClient
|
|
192
|
+
|
|
193
|
+
from tempest_fastapi_sdk import (
|
|
194
|
+
RequestIDMiddleware,
|
|
195
|
+
apply_cors,
|
|
196
|
+
register_exception_handlers,
|
|
197
|
+
)
|
|
198
|
+
|
|
199
|
+
app: FastAPI = FastAPI()
|
|
200
|
+
app.add_middleware(RequestIDMiddleware)
|
|
201
|
+
apply_cors(app, origins=["https://front.example"])
|
|
202
|
+
register_exception_handlers(app)
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
@app.get("/boom")
|
|
206
|
+
async def boom() -> None:
|
|
207
|
+
raise RuntimeError("unhandled failure")
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
client: TestClient = TestClient(app, raise_server_exceptions=False)
|
|
211
|
+
response = client.get("/boom", headers={"Origin": "https://front.example"})
|
|
212
|
+
print(response.status_code, response.headers["access-control-allow-origin"])
|
|
213
|
+
print(response.json()["details"]["request_id"] == response.headers["x-request-id"])
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
```text
|
|
217
|
+
500 https://front.example
|
|
218
|
+
True
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
!!! note "What stays the same"
|
|
222
|
+
- The layer **does not decide CORS**. An origin outside the allow-list still gets no header, on the 500 too.
|
|
223
|
+
- After sending the envelope the exception is **re-raised**, as Starlette already did: the ASGI server still logs it, and a `TestClient` with the default `raise_server_exceptions=True` still raises it in your test.
|
|
224
|
+
- A failure after the response started (a stream that breaks mid-body) is re-raised with no second response, because the status is already on the wire. It is logged and reaches `on_server_error` once, like a plain 500.
|
|
225
|
+
- `register_exception_handlers` must run **before** the application starts; after that the stack is built and it raises `RuntimeError`.
|
|
226
|
+
|
|
174
227
|
## Where to go next
|
|
175
228
|
|
|
176
229
|
| You want to… | Read |
|