tempest-fastapi-sdk 0.231.0__tar.gz → 0.232.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.231.0 → tempest_fastapi_sdk-0.232.0}/CHANGELOG.md +80 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/Makefile +7 -1
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/PKG-INFO +1 -1
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/SHIPPED.md +19 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/index.en.md +1 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/index.md +1 -0
- tempest_fastapi_sdk-0.232.0/docs/recipes/stripe.en.md +429 -0
- tempest_fastapi_sdk-0.232.0/docs/recipes/stripe.md +423 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/reference.md +35 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/roadmap.en.md +1 -1
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/roadmap.md +1 -1
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/mkdocs.yml +3 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/pyproject.toml +1 -1
- tempest_fastapi_sdk-0.232.0/scripts/regen_stripe.py +237 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/__init__.py +5 -1
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/integrations/__init__.py +1 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/integrations/payment/__init__.py +10 -2
- tempest_fastapi_sdk-0.232.0/tempest_fastapi_sdk/integrations/payment/stripe/__init__.py +243 -0
- tempest_fastapi_sdk-0.232.0/tempest_fastapi_sdk/integrations/payment/stripe/client.py +441 -0
- tempest_fastapi_sdk-0.232.0/tempest_fastapi_sdk/integrations/payment/stripe/environment.py +108 -0
- tempest_fastapi_sdk-0.232.0/tempest_fastapi_sdk/integrations/payment/stripe/events.py +360 -0
- tempest_fastapi_sdk-0.232.0/tempest_fastapi_sdk/integrations/payment/stripe/money.py +150 -0
- tempest_fastapi_sdk-0.232.0/tempest_fastapi_sdk/integrations/payment/stripe/schemas.py +342 -0
- tempest_fastapi_sdk-0.232.0/tempest_fastapi_sdk/integrations/payment/stripe/webhooks.py +275 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/openapi/emit_client.py +21 -2
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/openapi/ir.py +7 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/openapi/parse.py +65 -8
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/utils/__init__.py +2 -0
- tempest_fastapi_sdk-0.232.0/tempest_fastapi_sdk/utils/forms.py +111 -0
- tempest_fastapi_sdk-0.232.0/tests/integrations/payment/stripe/__init__.py +1 -0
- tempest_fastapi_sdk-0.232.0/tests/integrations/payment/stripe/test_client.py +385 -0
- tempest_fastapi_sdk-0.232.0/tests/integrations/payment/stripe/test_generated_drift.py +129 -0
- tempest_fastapi_sdk-0.232.0/tests/integrations/payment/stripe/test_money.py +122 -0
- tempest_fastapi_sdk-0.232.0/tests/integrations/payment/stripe/test_webhooks.py +254 -0
- tempest_fastapi_sdk-0.232.0/tests/openapi/test_form_bodies.py +172 -0
- tempest_fastapi_sdk-0.232.0/tests/openapi/test_nested_capture.py +129 -0
- tempest_fastapi_sdk-0.232.0/tests/utils/test_forms.py +97 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/uv.lock +1 -1
- tempest_fastapi_sdk-0.232.0/vendor/stripe-api-facts.yaml +268 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/.github/ISSUE_TEMPLATE/docs.yml +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/.github/ISSUE_TEMPLATE/question.yml +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/.github/workflows/ci.yml +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/.github/workflows/docs.yml +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/.github/workflows/nightly-model.yml +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/.github/workflows/release-pypi.yml +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/.gitignore +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/.playwright-mcp/console-2026-08-01T19-55-53-764Z.log +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/.playwright-mcp/console-2026-08-01T19-57-10-893Z.log +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/.playwright-mcp/console-2026-08-01T20-08-18-023Z.log +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/.playwright-mcp/console-2026-08-01T20-09-56-040Z.log +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/.playwright-mcp/console-2026-08-01T20-23-00-137Z.log +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/.playwright-mcp/console-2026-08-01T23-45-30-424Z.log +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/.playwright-mcp/page-2026-08-01T19-55-53-849Z.yml +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/.playwright-mcp/page-2026-08-01T19-56-31-935Z.yml +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/.playwright-mcp/page-2026-08-01T19-57-10-926Z.yml +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/.playwright-mcp/page-2026-08-01T19-58-00-882Z.yml +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/.playwright-mcp/page-2026-08-01T20-08-18-067Z.yml +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/.playwright-mcp/page-2026-08-01T20-09-56-156Z.yml +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/.playwright-mcp/page-2026-08-01T20-23-00-166Z.yml +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/.playwright-mcp/page-2026-08-01T23-45-30-453Z.yml +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/.python-version +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/CLAUDE.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/README.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/admin-showcase.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/admin-showcase.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/architecture.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/architecture.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/changelog.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/changelog.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/contributing.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/contributing.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/fullstack-web.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/fullstack-web.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/genai-examples.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/genai-examples.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/getting-started/first-project.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/getting-started/first-project.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/getting-started/python-versions.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/getting-started/python-versions.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/getting-started/references.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/getting-started/references.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/getting-started/uv.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/getting-started/uv.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/index.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/index.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/installation.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/installation.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/integrated.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/integrated.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/learning/index.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/learning/index.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/learning/marketplace/api.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/learning/marketplace/api.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/learning/marketplace/business-rules.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/learning/marketplace/business-rules.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/learning/marketplace/domain.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/learning/marketplace/domain.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/learning/marketplace/flows.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/learning/marketplace/flows.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/learning/marketplace/index.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/learning/marketplace/index.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/marketplace-local.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/marketplace-local.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/migration.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/migration.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/admin-sql-console.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/admin-sql-console.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/admin.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/admin.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/agents-advanced.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/agents-advanced.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/agents-testing.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/agents-testing.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/agents.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/agents.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/artifact-registry.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/artifact-registry.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/audit-trail.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/audit-trail.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/auth-flow.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/auth-flow.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/authz.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/authz.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/br-helpers.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/br-helpers.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/cache.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/cache.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/chat.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/chat.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/cli.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/cli.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/database.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/database.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/deploy-safety.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/deploy-safety.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/downloads.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/downloads.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/email.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/email.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/enum-columns.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/enum-columns.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/faces.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/faces.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/feature-flags.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/feature-flags.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/fields.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/fields.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/file-store.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/file-store.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/firebase-auth.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/firebase-auth.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/genai.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/genai.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/geo.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/geo.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/http-client.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/http-client.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/http.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/http.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/idempotency.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/idempotency.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/image-generation.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/image-generation.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/introspection-auth.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/introspection-auth.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/jobs.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/jobs.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/logging.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/logging.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/management-commands.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/management-commands.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/metrics.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/metrics.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/mfa.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/mfa.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/model-weights.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/model-weights.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/modelops.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/modelops.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/models.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/models.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/multi-tenant.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/multi-tenant.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/oauth.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/oauth.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/observability.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/observability.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/offline-sync.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/offline-sync.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/openapi-client.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/openapi-client.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/openapi-errors.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/openapi-errors.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/openpix.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/openpix.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/outbox.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/outbox.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/pdf.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/pdf.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/permission-guards.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/permission-guards.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/push.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/push.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/query-plans.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/query-plans.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/queue-tasks.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/queue-tasks.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/react-spa.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/react-spa.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/realtime.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/realtime.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/refresh-tokens.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/refresh-tokens.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/reviews.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/reviews.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/security.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/security.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/sessions.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/sessions.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/spreadsheets.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/spreadsheets.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/sse.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/sse.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/storage.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/storage.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/stored-files.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/stored-files.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/system-checks.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/system-checks.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/tempestweb-frontend.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/tempestweb-frontend.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/testing.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/testing.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/text-search.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/text-search.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/transactions.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/transactions.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/typing.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/typing.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/ui-css.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/ui-css.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/ui-forms.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/ui-forms.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/ui.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/ui.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/uploads.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/uploads.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/utilities.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/utilities.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/vision.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/vision.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/webauthn.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/webauthn.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/webpush.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/webpush.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/websocket.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/recipes/websocket.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/reference.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/ssr.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/ssr.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/tutorial.en.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/docs/tutorial.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/mkdocs_hooks/llmstxt.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/planning/genai/README.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/planning/genai/manual-validation.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/planning/genai/phase-0.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/planning/genai/phase-1.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/planning/genai/phase-2.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/planning/genai/phase-3.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/planning/genai/validation-strategy.md +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/scripts/extract_recipe.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/scripts/regen_openpix.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/admin/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/admin/actions.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/admin/auth.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/admin/config.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/admin/dashboard.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/admin/discovery.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/admin/forms.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/admin/permissions.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/admin/router.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/admin/session.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/admin/site.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/admin/sql_shell.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/admin/static/admin.css +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/admin/templates/autocomplete.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/admin/templates/base.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/admin/templates/dashboard.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/admin/templates/detail.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/admin/templates/form.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/admin/templates/import.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/admin/templates/list.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/admin/templates/login.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/admin/templates/logs.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/admin/templates/mfa.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/admin/templates/sql_shell.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/admin/theme.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/agents/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/agents/agent.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/agents/builtin.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/agents/fact_stores.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/agents/loop.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/agents/memory.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/agents/multi.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/agents/protocols.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/agents/router.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/agents/schemas.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/agents/skills.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/agents/storage.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/agents/structured.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/agents/testing.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/agents/tools.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/agents/typed.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/api/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/api/cookies.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/api/dependencies/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/api/dependencies/auth.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/api/error_docs.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/api/handlers.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/api/middlewares/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/api/middlewares/body_size.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/api/middlewares/cors.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/api/middlewares/csrf.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/api/middlewares/graceful.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/api/middlewares/idempotency.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/api/middlewares/quota.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/api/middlewares/rate_limit.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/api/middlewares/request_id.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/api/middlewares/response_cache.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/api/oauth.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/api/routers/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/api/routers/health.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/api/routers/logs.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/api/routers/metrics.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/api/routers/tool_spec.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/api/server.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/api/spa.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/api/static.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/api/tracing.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/api/webhooks.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/artifacts/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/artifacts/actions.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/artifacts/digest.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/artifacts/model.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/artifacts/registry.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/firebase.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/guards.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/introspection.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/locale.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/page_renderer.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/router.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/schemas.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/service.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/templates/en-US/activation.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/templates/en-US/activation_error.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/templates/en-US/activation_success.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/templates/en-US/email_change.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/templates/en-US/email_change_error.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/templates/en-US/email_change_success.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/templates/en-US/email_changed_notice.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/templates/en-US/email_verification.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/templates/en-US/email_verification_error.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/templates/en-US/email_verification_success.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/templates/en-US/password_reset.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/templates/en-US/password_reset_error.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/templates/en-US/password_reset_form.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/templates/en-US/password_reset_success.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/templates/pt-BR/activation.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/templates/pt-BR/activation_error.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/templates/pt-BR/activation_success.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/templates/pt-BR/email_change.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/templates/pt-BR/email_change_error.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/templates/pt-BR/email_change_success.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/templates/pt-BR/email_changed_notice.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/templates/pt-BR/email_verification.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/templates/pt-BR/email_verification_error.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/templates/pt-BR/email_verification_success.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/templates/pt-BR/password_reset.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/templates/pt-BR/password_reset_error.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/templates/pt-BR/password_reset_form.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/templates/pt-BR/password_reset_success.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/token_delivery.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/auth/webauthn.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/authz/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/authz/dependencies.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/authz/permissions.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/authz/requires.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cache/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cache/decorator.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cache/invalidation.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cache/redis_manager.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/chat/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/chat/models.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/chat/router.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/chat/schemas.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/chat/service.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/checks/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/checks/builtins.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/checks/messages.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/checks/registry.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/_templates/CLAUDE.md.tmpl +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/_templates/Dockerfile.tmpl +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/_templates/README.md.tmpl +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/_templates/dockerignore.tmpl +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/_templates/env.example.tmpl +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/_templates/gitignore.tmpl +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/_templates/main.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/_templates/pyproject.toml.tmpl +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/_templates/src/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/_templates/src/api/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/_templates/src/api/app.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/_templates/src/api/dependencies/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/_templates/src/api/dependencies/auth.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/_templates/src/api/dependencies/resources.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/_templates/src/api/routers/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/_templates/src/controllers/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/_templates/src/core/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/_templates/src/core/exceptions.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/_templates/src/core/settings.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/_templates/src/db/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/_templates/src/db/models/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/_templates/src/db/models/user.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/_templates/src/db/repositories/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/_templates/src/schemas/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/_templates/src/server.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/_templates/src/services/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/_templates/src/utils/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/_templates/tests/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/_templates/tests/test_smoke.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/commands.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/config.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/db.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/docker_compose.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/generate.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/lint.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/main.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/model.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/new.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/openapi_errors.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/openapi_fix.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/pdf.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/permissions.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/pr_prompt.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/secrets.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/src_layers.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/user.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/cli/voice.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/controllers/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/controllers/base.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/core/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/core/context.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/core/enums.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/core/logging.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/core/typed.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/db/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/db/_alembic_templates/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/db/_alembic_templates/env.py.template +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/db/alembic_hooks.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/db/audit.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/db/backup.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/db/connection.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/db/device_token_model.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/db/enum_migrations.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/db/enums.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/db/explain.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/db/expressions.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/db/migrations.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/db/mixins.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/db/model.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/db/outbox.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/db/repository.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/db/search.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/db/signals.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/db/slow_query.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/db/tenant.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/db/transaction.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/db/user_model.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/db/user_recovery_code_model.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/db/user_refresh_token_model.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/db/user_token_model.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/db/user_webauthn_credential_model.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/db/voice_profile_model.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/db/webpush_subscription_model.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/exceptions/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/exceptions/base.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/exceptions/conflict.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/exceptions/factories.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/exceptions/forbidden.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/exceptions/i18n.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/exceptions/jwt.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/exceptions/not_found.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/exceptions/too_many_requests.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/exceptions/unauthorized.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/exceptions/upload.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/exceptions/validation.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/faces/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/faces/detector.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/faces/geometry.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/faces/models.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/faces/recognizer.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/faces/schemas.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/flags/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/flags/backends.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/flags/dependencies.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/flags/service.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/admin.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/audio/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/audio/conversation.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/audio/diarization.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/audio/language.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/audio/profiles.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/audio/router.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/audio/schemas.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/audio/speaker_count.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/audio/stt.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/audio/tts.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/audio/voiceprint.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/batching.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/catalog.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/embeddings.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/generation_cache.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/hardware.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/hub.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/image.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/inventory.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/metrics.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/moderation.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/ollama.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/onnx_embed.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/pipeline.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/rag/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/rag/chroma.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/rag/chunking.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/rag/context.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/rag/extract.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/rag/fusion.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/rag/hybrid.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/rag/pdf.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/rag/rerank.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/rag/retriever.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/rag/schemas.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/rag/search.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/rag/vectorstore.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/registry.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/router.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/schemas.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/structured.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/text.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/tokens.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/tracing.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/genai/vision_text.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/geo/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/geo/br.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/geo/db.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/geo/distance.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/geo/enums.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/geo/estimate.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/geo/geocoding.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/geo/geometry.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/geo/polyline.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/geo/routing.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/geo/schemas.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/integrations/payment/openpix/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/integrations/payment/openpix/client.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/integrations/payment/openpix/environment.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/integrations/payment/openpix/events.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/integrations/payment/openpix/money.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/integrations/payment/openpix/schemas.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/integrations/payment/openpix/webhooks.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/modelops/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/modelops/_fs.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/modelops/bench.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/modelops/compact.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/modelops/edge.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/modelops/energy.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/modelops/export.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/modelops/monitoring.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/modelops/pickled.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/modelops/quantize.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/modelops/ranking.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/modelops/router.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/modelops/schemas.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/modelops/serving.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/modelops/sklearn.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/modelops/static.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/openapi/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/openapi/emit_schemas.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/openapi/generate.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/openapi/loader.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/openapi/naming.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/openapi/source.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/pdf/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/pdf/assets.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/pdf/documents.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/pdf/formatting.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/pdf/reader.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/pdf/renderer.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/pdf/router.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/pdf/templates/_base.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/pdf/templates/_party.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/pdf/templates/_styles.css +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/pdf/templates/contract.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/pdf/templates/quote.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/pdf/templates/receipt.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/pdf/templates/report.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/pdf/templates/voucher.html +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/push/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/push/dispatcher.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/push/router.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/push/schemas.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/push/service.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/push/transports/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/push/transports/fcm.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/push/transports/webpush.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/py.typed +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/queue/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/queue/broker.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/queue/consumer.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/queue/dedup.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/queue/manager.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/queue/publisher.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/queue/reliability.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/queue/topology.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/queue/tracing.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/reviews/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/reviews/models.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/reviews/router.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/reviews/schemas.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/reviews/service.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/schemas/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/schemas/base.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/schemas/errors.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/schemas/link_headers.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/schemas/logs.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/schemas/pagination.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/schemas/response.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/services/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/services/base.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/services/file_mixin.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/sessions/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/sessions/dependencies.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/sessions/middleware.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/sessions/router.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/sessions/schemas.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/sessions/service.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/sessions/store.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/settings/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/settings/base.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/settings/mixins.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/spreadsheet/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/spreadsheet/formats.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/spreadsheet/styles.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/spreadsheet/writer.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/sse/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/sse/broker.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/sse/event_stream.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ssr/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ssr/_static/htmx.min.js +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ssr/assets.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ssr/attributes.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ssr/page.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ssr/response.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ssr/webapp.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/storage/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/storage/minio_client.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/tasks/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/tasks/cron.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/tasks/dead_letter.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/tasks/jobs.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/tasks/manager.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/tasks/observability.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/tasks/oop.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/tasks/queue.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/tasks/scheduler.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/testing/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/testing/database.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/testing/factories.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ui/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ui/_core.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ui/components/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ui/components/alert.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ui/components/card.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ui/components/classes.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ui/components/empty.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ui/components/nav.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ui/components/pagination.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ui/components/styles.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ui/components/table.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ui/css/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ui/css/router.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ui/css/rules.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ui/css/tokens.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ui/forms/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ui/forms/introspect.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ui/forms/parse.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ui/forms/render.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ui/forms/spec.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ui/forms/styles.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ui/layout/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ui/layout/grid.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ui/layout/shell.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ui/pages/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ui/pages/page.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/ui/stylesheet.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/utils/client_ip.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/utils/currency.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/utils/data/br_locations.json +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/utils/datetime.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/utils/dict.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/utils/download.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/utils/email.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/utils/fields.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/utils/file_store.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/utils/http_client.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/utils/jwt.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/utils/locations.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/utils/log.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/utils/metrics.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/utils/naming.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/utils/opaque_token.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/utils/password.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/utils/regex.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/utils/storage_backends.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/utils/throttle.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/utils/token_types.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/utils/totp.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/utils/upload.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/vision/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/vision/mapping.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/vision/router.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/vision/schemas.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/webpush/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/webpush/dispatcher.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/webpush/router.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/webpush/schemas.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/webpush/service.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/websockets/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/websockets/hub.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/websockets/router.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tempest_fastapi_sdk/websockets/schemas.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/admin/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/admin/test_actions.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/admin/test_audit_viewer.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/admin/test_auth.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/admin/test_autocomplete_fk.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/admin/test_csv_import.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/admin/test_dashboard_cards.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/admin/test_discovery.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/admin/test_forms.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/admin/test_inlines.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/admin/test_lenses.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/admin/test_logs_nav.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/admin/test_logs_traceback_export.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/admin/test_mfa.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/admin/test_rbac.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/admin/test_rich_filters.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/admin/test_router.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/admin/test_site.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/admin/test_sql_shell.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/admin/test_sql_shell_page.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/admin/test_theme.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/admin/test_upload_field.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/admin/test_user_model.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/admin/test_widgets_json_time.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/agents/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/agents/test_agent.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/agents/test_agent_router.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/agents/test_builtin_tools.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/agents/test_fact_stores.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/agents/test_memory.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/agents/test_multi_agent.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/agents/test_skills.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/agents/test_typed_tools.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/api/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/api/test_body_size.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/api/test_business_metrics.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/api/test_cookies.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/api/test_cors.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/api/test_csrf.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/api/test_dependencies_auth.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/api/test_error_docs.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/api/test_graceful.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/api/test_handlers.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/api/test_health_router.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/api/test_idempotency.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/api/test_jwt_dependency.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/api/test_logs_router.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/api/test_oauth.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/api/test_outbound_webhooks.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/api/test_prometheus.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/api/test_quota.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/api/test_rate_limit.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/api/test_rate_limit_extras.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/api/test_request_id_middleware.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/api/test_response_cache.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/api/test_role_dependency.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/api/test_server.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/api/test_spa.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/api/test_static.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/api/test_tool_spec.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/api/test_tracing.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/api/test_webhooks.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/api/test_webhooks_rsa.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/artifacts/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/artifacts/support.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/artifacts/test_actions.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/artifacts/test_digest.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/artifacts/test_registry.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/auth/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/auth/test_cookie_delivery.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/auth/test_email_change.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/auth/test_firebase.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/auth/test_guards.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/auth/test_introspection.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/auth/test_locale.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/auth/test_me.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/auth/test_mfa.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/auth/test_refresh.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/auth/test_refresh_db.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/auth/test_router_session_sharing.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/auth/test_service.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/auth/test_webauthn.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/auth/webauthn_authenticator.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/authz/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/authz/test_dependencies.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/authz/test_permissions.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/authz/test_requires.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/cache/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/cache/test_decorator.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/cache/test_invalidation.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/cache/test_redis_manager.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/chat/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/chat/test_chat.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/checks/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/checks/test_check_config_cli.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/checks/test_checks.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/cli/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/cli/test_config.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/cli/test_db.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/cli/test_db_seed.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/cli/test_docker_compose.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/cli/test_dockerfile_spa.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/cli/test_generate.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/cli/test_main.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/cli/test_management_commands.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/cli/test_model.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/cli/test_openapi_errors.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/cli/test_openapi_errors_bare_calls.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/cli/test_openapi_errors_callgraph.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/cli/test_openapi_errors_configured.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/cli/test_openapi_errors_delegation.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/cli/test_openapi_fix.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/cli/test_permissions.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/cli/test_project_claude_md.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/cli/test_quality_gate_integration.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/cli/test_scaffold_runtime.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/cli/test_secrets.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/cli/test_user.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/conftest.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/controllers/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/controllers/test_base.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/controllers/test_generic_bounds.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/core/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/core/test_context.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/core/test_enums.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/core/test_logging.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/core/test_typed.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/db/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/db/test_alembic_hooks.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/db/test_audit.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/db/test_backup.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/db/test_bulk_ops.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/db/test_connection.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/db/test_eager_load.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/db/test_enum_column.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/db/test_enum_migrations.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/db/test_explain.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/db/test_expressions.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/db/test_migrations.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/db/test_mixins.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/db/test_model.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/db/test_outbox.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/db/test_repository.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/db/test_repository_conflict_exceptions.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/db/test_safe_upgrade.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/db/test_search.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/db/test_signals.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/db/test_slow_query.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/db/test_sqlite_wal.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/db/test_tenant.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/db/test_transaction.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/exceptions/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/exceptions/test_exceptions.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/exceptions/test_factories.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/exceptions/test_i18n.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/exceptions/test_inherited_code_warning.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/faces/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/faces/test_faces.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/flags/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/flags/test_flags.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/_eval/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/_eval/corpus.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/audio/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/audio/test_audio.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/audio/test_concurrency.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/audio/test_diarization.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/audio/test_language.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/audio/test_profiles.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/audio/test_speaker_count.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/audio/test_voice_router.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/conftest.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_batching.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_chat_memory.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_embedding_cache_redis.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_embeddings.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_env_defaults.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_eval_harness.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_genai_metrics.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_genai_observability.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_generation_cache.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_generation_config.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_gpu_validation.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_hardware.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_hub.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_hybrid.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_image.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_inventory.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_moderation.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_ollama.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_onnx_embed.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_pipeline.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_pipeline_integration.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_precision_kwarg.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_rag.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_refinements.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_rerank.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_router.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_structured.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_text.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_textgen_embed_metrics.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_tokens.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_tracing.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_vectorstore.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/genai/test_vision_text.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/geo/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/geo/test_br.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/geo/test_db.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/geo/test_distance.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/geo/test_estimate.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/geo/test_geocoding.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/geo/test_geometry.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/geo/test_polyline.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/geo/test_routing.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/geo/test_routing_extra.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/integrations/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/integrations/payment/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/integrations/payment/openpix/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/integrations/payment/openpix/test_generated_drift.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/integrations/payment/openpix/test_openpix.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/modelops/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/modelops/conftest.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/modelops/test_bench.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/modelops/test_compact.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/modelops/test_edge.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/modelops/test_energy.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/modelops/test_export.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/modelops/test_monitoring.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/modelops/test_pickled.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/modelops/test_quantize.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/modelops/test_ranking.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/modelops/test_serving.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/modelops/test_sklearn_export.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/modelops/test_static.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/openapi/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/openapi/conftest.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/openapi/test_generate.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/openapi/test_hostile_spec.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/openapi/test_loader.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/openapi/test_naming.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/openapi/test_parse.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/pdf/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/pdf/test_assets.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/pdf/test_formatting.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/pdf/test_reader.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/pdf/test_renderer.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/pdf/test_router_and_cli.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/push/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/push/test_router.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/push/test_service.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/push/test_transports.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/queue/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/queue/test_broker.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/queue/test_consumer.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/queue/test_dedup.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/queue/test_manager.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/queue/test_prefetch.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/queue/test_publisher.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/queue/test_reliability.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/queue/test_topology.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/queue/test_tracing.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/reviews/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/reviews/test_reviews.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/schemas/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/schemas/test_base.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/schemas/test_cursor_pagination.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/schemas/test_errors.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/schemas/test_link_headers.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/schemas/test_pagination.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/schemas/test_response.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/services/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/services/test_base.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/services/test_file_mixin.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/sessions/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/sessions/test_sessions.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/settings/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/settings/test_base.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/settings/test_mixins.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/spreadsheet/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/spreadsheet/test_formats.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/spreadsheet/test_writer.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/sse/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/sse/test_broker.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/sse/test_event_stream.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/ssr/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/ssr/test_attributes.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/ssr/test_integration.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/ssr/test_page.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/ssr/test_response.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/ssr/test_webapp.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/storage/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/storage/test_minio_client.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/tasks/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/tasks/test_cron.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/tasks/test_dead_letter.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/tasks/test_jobs.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/tasks/test_manager.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/tasks/test_observability.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/tasks/test_oop.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/tasks/test_queue.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/tasks/test_queue_lifecycle_hooks.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/tasks/test_scheduler.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/test_docs_api_guard.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/test_docs_examples_compile.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/test_docs_examples_names.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/test_docs_organization.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/test_docs_signature_guard.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/test_kwargs_guard.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/test_llmstxt.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/test_reexport_guard.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/test_reference_coverage.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/test_vacuous_guard.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/testing/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/testing/test_database.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/testing/test_factories.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/ui/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/ui/test_components.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/ui/test_core_contract.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/ui/test_css.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/ui/test_css_router.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/ui/test_forms_introspect.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/ui/test_forms_parse.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/ui/test_forms_render.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/ui/test_integration.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/ui/test_layout_and_pages.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/ui/test_stylesheet.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/utils/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/utils/test_client_ip.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/utils/test_currency.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/utils/test_datetime.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/utils/test_dict.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/utils/test_download.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/utils/test_email.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/utils/test_fields.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/utils/test_file_store.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/utils/test_http_client.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/utils/test_jwt.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/utils/test_lazy_extras.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/utils/test_locations.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/utils/test_log.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/utils/test_metrics.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/utils/test_opaque_token.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/utils/test_password.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/utils/test_regex.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/utils/test_storage_backends.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/utils/test_throttle.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/utils/test_token_types.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/utils/test_upload.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/vision/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/vision/test_router.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/vision/test_vision.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/webpush/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/webpush/test_dispatcher.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/webpush/test_router.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/webpush/test_schemas.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/webpush/test_service.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/websockets/__init__.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/tests/websockets/test_hub_and_router.py +0 -0
- {tempest_fastapi_sdk-0.231.0 → tempest_fastapi_sdk-0.232.0}/vendor/openpix-openapi.yaml +0 -0
|
@@ -5,6 +5,86 @@ 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.232.0] — 2026-08-16
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **Stripe integration** (`tempest_fastapi_sdk.integrations.payment.stripe`),
|
|
13
|
+
no extra required.
|
|
14
|
+
|
|
15
|
+
```python
|
|
16
|
+
from tempest_fastapi_sdk.integrations.payment.stripe import (
|
|
17
|
+
StripeClient,
|
|
18
|
+
stripe_http_client,
|
|
19
|
+
to_minor_units,
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
client = StripeClient(stripe_http_client("sk_test_..."))
|
|
23
|
+
intent = await client.payment_intents.create(
|
|
24
|
+
{
|
|
25
|
+
"amount": to_minor_units("199.90", "brl"),
|
|
26
|
+
"currency": "brl",
|
|
27
|
+
"metadata": {"order_id": "1042"},
|
|
28
|
+
}
|
|
29
|
+
)
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
- `StripeClient` over the SDK's `HTTPClient`, with a generic
|
|
33
|
+
`StripeResource` covering create / retrieve / update / delete / list
|
|
34
|
+
plus `auto_paginate` for nine resources (customers, payment intents,
|
|
35
|
+
refunds, products, prices, subscriptions, invoices, Checkout sessions,
|
|
36
|
+
events). Every write carries an `Idempotency-Key` — a retried charge
|
|
37
|
+
without one bills the customer twice.
|
|
38
|
+
- `stripe_http_client` pins `Stripe-Version`, so an account upgraded in
|
|
39
|
+
the dashboard cannot silently change response shapes under a service
|
|
40
|
+
that never changed.
|
|
41
|
+
- Money that respects **zero-decimal** and **three-decimal** currencies:
|
|
42
|
+
`to_minor_units` / `from_minor_units` / `currency_exponent`. ¥1050 is
|
|
43
|
+
`1050`, not `105000`.
|
|
44
|
+
- Webhook verification over the payload Stripe actually signs
|
|
45
|
+
(`f"{t}.{body}"`, not the body), with a replay window, secret
|
|
46
|
+
rotation, and `sign_payload` so tests do not re-derive it wrongly. An
|
|
47
|
+
unknown event type never fails the route.
|
|
48
|
+
- `StripeEvent` — 265 event types, generated from the specification
|
|
49
|
+
(`make stripe-fetch` / `make stripe-regen`) with a drift test.
|
|
50
|
+
- `StripeError` surfacing `type` / `code` / `decline_code` / `param` /
|
|
51
|
+
`request_id`, instead of a bare status.
|
|
52
|
+
|
|
53
|
+
- **`form_encode`** (`tempest_fastapi_sdk.form_encode`) — flattens a
|
|
54
|
+
nested payload into the bracket notation form-encoded APIs read
|
|
55
|
+
(`metadata[user_id]=42`, `items[0][price]=price_123`). Booleans go out
|
|
56
|
+
lower-case, `None` is dropped rather than sent empty (an empty string
|
|
57
|
+
*clears* a field on these APIs), `Decimal` keeps its exact text.
|
|
58
|
+
|
|
59
|
+
- **The OpenAPI generator now reads the request body's media type.** An
|
|
60
|
+
operation declaring `application/x-www-form-urlencoded` emits
|
|
61
|
+
`data=form_encode(payload)`; JSON operations are unchanged. Before this,
|
|
62
|
+
a client generated against Stripe had **100% of its writes rejected** —
|
|
63
|
+
all 588 of them declare form encoding and none declares JSON.
|
|
64
|
+
|
|
65
|
+
### Fixed
|
|
66
|
+
|
|
67
|
+
- **The OpenAPI parser aborted on re-entrant specifications.** Note sinks
|
|
68
|
+
were removed from the stack **by equality**, and two sinks that have
|
|
69
|
+
collected nothing are both `[]` — so a nested parse (a field's type
|
|
70
|
+
resolving a `$ref`, whose component's fields open their own sinks)
|
|
71
|
+
removed the wrong one and the outer block died with
|
|
72
|
+
`ValueError: list.remove(x): x not in list`. Removal is now by identity.
|
|
73
|
+
Parsing Stripe's specification is what surfaced it; the regression test
|
|
74
|
+
fails on the previous code.
|
|
75
|
+
|
|
76
|
+
### Notes
|
|
77
|
+
|
|
78
|
+
The Stripe client is **hand-written**, unlike OpenPix, and the reason is
|
|
79
|
+
measured on the `2026-07-29.dahlia` specification: generating the full
|
|
80
|
+
surface produces a `schemas.py` of 3.3 MB / 81k lines whose import costs
|
|
81
|
+
**5.8 s and 492 MB of RSS**, and slicing by resource does not help because
|
|
82
|
+
`/v1/prices` alone reaches 864 of the 1440 component schemas. What still
|
|
83
|
+
comes from the specification — API version, base URL, the event list —
|
|
84
|
+
comes through `scripts/regen_stripe.py`, which also records the numbers.
|
|
85
|
+
|
|
86
|
+
Closes #156.
|
|
87
|
+
|
|
8
88
|
## [0.231.0] — 2026-08-16
|
|
9
89
|
|
|
10
90
|
### Added
|
|
@@ -7,7 +7,7 @@ PACKAGE := tempest_fastapi_sdk
|
|
|
7
7
|
PYTHON_VERSION := 3.11
|
|
8
8
|
|
|
9
9
|
.DEFAULT_GOAL := help
|
|
10
|
-
.PHONY: help install sync clean test test-model test-gpu cov lint fix fmt fmt-check type check ci build smoke release tag version docs docs-serve docs-build
|
|
10
|
+
.PHONY: help install sync clean stripe-regen stripe-fetch test test-model test-gpu cov lint fix fmt fmt-check type check ci build smoke release tag version docs docs-serve docs-build
|
|
11
11
|
|
|
12
12
|
help: ## List available targets
|
|
13
13
|
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) \
|
|
@@ -63,6 +63,12 @@ build: ## Build sdist + wheel into dist/
|
|
|
63
63
|
openpix-regen: ## Regenerate the vendored OpenPix schemas + client from vendor/openpix-openapi.yaml
|
|
64
64
|
uv run python scripts/regen_openpix.py
|
|
65
65
|
|
|
66
|
+
stripe-regen: ## Regenerate Stripe's event enum from vendor/stripe-api-facts.yaml (offline)
|
|
67
|
+
uv run python scripts/regen_stripe.py
|
|
68
|
+
|
|
69
|
+
stripe-fetch: ## Refresh vendor/stripe-api-facts.yaml from Stripe's published spec (network)
|
|
70
|
+
uv run python scripts/regen_stripe.py --fetch
|
|
71
|
+
|
|
66
72
|
smoke: build ## Install the freshly built wheel in a clean venv and import the top-level surface
|
|
67
73
|
@rm -rf /tmp/$(PACKAGE)-smoke
|
|
68
74
|
uv venv --python $(PYTHON_VERSION) /tmp/$(PACKAGE)-smoke
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: tempest-fastapi-sdk
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.232.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
|
|
@@ -105,6 +105,25 @@ The SDK currently covers (Sep 2025+, post-v0.31.x):
|
|
|
105
105
|
and FCM's `InvalidArgumentError` deliberately does **not** prune, because
|
|
106
106
|
it covers malformed payloads too and pruning on it would wipe a fleet.
|
|
107
107
|
Recipe: `docs/recipes/push.md`.
|
|
108
|
+
- **Stripe (v0.232.0, no extra)** —
|
|
109
|
+
`tempest_fastapi_sdk.integrations.payment.stripe`. `StripeClient` over
|
|
110
|
+
`HTTPClient` with a generic `StripeResource` (create/retrieve/update/delete/
|
|
111
|
+
list + `auto_paginate`) across nine resources; `Idempotency-Key` on every
|
|
112
|
+
write; `stripe_http_client` pinning `Stripe-Version`; zero- and
|
|
113
|
+
three-decimal-aware money helpers; webhook verification over `t.body` with
|
|
114
|
+
a replay window, rotation support and a `sign_payload` for tests;
|
|
115
|
+
`StripeEvent` (265 types generated from the spec, drift-tested);
|
|
116
|
+
`StripeError` carrying type/code/decline_code/param/request_id; thin
|
|
117
|
+
response models with `extra="allow"`. Ships alongside two pieces of general
|
|
118
|
+
value: **`form_encode`** (bracket-notation flattening, public) and the
|
|
119
|
+
**generator reading the request body's media type** so form-only APIs emit
|
|
120
|
+
`data=form_encode(payload)`. Also fixes a parser bug where note sinks were
|
|
121
|
+
removed by equality, aborting any re-entrant spec.
|
|
122
|
+
**The client is hand-written on purpose**: generating Stripe's spec yields
|
|
123
|
+
3.3 MB of schemas costing 5.8 s / 492 MB RSS to import, and `/v1/prices`
|
|
124
|
+
alone reaches 864 of 1440 schemas, so no small subset exists. Measurements
|
|
125
|
+
and the fetch/regen steps live in `scripts/regen_stripe.py`. Recipe:
|
|
126
|
+
`docs/recipes/stripe.md`.
|
|
108
127
|
- **Permission guards (v0.167.0)** — `@requires(*guards, user_param=None)`
|
|
109
128
|
(`tempest_fastapi_sdk.authz`, re-exported at the root) runs plain
|
|
110
129
|
`(user) -> user | None` guards before a function body, at any layer, sync or
|
|
@@ -408,6 +408,7 @@ come back here to plug in each capability as you need it.
|
|
|
408
408
|
| **[SSR (typed pages) »](../ssr.md)** | `Page`, `html_response`, `make_htmx_router`, hosting a `tempestweb` build |
|
|
409
409
|
| **[Storage (MinIO/S3) »](storage.md)** | `AsyncMinIOClient`, `MinIOUploadStorage`, `presigned_get_url` / `presigned_put_url`, `list_objects` |
|
|
410
410
|
| **[Stored file (service mixin) »](stored-files.md)** | `StoredFileServiceMixin` — `set_file` / `replace` / `clear_file` over `UploadUtils` |
|
|
411
|
+
| **[Stripe (cards + subscriptions) »](stripe.md)** | `StripeClient`, `stripe_http_client`, `to_minor_units` / `from_minor_units`, `make_stripe_webhook_dependency`, `StripeEvent` — form-encoded writes, idempotency by default, zero-decimal currencies |
|
|
411
412
|
| **[System checks (check-config) »](system-checks.md)** | `run_system_checks`, `@check`, `CheckMessage`, `tempest check-config` — validate settings before serving |
|
|
412
413
|
| **[tempestweb frontend + SDK »](tempestweb-frontend.md)** | tempestweb frontend calling the SDK backend: `tempestweb.native.http`, `Idempotency-Key` + `IdempotencyMiddleware`, retry, same origin vs CORS |
|
|
413
414
|
| **[Testing »](testing.md)** | `test_session`, `test_database`, in-memory SQLite, pytest fixtures |
|
|
@@ -415,6 +415,7 @@ aqui pra plugar cada capacidade conforme precisar.
|
|
|
415
415
|
| **[SPA React no FastAPI »](react-spa.md)** | `make_spa_router` — servir o build do Vite pelo mesmo processo, com history fallback |
|
|
416
416
|
| **[SSR (páginas tipadas) »](../ssr.md)** | `Page`, `html_response`, `make_htmx_router`, hospedar um build do `tempestweb` |
|
|
417
417
|
| **[Storage (MinIO/S3) »](storage.md)** | `AsyncMinIOClient`, `MinIOUploadStorage`, `presigned_get_url` / `presigned_put_url`, `list_objects` |
|
|
418
|
+
| **[Stripe (cartão + assinatura) »](stripe.md)** | `StripeClient`, `stripe_http_client`, `to_minor_units` / `from_minor_units`, `make_stripe_webhook_dependency`, `StripeEvent` — escrita form-encoded, idempotência por padrão, moeda de zero decimais |
|
|
418
419
|
| **[Sync offline-first (delta) »](offline-sync.md)** | `BaseRepository.changes_since`, `SyncFilterSchema`, `SyncPaginationSchema`, deltas por cursor + soft-delete |
|
|
419
420
|
| **[System checks (check-config) »](system-checks.md)** | `run_system_checks`, `@check`, `CheckMessage`, `tempest check-config` — validar settings antes de servir |
|
|
420
421
|
| **[Tempo real »](realtime.md)** | Visão geral — quando escolher SSE, WebSocket ou Web Push |
|
|
@@ -0,0 +1,429 @@
|
|
|
1
|
+
# Stripe (cards, subscriptions, Checkout)
|
|
2
|
+
|
|
3
|
+
Every service of ours that charges a card used to rewrite the same Stripe
|
|
4
|
+
layer: a synchronous HTTP client called from inside an async route,
|
|
5
|
+
hand-retyped schemas, and a webhook verification each one derived its own
|
|
6
|
+
way. `tempest_fastapi_sdk.integrations.payment.stripe` ships that layer.
|
|
7
|
+
|
|
8
|
+
!!! info "Installation"
|
|
9
|
+
No extra. The integration uses the `HTTPClient` the SDK already has —
|
|
10
|
+
`uv add "tempest-fastapi-sdk[http]"` if you have not pulled `httpx`
|
|
11
|
+
in yet.
|
|
12
|
+
|
|
13
|
+
!!! info "When to use this"
|
|
14
|
+
International card payments, subscriptions or hosted Checkout. For
|
|
15
|
+
**Pix**, use [OpenPix](openpix.en.md), which is generated from the
|
|
16
|
+
provider's specification.
|
|
17
|
+
|
|
18
|
+
## The minimal path
|
|
19
|
+
|
|
20
|
+
```python
|
|
21
|
+
import asyncio
|
|
22
|
+
from decimal import Decimal
|
|
23
|
+
|
|
24
|
+
from tempest_fastapi_sdk.integrations.payment.stripe import (
|
|
25
|
+
StripeClient,
|
|
26
|
+
stripe_http_client,
|
|
27
|
+
to_minor_units,
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
async def main() -> None:
|
|
32
|
+
"""Run this example."""
|
|
33
|
+
client = StripeClient(stripe_http_client("sk_test_..."))
|
|
34
|
+
intent = await client.payment_intents.create(
|
|
35
|
+
{
|
|
36
|
+
"amount": to_minor_units(Decimal("199.90"), "brl"),
|
|
37
|
+
"currency": "brl",
|
|
38
|
+
"automatic_payment_methods": {"enabled": True},
|
|
39
|
+
"metadata": {"order_id": "1042"},
|
|
40
|
+
}
|
|
41
|
+
)
|
|
42
|
+
print(intent.id, intent.status, intent.client_secret)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
asyncio.run(main())
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Three things happened without being asked for: the body went out
|
|
49
|
+
**form-encoded** in bracket notation (`metadata[order_id]=1042`), the
|
|
50
|
+
request carried an `Idempotency-Key`, and the `Stripe-Version` header
|
|
51
|
+
pinned the API version.
|
|
52
|
+
|
|
53
|
+
!!! danger "`client_secret` is a credential"
|
|
54
|
+
It authorizes confirming **that** payment. It belongs in the response
|
|
55
|
+
to the order's own owner and nowhere else — never in a log, never in
|
|
56
|
+
telemetry.
|
|
57
|
+
|
|
58
|
+
## How it works, piece by piece
|
|
59
|
+
|
|
60
|
+
### The body is form-encoded, not JSON
|
|
61
|
+
|
|
62
|
+
Stripe **accepts no JSON** on writes: all 588 write operations in the
|
|
63
|
+
specification declare `application/x-www-form-urlencoded`. Nesting is
|
|
64
|
+
brackets:
|
|
65
|
+
|
|
66
|
+
```python
|
|
67
|
+
from tempest_fastapi_sdk import form_encode
|
|
68
|
+
|
|
69
|
+
print(
|
|
70
|
+
form_encode(
|
|
71
|
+
{
|
|
72
|
+
"mode": "payment",
|
|
73
|
+
"line_items": [{"price": "price_123", "quantity": 2}],
|
|
74
|
+
"metadata": {"order_id": "1042"},
|
|
75
|
+
}
|
|
76
|
+
)
|
|
77
|
+
)
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
```text
|
|
81
|
+
{'mode': 'payment',
|
|
82
|
+
'line_items[0][price]': 'price_123',
|
|
83
|
+
'line_items[0][quantity]': '2',
|
|
84
|
+
'metadata[order_id]': '1042'}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
`form_encode` is public and serves any form-encoded API — and **the SDK's
|
|
88
|
+
integration generator now uses the same function**: an operation whose
|
|
89
|
+
`requestBody` declares form comes out with `data=form_encode(payload)`
|
|
90
|
+
instead of `json=payload`. Before that, a client generated against Stripe
|
|
91
|
+
had 100% of its writes rejected.
|
|
92
|
+
|
|
93
|
+
What `form_encode` decides for you:
|
|
94
|
+
|
|
95
|
+
| Value | Goes as | Why |
|
|
96
|
+
| --- | --- | --- |
|
|
97
|
+
| `True` / `False` | `true` / `false` | `str(True)` would send `"True"` |
|
|
98
|
+
| `None` | **not sent** | an empty string is a real value — it *clears* the field |
|
|
99
|
+
| `Decimal("10.50")` | `10.50` | going through `float` loses a cent |
|
|
100
|
+
| `Enum` | its `.value` | `str()` would send `"Class.MEMBER"` |
|
|
101
|
+
| `datetime` | ISO-8601 | |
|
|
102
|
+
|
|
103
|
+
### Money: zero-decimal currencies exist
|
|
104
|
+
|
|
105
|
+
Stripe charges in the **smallest unit**. For most currencies that is a
|
|
106
|
+
cent, but for JPY, KRW, VND and 13 others the smallest unit **is** the
|
|
107
|
+
unit — and dividing everything by 100 is a silent billing bug no BRL-only
|
|
108
|
+
test will catch.
|
|
109
|
+
|
|
110
|
+
```python
|
|
111
|
+
from decimal import Decimal
|
|
112
|
+
|
|
113
|
+
from tempest_fastapi_sdk.integrations.payment.stripe import (
|
|
114
|
+
from_minor_units,
|
|
115
|
+
to_minor_units,
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
print(to_minor_units(Decimal("10.50"), "brl")) # 1050
|
|
119
|
+
print(to_minor_units(Decimal("1050"), "jpy")) # 1050 <- not 105000
|
|
120
|
+
print(from_minor_units(1050, "jpy")) # Decimal('1050')
|
|
121
|
+
print(to_minor_units(Decimal("10.505"), "bhd")) # 10505 (three decimals)
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Both tables (`ZERO_DECIMAL_CURRENCIES`, `THREE_DECIMAL_CURRENCIES`) come
|
|
125
|
+
from Stripe's documentation and are pinned by a test, so an upstream
|
|
126
|
+
change shows up as a failure here — not as a hundredfold charge.
|
|
127
|
+
|
|
128
|
+
### Webhooks: what Stripe signs is not the body
|
|
129
|
+
|
|
130
|
+
The header is `t=<timestamp>,v1=<hmac>`, and the HMAC covers
|
|
131
|
+
`f"{t}.{body}"`. Signing the body alone is the most common mistake in a
|
|
132
|
+
hand-rolled verification — and it fails *silently*, as a 401 on every
|
|
133
|
+
delivery.
|
|
134
|
+
|
|
135
|
+
```python
|
|
136
|
+
from typing import Any
|
|
137
|
+
|
|
138
|
+
from fastapi import APIRouter, Depends
|
|
139
|
+
|
|
140
|
+
from tempest_fastapi_sdk.integrations.payment.stripe import (
|
|
141
|
+
StripeEvent,
|
|
142
|
+
StripeWebhookEvent,
|
|
143
|
+
make_stripe_webhook_dependency,
|
|
144
|
+
)
|
|
145
|
+
|
|
146
|
+
from src.core.settings import settings
|
|
147
|
+
|
|
148
|
+
router = APIRouter(prefix="/webhooks", tags=["webhooks"])
|
|
149
|
+
verified = make_stripe_webhook_dependency(settings.STRIPE_WEBHOOK_SECRET)
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
@router.post("/stripe", include_in_schema=False)
|
|
153
|
+
async def stripe_webhook(
|
|
154
|
+
event: StripeWebhookEvent = Depends(verified),
|
|
155
|
+
) -> dict[str, Any]:
|
|
156
|
+
"""Receive an already verified, typed delivery."""
|
|
157
|
+
if event.event is StripeEvent.PAYMENT_INTENT_SUCCEEDED:
|
|
158
|
+
return {"handled": True, "intent": event.data_object["id"]}
|
|
159
|
+
return {"handled": False, "type": event.event_type}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
- An invalid, missing or out-of-window (5 minutes) signature is a **401**
|
|
163
|
+
before your handler runs.
|
|
164
|
+
- Secret rotation works: Stripe sends one `v1` per active secret and any
|
|
165
|
+
match is accepted.
|
|
166
|
+
- An unknown event type does **not** take the route down — `event` is
|
|
167
|
+
`None` and `event_type` keeps the string. A Stripe release does not
|
|
168
|
+
become your incident.
|
|
169
|
+
- `event_id` is there to **deduplicate**: deliveries repeat by design.
|
|
170
|
+
|
|
171
|
+
!!! warning "A verified signature is not authorization"
|
|
172
|
+
It proves the delivery came from Stripe. It does not prove the state
|
|
173
|
+
you are about to change is current — deliveries repeat and arrive out
|
|
174
|
+
of order. Before releasing goods on `payment_intent.succeeded`,
|
|
175
|
+
re-read the intent through the API.
|
|
176
|
+
|
|
177
|
+
So a test never re-derives the signature wrongly, the module exports the
|
|
178
|
+
signer:
|
|
179
|
+
|
|
180
|
+
```python
|
|
181
|
+
import json
|
|
182
|
+
|
|
183
|
+
from tempest_fastapi_sdk.integrations.payment.stripe import sign_payload
|
|
184
|
+
|
|
185
|
+
body = json.dumps({"id": "evt_1", "type": "payment_intent.succeeded"}).encode()
|
|
186
|
+
header = sign_payload(body, "whsec_test", timestamp=1_770_000_000)
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
### The 265 event types, as an enum
|
|
190
|
+
|
|
191
|
+
`StripeEvent` is **generated** from the specification — from the
|
|
192
|
+
`enabled_events` parameter of `POST /v1/webhook_endpoints`, which is
|
|
193
|
+
where Stripe enumerates the types (the `event` object does not). A drift
|
|
194
|
+
test fails if the file is edited by hand.
|
|
195
|
+
|
|
196
|
+
```python
|
|
197
|
+
from tempest_fastapi_sdk.integrations.payment.stripe import StripeEvent
|
|
198
|
+
|
|
199
|
+
print(StripeEvent.INVOICE_PAID.value) # invoice.paid
|
|
200
|
+
print(StripeEvent.has_value("customer.created")) # True
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### Idempotency: why every write carries a key
|
|
204
|
+
|
|
205
|
+
A timeout on `POST /v1/payment_intents` leaves you not knowing whether
|
|
206
|
+
money moved. A retry without a key creates a second payment; with one,
|
|
207
|
+
Stripe replays the original response for 24 hours. The client puts a
|
|
208
|
+
UUID4 on every write — swap in your own when you want the window to cover
|
|
209
|
+
your flow:
|
|
210
|
+
|
|
211
|
+
```python
|
|
212
|
+
import asyncio
|
|
213
|
+
|
|
214
|
+
from tempest_fastapi_sdk.integrations.payment.stripe import (
|
|
215
|
+
StripeClient,
|
|
216
|
+
stripe_http_client,
|
|
217
|
+
)
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
async def main() -> None:
|
|
221
|
+
"""Run this example."""
|
|
222
|
+
client = StripeClient(stripe_http_client("sk_test_..."))
|
|
223
|
+
order_id = "1042"
|
|
224
|
+
await client.payment_intents.create(
|
|
225
|
+
{"amount": 19990, "currency": "brl"},
|
|
226
|
+
idempotency_key=f"order-{order_id}",
|
|
227
|
+
)
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
asyncio.run(main())
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### Cursor pagination
|
|
234
|
+
|
|
235
|
+
```python
|
|
236
|
+
import asyncio
|
|
237
|
+
|
|
238
|
+
from tempest_fastapi_sdk.integrations.payment.stripe import (
|
|
239
|
+
StripeClient,
|
|
240
|
+
stripe_http_client,
|
|
241
|
+
)
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
async def main() -> None:
|
|
245
|
+
"""Run this example."""
|
|
246
|
+
client = StripeClient(stripe_http_client("sk_test_..."))
|
|
247
|
+
filters = {"created": {"gte": 1_770_000_000}}
|
|
248
|
+
async for customer in client.customers.auto_paginate(filters):
|
|
249
|
+
print(customer.id, customer.email)
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
asyncio.run(main())
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
The cursor is the **last item's id**, not an offset, so the walk stays
|
|
256
|
+
correct while objects are created underneath it.
|
|
257
|
+
|
|
258
|
+
### Errors that say what happened
|
|
259
|
+
|
|
260
|
+
```python
|
|
261
|
+
import asyncio
|
|
262
|
+
|
|
263
|
+
from tempest_fastapi_sdk.integrations.payment.stripe import (
|
|
264
|
+
StripeClient,
|
|
265
|
+
StripeError,
|
|
266
|
+
stripe_http_client,
|
|
267
|
+
)
|
|
268
|
+
|
|
269
|
+
|
|
270
|
+
async def main() -> None:
|
|
271
|
+
"""Run this example."""
|
|
272
|
+
client = StripeClient(stripe_http_client("sk_test_..."))
|
|
273
|
+
try:
|
|
274
|
+
await client.payment_intents.create({"amount": 19990, "currency": "brl"})
|
|
275
|
+
except StripeError as error:
|
|
276
|
+
print(error.status_code) # 402
|
|
277
|
+
print(error.error_type) # card_error
|
|
278
|
+
print(error.code) # card_declined
|
|
279
|
+
print(error.decline_code) # insufficient_funds
|
|
280
|
+
print(error.request_id) # req_... (what Stripe support asks for)
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
asyncio.run(main())
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
### Thin models, nothing lost
|
|
287
|
+
|
|
288
|
+
The models name the fields that carry decisions — `status`, `amount`,
|
|
289
|
+
`currency`, the ids linking objects — and set `extra="allow"`. The rest
|
|
290
|
+
of the object stays reachable:
|
|
291
|
+
|
|
292
|
+
```python
|
|
293
|
+
import asyncio
|
|
294
|
+
|
|
295
|
+
from tempest_fastapi_sdk.integrations.payment.stripe import (
|
|
296
|
+
StripeClient,
|
|
297
|
+
stripe_http_client,
|
|
298
|
+
)
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
async def main() -> None:
|
|
302
|
+
"""Run this example."""
|
|
303
|
+
client = StripeClient(stripe_http_client("sk_test_..."))
|
|
304
|
+
intent = await client.payment_intents.retrieve("pi_123")
|
|
305
|
+
print(intent.status) # typed
|
|
306
|
+
print((intent.model_extra or {}).get("next_action")) # preserved
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
asyncio.run(main())
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
An expandable field (`customer`, `payment_intent`, …) is a `str`: without
|
|
313
|
+
`expand`, Stripe sends the id. Ask for the object and read it from
|
|
314
|
+
`model_extra`:
|
|
315
|
+
|
|
316
|
+
```python
|
|
317
|
+
import asyncio
|
|
318
|
+
|
|
319
|
+
from tempest_fastapi_sdk.integrations.payment.stripe import (
|
|
320
|
+
StripeClient,
|
|
321
|
+
stripe_http_client,
|
|
322
|
+
)
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
async def main() -> None:
|
|
326
|
+
"""Run this example."""
|
|
327
|
+
client = StripeClient(stripe_http_client("sk_test_..."))
|
|
328
|
+
intent = await client.payment_intents.retrieve(
|
|
329
|
+
"pi_123", params={"expand": ["customer"]}
|
|
330
|
+
)
|
|
331
|
+
print(intent.customer)
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
asyncio.run(main())
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
!!! note "Why this client is hand-written rather than generated"
|
|
338
|
+
The SDK generates integrations from OpenAPI — OpenPix is generated.
|
|
339
|
+
Stripe's specification does not survive the trip, and that was
|
|
340
|
+
**measured** on `2026-07-29.dahlia`:
|
|
341
|
+
|
|
342
|
+
- generating the full surface yields a `schemas.py` of **3.3 MB / 81k
|
|
343
|
+
lines**, and importing it costs **5.8 s and 492 MB of RSS**;
|
|
344
|
+
- slicing by resource does not help: `/v1/prices` **alone** reaches
|
|
345
|
+
864 of the 1440 schemas, and the ten core resources together reach
|
|
346
|
+
1020. There is no small subset.
|
|
347
|
+
|
|
348
|
+
So what comes from the specification still comes from it — API
|
|
349
|
+
version, base URL and the 265 events, via `make stripe-fetch` — and
|
|
350
|
+
the rest is code that fits in your head. The numbers, and how to
|
|
351
|
+
reproduce them, are in `scripts/regen_stripe.py`.
|
|
352
|
+
|
|
353
|
+
## Configuration
|
|
354
|
+
|
|
355
|
+
```python
|
|
356
|
+
from tempest_fastapi_sdk import BaseAppSettings
|
|
357
|
+
from tempest_fastapi_sdk.integrations.payment.stripe import (
|
|
358
|
+
StripeClient,
|
|
359
|
+
stripe_http_client,
|
|
360
|
+
)
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
class Settings(BaseAppSettings):
|
|
364
|
+
"""Service settings."""
|
|
365
|
+
|
|
366
|
+
STRIPE_API_KEY: str = ""
|
|
367
|
+
STRIPE_WEBHOOK_SECRET: str = ""
|
|
368
|
+
|
|
369
|
+
|
|
370
|
+
settings = Settings()
|
|
371
|
+
client = StripeClient(stripe_http_client(settings.STRIPE_API_KEY))
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
The webhook secret is **per endpoint**, not per account: a service with a
|
|
375
|
+
test and a live endpoint has two.
|
|
376
|
+
|
|
377
|
+
## Testing
|
|
378
|
+
|
|
379
|
+
Inject an `httpx.MockTransport` and inspect the request that would go
|
|
380
|
+
out:
|
|
381
|
+
|
|
382
|
+
```python
|
|
383
|
+
from urllib.parse import parse_qs
|
|
384
|
+
|
|
385
|
+
import httpx
|
|
386
|
+
|
|
387
|
+
from tempest_fastapi_sdk.integrations.payment.stripe import (
|
|
388
|
+
StripeClient,
|
|
389
|
+
stripe_http_client,
|
|
390
|
+
)
|
|
391
|
+
|
|
392
|
+
requests: list[httpx.Request] = []
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
def handler(request: httpx.Request) -> httpx.Response:
|
|
396
|
+
"""Record the request and answer with a fake customer."""
|
|
397
|
+
requests.append(request)
|
|
398
|
+
return httpx.Response(200, json={"id": "cus_1", "object": "customer"})
|
|
399
|
+
|
|
400
|
+
|
|
401
|
+
async def test_create_customer() -> None:
|
|
402
|
+
"""The write goes out form-encoded, in bracket notation."""
|
|
403
|
+
client = StripeClient(
|
|
404
|
+
stripe_http_client("sk_test_x", transport=httpx.MockTransport(handler))
|
|
405
|
+
)
|
|
406
|
+
|
|
407
|
+
await client.customers.create({"email": "ana@example.com", "metadata": {"o": "1"}})
|
|
408
|
+
|
|
409
|
+
assert parse_qs(requests[-1].content.decode()) == {
|
|
410
|
+
"email": ["ana@example.com"],
|
|
411
|
+
"metadata[o]": ["1"],
|
|
412
|
+
}
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
## Recap
|
|
416
|
+
|
|
417
|
+
- `StripeClient` over the SDK's `HTTPClient`: retry, circuit breaker and
|
|
418
|
+
the pinned `Stripe-Version` come from one place.
|
|
419
|
+
- Writes are form-encoded in bracket notation (`form_encode`, public and
|
|
420
|
+
now used by the generator too) and carry an `Idempotency-Key` by
|
|
421
|
+
default.
|
|
422
|
+
- Money respects zero-decimal and three-decimal currencies.
|
|
423
|
+
- Webhooks verify over `t.body`, with a replay window, secret rotation,
|
|
424
|
+
and an unknown event type that does not take the route down.
|
|
425
|
+
- 265 events as an enum, generated from the specification with a drift
|
|
426
|
+
test.
|
|
427
|
+
- Thin models with `extra="allow"` — the client is hand-written because
|
|
428
|
+
generating the whole specification costs 3.3 MB and 492 MB of RSS,
|
|
429
|
+
measured.
|