tempest-fastapi-sdk 0.293.0__tar.gz → 0.294.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.293.0 → tempest_fastapi_sdk-0.294.0}/CHANGELOG.md +59 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/PKG-INFO +6 -1
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/README.md +2 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/SHIPPED.md +28 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/installation.en.md +1 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/installation.md +1 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/auth-flow.en.md +31 -15
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/auth-flow.md +30 -15
- tempest_fastapi_sdk-0.294.0/docs/recipes/hostbridge.en.md +255 -0
- tempest_fastapi_sdk-0.294.0/docs/recipes/hostbridge.md +254 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/index.en.md +1 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/index.md +1 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/reference.md +23 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/mkdocs.yml +2 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/pyproject.toml +9 -1
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/__init__.py +5 -1
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/exceptions/i18n.py +89 -0
- tempest_fastapi_sdk-0.294.0/tempest_fastapi_sdk/hostbridge/__init__.py +171 -0
- tempest_fastapi_sdk-0.294.0/tempest_fastapi_sdk/hostbridge/bridge.py +596 -0
- tempest_fastapi_sdk-0.294.0/tempest_fastapi_sdk/hostbridge/config.py +58 -0
- tempest_fastapi_sdk-0.294.0/tempest_fastapi_sdk/hostbridge/exceptions.py +94 -0
- tempest_fastapi_sdk-0.294.0/tempest_fastapi_sdk/hostbridge/paths.py +135 -0
- tempest_fastapi_sdk-0.294.0/tempest_fastapi_sdk/hostbridge/router.py +199 -0
- tempest_fastapi_sdk-0.294.0/tempest_fastapi_sdk/hostbridge/schemas.py +310 -0
- tempest_fastapi_sdk-0.294.0/tempest_fastapi_sdk/hostbridge/shell.py +195 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/pdf/__init__.py +12 -0
- tempest_fastapi_sdk-0.294.0/tempest_fastapi_sdk/pdf/pages.py +331 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/settings/__init__.py +4 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/settings/mixins.py +91 -0
- tempest_fastapi_sdk-0.294.0/tests/hostbridge/conftest.py +66 -0
- tempest_fastapi_sdk-0.294.0/tests/hostbridge/test_bridge_files.py +237 -0
- tempest_fastapi_sdk-0.294.0/tests/hostbridge/test_bridge_host.py +241 -0
- tempest_fastapi_sdk-0.294.0/tests/hostbridge/test_messages.py +75 -0
- tempest_fastapi_sdk-0.294.0/tests/hostbridge/test_paths.py +120 -0
- tempest_fastapi_sdk-0.294.0/tests/hostbridge/test_router.py +145 -0
- tempest_fastapi_sdk-0.294.0/tests/hostbridge/test_shell.py +141 -0
- tempest_fastapi_sdk-0.294.0/tests/pdf/test_pages.py +129 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/test_i18n_coverage_guard.py +40 -10
- tempest_fastapi_sdk-0.294.0/tests/websockets/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/uv.lock +64 -2
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/.github/ISSUE_TEMPLATE/docs.yml +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/.github/ISSUE_TEMPLATE/question.yml +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/.github/workflows/ci.yml +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/.github/workflows/docs.yml +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/.github/workflows/nightly-model.yml +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/.github/workflows/release-pypi.yml +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/.gitignore +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/.python-version +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/CLAUDE.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/LESSONS.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/Makefile +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/CLAUDE.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/admin-showcase.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/admin-showcase.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/architecture.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/architecture.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/changelog.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/changelog.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/contributing.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/contributing.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/fullstack-web.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/fullstack-web.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/genai-examples.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/genai-examples.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/getting-started/first-project.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/getting-started/first-project.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/getting-started/python-versions.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/getting-started/python-versions.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/getting-started/references.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/getting-started/references.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/getting-started/uv.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/getting-started/uv.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/index.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/index.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/integrated.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/integrated.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/learning/index.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/learning/index.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/learning/marketplace/api.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/learning/marketplace/api.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/learning/marketplace/business-rules.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/learning/marketplace/business-rules.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/learning/marketplace/domain.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/learning/marketplace/domain.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/learning/marketplace/flows.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/learning/marketplace/flows.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/learning/marketplace/index.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/learning/marketplace/index.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/marketplace-local.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/marketplace-local.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/migration.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/migration.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/admin-sql-console.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/admin-sql-console.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/admin.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/admin.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/agents-advanced.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/agents-advanced.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/agents-architecture.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/agents-architecture.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/agents-concepts.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/agents-concepts.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/agents-db.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/agents-db.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/agents-testing.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/agents-testing.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/agents.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/agents.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/app-errors.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/app-errors.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/artifact-registry.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/artifact-registry.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/asyncapi-client.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/asyncapi-client.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/audit-trail.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/audit-trail.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/authz.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/authz.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/br-helpers.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/br-helpers.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/cache.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/cache.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/chat.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/chat.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/cli.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/cli.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/database.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/database.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/deploy-safety.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/deploy-safety.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/downloads.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/downloads.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/email.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/email.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/enum-columns.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/enum-columns.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/faces.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/faces.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/fakes.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/fakes.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/feature-flags.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/feature-flags.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/fields.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/fields.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/file-store.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/file-store.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/firebase-auth.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/firebase-auth.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/genai.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/genai.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/geo.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/geo.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/http-client.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/http-client.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/http.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/http.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/idempotency.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/idempotency.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/image-generation.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/image-generation.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/introspection-auth.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/introspection-auth.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/jobs.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/jobs.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/logging.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/logging.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/management-commands.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/management-commands.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/mercado-pago.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/mercado-pago.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/metrics.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/metrics.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/mfa.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/mfa.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/migrations.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/migrations.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/model-weights.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/model-weights.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/modelops.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/modelops.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/models.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/models.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/multi-tenant.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/multi-tenant.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/oauth.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/oauth.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/observability.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/observability.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/offline-sync.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/offline-sync.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/openapi-client.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/openapi-client.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/openapi-errors.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/openapi-errors.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/openpix-subscriptions.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/openpix-subscriptions.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/openpix.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/openpix.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/outbox.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/outbox.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/pdf.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/pdf.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/permission-guards.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/permission-guards.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/pix-protocol.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/pix-protocol.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/push.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/push.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/query-plans.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/query-plans.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/queue-tasks.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/queue-tasks.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/react-spa.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/react-spa.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/realtime.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/realtime.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/refresh-tokens.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/refresh-tokens.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/reviews.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/reviews.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/security.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/security.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/sessions.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/sessions.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/spreadsheets.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/spreadsheets.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/sse.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/sse.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/storage.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/storage.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/stored-files.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/stored-files.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/stripe.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/stripe.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/system-checks.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/system-checks.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/tempestweb-frontend.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/tempestweb-frontend.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/testing.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/testing.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/text-search.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/text-search.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/transactions.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/transactions.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/transcription-pipeline.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/transcription-pipeline.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/typing.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/typing.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/ui-css.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/ui-css.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/ui-forms.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/ui-forms.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/ui.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/ui.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/uploads.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/uploads.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/utilities.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/utilities.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/vision.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/vision.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/webauthn.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/webauthn.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/webpush.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/webpush.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/websocket.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/websocket.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/zap.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/recipes/zap.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/reference.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/roadmap.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/roadmap.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/ssr.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/ssr.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/tutorial.en.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/docs/tutorial.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/mkdocs_hooks/llmstxt.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/planning/genai/README.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/planning/genai/manual-validation.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/planning/genai/phase-0.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/planning/genai/phase-1.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/planning/genai/phase-2.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/planning/genai/phase-3.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/planning/genai/validation-strategy.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/scripts/export_order.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/scripts/extract_recipe.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/scripts/face_separation.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/scripts/mercadopago_diff.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/scripts/mercadopago_overlay.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/scripts/openpix_diff.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/scripts/openpix_overlay.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/scripts/regen_mercado_pago.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/scripts/regen_openpix.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/scripts/regen_stripe.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/scripts/regen_zap.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/scripts/regen_zap_ws.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/admin/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/admin/actions.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/admin/auth.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/admin/config.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/admin/dashboard.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/admin/discovery.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/admin/forms.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/admin/permissions.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/admin/router.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/admin/session.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/admin/site.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/admin/sql_shell.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/admin/static/admin.css +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/admin/tasks.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/admin/templates/autocomplete.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/admin/templates/base.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/admin/templates/dashboard.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/admin/templates/detail.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/admin/templates/form.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/admin/templates/import.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/admin/templates/list.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/admin/templates/login.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/admin/templates/logs.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/admin/templates/mfa.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/admin/templates/sql_shell.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/admin/templates/task_detail.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/admin/templates/tasks.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/admin/theme.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/agents/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/agents/agent.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/agents/builtin.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/agents/fact_stores.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/agents/loop.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/agents/memory.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/agents/multi.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/agents/protocols.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/agents/router.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/agents/schemas.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/agents/skills.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/agents/storage.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/agents/structured.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/agents/testing.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/agents/tools.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/agents/typed.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/api/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/api/cookies.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/api/dependencies/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/api/dependencies/auth.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/api/error_docs.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/api/handlers.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/api/middlewares/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/api/middlewares/_exempt.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/api/middlewares/_streaming.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/api/middlewares/access_log.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/api/middlewares/body_size.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/api/middlewares/cors.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/api/middlewares/csrf.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/api/middlewares/graceful.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/api/middlewares/honeypot.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/api/middlewares/idempotency.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/api/middlewares/quota.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/api/middlewares/rate_limit.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/api/middlewares/request_id.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/api/middlewares/response_cache.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/api/oauth.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/api/routers/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/api/routers/health.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/api/routers/logs.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/api/routers/metrics.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/api/routers/tool_spec.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/api/server.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/api/spa.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/api/static.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/api/tracing.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/api/webhooks.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/app_errors/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/app_errors/constants.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/app_errors/models.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/app_errors/router.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/app_errors/schemas.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/app_errors/service.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/artifacts/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/artifacts/actions.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/artifacts/digest.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/artifacts/model.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/artifacts/registry.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/asyncapi/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/asyncapi/emit_stream.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/asyncapi/generate.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/asyncapi/ir.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/asyncapi/loader.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/asyncapi/parse.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/firebase.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/guards.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/introspection.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/locale.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/page_renderer.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/router.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/schemas.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/service.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/templates/en-US/activation.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/templates/en-US/activation_error.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/templates/en-US/activation_success.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/templates/en-US/email_change.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/templates/en-US/email_change_error.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/templates/en-US/email_change_success.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/templates/en-US/email_changed_notice.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/templates/en-US/email_verification.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/templates/en-US/email_verification_error.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/templates/en-US/email_verification_success.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/templates/en-US/password_reset.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/templates/en-US/password_reset_error.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/templates/en-US/password_reset_form.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/templates/en-US/password_reset_success.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/templates/pt-BR/activation.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/templates/pt-BR/activation_error.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/templates/pt-BR/activation_success.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/templates/pt-BR/email_change.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/templates/pt-BR/email_change_error.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/templates/pt-BR/email_change_success.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/templates/pt-BR/email_changed_notice.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/templates/pt-BR/email_verification.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/templates/pt-BR/email_verification_error.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/templates/pt-BR/email_verification_success.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/templates/pt-BR/password_reset.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/templates/pt-BR/password_reset_error.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/templates/pt-BR/password_reset_form.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/templates/pt-BR/password_reset_success.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/token_delivery.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/auth/webauthn.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/authz/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/authz/dependencies.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/authz/permissions.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/authz/requires.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cache/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cache/decorator.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cache/invalidation.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cache/redis_manager.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/chat/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/chat/constants.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/chat/models.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/chat/router.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/chat/schemas.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/chat/service.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/checks/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/checks/builtins.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/checks/messages.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/checks/registry.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/_templates/CLAUDE.md.tmpl +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/_templates/Dockerfile.tmpl +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/_templates/README.md.tmpl +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/_templates/dockerignore.tmpl +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/_templates/env.example.tmpl +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/_templates/gitignore.tmpl +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/_templates/main.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/_templates/pyproject.toml.tmpl +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/_templates/src/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/_templates/src/api/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/_templates/src/api/app.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/_templates/src/api/dependencies/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/_templates/src/api/dependencies/auth.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/_templates/src/api/dependencies/resources.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/_templates/src/api/routers/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/_templates/src/controllers/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/_templates/src/core/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/_templates/src/core/exceptions.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/_templates/src/core/settings.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/_templates/src/db/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/_templates/src/db/configs/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/_templates/src/db/configs/names.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/_templates/src/db/models/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/_templates/src/db/models/user.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/_templates/src/db/repositories/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/_templates/src/schemas/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/_templates/src/server.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/_templates/src/services/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/_templates/src/utils/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/_templates/tests/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/_templates/tests/test_smoke.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/commands.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/config.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/db.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/docker_compose.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/generate.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/lint.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/main.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/model.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/new.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/openapi_errors.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/openapi_fix.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/pdf.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/permissions.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/pr_prompt.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/secrets.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/src_layers.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/user.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/cli/voice.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/controllers/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/controllers/base.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/core/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/core/context.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/core/enums.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/core/logging.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/core/typed.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/db/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/db/_alembic_templates/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/db/_alembic_templates/env.py.template +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/db/alembic_hooks.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/db/audit.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/db/backup.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/db/connection.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/db/datetime_type.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/db/device_token_model.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/db/enum_migrations.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/db/enums.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/db/explain.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/db/expressions.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/db/integrity.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/db/migrations.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/db/mixins.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/db/model.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/db/outbox.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/db/repository.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/db/search.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/db/signals.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/db/slow_query.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/db/tenant.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/db/transaction.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/db/user_model.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/db/user_oauth_account_model.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/db/user_recovery_code_model.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/db/user_refresh_token_model.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/db/user_token_model.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/db/user_webauthn_credential_model.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/db/voice_profile_model.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/db/webpush_subscription_model.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/exceptions/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/exceptions/base.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/exceptions/conflict.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/exceptions/factories.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/exceptions/forbidden.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/exceptions/jwt.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/exceptions/not_found.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/exceptions/oauth.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/exceptions/too_many_requests.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/exceptions/unauthorized.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/exceptions/upload.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/exceptions/validation.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/exceptions/value_errors.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/faces/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/faces/detector.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/faces/geometry.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/faces/models.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/faces/recognizer.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/faces/schemas.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/flags/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/flags/backends.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/flags/dependencies.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/flags/service.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/admin.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/audio/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/audio/conversation.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/audio/diarization.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/audio/language.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/audio/profiles.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/audio/router.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/audio/schemas.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/audio/speaker_count.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/audio/stt.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/audio/tts.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/audio/voiceprint.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/batching.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/catalog.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/embeddings.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/generation_cache.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/hardware.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/hub.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/image.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/inventory.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/metrics.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/moderation.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/ollama.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/onnx_embed.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/openai_compat.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/pipeline.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/rag/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/rag/chroma.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/rag/chunking.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/rag/context.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/rag/extract.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/rag/fusion.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/rag/hybrid.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/rag/pdf.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/rag/rerank.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/rag/retriever.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/rag/schemas.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/rag/search.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/rag/vectorstore.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/registry.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/router.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/schemas.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/structured.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/text.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/tokens.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/tracing.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/usage.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/genai/vision_text.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/geo/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/geo/br.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/geo/db.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/geo/distance.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/geo/enums.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/geo/estimate.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/geo/geocoding.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/geo/geometry.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/geo/polyline.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/geo/routing.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/geo/schemas.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/CLAUDE.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/messaging/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/messaging/zap/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/messaging/zap/client.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/messaging/zap/schemas.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/messaging/zap_ws/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/messaging/zap_ws/schemas.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/messaging/zap_ws/stream.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/payment/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/payment/adapters/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/payment/adapters/openpix.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/payment/base.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/payment/mercado_pago/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/payment/mercado_pago/client.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/payment/mercado_pago/environment.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/payment/mercado_pago/events.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/payment/mercado_pago/money.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/payment/mercado_pago/pix.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/payment/mercado_pago/schemas.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/payment/mercado_pago/webhooks.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/payment/openpix/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/payment/openpix/client.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/payment/openpix/environment.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/payment/openpix/events.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/payment/openpix/money.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/payment/openpix/schemas.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/payment/openpix/webhooks.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/payment/stripe/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/payment/stripe/client.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/payment/stripe/environment.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/payment/stripe/events.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/payment/stripe/money.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/payment/stripe/schemas.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/integrations/payment/stripe/webhooks.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/modelops/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/modelops/_fs.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/modelops/bench.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/modelops/compact.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/modelops/compose.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/modelops/edge.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/modelops/energy.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/modelops/export.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/modelops/monitoring.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/modelops/pickled.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/modelops/quantize.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/modelops/ranking.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/modelops/router.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/modelops/schemas.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/modelops/serving.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/modelops/sklearn.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/modelops/static.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/openapi/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/openapi/emit_client.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/openapi/emit_schemas.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/openapi/generate.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/openapi/ir.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/openapi/loader.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/openapi/naming.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/openapi/parse.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/openapi/source.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/pdf/assets.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/pdf/documents.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/pdf/formatting.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/pdf/reader.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/pdf/renderer.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/pdf/router.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/pdf/templates/_base.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/pdf/templates/_party.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/pdf/templates/_styles.css +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/pdf/templates/contract.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/pdf/templates/quote.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/pdf/templates/receipt.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/pdf/templates/report.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/pdf/templates/voucher.html +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/push/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/push/dispatcher.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/push/router.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/push/schemas.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/push/service.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/push/transports/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/push/transports/fcm.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/push/transports/webpush.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/py.typed +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/queue/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/queue/broker.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/queue/consumer.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/queue/dedup.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/queue/manager.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/queue/publisher.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/queue/reliability.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/queue/topology.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/queue/tracing.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/reviews/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/reviews/models.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/reviews/router.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/reviews/schemas.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/reviews/service.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/schemas/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/schemas/base.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/schemas/errors.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/schemas/link_headers.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/schemas/logs.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/schemas/pagination.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/schemas/response.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/services/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/services/base.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/services/file_mixin.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/sessions/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/sessions/dependencies.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/sessions/middleware.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/sessions/router.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/sessions/schemas.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/sessions/service.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/sessions/store.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/settings/base.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/spreadsheet/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/spreadsheet/formats.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/spreadsheet/styles.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/spreadsheet/writer.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/sse/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/sse/broker.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/sse/event_stream.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ssr/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ssr/_static/htmx.min.js +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ssr/assets.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ssr/attributes.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ssr/page.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ssr/response.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ssr/webapp.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/storage/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/storage/minio_client.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/tasks/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/tasks/cancellation.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/tasks/cron.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/tasks/dead_letter.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/tasks/jobs.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/tasks/lock.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/tasks/manager.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/tasks/observability.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/tasks/oop.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/tasks/progress.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/tasks/queue.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/tasks/scheduler.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/tasks/stages.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/testing/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/testing/database.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/testing/factories.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/testing/fakes/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/testing/fakes/_control.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/testing/fakes/email.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/testing/fakes/genai.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/testing/fakes/geo.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/testing/fakes/payment.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/testing/fakes/push.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/testing/fakes/search.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ui/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ui/_core.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ui/components/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ui/components/alert.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ui/components/card.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ui/components/classes.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ui/components/empty.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ui/components/nav.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ui/components/pagination.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ui/components/styles.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ui/components/table.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ui/css/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ui/css/router.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ui/css/rules.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ui/css/tokens.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ui/forms/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ui/forms/introspect.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ui/forms/parse.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ui/forms/render.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ui/forms/spec.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ui/forms/styles.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ui/layout/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ui/layout/grid.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ui/layout/shell.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ui/pages/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ui/pages/page.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/ui/stylesheet.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/utils/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/utils/client_ip.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/utils/currency.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/utils/data/br_locations.json +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/utils/datetime.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/utils/dict.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/utils/download.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/utils/email.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/utils/fields.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/utils/file_store.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/utils/forms.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/utils/http_client.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/utils/jwt.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/utils/locations.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/utils/log.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/utils/metrics.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/utils/naming.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/utils/opaque_token.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/utils/password.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/utils/regex.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/utils/retry.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/utils/storage_backends.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/utils/throttle.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/utils/token_types.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/utils/totp.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/utils/upload.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/vision/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/vision/mapping.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/vision/router.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/vision/schemas.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/webpush/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/webpush/dispatcher.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/webpush/router.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/webpush/schemas.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/webpush/service.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/websockets/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/websockets/heartbeat.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/websockets/hub.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/websockets/router.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tempest_fastapi_sdk/websockets/schemas.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/CLAUDE.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/admin/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/admin/test_actions.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/admin/test_audit_viewer.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/admin/test_auth.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/admin/test_autocomplete_fk.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/admin/test_csv_import.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/admin/test_dashboard_cards.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/admin/test_discovery.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/admin/test_display_timezone.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/admin/test_form_error_rollback.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/admin/test_forms.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/admin/test_inlines.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/admin/test_lenses.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/admin/test_logs_nav.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/admin/test_logs_traceback_export.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/admin/test_mfa.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/admin/test_password_field.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/admin/test_rbac.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/admin/test_rich_filters.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/admin/test_router.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/admin/test_site.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/admin/test_sql_shell.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/admin/test_sql_shell_page.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/admin/test_tasks_panel.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/admin/test_theme.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/admin/test_upload_field.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/admin/test_user_model.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/admin/test_widgets_json_time.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/agents/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/agents/test_agent.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/agents/test_agent_router.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/agents/test_builtin_tools.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/agents/test_fact_stores.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/agents/test_memory.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/agents/test_multi_agent.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/agents/test_skills.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/agents/test_typed_tools.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_access_log.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_body_size.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_business_metrics.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_client_error_envelope.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_cookies.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_cors.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_csrf.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_dependencies_auth.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_error_docs.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_error_field.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_graceful.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_handlers.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_health_router.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_honeypot.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_idempotency.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_jwt_dependency.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_logs_router.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_middleware_exempt_semantics.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_oauth.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_outbound_webhooks.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_prometheus.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_quota.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_rate_limit.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_rate_limit_envelope.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_rate_limit_extras.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_rate_limit_fail_open.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_rate_limit_redis_proxy.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_request_id_middleware.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_response_cache.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_role_dependency.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_server.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_server_error_notify.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_spa.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_static.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_streaming_passthrough.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_token_type_strict.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_tool_spec.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_tracing.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_validation_envelope.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_webhooks.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/api/test_webhooks_rsa.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/app_errors/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/app_errors/test_app_errors.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/artifacts/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/artifacts/support.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/artifacts/test_actions.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/artifacts/test_digest.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/artifacts/test_registry.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/asyncapi/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/asyncapi/conftest.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/asyncapi/test_generate.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/asyncapi/test_loader.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/asyncapi/test_parse.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/auth/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/auth/test_cookie_delivery.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/auth/test_email_change.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/auth/test_expire_on_commit.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/auth/test_firebase.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/auth/test_guards.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/auth/test_introspection.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/auth/test_locale.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/auth/test_me.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/auth/test_mfa.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/auth/test_oauth_login.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/auth/test_oauth_token_login.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/auth/test_refresh.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/auth/test_refresh_db.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/auth/test_router_session_sharing.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/auth/test_service.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/auth/test_signup_extension.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/auth/test_signup_mounting.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/auth/test_token_supersede.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/auth/test_webauthn.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/auth/webauthn_authenticator.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/authz/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/authz/test_dependencies.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/authz/test_permissions.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/authz/test_requires.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/cache/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/cache/test_decorator.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/cache/test_invalidation.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/cache/test_redis_manager.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/chat/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/chat/test_chat.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/chat/test_messenger.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/chat/test_messenger_router.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/checks/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/checks/test_check_config_cli.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/checks/test_checks.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/cli/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/cli/test_config.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/cli/test_db.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/cli/test_db_alembic_errors.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/cli/test_db_resolution.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/cli/test_db_seed.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/cli/test_docker_compose.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/cli/test_dockerfile_spa.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/cli/test_generate.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/cli/test_main.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/cli/test_management_commands.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/cli/test_model.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/cli/test_openapi_errors.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/cli/test_openapi_errors_bare_calls.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/cli/test_openapi_errors_callgraph.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/cli/test_openapi_errors_configured.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/cli/test_openapi_errors_delegation.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/cli/test_openapi_fix.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/cli/test_permissions.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/cli/test_project_claude_md.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/cli/test_quality_gate_integration.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/cli/test_scaffold_placeholders.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/cli/test_scaffold_runtime.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/cli/test_secrets.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/cli/test_user.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/conftest.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/controllers/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/controllers/test_base.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/controllers/test_generic_bounds.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/core/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/core/test_context.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/core/test_enums.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/core/test_logging.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/core/test_typed.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/db/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/db/test_alembic_hooks.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/db/test_audit.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/db/test_backup.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/db/test_bulk_ops.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/db/test_connection.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/db/test_cursor_types.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/db/test_eager_load.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/db/test_enum_column.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/db/test_enum_migrations.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/db/test_explain.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/db/test_expressions.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/db/test_integrity.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/db/test_integrity_live.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/db/test_migrations.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/db/test_mixins.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/db/test_model.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/db/test_none_filter_is_null.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/db/test_outbox.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/db/test_repository.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/db/test_repository_conflict_exceptions.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/db/test_safe_upgrade.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/db/test_schema_sync.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/db/test_search.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/db/test_signals.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/db/test_slow_query.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/db/test_sqlite_wal.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/db/test_tenant.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/db/test_transaction.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/db/test_utc_datetime.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/exceptions/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/exceptions/test_exceptions.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/exceptions/test_factories.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/exceptions/test_i18n.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/exceptions/test_inherited_code_warning.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/exceptions/test_value_error_codes.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/faces/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/faces/test_faces.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/flags/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/flags/test_flags.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/_eval/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/_eval/corpus.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/audio/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/audio/test_audio.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/audio/test_audio_runtime_extra.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/audio/test_concurrency.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/audio/test_diarization.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/audio/test_language.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/audio/test_profiles.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/audio/test_speaker_count.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/audio/test_stt_loading.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/audio/test_voice_router.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/conftest.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_batching.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_chat_memory.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_embedding_cache_redis.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_embeddings.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_env_defaults.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_eval_harness.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_genai_metrics.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_genai_observability.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_generation_cache.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_generation_config.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_gpu_validation.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_hardware.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_hub.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_hybrid.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_image.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_inventory.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_moderation.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_ollama.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_onnx_embed.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_openai_compat.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_pipeline.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_pipeline_integration.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_precision_kwarg.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_rag.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_refinements.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_rerank.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_router.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_structured.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_structured_extraction.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_structured_parity.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_structured_retry.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_text.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_textgen_embed_metrics.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_tokens.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_tracing.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_usage.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_usage_cache_hit.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_vectorstore.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/genai/test_vision_text.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/geo/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/geo/test_br.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/geo/test_db.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/geo/test_distance.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/geo/test_estimate.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/geo/test_geocoding.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/geo/test_geometry.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/geo/test_polyline.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/geo/test_routing.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/geo/test_routing_extra.py +0 -0
- {tempest_fastapi_sdk-0.293.0/tests/integrations/messaging → tempest_fastapi_sdk-0.294.0/tests/hostbridge}/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/integrations/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0/tests/integrations/messaging/zap → tempest_fastapi_sdk-0.294.0/tests/integrations/messaging}/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0/tests/integrations/messaging/zap_ws → tempest_fastapi_sdk-0.294.0/tests/integrations/messaging/zap}/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/integrations/messaging/zap/test_generated_drift.py +0 -0
- {tempest_fastapi_sdk-0.293.0/tests/integrations/payment/adapters → tempest_fastapi_sdk-0.294.0/tests/integrations/messaging/zap_ws}/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/integrations/messaging/zap_ws/test_generated_drift.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/integrations/payment/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0/tests/integrations/payment/mercado_pago → tempest_fastapi_sdk-0.294.0/tests/integrations/payment/adapters}/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/integrations/payment/adapters/test_openpix_adapter.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/integrations/payment/adapters/test_openpix_adapter_wire.py +0 -0
- {tempest_fastapi_sdk-0.293.0/tests/pdf → tempest_fastapi_sdk-0.294.0/tests/integrations/payment/mercado_pago}/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/integrations/payment/mercado_pago/test_generated_drift.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/integrations/payment/mercado_pago/test_mercado_pago.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/integrations/payment/mercado_pago/test_overlay.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/integrations/payment/mercado_pago/test_pix.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/integrations/payment/mercado_pago/test_provenance.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/integrations/payment/mercado_pago/test_sdk_coverage.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/integrations/payment/openpix/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/integrations/payment/openpix/test_generated_drift.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/integrations/payment/openpix/test_openpix.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/integrations/payment/openpix/test_overlay.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/integrations/payment/openpix/test_real_payload_shapes.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/integrations/payment/openpix/test_request_body_shape.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/integrations/payment/openpix/test_spec_type_conflicts.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/integrations/payment/stripe/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/integrations/payment/stripe/test_client.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/integrations/payment/stripe/test_generated_drift.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/integrations/payment/stripe/test_money.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/integrations/payment/stripe/test_webhooks.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/integrations/payment/test_contract.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/modelops/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/modelops/conftest.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/modelops/test_bench.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/modelops/test_compact.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/modelops/test_compose.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/modelops/test_edge.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/modelops/test_energy.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/modelops/test_export.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/modelops/test_monitoring.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/modelops/test_pickled.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/modelops/test_quantize.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/modelops/test_ranking.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/modelops/test_serving.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/modelops/test_sklearn_export.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/modelops/test_static.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/openapi/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/openapi/conftest.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/openapi/test_divergent_success.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/openapi/test_form_bodies.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/openapi/test_generate.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/openapi/test_hostile_spec.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/openapi/test_loader.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/openapi/test_multipart_bodies.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/openapi/test_naming.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/openapi/test_nested_capture.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/openapi/test_parse.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/openapi/test_payload_arrays.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/openapi/test_raw_responses.py +0 -0
- {tempest_fastapi_sdk-0.293.0/tests/queue → tempest_fastapi_sdk-0.294.0/tests/pdf}/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/pdf/test_assets.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/pdf/test_formatting.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/pdf/test_reader.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/pdf/test_renderer.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/pdf/test_router_and_cli.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/push/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/push/test_router.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/push/test_service.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/push/test_transports.py +0 -0
- {tempest_fastapi_sdk-0.293.0/tests/reviews → tempest_fastapi_sdk-0.294.0/tests/queue}/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/queue/test_broker.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/queue/test_consumer.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/queue/test_dedup.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/queue/test_manager.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/queue/test_prefetch.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/queue/test_publisher.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/queue/test_reliability.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/queue/test_topology.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/queue/test_tracing.py +0 -0
- {tempest_fastapi_sdk-0.293.0/tests/schemas → tempest_fastapi_sdk-0.294.0/tests/reviews}/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/reviews/test_reviews.py +0 -0
- {tempest_fastapi_sdk-0.293.0/tests/services → tempest_fastapi_sdk-0.294.0/tests/schemas}/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/schemas/test_base.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/schemas/test_cursor_pagination.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/schemas/test_errors.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/schemas/test_link_headers.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/schemas/test_pagination.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/schemas/test_response.py +0 -0
- {tempest_fastapi_sdk-0.293.0/tests/sessions → tempest_fastapi_sdk-0.294.0/tests/services}/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/services/test_base.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/services/test_file_mixin.py +0 -0
- {tempest_fastapi_sdk-0.293.0/tests/settings → tempest_fastapi_sdk-0.294.0/tests/sessions}/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/sessions/test_sessions.py +0 -0
- {tempest_fastapi_sdk-0.293.0/tests/sse → tempest_fastapi_sdk-0.294.0/tests/settings}/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/settings/test_base.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/settings/test_mixins.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/spreadsheet/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/spreadsheet/test_formats.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/spreadsheet/test_writer.py +0 -0
- {tempest_fastapi_sdk-0.293.0/tests/ssr → tempest_fastapi_sdk-0.294.0/tests/sse}/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/sse/test_broker.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/sse/test_event_stream.py +0 -0
- {tempest_fastapi_sdk-0.293.0/tests/storage → tempest_fastapi_sdk-0.294.0/tests/ssr}/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/ssr/test_attributes.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/ssr/test_integration.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/ssr/test_page.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/ssr/test_response.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/ssr/test_web_app_theme.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/ssr/test_webapp.py +0 -0
- {tempest_fastapi_sdk-0.293.0/tests/tasks → tempest_fastapi_sdk-0.294.0/tests/storage}/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/storage/test_minio_client.py +0 -0
- {tempest_fastapi_sdk-0.293.0/tests/testing → tempest_fastapi_sdk-0.294.0/tests/tasks}/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/tasks/test_cancellation.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/tasks/test_cron.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/tasks/test_dead_letter.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/tasks/test_jobs.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/tasks/test_jobs_cancellation.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/tasks/test_manager.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/tasks/test_observability.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/tasks/test_oop.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/tasks/test_progress.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/tasks/test_queue.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/tasks/test_queue_from_settings.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/tasks/test_queue_lifecycle_hooks.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/tasks/test_scheduler.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/tasks/test_scheduler_lease.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/tasks/test_stages.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/test_agent_docs_guard.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/test_alias_guard.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/test_constraint_shape_guard.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/test_docs_api_guard.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/test_docs_examples_compile.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/test_docs_examples_names.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/test_docs_method_guard.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/test_docs_organization.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/test_docs_signature_guard.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/test_docs_type_guard.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/test_docstring_example_guard.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/test_enum_schema_guard.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/test_kwargs_guard.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/test_llmstxt.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/test_lock_version_guard.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/test_protocol_shape_guard.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/test_pydantic_error_types_guard.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/test_pydantic_mypy_guard.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/test_reexport_guard.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/test_reference_coverage.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/test_schedule_projection_guard.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/test_sdist_payload.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/test_settings_passthrough_guard.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/test_testclient_httpx2_guard.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/test_vacuous_guard.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/test_version_agreement.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/test_wheel_payload.py +0 -0
- {tempest_fastapi_sdk-0.293.0/tests/utils → tempest_fastapi_sdk-0.294.0/tests/testing}/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/testing/test_database.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/testing/test_factories.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/testing/test_fakes_behaviour.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/testing/test_fakes_contract.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/ui/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/ui/test_components.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/ui/test_core_contract.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/ui/test_css.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/ui/test_css_router.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/ui/test_forms_introspect.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/ui/test_forms_parse.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/ui/test_forms_render.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/ui/test_integration.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/ui/test_layout_and_pages.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/ui/test_stylesheet.py +0 -0
- {tempest_fastapi_sdk-0.293.0/tests/vision → tempest_fastapi_sdk-0.294.0/tests/utils}/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/utils/test_client_ip.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/utils/test_currency.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/utils/test_datetime.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/utils/test_dict.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/utils/test_download.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/utils/test_email.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/utils/test_fields.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/utils/test_file_store.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/utils/test_forms.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/utils/test_http_client.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/utils/test_jwt.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/utils/test_lazy_extras.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/utils/test_locations.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/utils/test_log.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/utils/test_metrics.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/utils/test_opaque_token.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/utils/test_password.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/utils/test_regex.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/utils/test_retry.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/utils/test_storage_backends.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/utils/test_throttle.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/utils/test_token_types.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/utils/test_upload.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/utils/test_upload_signature_policy.py +0 -0
- {tempest_fastapi_sdk-0.293.0/tests/webpush → tempest_fastapi_sdk-0.294.0/tests/vision}/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/vision/test_detect_classify.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/vision/test_router.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/vision/test_vision.py +0 -0
- {tempest_fastapi_sdk-0.293.0/tests/websockets → tempest_fastapi_sdk-0.294.0/tests/webpush}/__init__.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/webpush/test_dispatcher.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/webpush/test_router.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/webpush/test_schemas.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/webpush/test_service.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/websockets/test_heartbeat.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/tests/websockets/test_hub_and_router.py +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/vendor/PROVENANCE.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/vendor/mercadopago-evidence.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/vendor/mercadopago-openapi.yaml +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/vendor/openpix-evidence.md +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/vendor/openpix-openapi.json +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/vendor/stripe-api-facts.yaml +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/vendor/zap-asyncapi.yaml +0 -0
- {tempest_fastapi_sdk-0.293.0 → tempest_fastapi_sdk-0.294.0}/vendor/zap-openapi.yaml +0 -0
|
@@ -5,6 +5,65 @@ 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.294.0] — 2026-09-19
|
|
9
|
+
|
|
10
|
+
Um assistente local que roda dentro do WSL precisa agir na máquina que o
|
|
11
|
+
hospeda — ler um arquivo em `C:\`, rodar PowerShell, desligar o computador.
|
|
12
|
+
Isso vinha sendo um serviço separado, reescrito em cada projeto que precisava
|
|
13
|
+
dele, com a parte perigosa (sandbox de caminho, auth, gate do lado
|
|
14
|
+
destrutivo) reescrita junto.
|
|
15
|
+
|
|
16
|
+
### Added
|
|
17
|
+
|
|
18
|
+
- **`tempest_fastapi_sdk.hostbridge` — controle do host, sem extra nenhum.**
|
|
19
|
+
`HostBridge` cobre energia (`shutdown`/`restart`/`abort_shutdown`/`lock`/
|
|
20
|
+
`logoff`), identidade (`host_info`), arquivos (`read_text`/`write_text`/
|
|
21
|
+
`list_dir`/`delete`), PDF (`read_pdf`), comando arbitrário (`run_command`)
|
|
22
|
+
e o seletor nativo (`pick_file`). Tudo async, com o que toca disco ou
|
|
23
|
+
processo fora do event loop. Configuração é `HostBridgeConfig` — um value
|
|
24
|
+
object congelado — ou `HostBridgeSettings` vindo do ambiente, via
|
|
25
|
+
`hostbridge_kwargs()`.
|
|
26
|
+
|
|
27
|
+
**As duas decisões de segurança são estruturais, não avisos na doc.**
|
|
28
|
+
`allowed_base_paths` começa **vazio**, negando todo caminho até alguém
|
|
29
|
+
configurar, e o caminho é **resolvido antes de ser checado** — checar antes
|
|
30
|
+
de resolver deixa `.../../../etc/passwd` passar por começar dentro de uma
|
|
31
|
+
base permitida. `make_hostbridge_router` **exige** a lista de dependências
|
|
32
|
+
de auth na assinatura e recusa uma vazia, e o lado que escreve (comando,
|
|
33
|
+
escrita, remoção, energia) só é montado com `destructive=True`.
|
|
34
|
+
|
|
35
|
+
Onde não existe host para alcançar — container Linux puro, nem
|
|
36
|
+
`powershell.exe` nem `wslpath` — a chamada levanta `HostUnavailableError`
|
|
37
|
+
(503, `HOST_UNAVAILABLE`) em vez de uma falha genérica, então o chamador
|
|
38
|
+
degrada em vez de reportar que a ação falhou. Cada código
|
|
39
|
+
(`HOST_INVALID_PATH`, `HOST_FILE_NOT_FOUND`, `HOST_FILE_TOO_LARGE`,
|
|
40
|
+
`HOST_FILE_DECODE_FAILED`, `HOST_COMMAND_FAILED`, `HOST_COMMAND_TIMEOUT`,
|
|
41
|
+
`HOST_UNAVAILABLE`) ships frase PT-BR e en-US no `default_message_catalog`.
|
|
42
|
+
|
|
43
|
+
- **`read_pdf_pages` + o extra `[pdf-layout]`.** O leitor que já existia
|
|
44
|
+
(`extract_pdf_text` / `extract_pdf_pages`, `[pdf-read]`) entrega prosa; um
|
|
45
|
+
documento com colunas sai intercalado linha a linha e uma tabela sai como
|
|
46
|
+
fluxo de células. `PdfExtractor.LAYOUT` roda `pdfplumber`, que recupera a
|
|
47
|
+
grade em `PdfPage.tables`, e o novo caminho aceita senha, distinguindo
|
|
48
|
+
documento cifrado (`PDF_DECRYPT_FAILED`) de arquivo corrompido
|
|
49
|
+
(`PDF_EXTRACT_FAILED`). Continua sem OCR: página escaneada volta com
|
|
50
|
+
`text=""` — a entrada `n` é sempre a página `n` — em vez de sumir.
|
|
51
|
+
|
|
52
|
+
- **`HostBridgeSettings`**, mais um mixin de settings, com
|
|
53
|
+
`HOST_ALLOWED_BASE_PATHS`, `HOST_POWERSHELL_BINARY`, `HOST_CMD_BINARY`,
|
|
54
|
+
`HOST_COMMAND_TIMEOUT` e `HOST_MAX_FILE_READ_BYTES`.
|
|
55
|
+
|
|
56
|
+
### Fixed
|
|
57
|
+
|
|
58
|
+
- **Senha errada num PDF lido com `[pdf-layout]` dizia "arquivo
|
|
59
|
+
ilegível".** O `pdfplumber` embrulha todo erro de parse num único
|
|
60
|
+
`PdfminerException` construído a partir do original, então o
|
|
61
|
+
`except PDFPasswordIncorrect` nunca disparava e o caso — que o chamador
|
|
62
|
+
resolve digitando a senha certa — saía como `PDF_EXTRACT_FAILED`,
|
|
63
|
+
mandando quem lê procurar um documento quebrado que não existia. A cadeia
|
|
64
|
+
(argumentos, `__cause__`, `__context__`) agora é percorrida atrás da falha
|
|
65
|
+
de senha real.
|
|
66
|
+
|
|
8
67
|
## [0.293.0] — 2026-09-13
|
|
9
68
|
|
|
10
69
|
A CLI sabia criar usuário e sabia promovê-lo, mas não sabia trocar a senha
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: tempest-fastapi-sdk
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.294.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
|
|
@@ -60,6 +60,7 @@ Requires-Dist: opentelemetry-instrumentation-httpx>=0.65b0; extra == 'all'
|
|
|
60
60
|
Requires-Dist: opentelemetry-instrumentation-sqlalchemy>=0.65b0; extra == 'all'
|
|
61
61
|
Requires-Dist: opentelemetry-sdk>=1.44.0; extra == 'all'
|
|
62
62
|
Requires-Dist: ort-vision-sdk[compose]>=0.8.0; extra == 'all'
|
|
63
|
+
Requires-Dist: pdfplumber>=0.11.7; extra == 'all'
|
|
63
64
|
Requires-Dist: prometheus-client>=0.26.0; extra == 'all'
|
|
64
65
|
Requires-Dist: psutil>=7.2.2; extra == 'all'
|
|
65
66
|
Requires-Dist: pyjwt>=2.13.0; extra == 'all'
|
|
@@ -164,6 +165,8 @@ Requires-Dist: opentelemetry-sdk>=1.44.0; extra == 'otel'
|
|
|
164
165
|
Provides-Extra: pdf
|
|
165
166
|
Requires-Dist: jinja2>=3.1.6; extra == 'pdf'
|
|
166
167
|
Requires-Dist: weasyprint>=69.0; extra == 'pdf'
|
|
168
|
+
Provides-Extra: pdf-layout
|
|
169
|
+
Requires-Dist: pdfplumber>=0.11.7; extra == 'pdf-layout'
|
|
167
170
|
Provides-Extra: pdf-read
|
|
168
171
|
Requires-Dist: pypdf>=6.16.2; extra == 'pdf-read'
|
|
169
172
|
Provides-Extra: postgres
|
|
@@ -323,6 +326,7 @@ Feature-rich helpers pull in third-party dependencies that you only need when yo
|
|
|
323
326
|
| `[mfa]` | `pyotp` | `TOTPHelper` + MFA/2FA endpoints on the bundled auth flow |
|
|
324
327
|
| `[pdf]` | `weasyprint`, `jinja2` | PDF generation from HTML templates — `PdfRenderer`, five bundled typed documents (receipt/quote/report/contract/voucher), `make_pdf_router`, `tempest pdf`. Needs Pango + fontconfig on the system |
|
|
325
328
|
| `[pdf-read]` | `pypdf` | Reading the text layer back out of a PDF — `extract_pdf_text` / `extract_pdf_pages`, page markers, honest truncation. Separate from `[pdf]` so a service that only reads carries no WeasyPrint and no system libraries |
|
|
329
|
+
| `[pdf-layout]` | `pdfplumber` | Layout-aware reading — columns recovered instead of interleaved, tables recovered as grids, encrypted files opened with a password. Separate from `[pdf-read]` because it is markedly slower and pulls `pdfminer.six` |
|
|
326
330
|
| `[spreadsheet]` | `openpyxl` | `.xlsx` generation — `SheetWriter` (row cursor, column specs, themed rows), `SheetStyle`, `BR_*` number formats pinned to pt-BR, `new_workbook` / `workbook_to_bytes` |
|
|
327
331
|
| `[webauthn]` | `fido2` | Passkeys / security keys — `WebAuthnService`, `make_web_authn_credential_model`, `/auth/webauthn/*`: passwordless, phishing-resistant login |
|
|
328
332
|
| `[firebase]` | `firebase-admin` | Firebase ID token verification — `FirebaseAuth` (idempotent app init, `get_identity` / `get_uid` / `get_optional_identity`), `FirebaseIdentity`, `FirebaseUserResolver`, `FirebaseSettings`; one error `code` per failure. Heavy (33 packages, 52 MB measured on firebase-admin 7.5.0), lazily imported, out of `[all]` |
|
|
@@ -383,6 +387,7 @@ Since `0.7.1` every optional dependency is imported lazily at first instantiatio
|
|
|
383
387
|
| `tempest_fastapi_sdk.genai` *(extra: `[genai]`; capacity check imports without it)* | Self-hosted GenAI: capacity check (`probe_hardware`/`HardwareInfo`, `can_run`/`recommend`/`CapacityReport`, `estimate_model_bytes`/`fetch_num_params`, `ModelDtype`); local LLM `TextGenerator` (`generate`/`chat`/`stream`, typed `GenerationConfig`, int4/int8 quant, lazy load + idle unload); `Embedder` (+ `EmbeddingCache`/`InMemoryEmbeddingCache`/`RedisEmbeddingCache`/`AsyncEmbeddingCache`, `normalize=`) + `cosine_similarity`, `BatchScheduler` (coalesce concurrent calls), `ModelRegistry` (LRU model sharing, `.inventory()` / `.unload_idle()`); **runtime inventory** — `describe_model` / `runtime_report` → `LoadedModel` / `ModelRuntimeReport` (what is resident now, loaded-first and longest-idle-first, next to the host memory picture; reads attributes only, never triggers a load) + `GET /models`; `make_genai_router` (opt-in endpoints — `/generate`+SSE, `/chat`, `/embed`, `/rag`, `/transcribe`, `/tts`, `/image`); **image generation** (`[genai-image]`) — `ImageGenerator` (`generate` / `edit`) + `ImageGenerationConfig` + `GeneratedImage`; `resolve_device`/`auto_dtype_name`; **weight lifecycle** (`[genai-hub]`) — `ModelRef` (`revision=`/`local_files_only=`/`trust_remote_code=` uniform across every loader), `resolve_revision` (pin a branch to a commit sha), `download_model` (fetch ahead of the first request, refusing what the disk cannot hold) + `model_disk_bytes`, `list_cached_models`/`cache_size_bytes`/`remove_cached_model`; **tool calling** (`TextGenerator.chat_with_tools` / `OllamaGenerator.chat_with_tools`) + **structured output** (`generate_structured` — Ollama `format=`, transformers `lm-format-enforcer` via `[genai-structured]`; `parse_structured`); **`VisionTextGenerator`** (local VLM, `[genai-vlm]`); **`OnnxEmbedder`** (torch-free embeddings, `[genai-onnx]`); **generation cache** (`InMemoryGenerationCache`/`RedisGenerationCache`, deterministic-only) via `generation_cache=`; **token/context** (`count_tokens`/`count_message_tokens`/`truncate_messages`); **`GenAIMetrics`** (Prometheus request/latency/token metrics, `[prometheus]`); **moderation** (`RuleModerator`/`ClassifierModerator` + `ModerationResult`); Ollama backend (`[genai-ollama]`) — `OllamaGenerator`/`OllamaEmbedder` (HTTP, no torch) behind the `TextBackend` protocol, drop-in for `make_genai_router`/`Retriever`, plus vision (`generate(images=…)`); **hosted backend** (no extra) — `OpenAICompatGenerator` for any OpenAI-compatible `/chat/completions` (DeepSeek, Groq, OpenRouter, vLLM, TGI, Azure) behind the same `TextBackend`, `generate_with_usage` → `TokenUsage` (incl. `cache_hit_tokens`, read in both the DeepSeek and OpenAI spellings), `extra_body` for provider extensions; **JSON payloads** — `extract_json_list`/`extract_json_object`/`parse_structured_list` (balanced-span extraction, `None` instead of raising so a caller can retry) + `generate_structured_list` (retries at a rising temperature, `StructuredFormatError`); **usage accounting** — `BaseAIUsageModel` + `AIUsageStore` (one row per paid call: `record`/`record_duration`, `totals`/`by_service`/`per_day`/`top_subjects`, cost priced at read time, cached prefixes billed at `price_cache_hit_per_1k`); **`AIChatPipeline`** (memory recall → web-search augment → generate w/ bounded tool-calling loop → TTS → memory index) + `Tool` + `make_ai_chat_router` (`POST /chat` + `/chat/stream` SSE) |
|
|
384
388
|
| `tempest_fastapi_sdk.genai.rag` *(extra: `[genai-rag]`)* | RAG context for local LLMs: `WebSearch` (`.retrieve` one-shot search→extract→context) / `SearxngBackend` / `WebSearchBackend` + `SearchResult`, `ContentExtractor` (trafilatura, `.extract_many` concurrent), `PdfReader` (PyMuPDF) + `Document`/`Chunk`/`PdfPage`, `chunk_text`, `build_context`; corpus RAG — `Retriever` + `VectorStore`/`InMemoryVectorStore`/`PgVectorStore` (pgvector)/`ChromaVectorStore` (`[genai-chroma]`); **`Reranker`** (cross-encoder second stage) + **`HybridRetriever`** (BM25 + dense, `reciprocal_rank_fusion`, `rank-bm25`); long-term chat memory — `ChatMemory` (recency-aware, per-user, Chroma-backed) + `MemoryHit`; audio (`[genai-audio]`) — `SpeechToText` (faster-whisper, `beam_size`/`vad_filter`/`language_probability`, plus `batch_size` for batched decoding, `cpu_threads`/`num_workers`, `condition_on_previous_text` and `transcribe(on_progress=)`) + `TextToSpeech` (Coqui TTS) + `Transcription` |
|
|
385
389
|
| `tempest_fastapi_sdk.geo` *(extra: `[geo]`; offline layers import without it)* | Geolocation without a paid API: `haversine_km`, `estimate_travel` (offline road distance + per-mode time), offline geometry (`bounding_box`, `within_radius`, `nearest`, `initial_bearing`, `destination_point`, `point_in_polygon`, `polygon_area_km2`, `path_length_km`), DB radius search (`GeoPointMixin` + `GeoRepositoryMixin`/`PostGISRepositoryMixin`, `make_geo_point_model`), routing (`OSRMBackend`/`RoutingBackend` — `route` + `route(with_geometry=True)` + `matrix`, per-mode profiles), geocoding (`NominatimBackend`/`GeocodingBackend`), polyline codec (`encode_polyline`/`decode_polyline`), Brazil (`uf_centroid`/`UF_CENTROIDS`, `cep_to_coordinate`); `Coordinate`/`TravelEstimate`/`TravelMode` (car/motorcycle/bus/bicycle/pedestrian)/`BoundingBox`/`GeocodeResult`/`DistanceMatrix` |
|
|
390
|
+
| `tempest_fastapi_sdk.hostbridge` *(no extra; `[pdf-read]` / `[pdf-layout]` for PDFs)* | Control the machine the service runs on, from WSL or Windows itself — `HostBridge` (power actions, host info, text read/write/list/delete, PDF pages, arbitrary PowerShell/`cmd`, the native file picker), `HostBridgeConfig` / `HostBridgeSettings`, `make_hostbridge_router` (auth required by signature, write side behind `destructive=True`), WSL ↔ Windows path translation resolved before it is checked against `allowed_base_paths`, and `HOST_UNAVAILABLE` (503) where there is no host to reach |
|
|
386
391
|
| `tempest_fastapi_sdk.openapi` | `generate_integration`, `load_spec`, `parse_spec`, `emit_schemas`, `emit_client`, `GenerationResult`, `default_output_dir`, `SpecError`, `SpecIR` / `SchemaIR` / `FieldIR` / `ClientIR` / `OperationIR` / `ParameterIR` — backs `tempest openapi-client`, which generates Pydantic schemas + a typed HTTP client from a third party's OpenAPI spec *(YAML needs the `[openapi]` extra)* |
|
|
387
392
|
| `tempest_fastapi_sdk.asyncapi` | `generate_stream`, `load_asyncapi_spec`, `parse_asyncapi`, `emit_stream`, `StreamGenerationResult`, `AsyncApiIR` / `StreamIR` / `ChannelIR` / `MessageIR` / `OperationIR` — backs `tempest asyncapi-client`, which generates a typed WebSocket client from an AsyncAPI 3 document: payload models plus two tagged unions, one for the frames you send and one for those you receive. OpenAPI cannot describe a socket, so this is a second document, not a second reader of the first. The document must declare `x-tempest-perspective` — `action` is relative to whoever published it, a client inverts every one, and a wrong inversion still compiles *(needs the `[websocket]` extra)* |
|
|
388
393
|
| `tempest_fastapi_sdk.integrations.messaging.zap` | `ZapClient` + the in-house WhatsApp gateway's 28 schemas and 27 operations (generated from the vendored spec, checked in, loaded lazily). A send answers `202` with the enqueued row, not a delivery — pass one `idempotency_key` per message so a retry answers `deduped: true` instead of sending twice. The status webhook has no schema in the specification yet, so it is not modelled |
|
|
@@ -123,6 +123,7 @@ Feature-rich helpers pull in third-party dependencies that you only need when yo
|
|
|
123
123
|
| `[mfa]` | `pyotp` | `TOTPHelper` + MFA/2FA endpoints on the bundled auth flow |
|
|
124
124
|
| `[pdf]` | `weasyprint`, `jinja2` | PDF generation from HTML templates — `PdfRenderer`, five bundled typed documents (receipt/quote/report/contract/voucher), `make_pdf_router`, `tempest pdf`. Needs Pango + fontconfig on the system |
|
|
125
125
|
| `[pdf-read]` | `pypdf` | Reading the text layer back out of a PDF — `extract_pdf_text` / `extract_pdf_pages`, page markers, honest truncation. Separate from `[pdf]` so a service that only reads carries no WeasyPrint and no system libraries |
|
|
126
|
+
| `[pdf-layout]` | `pdfplumber` | Layout-aware reading — columns recovered instead of interleaved, tables recovered as grids, encrypted files opened with a password. Separate from `[pdf-read]` because it is markedly slower and pulls `pdfminer.six` |
|
|
126
127
|
| `[spreadsheet]` | `openpyxl` | `.xlsx` generation — `SheetWriter` (row cursor, column specs, themed rows), `SheetStyle`, `BR_*` number formats pinned to pt-BR, `new_workbook` / `workbook_to_bytes` |
|
|
127
128
|
| `[webauthn]` | `fido2` | Passkeys / security keys — `WebAuthnService`, `make_web_authn_credential_model`, `/auth/webauthn/*`: passwordless, phishing-resistant login |
|
|
128
129
|
| `[firebase]` | `firebase-admin` | Firebase ID token verification — `FirebaseAuth` (idempotent app init, `get_identity` / `get_uid` / `get_optional_identity`), `FirebaseIdentity`, `FirebaseUserResolver`, `FirebaseSettings`; one error `code` per failure. Heavy (33 packages, 52 MB measured on firebase-admin 7.5.0), lazily imported, out of `[all]` |
|
|
@@ -183,6 +184,7 @@ Since `0.7.1` every optional dependency is imported lazily at first instantiatio
|
|
|
183
184
|
| `tempest_fastapi_sdk.genai` *(extra: `[genai]`; capacity check imports without it)* | Self-hosted GenAI: capacity check (`probe_hardware`/`HardwareInfo`, `can_run`/`recommend`/`CapacityReport`, `estimate_model_bytes`/`fetch_num_params`, `ModelDtype`); local LLM `TextGenerator` (`generate`/`chat`/`stream`, typed `GenerationConfig`, int4/int8 quant, lazy load + idle unload); `Embedder` (+ `EmbeddingCache`/`InMemoryEmbeddingCache`/`RedisEmbeddingCache`/`AsyncEmbeddingCache`, `normalize=`) + `cosine_similarity`, `BatchScheduler` (coalesce concurrent calls), `ModelRegistry` (LRU model sharing, `.inventory()` / `.unload_idle()`); **runtime inventory** — `describe_model` / `runtime_report` → `LoadedModel` / `ModelRuntimeReport` (what is resident now, loaded-first and longest-idle-first, next to the host memory picture; reads attributes only, never triggers a load) + `GET /models`; `make_genai_router` (opt-in endpoints — `/generate`+SSE, `/chat`, `/embed`, `/rag`, `/transcribe`, `/tts`, `/image`); **image generation** (`[genai-image]`) — `ImageGenerator` (`generate` / `edit`) + `ImageGenerationConfig` + `GeneratedImage`; `resolve_device`/`auto_dtype_name`; **weight lifecycle** (`[genai-hub]`) — `ModelRef` (`revision=`/`local_files_only=`/`trust_remote_code=` uniform across every loader), `resolve_revision` (pin a branch to a commit sha), `download_model` (fetch ahead of the first request, refusing what the disk cannot hold) + `model_disk_bytes`, `list_cached_models`/`cache_size_bytes`/`remove_cached_model`; **tool calling** (`TextGenerator.chat_with_tools` / `OllamaGenerator.chat_with_tools`) + **structured output** (`generate_structured` — Ollama `format=`, transformers `lm-format-enforcer` via `[genai-structured]`; `parse_structured`); **`VisionTextGenerator`** (local VLM, `[genai-vlm]`); **`OnnxEmbedder`** (torch-free embeddings, `[genai-onnx]`); **generation cache** (`InMemoryGenerationCache`/`RedisGenerationCache`, deterministic-only) via `generation_cache=`; **token/context** (`count_tokens`/`count_message_tokens`/`truncate_messages`); **`GenAIMetrics`** (Prometheus request/latency/token metrics, `[prometheus]`); **moderation** (`RuleModerator`/`ClassifierModerator` + `ModerationResult`); Ollama backend (`[genai-ollama]`) — `OllamaGenerator`/`OllamaEmbedder` (HTTP, no torch) behind the `TextBackend` protocol, drop-in for `make_genai_router`/`Retriever`, plus vision (`generate(images=…)`); **hosted backend** (no extra) — `OpenAICompatGenerator` for any OpenAI-compatible `/chat/completions` (DeepSeek, Groq, OpenRouter, vLLM, TGI, Azure) behind the same `TextBackend`, `generate_with_usage` → `TokenUsage` (incl. `cache_hit_tokens`, read in both the DeepSeek and OpenAI spellings), `extra_body` for provider extensions; **JSON payloads** — `extract_json_list`/`extract_json_object`/`parse_structured_list` (balanced-span extraction, `None` instead of raising so a caller can retry) + `generate_structured_list` (retries at a rising temperature, `StructuredFormatError`); **usage accounting** — `BaseAIUsageModel` + `AIUsageStore` (one row per paid call: `record`/`record_duration`, `totals`/`by_service`/`per_day`/`top_subjects`, cost priced at read time, cached prefixes billed at `price_cache_hit_per_1k`); **`AIChatPipeline`** (memory recall → web-search augment → generate w/ bounded tool-calling loop → TTS → memory index) + `Tool` + `make_ai_chat_router` (`POST /chat` + `/chat/stream` SSE) |
|
|
184
185
|
| `tempest_fastapi_sdk.genai.rag` *(extra: `[genai-rag]`)* | RAG context for local LLMs: `WebSearch` (`.retrieve` one-shot search→extract→context) / `SearxngBackend` / `WebSearchBackend` + `SearchResult`, `ContentExtractor` (trafilatura, `.extract_many` concurrent), `PdfReader` (PyMuPDF) + `Document`/`Chunk`/`PdfPage`, `chunk_text`, `build_context`; corpus RAG — `Retriever` + `VectorStore`/`InMemoryVectorStore`/`PgVectorStore` (pgvector)/`ChromaVectorStore` (`[genai-chroma]`); **`Reranker`** (cross-encoder second stage) + **`HybridRetriever`** (BM25 + dense, `reciprocal_rank_fusion`, `rank-bm25`); long-term chat memory — `ChatMemory` (recency-aware, per-user, Chroma-backed) + `MemoryHit`; audio (`[genai-audio]`) — `SpeechToText` (faster-whisper, `beam_size`/`vad_filter`/`language_probability`, plus `batch_size` for batched decoding, `cpu_threads`/`num_workers`, `condition_on_previous_text` and `transcribe(on_progress=)`) + `TextToSpeech` (Coqui TTS) + `Transcription` |
|
|
185
186
|
| `tempest_fastapi_sdk.geo` *(extra: `[geo]`; offline layers import without it)* | Geolocation without a paid API: `haversine_km`, `estimate_travel` (offline road distance + per-mode time), offline geometry (`bounding_box`, `within_radius`, `nearest`, `initial_bearing`, `destination_point`, `point_in_polygon`, `polygon_area_km2`, `path_length_km`), DB radius search (`GeoPointMixin` + `GeoRepositoryMixin`/`PostGISRepositoryMixin`, `make_geo_point_model`), routing (`OSRMBackend`/`RoutingBackend` — `route` + `route(with_geometry=True)` + `matrix`, per-mode profiles), geocoding (`NominatimBackend`/`GeocodingBackend`), polyline codec (`encode_polyline`/`decode_polyline`), Brazil (`uf_centroid`/`UF_CENTROIDS`, `cep_to_coordinate`); `Coordinate`/`TravelEstimate`/`TravelMode` (car/motorcycle/bus/bicycle/pedestrian)/`BoundingBox`/`GeocodeResult`/`DistanceMatrix` |
|
|
187
|
+
| `tempest_fastapi_sdk.hostbridge` *(no extra; `[pdf-read]` / `[pdf-layout]` for PDFs)* | Control the machine the service runs on, from WSL or Windows itself — `HostBridge` (power actions, host info, text read/write/list/delete, PDF pages, arbitrary PowerShell/`cmd`, the native file picker), `HostBridgeConfig` / `HostBridgeSettings`, `make_hostbridge_router` (auth required by signature, write side behind `destructive=True`), WSL ↔ Windows path translation resolved before it is checked against `allowed_base_paths`, and `HOST_UNAVAILABLE` (503) where there is no host to reach |
|
|
186
188
|
| `tempest_fastapi_sdk.openapi` | `generate_integration`, `load_spec`, `parse_spec`, `emit_schemas`, `emit_client`, `GenerationResult`, `default_output_dir`, `SpecError`, `SpecIR` / `SchemaIR` / `FieldIR` / `ClientIR` / `OperationIR` / `ParameterIR` — backs `tempest openapi-client`, which generates Pydantic schemas + a typed HTTP client from a third party's OpenAPI spec *(YAML needs the `[openapi]` extra)* |
|
|
187
189
|
| `tempest_fastapi_sdk.asyncapi` | `generate_stream`, `load_asyncapi_spec`, `parse_asyncapi`, `emit_stream`, `StreamGenerationResult`, `AsyncApiIR` / `StreamIR` / `ChannelIR` / `MessageIR` / `OperationIR` — backs `tempest asyncapi-client`, which generates a typed WebSocket client from an AsyncAPI 3 document: payload models plus two tagged unions, one for the frames you send and one for those you receive. OpenAPI cannot describe a socket, so this is a second document, not a second reader of the first. The document must declare `x-tempest-perspective` — `action` is relative to whoever published it, a client inverts every one, and a wrong inversion still compiles *(needs the `[websocket]` extra)* |
|
|
188
190
|
| `tempest_fastapi_sdk.integrations.messaging.zap` | `ZapClient` + the in-house WhatsApp gateway's 28 schemas and 27 operations (generated from the vendored spec, checked in, loaded lazily). A send answers `202` with the enqueued row, not a delivery — pass one `idempotency_key` per message so a retry answers `deduped: true` instead of sending twice. The status webhook has no schema in the specification yet, so it is not modelled |
|
|
@@ -2134,3 +2134,31 @@ escrito à mão (`len(password) < 8`): senha acima de 72 bytes saía como
|
|
|
2134
2134
|
senha que o `signup` recusava — conta semeada cujo dono não conseguia
|
|
2135
2135
|
trocar a senha depois. Os dois somem ao trocar o `if` por
|
|
2136
2136
|
`check_password_policy`, que é a régua que o resto do SDK já usava.
|
|
2137
|
+
|
|
2138
|
+
|
|
2139
|
+
## O host vira superfície do SDK, v0.294.0 (2026-09-19)
|
|
2140
|
+
|
|
2141
|
+
O assistente local já sabia controlar a máquina — só que por fora, como um
|
|
2142
|
+
serviço FastAPI separado que cada projeto reescrevia: sandbox de caminho,
|
|
2143
|
+
auth por `X-Token`, tradução WSL ↔ Windows, leitura de PDF. Isso agora é
|
|
2144
|
+
`tempest_fastapi_sdk.hostbridge`, sem extra nenhum para sistema, arquivos e
|
|
2145
|
+
comandos.
|
|
2146
|
+
|
|
2147
|
+
O que a migração ensinou vale mais que o módulo: **as duas regras de
|
|
2148
|
+
segurança que a doc do serviço pedia ao leitor viraram assinatura**. O
|
|
2149
|
+
`allowed_base_paths` começa vazio (vazio nega tudo, em vez de um default
|
|
2150
|
+
permissivo que ninguém revisita) e `make_hostbridge_router` recebe as
|
|
2151
|
+
dependências de auth como argumento obrigatório, recusando lista vazia — um
|
|
2152
|
+
router que lê o disco e roda PowerShell não pode depender de o consumidor ter
|
|
2153
|
+
lido o `!!! danger`. O lado destrutivo é opt-in por `destructive=True`.
|
|
2154
|
+
|
|
2155
|
+
A terceira lição é sobre falhar com precisão: num host sem `powershell.exe`
|
|
2156
|
+
nem `wslpath`, a resposta é `HOST_UNAVAILABLE` (503) e não um erro genérico,
|
|
2157
|
+
porque "esta máquina não tem host para controlar" e "a ação falhou" levam o
|
|
2158
|
+
chamador a caminhos diferentes.
|
|
2159
|
+
|
|
2160
|
+
Junto veio `read_pdf_pages` e o extra `[pdf-layout]`: `pdfplumber` recupera
|
|
2161
|
+
coluna e tabela que o `[pdf-read]` entrega intercaladas, e o caminho com
|
|
2162
|
+
senha distingue documento cifrado de arquivo corrompido — o que só ficou
|
|
2163
|
+
verdade depois de descobrir que o `pdfplumber` embrulha `PDFPasswordIncorrect`
|
|
2164
|
+
num `PdfminerException`, fazendo o `except` específico nunca disparar.
|
|
@@ -29,6 +29,7 @@ Feature-rich helpers pull in third-party dependencies that you only need when yo
|
|
|
29
29
|
| `[genai-vlm]` | `pillow`, `torchvision` | Local vision-language model: describe an image, answer a question about one |
|
|
30
30
|
| `[openapi]` | `pyyaml` | Read a YAML OpenAPI spec for `tempest openapi-client` / `tempest openapi-errors` |
|
|
31
31
|
| `[pdf-read]` | `pypdf` | **Read** PDFs (extract text/pages); `[pdf]` is for **generating** them |
|
|
32
|
+
| `[pdf-layout]` | `pdfplumber` | Read PDFs **with layout and tables** (columns recovered, tables as grids); slower than `[pdf-read]` |
|
|
32
33
|
| `[spreadsheet]` | `openpyxl` | `.xlsx` spreadsheets: typed reading, writing and bulk import |
|
|
33
34
|
| `[websocket]` | `websockets` | Protocol driver for `make_websocket_router` — without it the handshake 404s |
|
|
34
35
|
| `[email]` | `aiosmtplib`, `jinja2`, `email-validator` | `EmailUtils` (with `render_template` + Jinja2 templates) |
|
|
@@ -29,6 +29,7 @@ Os helpers mais ricos puxam dependências de terceiros que só são necessárias
|
|
|
29
29
|
| `[genai-vlm]` | `pillow`, `torchvision` | modelo de visão-linguagem local: descrever imagem, responder pergunta sobre imagem |
|
|
30
30
|
| `[openapi]` | `pyyaml` | ler spec OpenAPI em YAML para `tempest openapi-client` / `tempest openapi-errors` |
|
|
31
31
|
| `[pdf-read]` | `pypdf` | **ler** PDF (extrair texto/páginas); o `[pdf]` é para **gerar** |
|
|
32
|
+
| `[pdf-layout]` | `pdfplumber` | ler PDF **com layout e tabelas** (coluna recuperada, tabela como grade); mais lento que o `[pdf-read]` |
|
|
32
33
|
| `[spreadsheet]` | `openpyxl` | planilhas `.xlsx`: leitura tipada, escrita e import em massa |
|
|
33
34
|
| `[websocket]` | `websockets` | Driver de protocolo do `make_websocket_router` — sem ele o handshake devolve 404 |
|
|
34
35
|
| `[email]` | `aiosmtplib`, `jinja2`, `email-validator` | `EmailUtils` (com `render_template` + templates Jinja2) |
|
|
@@ -48,24 +48,18 @@ Requires:
|
|
|
48
48
|
uv add "tempest-fastapi-sdk[auth,email]>=0.151.1"
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
Two files, and the direction between them matters. The shared objects —
|
|
52
|
+
connection, email, service — live under `src/api/dependencies/`; the
|
|
53
|
+
`src/api/app.py` **imports** from there and only assembles the application:
|
|
53
54
|
|
|
54
|
-
|
|
55
|
+
```python
|
|
56
|
+
# src/api/dependencies/resources.py
|
|
55
57
|
|
|
56
|
-
from tempest_fastapi_sdk import
|
|
57
|
-
AsyncDatabaseManager,
|
|
58
|
-
EmailUtils,
|
|
59
|
-
UserAuthService,
|
|
60
|
-
make_auth_router,
|
|
61
|
-
)
|
|
58
|
+
from tempest_fastapi_sdk import AsyncDatabaseManager, EmailUtils, UserAuthService
|
|
62
59
|
|
|
63
60
|
from src.core.settings import settings
|
|
64
61
|
from src.db.models import UserModel, UserTokenModel
|
|
65
62
|
|
|
66
|
-
app = FastAPI()
|
|
67
|
-
|
|
68
|
-
|
|
69
63
|
db = AsyncDatabaseManager(settings.DATABASE_URL)
|
|
70
64
|
|
|
71
65
|
# EmailUtils — only instantiate when [email] is installed AND you want real
|
|
@@ -87,6 +81,18 @@ auth_service = UserAuthService(
|
|
|
87
81
|
jwt_settings=settings, # mixes JWTSettings
|
|
88
82
|
email=emails, # or None — controls real send vs link in body
|
|
89
83
|
)
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
```python
|
|
87
|
+
# src/api/app.py
|
|
88
|
+
|
|
89
|
+
from fastapi import FastAPI
|
|
90
|
+
|
|
91
|
+
from tempest_fastapi_sdk import make_auth_router
|
|
92
|
+
|
|
93
|
+
from src.api.dependencies.resources import auth_service, db
|
|
94
|
+
|
|
95
|
+
app = FastAPI()
|
|
90
96
|
|
|
91
97
|
app.include_router(
|
|
92
98
|
make_auth_router(
|
|
@@ -96,6 +102,16 @@ app.include_router(
|
|
|
96
102
|
)
|
|
97
103
|
```
|
|
98
104
|
|
|
105
|
+
!!! warning "The service cannot live in `app.py`"
|
|
106
|
+
It is tempting to build the `UserAuthService` next to the `app` and
|
|
107
|
+
import it back from the dependencies — and that is an import cycle:
|
|
108
|
+
`app.py` imports the routers, the routers import `dependencies/`, and
|
|
109
|
+
that would import `app.py` again. The error lands far from its cause
|
|
110
|
+
(`ImportError: cannot import name 'auth_service' from partially
|
|
111
|
+
initialized module`), so the direction is fixed from the start:
|
|
112
|
+
**dependencies never import `app`**. It is also what keeps the service
|
|
113
|
+
testable without starting the application.
|
|
114
|
+
|
|
99
115
|
!!! tip "Four-object TL;DR"
|
|
100
116
|
`AsyncDatabaseManager` → connection. `EmailUtils` → SMTP + Jinja2. `UserAuthService` → business rules (5 methods). `make_auth_router` → glues it all into 5 HTTP endpoints.
|
|
101
117
|
|
|
@@ -1469,7 +1485,7 @@ The service already has `user_model`, `JWTUtils` and the session — so you don'
|
|
|
1469
1485
|
|
|
1470
1486
|
```python
|
|
1471
1487
|
# src/api/dependencies/auth.py
|
|
1472
|
-
from src.api.
|
|
1488
|
+
from src.api.dependencies.resources import auth_service
|
|
1473
1489
|
|
|
1474
1490
|
get_current_user = auth_service.current_user_dependency()
|
|
1475
1491
|
get_current_user_or_none = auth_service.current_user_dependency(soft=True)
|
|
@@ -1490,7 +1506,7 @@ get_current_user_or_none = auth_service.current_user_dependency(soft=True)
|
|
|
1490
1506
|
|
|
1491
1507
|
```python
|
|
1492
1508
|
# src/api/dependencies/auth.py
|
|
1493
|
-
from src.api.
|
|
1509
|
+
from src.api.dependencies.resources import auth_service
|
|
1494
1510
|
|
|
1495
1511
|
get_current_user = auth_service.current_user_dependency(
|
|
1496
1512
|
cookie_name="access_token",
|
|
@@ -1511,7 +1527,7 @@ get_current_user_or_none = auth_service.current_user_dependency(soft=True)
|
|
|
1511
1527
|
|
|
1512
1528
|
from tempest_fastapi_sdk import JWTUtils, make_jwt_user_dependency
|
|
1513
1529
|
|
|
1514
|
-
from src.api.
|
|
1530
|
+
from src.api.dependencies.resources import db
|
|
1515
1531
|
from src.core.settings import settings
|
|
1516
1532
|
from src.db.models import UserModel
|
|
1517
1533
|
from src.db.repositories import UserRepository
|
|
@@ -48,24 +48,18 @@ Requer:
|
|
|
48
48
|
uv add "tempest-fastapi-sdk[auth,email]>=0.151.1"
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
São dois arquivos, e a ordem entre eles importa. Os objetos compartilhados
|
|
52
|
+
— conexão, e-mail, service — moram em `src/api/dependencies/`; o
|
|
53
|
+
`src/api/app.py` **importa** de lá e só monta a aplicação:
|
|
53
54
|
|
|
54
|
-
|
|
55
|
+
```python
|
|
56
|
+
# src/api/dependencies/resources.py
|
|
55
57
|
|
|
56
|
-
from tempest_fastapi_sdk import
|
|
57
|
-
AsyncDatabaseManager,
|
|
58
|
-
EmailUtils,
|
|
59
|
-
UserAuthService,
|
|
60
|
-
make_auth_router,
|
|
61
|
-
)
|
|
58
|
+
from tempest_fastapi_sdk import AsyncDatabaseManager, EmailUtils, UserAuthService
|
|
62
59
|
|
|
63
60
|
from src.core.settings import settings
|
|
64
61
|
from src.db.models import UserModel, UserTokenModel
|
|
65
62
|
|
|
66
|
-
app = FastAPI()
|
|
67
|
-
|
|
68
|
-
|
|
69
63
|
db = AsyncDatabaseManager(settings.DATABASE_URL)
|
|
70
64
|
|
|
71
65
|
# EmailUtils — só instancie se [email] estiver instalado E você quiser e-mail
|
|
@@ -87,6 +81,18 @@ auth_service = UserAuthService(
|
|
|
87
81
|
jwt_settings=settings, # mistura JWTSettings
|
|
88
82
|
email=emails, # ou None — controla envio real vs link no body
|
|
89
83
|
)
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
```python
|
|
87
|
+
# src/api/app.py
|
|
88
|
+
|
|
89
|
+
from fastapi import FastAPI
|
|
90
|
+
|
|
91
|
+
from tempest_fastapi_sdk import make_auth_router
|
|
92
|
+
|
|
93
|
+
from src.api.dependencies.resources import auth_service, db
|
|
94
|
+
|
|
95
|
+
app = FastAPI()
|
|
90
96
|
|
|
91
97
|
app.include_router(
|
|
92
98
|
make_auth_router(
|
|
@@ -96,6 +102,15 @@ app.include_router(
|
|
|
96
102
|
)
|
|
97
103
|
```
|
|
98
104
|
|
|
105
|
+
!!! warning "O service não pode morar no `app.py`"
|
|
106
|
+
É tentador criar o `UserAuthService` ao lado do `app` e importá-lo de
|
|
107
|
+
volta nas dependencies — e é um ciclo de import: `app.py` importa os
|
|
108
|
+
routers, os routers importam `dependencies/`, e esse importaria `app.py`
|
|
109
|
+
de novo. O erro sai longe da causa (`ImportError: cannot import name
|
|
110
|
+
'auth_service' from partially initialized module`), então a direção fica
|
|
111
|
+
fixa desde o começo: **dependencies não importa `app`**. É também o que
|
|
112
|
+
deixa o service testável sem subir a aplicação.
|
|
113
|
+
|
|
99
114
|
!!! tip "TL;DR de quatro objetos"
|
|
100
115
|
`AsyncDatabaseManager` → conexão. `EmailUtils` → SMTP + Jinja2. `UserAuthService` → regras de negócio (5 métodos). `make_auth_router` → cola tudo em 5 endpoints HTTP.
|
|
101
116
|
|
|
@@ -1461,7 +1476,7 @@ O service já tem `user_model`, `JWTUtils` e a sessão — então não precisa e
|
|
|
1461
1476
|
|
|
1462
1477
|
```python
|
|
1463
1478
|
# src/api/dependencies/auth.py
|
|
1464
|
-
from src.api.
|
|
1479
|
+
from src.api.dependencies.resources import auth_service
|
|
1465
1480
|
|
|
1466
1481
|
get_current_user = auth_service.current_user_dependency()
|
|
1467
1482
|
get_current_user_or_none = auth_service.current_user_dependency(soft=True)
|
|
@@ -1482,7 +1497,7 @@ get_current_user_or_none = auth_service.current_user_dependency(soft=True)
|
|
|
1482
1497
|
|
|
1483
1498
|
```python
|
|
1484
1499
|
# src/api/dependencies/auth.py
|
|
1485
|
-
from src.api.
|
|
1500
|
+
from src.api.dependencies.resources import auth_service
|
|
1486
1501
|
|
|
1487
1502
|
get_current_user = auth_service.current_user_dependency(
|
|
1488
1503
|
cookie_name="access_token",
|
|
@@ -1503,7 +1518,7 @@ get_current_user_or_none = auth_service.current_user_dependency(soft=True)
|
|
|
1503
1518
|
|
|
1504
1519
|
from tempest_fastapi_sdk import JWTUtils, make_jwt_user_dependency
|
|
1505
1520
|
|
|
1506
|
-
from src.api.
|
|
1521
|
+
from src.api.dependencies.resources import db
|
|
1507
1522
|
from src.core.settings import settings
|
|
1508
1523
|
from src.db.models import UserModel
|
|
1509
1524
|
from src.db.repositories import UserRepository
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
# Host control (files, commands, power)
|
|
2
|
+
|
|
3
|
+
Your service runs inside WSL and needs to act on the **machine** hosting it:
|
|
4
|
+
read a file under `C:\Users\...`, run a PowerShell command, open the native
|
|
5
|
+
file picker, power the computer down at the end of the day.
|
|
6
|
+
`tempest_fastapi_sdk.hostbridge` is that layer — the one that used to live
|
|
7
|
+
as a separate service in every project that needed it.
|
|
8
|
+
|
|
9
|
+
Nothing here mounts itself: `create_app` does not know this module, and the
|
|
10
|
+
router exists because a service asked for it.
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
uv add "tempest-fastapi-sdk"
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
The system, file and command surface needs no extra at all — it is the
|
|
17
|
+
standard library and FastAPI. Reading PDFs needs `[pdf-read]`, and reading
|
|
18
|
+
them **with layout and tables** needs `[pdf-layout]`.
|
|
19
|
+
|
|
20
|
+
!!! danger "This is a shell on that machine"
|
|
21
|
+
Whoever reaches these methods runs commands as the host user and powers
|
|
22
|
+
the machine off. Two things follow, and neither is optional:
|
|
23
|
+
`allowed_base_paths` starts **empty** — denying every path until someone
|
|
24
|
+
configures it — and `make_hostbridge_router` **requires** auth
|
|
25
|
+
dependencies, refusing an empty list. The write side (commands, writes,
|
|
26
|
+
deletes, power) is behind `destructive=True` and off by default.
|
|
27
|
+
|
|
28
|
+
## The first read
|
|
29
|
+
|
|
30
|
+
`HostBridge` takes a `HostBridgeConfig` and nothing else. Everything is
|
|
31
|
+
`async`, and whatever touches the disk or a process runs off the event loop:
|
|
32
|
+
|
|
33
|
+
```python
|
|
34
|
+
import asyncio
|
|
35
|
+
|
|
36
|
+
from tempest_fastapi_sdk.hostbridge import HostBridge, HostBridgeConfig
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
async def main() -> None:
|
|
40
|
+
bridge = HostBridge(
|
|
41
|
+
HostBridgeConfig(allowed_base_paths=("/mnt/c/Users/me/Documents",)),
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
info = await bridge.host_info()
|
|
45
|
+
print(info.computer_name, info.os_version)
|
|
46
|
+
|
|
47
|
+
file = await bridge.read_text("C:\\Users\\me\\Documents\\notes.txt")
|
|
48
|
+
print(file.size_bytes, file.content[:80])
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
asyncio.run(main())
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Look at that path: it was written in **Windows** form and it worked. The
|
|
55
|
+
bridge takes both — `C:\Users\me` and `/mnt/c/Users/me` — and normalizes
|
|
56
|
+
before checking, through `wslpath` where it exists.
|
|
57
|
+
|
|
58
|
+
!!! warning "Order matters: resolve first, check second"
|
|
59
|
+
The path is resolved (`..` collapsed, symlinks followed) **before** it is
|
|
60
|
+
compared against `allowed_base_paths`. Checking before resolving is the
|
|
61
|
+
classic bug: `/mnt/c/Users/me/../../../etc/passwd` starts inside an
|
|
62
|
+
allowed base and ends outside it.
|
|
63
|
+
|
|
64
|
+
## Configuration from the environment
|
|
65
|
+
|
|
66
|
+
In a service, these options belong on `Settings`. Compose the mixin and
|
|
67
|
+
splat the mapper — the field → argument translation lives in one place:
|
|
68
|
+
|
|
69
|
+
```python
|
|
70
|
+
from tempest_fastapi_sdk.settings import HostBridgeSettings, ServerSettings
|
|
71
|
+
from tempest_fastapi_sdk.hostbridge import HostBridge, HostBridgeConfig
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
class Settings(HostBridgeSettings, ServerSettings):
|
|
75
|
+
"""Only what is specific to this service is declared here."""
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
settings = Settings()
|
|
79
|
+
bridge = HostBridge(HostBridgeConfig(**settings.hostbridge_kwargs()))
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
The environment variables are the field names themselves:
|
|
83
|
+
`HOST_ALLOWED_BASE_PATHS`, `HOST_POWERSHELL_BINARY`, `HOST_CMD_BINARY`,
|
|
84
|
+
`HOST_COMMAND_TIMEOUT` and `HOST_MAX_FILE_READ_BYTES`.
|
|
85
|
+
|
|
86
|
+
!!! info "`HOST_ALLOWED_BASE_PATHS` has no permissive default"
|
|
87
|
+
Empty denies everything. That is the safe direction to fail: a bridge
|
|
88
|
+
that can run PowerShell should not also be able to read the whole disk
|
|
89
|
+
because nobody remembered to configure it.
|
|
90
|
+
|
|
91
|
+
## Exposing it over HTTP
|
|
92
|
+
|
|
93
|
+
`make_hostbridge_router` returns an `APIRouter` ready for `include_router`.
|
|
94
|
+
It **requires** the dependency list — the signature is what forces the auth
|
|
95
|
+
decision, instead of a warning in the docs:
|
|
96
|
+
|
|
97
|
+
```python
|
|
98
|
+
from fastapi import Depends, FastAPI
|
|
99
|
+
|
|
100
|
+
from tempest_fastapi_sdk import make_token_dependency, register_exception_handlers
|
|
101
|
+
from tempest_fastapi_sdk.hostbridge import (
|
|
102
|
+
HostBridge,
|
|
103
|
+
HostBridgeConfig,
|
|
104
|
+
make_hostbridge_router,
|
|
105
|
+
)
|
|
106
|
+
|
|
107
|
+
app = FastAPI()
|
|
108
|
+
register_exception_handlers(app)
|
|
109
|
+
|
|
110
|
+
bridge = HostBridge(
|
|
111
|
+
HostBridgeConfig(allowed_base_paths=("/mnt/c/Users/me/Documents",)),
|
|
112
|
+
)
|
|
113
|
+
|
|
114
|
+
app.include_router(
|
|
115
|
+
make_hostbridge_router(
|
|
116
|
+
bridge,
|
|
117
|
+
dependencies=[Depends(make_token_dependency("a-long-secret"))],
|
|
118
|
+
)
|
|
119
|
+
)
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
That mounts the side that **reads**:
|
|
123
|
+
|
|
124
|
+
| Method | Route | What it does |
|
|
125
|
+
| --- | --- | --- |
|
|
126
|
+
| `GET` | `/system/info` | Machine name, user, OS, uptime |
|
|
127
|
+
| `GET` | `/system/files` | Read a text file |
|
|
128
|
+
| `GET` | `/system/files/list` | List a directory |
|
|
129
|
+
| `GET` | `/system/files/pdf` | Extract a PDF, page by page |
|
|
130
|
+
| `POST` | `/system/files/pick` | Open the native file picker |
|
|
131
|
+
|
|
132
|
+
The side that **writes** — `POST /system/exec`, `POST`/`DELETE
|
|
133
|
+
/system/files`, `POST /system/{shutdown,restart,abort,lock,logoff}` — only
|
|
134
|
+
appears with `destructive=True`:
|
|
135
|
+
|
|
136
|
+
```python
|
|
137
|
+
from fastapi import Depends
|
|
138
|
+
|
|
139
|
+
from tempest_fastapi_sdk import make_token_dependency
|
|
140
|
+
from tempest_fastapi_sdk.hostbridge import (
|
|
141
|
+
HostBridge,
|
|
142
|
+
HostBridgeConfig,
|
|
143
|
+
make_hostbridge_router,
|
|
144
|
+
)
|
|
145
|
+
|
|
146
|
+
bridge = HostBridge(
|
|
147
|
+
HostBridgeConfig(allowed_base_paths=("/mnt/c/Users/me/Documents",)),
|
|
148
|
+
)
|
|
149
|
+
|
|
150
|
+
router = make_hostbridge_router(
|
|
151
|
+
bridge,
|
|
152
|
+
dependencies=[Depends(make_token_dependency("a-long-secret"))],
|
|
153
|
+
destructive=True,
|
|
154
|
+
)
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
!!! tip "Turn the destructive side on only with someone there to confirm"
|
|
158
|
+
An assistant that runs commands without human confirmation is one that
|
|
159
|
+
deletes the wrong folder exactly once. The pattern that works is holding
|
|
160
|
+
the call until the user approves it, showing the exact arguments.
|
|
161
|
+
|
|
162
|
+
## Errors, with a code
|
|
163
|
+
|
|
164
|
+
Every failure raises one of the SDK's envelope exceptions, so a service that
|
|
165
|
+
already calls `register_exception_handlers` answers `{detail, code, details}`
|
|
166
|
+
with no extra wiring — in PT-BR or en-US, per `Accept-Language`:
|
|
167
|
+
|
|
168
|
+
| Code | Status | When |
|
|
169
|
+
| --- | --- | --- |
|
|
170
|
+
| `HOST_INVALID_PATH` | 400 | Path outside the bases, or untranslatable |
|
|
171
|
+
| `HOST_FILE_NOT_FOUND` | 404 | No file there |
|
|
172
|
+
| `HOST_FILE_TOO_LARGE` | 413 | Over `max_file_read_bytes` |
|
|
173
|
+
| `HOST_FILE_DECODE_FAILED` | 400 | Bytes do not decode — a PDF or an image |
|
|
174
|
+
| `HOST_COMMAND_FAILED` | 500 | The command exited non-zero |
|
|
175
|
+
| `HOST_COMMAND_TIMEOUT` | 504 | The command ran past its timeout and was killed |
|
|
176
|
+
| `HOST_UNAVAILABLE` | 503 | Neither PowerShell nor `wslpath` exists here |
|
|
177
|
+
|
|
178
|
+
`HOST_UNAVAILABLE` is what tells "this machine has no Windows host" apart
|
|
179
|
+
from "the action failed": on a plain Linux container the caller degrades
|
|
180
|
+
instead of reporting an error.
|
|
181
|
+
|
|
182
|
+
## Reading a PDF from the host
|
|
183
|
+
|
|
184
|
+
```python
|
|
185
|
+
import asyncio
|
|
186
|
+
|
|
187
|
+
from tempest_fastapi_sdk.hostbridge import HostBridge, HostBridgeConfig
|
|
188
|
+
from tempest_fastapi_sdk.pdf import PdfExtractor
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
async def main() -> None:
|
|
192
|
+
bridge = HostBridge(
|
|
193
|
+
HostBridgeConfig(allowed_base_paths=("/mnt/c/Users/me/Documents",)),
|
|
194
|
+
)
|
|
195
|
+
document = await bridge.read_pdf(
|
|
196
|
+
"C:\\Users\\me\\Documents\\contract.pdf",
|
|
197
|
+
extractor=PdfExtractor.LAYOUT,
|
|
198
|
+
)
|
|
199
|
+
for page in document.pages:
|
|
200
|
+
print(page.page_number, len(page.tables), page.text[:60])
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
asyncio.run(main())
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
`PdfExtractor.TEXT` is `pypdf` — fast, plain prose, `[pdf-read]`.
|
|
207
|
+
`PdfExtractor.LAYOUT` is `pdfplumber`, `[pdf-layout]`: slower, but it
|
|
208
|
+
recovers columns and fills `page.tables`.
|
|
209
|
+
|
|
210
|
+
!!! warning "There is no OCR here"
|
|
211
|
+
A scanned page is an image with no text layer: it comes back with
|
|
212
|
+
`text=""` rather than being dropped — entry `n` is always page `n`.
|
|
213
|
+
Check for it and route those files elsewhere; handing a model an empty
|
|
214
|
+
page is how a confident answer gets invented about something nobody read.
|
|
215
|
+
|
|
216
|
+
## Running commands
|
|
217
|
+
|
|
218
|
+
```python
|
|
219
|
+
import asyncio
|
|
220
|
+
|
|
221
|
+
from tempest_fastapi_sdk.hostbridge import (
|
|
222
|
+
CommandSchema,
|
|
223
|
+
HostBridge,
|
|
224
|
+
HostBridgeConfig,
|
|
225
|
+
)
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
async def main() -> None:
|
|
229
|
+
bridge = HostBridge(HostBridgeConfig())
|
|
230
|
+
result = await bridge.run_command(
|
|
231
|
+
CommandSchema(command="Get-Date -Format o", shell="powershell", timeout=10),
|
|
232
|
+
)
|
|
233
|
+
print(result.return_code, result.stdout.strip(), result.duration_seconds)
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
asyncio.run(main())
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
!!! note "Elevation (UAC) does not happen from here"
|
|
240
|
+
A command that needs administrator rights fails. Wrap it through `gsudo`
|
|
241
|
+
or a pre-created Task Scheduler entry on the Windows side.
|
|
242
|
+
|
|
243
|
+
## Recap
|
|
244
|
+
|
|
245
|
+
- `HostBridge` + `HostBridgeConfig` give you the whole surface;
|
|
246
|
+
`HostBridgeSettings` is the same thing from the environment, via
|
|
247
|
+
`hostbridge_kwargs()`.
|
|
248
|
+
- An empty `allowed_base_paths` denies everything, and a path is resolved
|
|
249
|
+
before it is checked.
|
|
250
|
+
- `make_hostbridge_router` requires auth by signature, and only mounts the
|
|
251
|
+
write side with `destructive=True`.
|
|
252
|
+
- Every failure carries a `code` — `HOST_UNAVAILABLE` says this machine has
|
|
253
|
+
no host to control.
|
|
254
|
+
- PDFs: `[pdf-read]` for text, `[pdf-layout]` for columns and tables, no OCR
|
|
255
|
+
in either.
|