tempest-fastapi-sdk 0.167.0__tar.gz → 0.167.2__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.167.2/.github/ISSUE_TEMPLATE/bug_report.yml +63 -0
- tempest_fastapi_sdk-0.167.2/.github/ISSUE_TEMPLATE/config.yml +8 -0
- tempest_fastapi_sdk-0.167.2/.github/ISSUE_TEMPLATE/docs.yml +39 -0
- tempest_fastapi_sdk-0.167.2/.github/ISSUE_TEMPLATE/feature_request.yml +59 -0
- tempest_fastapi_sdk-0.167.2/.github/ISSUE_TEMPLATE/question.yml +36 -0
- tempest_fastapi_sdk-0.167.2/.github/PULL_REQUEST_TEMPLATE.md +50 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/CHANGELOG.md +78 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/PKG-INFO +1 -1
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/architecture.en.md +25 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/architecture.md +25 -0
- tempest_fastapi_sdk-0.167.2/docs/contributing.en.md +121 -0
- tempest_fastapi_sdk-0.167.2/docs/contributing.md +121 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/index.en.md +41 -2
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/index.md +41 -2
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/integrated.en.md +2 -2
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/integrated.md +2 -2
- tempest_fastapi_sdk-0.167.2/docs/recipes/index.en.md +357 -0
- tempest_fastapi_sdk-0.167.2/docs/recipes/index.md +356 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/mkdocs.yml +8 -9
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/pyproject.toml +1 -1
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/__init__.py +1 -1
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/controllers/base.py +7 -1
- tempest_fastapi_sdk-0.167.2/tests/controllers/test_generic_bounds.py +121 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/uv.lock +1 -1
- tempest_fastapi_sdk-0.167.0/docs/contributing.en.md +0 -82
- tempest_fastapi_sdk-0.167.0/docs/contributing.md +0 -82
- tempest_fastapi_sdk-0.167.0/docs/recipes/index.en.md +0 -62
- tempest_fastapi_sdk-0.167.0/docs/recipes/index.md +0 -62
- tempest_fastapi_sdk-0.167.0/docs/tour.en.md +0 -274
- tempest_fastapi_sdk-0.167.0/docs/tour.md +0 -273
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/.github/workflows/ci.yml +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/.github/workflows/docs.yml +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/.github/workflows/nightly-model.yml +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/.github/workflows/release-pypi.yml +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/.gitignore +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/.python-version +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/CLAUDE.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/Makefile +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/README.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/admin-showcase.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/admin-showcase.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/changelog.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/changelog.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/fullstack-web.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/fullstack-web.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/genai-examples.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/genai-examples.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/installation.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/installation.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/learning/index.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/learning/index.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/learning/marketplace/api.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/learning/marketplace/api.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/learning/marketplace/business-rules.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/learning/marketplace/business-rules.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/learning/marketplace/domain.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/learning/marketplace/domain.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/learning/marketplace/flows.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/learning/marketplace/flows.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/learning/marketplace/index.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/learning/marketplace/index.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/marketplace-local.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/marketplace-local.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/migration.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/migration.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/admin.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/admin.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/artifact-registry.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/artifact-registry.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/audit-trail.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/audit-trail.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/auth-flow.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/auth-flow.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/authz.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/authz.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/br-helpers.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/br-helpers.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/cache.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/cache.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/chat.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/chat.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/cli.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/cli.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/database.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/database.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/deploy-safety.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/deploy-safety.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/downloads.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/downloads.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/email.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/email.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/feature-flags.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/feature-flags.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/fields.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/fields.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/file-store.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/file-store.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/genai.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/genai.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/geo.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/geo.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/http-client.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/http-client.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/http.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/http.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/idempotency.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/idempotency.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/introspection-auth.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/introspection-auth.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/logging.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/logging.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/management-commands.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/management-commands.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/metrics.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/metrics.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/mfa.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/mfa.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/multi-tenant.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/multi-tenant.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/observability.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/observability.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/offline-sync.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/offline-sync.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/openapi-client.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/openapi-client.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/openapi-errors.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/openapi-errors.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/outbox.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/outbox.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/permission-guards.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/permission-guards.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/queue-tasks.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/queue-tasks.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/react-spa.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/react-spa.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/realtime.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/realtime.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/refresh-tokens.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/refresh-tokens.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/reviews.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/reviews.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/security.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/security.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/sessions.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/sessions.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/sse.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/sse.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/storage.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/storage.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/stored-files.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/stored-files.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/system-checks.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/system-checks.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/tempestweb-frontend.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/tempestweb-frontend.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/testing.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/testing.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/typing.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/typing.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/uploads.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/uploads.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/utilities.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/utilities.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/vision.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/vision.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/webpush.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/webpush.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/websocket.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/recipes/websocket.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/reference.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/reference.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/roadmap.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/roadmap.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/ssr.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/ssr.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/tutorial.en.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/docs/tutorial.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/mkdocs_hooks/llmstxt.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/planning/genai/README.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/planning/genai/manual-validation.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/planning/genai/phase-0.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/planning/genai/phase-1.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/planning/genai/phase-2.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/planning/genai/phase-3.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/planning/genai/validation-strategy.md +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/scripts/extract_recipe.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/admin/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/admin/actions.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/admin/auth.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/admin/config.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/admin/dashboard.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/admin/discovery.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/admin/forms.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/admin/permissions.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/admin/router.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/admin/session.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/admin/site.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/admin/static/admin.css +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/admin/templates/autocomplete.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/admin/templates/base.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/admin/templates/dashboard.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/admin/templates/detail.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/admin/templates/form.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/admin/templates/import.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/admin/templates/list.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/admin/templates/login.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/admin/templates/logs.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/admin/templates/mfa.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/admin/theme.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/api/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/api/cookies.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/api/dependencies/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/api/dependencies/auth.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/api/error_docs.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/api/handlers.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/api/middlewares/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/api/middlewares/body_size.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/api/middlewares/cors.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/api/middlewares/csrf.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/api/middlewares/graceful.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/api/middlewares/idempotency.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/api/middlewares/rate_limit.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/api/middlewares/request_id.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/api/middlewares/response_cache.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/api/oauth.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/api/routers/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/api/routers/health.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/api/routers/logs.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/api/routers/metrics.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/api/routers/tool_spec.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/api/server.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/api/spa.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/api/static.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/api/tracing.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/api/webhooks.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/artifacts/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/artifacts/actions.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/artifacts/digest.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/artifacts/model.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/artifacts/registry.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/guards.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/introspection.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/locale.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/page_renderer.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/router.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/schemas.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/service.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/templates/en-US/activation.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/templates/en-US/activation_error.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/templates/en-US/activation_success.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/templates/en-US/email_change.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/templates/en-US/email_change_error.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/templates/en-US/email_change_success.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/templates/en-US/email_changed_notice.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/templates/en-US/email_verification.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/templates/en-US/email_verification_error.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/templates/en-US/email_verification_success.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/templates/en-US/password_reset.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/templates/en-US/password_reset_error.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/templates/en-US/password_reset_form.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/templates/en-US/password_reset_success.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/templates/pt-BR/activation.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/templates/pt-BR/activation_error.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/templates/pt-BR/activation_success.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/templates/pt-BR/email_change.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/templates/pt-BR/email_change_error.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/templates/pt-BR/email_change_success.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/templates/pt-BR/email_changed_notice.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/templates/pt-BR/email_verification.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/templates/pt-BR/email_verification_error.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/templates/pt-BR/email_verification_success.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/templates/pt-BR/password_reset.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/templates/pt-BR/password_reset_error.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/templates/pt-BR/password_reset_form.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/templates/pt-BR/password_reset_success.html +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/auth/token_delivery.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/authz/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/authz/dependencies.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/authz/permissions.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/authz/requires.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cache/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cache/decorator.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cache/invalidation.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cache/redis_manager.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/chat/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/chat/models.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/chat/router.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/chat/schemas.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/chat/service.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/checks/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/checks/builtins.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/checks/messages.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/checks/registry.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/_templates/Dockerfile.tmpl +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/_templates/README.md.tmpl +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/_templates/dockerignore.tmpl +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/_templates/env.example.tmpl +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/_templates/gitignore.tmpl +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/_templates/main.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/_templates/pyproject.toml.tmpl +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/_templates/src/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/_templates/src/api/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/_templates/src/api/app.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/_templates/src/api/dependencies/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/_templates/src/api/dependencies/auth.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/_templates/src/api/dependencies/resources.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/_templates/src/api/routers/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/_templates/src/controllers/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/_templates/src/core/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/_templates/src/core/exceptions.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/_templates/src/core/settings.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/_templates/src/db/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/_templates/src/db/models/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/_templates/src/db/models/user.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/_templates/src/db/repositories/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/_templates/src/schemas/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/_templates/src/server.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/_templates/src/services/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/_templates/src/utils/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/_templates/tests/__init__.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/_templates/tests/test_smoke.py.tmpl +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/commands.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/config.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/db.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/docker_compose.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/generate.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/lint.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/main.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/new.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/openapi_errors.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/openapi_fix.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/permissions.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/secrets.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/src_layers.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/cli/user.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/controllers/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/core/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/core/context.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/core/enums.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/core/logging.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/core/typed.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/db/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/db/_alembic_templates/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/db/_alembic_templates/env.py.template +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/db/alembic_hooks.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/db/audit.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/db/backup.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/db/connection.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/db/expressions.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/db/migrations.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/db/mixins.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/db/model.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/db/outbox.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/db/repository.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/db/signals.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/db/slow_query.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/db/tenant.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/db/user_model.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/db/user_recovery_code_model.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/db/user_refresh_token_model.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/db/user_token_model.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/db/webpush_subscription_model.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/exceptions/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/exceptions/base.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/exceptions/conflict.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/exceptions/forbidden.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/exceptions/i18n.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/exceptions/jwt.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/exceptions/not_found.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/exceptions/too_many_requests.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/exceptions/unauthorized.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/exceptions/upload.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/exceptions/validation.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/flags/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/flags/backends.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/flags/dependencies.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/flags/service.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/audio/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/audio/language.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/audio/schemas.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/audio/stt.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/audio/tts.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/batching.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/embeddings.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/generation_cache.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/hardware.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/metrics.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/moderation.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/ollama.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/onnx_embed.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/pipeline.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/rag/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/rag/chroma.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/rag/chunking.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/rag/context.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/rag/extract.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/rag/fusion.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/rag/hybrid.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/rag/pdf.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/rag/rerank.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/rag/retriever.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/rag/schemas.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/rag/search.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/rag/vectorstore.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/registry.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/router.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/schemas.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/structured.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/text.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/tokens.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/tracing.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/genai/vision_text.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/geo/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/geo/br.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/geo/db.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/geo/distance.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/geo/enums.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/geo/estimate.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/geo/geocoding.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/geo/geometry.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/geo/polyline.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/geo/routing.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/geo/schemas.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/openapi/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/openapi/emit_client.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/openapi/emit_schemas.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/openapi/generate.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/openapi/ir.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/openapi/loader.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/openapi/naming.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/openapi/parse.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/py.typed +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/queue/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/queue/broker.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/queue/consumer.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/queue/manager.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/reviews/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/reviews/models.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/reviews/router.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/reviews/schemas.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/reviews/service.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/schemas/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/schemas/base.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/schemas/errors.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/schemas/link_headers.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/schemas/logs.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/schemas/pagination.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/schemas/response.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/services/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/services/base.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/services/file_mixin.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/sessions/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/sessions/dependencies.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/sessions/middleware.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/sessions/router.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/sessions/schemas.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/sessions/service.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/sessions/store.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/settings/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/settings/base.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/settings/mixins.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/sse/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/sse/broker.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/sse/event_stream.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/ssr/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/ssr/_static/htmx.min.js +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/ssr/assets.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/ssr/attributes.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/ssr/page.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/ssr/response.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/ssr/webapp.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/storage/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/storage/minio_client.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/tasks/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/tasks/cron.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/tasks/dead_letter.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/tasks/manager.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/tasks/observability.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/tasks/oop.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/tasks/queue.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/tasks/scheduler.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/testing/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/testing/database.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/testing/factories.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/utils/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/utils/client_ip.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/utils/data/br_locations.json +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/utils/datetime.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/utils/dict.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/utils/download.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/utils/email.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/utils/fields.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/utils/file_store.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/utils/http_client.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/utils/jwt.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/utils/locations.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/utils/log.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/utils/metrics.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/utils/opaque_token.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/utils/password.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/utils/regex.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/utils/storage_backends.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/utils/throttle.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/utils/totp.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/utils/upload.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/vision/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/vision/mapping.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/vision/router.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/vision/schemas.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/webpush/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/webpush/dispatcher.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/webpush/router.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/webpush/schemas.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/webpush/service.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/websockets/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/websockets/hub.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/websockets/router.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tempest_fastapi_sdk/websockets/schemas.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/admin/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/admin/test_actions.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/admin/test_audit_viewer.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/admin/test_auth.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/admin/test_autocomplete_fk.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/admin/test_csv_import.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/admin/test_dashboard_cards.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/admin/test_discovery.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/admin/test_forms.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/admin/test_inlines.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/admin/test_lenses.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/admin/test_logs_nav.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/admin/test_mfa.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/admin/test_rbac.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/admin/test_rich_filters.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/admin/test_router.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/admin/test_site.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/admin/test_theme.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/admin/test_upload_field.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/admin/test_user_model.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/admin/test_widgets_json_time.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/api/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/api/test_body_size.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/api/test_business_metrics.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/api/test_cookies.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/api/test_cors.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/api/test_csrf.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/api/test_dependencies_auth.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/api/test_error_docs.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/api/test_graceful.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/api/test_handlers.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/api/test_health_router.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/api/test_idempotency.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/api/test_jwt_dependency.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/api/test_logs_router.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/api/test_oauth.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/api/test_outbound_webhooks.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/api/test_prometheus.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/api/test_rate_limit.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/api/test_rate_limit_extras.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/api/test_request_id_middleware.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/api/test_response_cache.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/api/test_role_dependency.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/api/test_server.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/api/test_spa.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/api/test_static.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/api/test_tool_spec.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/api/test_tracing.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/api/test_webhooks.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/api/test_webhooks_rsa.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/artifacts/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/artifacts/support.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/artifacts/test_actions.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/artifacts/test_digest.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/artifacts/test_registry.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/auth/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/auth/test_cookie_delivery.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/auth/test_email_change.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/auth/test_guards.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/auth/test_introspection.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/auth/test_locale.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/auth/test_mfa.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/auth/test_refresh.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/auth/test_refresh_db.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/auth/test_service.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/authz/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/authz/test_dependencies.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/authz/test_permissions.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/authz/test_requires.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/cache/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/cache/test_decorator.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/cache/test_invalidation.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/cache/test_redis_manager.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/chat/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/chat/test_chat.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/checks/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/checks/test_check_config_cli.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/checks/test_checks.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/cli/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/cli/test_config.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/cli/test_db.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/cli/test_db_seed.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/cli/test_docker_compose.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/cli/test_dockerfile_spa.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/cli/test_generate.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/cli/test_lint_strictness.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/cli/test_main.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/cli/test_management_commands.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/cli/test_openapi_errors.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/cli/test_openapi_fix.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/cli/test_permissions.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/cli/test_secrets.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/cli/test_user.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/conftest.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/controllers/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/controllers/test_base.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/core/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/core/test_context.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/core/test_enums.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/core/test_logging.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/core/test_typed.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/db/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/db/test_alembic_hooks.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/db/test_audit.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/db/test_backup.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/db/test_bulk_ops.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/db/test_connection.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/db/test_eager_load.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/db/test_expressions.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/db/test_migrations.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/db/test_mixins.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/db/test_model.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/db/test_outbox.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/db/test_repository.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/db/test_safe_upgrade.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/db/test_signals.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/db/test_slow_query.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/db/test_tenant.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/exceptions/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/exceptions/test_exceptions.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/exceptions/test_i18n.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/exceptions/test_inherited_code_warning.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/flags/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/flags/test_flags.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/_eval/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/_eval/corpus.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/audio/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/audio/test_audio.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/audio/test_language.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/conftest.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/test_batching.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/test_chat_memory.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/test_embedding_cache_redis.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/test_embeddings.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/test_eval_harness.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/test_genai_metrics.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/test_generation_cache.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/test_generation_config.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/test_gpu_validation.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/test_hardware.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/test_hybrid.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/test_moderation.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/test_ollama.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/test_onnx_embed.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/test_pipeline.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/test_pipeline_integration.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/test_rag.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/test_refinements.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/test_rerank.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/test_router.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/test_structured.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/test_text.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/test_textgen_embed_metrics.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/test_tokens.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/test_tracing.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/test_vectorstore.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/genai/test_vision_text.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/geo/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/geo/test_br.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/geo/test_db.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/geo/test_distance.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/geo/test_estimate.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/geo/test_geocoding.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/geo/test_geometry.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/geo/test_polyline.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/geo/test_routing.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/geo/test_routing_extra.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/openapi/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/openapi/conftest.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/openapi/test_generate.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/openapi/test_loader.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/openapi/test_naming.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/openapi/test_parse.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/queue/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/queue/test_broker.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/queue/test_consumer.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/queue/test_manager.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/reviews/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/reviews/test_reviews.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/schemas/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/schemas/test_base.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/schemas/test_cursor_pagination.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/schemas/test_errors.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/schemas/test_link_headers.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/schemas/test_pagination.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/schemas/test_response.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/services/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/services/test_base.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/services/test_file_mixin.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/sessions/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/sessions/test_sessions.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/settings/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/settings/test_base.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/settings/test_mixins.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/sse/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/sse/test_broker.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/sse/test_event_stream.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/ssr/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/ssr/test_attributes.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/ssr/test_integration.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/ssr/test_page.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/ssr/test_response.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/ssr/test_webapp.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/storage/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/storage/test_minio_client.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/tasks/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/tasks/test_cron.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/tasks/test_dead_letter.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/tasks/test_manager.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/tasks/test_observability.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/tasks/test_oop.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/tasks/test_queue.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/tasks/test_scheduler.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/test_docs_api_guard.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/test_llmstxt.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/test_reference_coverage.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/testing/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/testing/test_database.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/testing/test_factories.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/utils/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/utils/test_client_ip.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/utils/test_datetime.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/utils/test_dict.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/utils/test_download.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/utils/test_email.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/utils/test_fields.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/utils/test_file_store.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/utils/test_http_client.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/utils/test_jwt.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/utils/test_lazy_extras.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/utils/test_locations.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/utils/test_log.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/utils/test_metrics.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/utils/test_opaque_token.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/utils/test_password.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/utils/test_regex.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/utils/test_storage_backends.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/utils/test_throttle.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/utils/test_upload.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/vision/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/vision/test_router.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/vision/test_vision.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/webpush/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/webpush/test_dispatcher.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/webpush/test_router.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/webpush/test_schemas.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/webpush/test_service.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/websockets/__init__.py +0 -0
- {tempest_fastapi_sdk-0.167.0 → tempest_fastapi_sdk-0.167.2}/tests/websockets/test_hub_and_router.py +0 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
name: Bug
|
|
2
|
+
description: Algo não se comporta como a documentação diz
|
|
3
|
+
title: "fix: "
|
|
4
|
+
labels: ["bug"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: |
|
|
9
|
+
Obrigado por reportar. Issue é o canal padrão deste repositório — se você
|
|
10
|
+
quiser implementar a correção, diga isso abaixo e espere o alinhamento
|
|
11
|
+
antes de abrir PR (a doc PT+EN e o release andam junto com o código).
|
|
12
|
+
- type: input
|
|
13
|
+
id: sdk-version
|
|
14
|
+
attributes:
|
|
15
|
+
label: Versão do SDK
|
|
16
|
+
description: 'Saída de `python -c "import tempest_fastapi_sdk as t; print(t.__version__)"`'
|
|
17
|
+
placeholder: "0.167.1"
|
|
18
|
+
validations:
|
|
19
|
+
required: true
|
|
20
|
+
- type: input
|
|
21
|
+
id: python-version
|
|
22
|
+
attributes:
|
|
23
|
+
label: Versão do Python
|
|
24
|
+
placeholder: "3.12.11"
|
|
25
|
+
validations:
|
|
26
|
+
required: true
|
|
27
|
+
- type: textarea
|
|
28
|
+
id: what-happened
|
|
29
|
+
attributes:
|
|
30
|
+
label: O que aconteceu
|
|
31
|
+
description: Inclua o traceback completo, não só a última linha.
|
|
32
|
+
render: text
|
|
33
|
+
validations:
|
|
34
|
+
required: true
|
|
35
|
+
- type: textarea
|
|
36
|
+
id: expected
|
|
37
|
+
attributes:
|
|
38
|
+
label: O que você esperava
|
|
39
|
+
description: E, se aplicável, o trecho da doc que diz isso.
|
|
40
|
+
validations:
|
|
41
|
+
required: true
|
|
42
|
+
- type: textarea
|
|
43
|
+
id: reproduction
|
|
44
|
+
attributes:
|
|
45
|
+
label: Como reproduzir
|
|
46
|
+
description: Snippet mínimo e completo — com imports, sem `...`.
|
|
47
|
+
render: python
|
|
48
|
+
validations:
|
|
49
|
+
required: true
|
|
50
|
+
- type: input
|
|
51
|
+
id: extras
|
|
52
|
+
attributes:
|
|
53
|
+
label: Extras instalados
|
|
54
|
+
placeholder: "[auth,cache,queue] — ou [all]"
|
|
55
|
+
- type: checkboxes
|
|
56
|
+
id: checks
|
|
57
|
+
attributes:
|
|
58
|
+
label: Antes de enviar
|
|
59
|
+
options:
|
|
60
|
+
- label: Reproduzi na versão mais recente publicada no PyPI.
|
|
61
|
+
required: true
|
|
62
|
+
- label: Procurei uma issue existente sobre o mesmo comportamento.
|
|
63
|
+
required: true
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
blank_issues_enabled: false
|
|
2
|
+
contact_links:
|
|
3
|
+
- name: Documentação (PT-BR / EN-US)
|
|
4
|
+
url: https://mauriciobenjamin700.github.io/tempest-fastapi-sdk/
|
|
5
|
+
about: Tutorial, receitas, exemplos completos e a referência da API — confira antes de abrir a issue.
|
|
6
|
+
- name: Divulgação de segurança
|
|
7
|
+
url: mailto:mauricio.benjamin@reloverelations.com
|
|
8
|
+
about: Relate vulnerabilidades em privado por e-mail, nunca em issue pública.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
name: Documentação
|
|
2
|
+
description: Página confusa, exemplo que não roda, informação desatualizada ou typo
|
|
3
|
+
title: "docs: "
|
|
4
|
+
labels: ["documentation"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: |
|
|
9
|
+
Cada página existe duas vezes (`docs/<página>.md` em PT-BR e
|
|
10
|
+
`docs/<página>.en.md` em EN-US). Por isso a correção sai daqui, aplicada
|
|
11
|
+
nas duas de uma vez — um PR que arruma só um lado deixa o site
|
|
12
|
+
inconsistente.
|
|
13
|
+
- type: input
|
|
14
|
+
id: page
|
|
15
|
+
attributes:
|
|
16
|
+
label: Página
|
|
17
|
+
description: URL ou caminho do arquivo.
|
|
18
|
+
placeholder: "https://mauriciobenjamin700.github.io/tempest-fastapi-sdk/recipes/permission-guards/"
|
|
19
|
+
validations:
|
|
20
|
+
required: true
|
|
21
|
+
- type: textarea
|
|
22
|
+
id: problem
|
|
23
|
+
attributes:
|
|
24
|
+
label: O que está errado
|
|
25
|
+
description: Cole o trecho e diga o que ele deveria dizer. Se é um exemplo que não roda, inclua o erro.
|
|
26
|
+
validations:
|
|
27
|
+
required: true
|
|
28
|
+
- type: dropdown
|
|
29
|
+
id: kind
|
|
30
|
+
attributes:
|
|
31
|
+
label: Tipo
|
|
32
|
+
options:
|
|
33
|
+
- Exemplo não roda / está errado
|
|
34
|
+
- Informação desatualizada
|
|
35
|
+
- Explicação confusa ou incompleta
|
|
36
|
+
- Falta uma página / receita
|
|
37
|
+
- Typo / formatação
|
|
38
|
+
validations:
|
|
39
|
+
required: true
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
name: Feature / ideia de API
|
|
2
|
+
description: Uma capacidade nova ou uma mudança na superfície pública
|
|
3
|
+
title: "feat: "
|
|
4
|
+
labels: ["enhancement"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: |
|
|
9
|
+
Descreva o **caso de uso**, não a solução já desenhada — o problema
|
|
10
|
+
costuma ter uma resposta melhor com as peças que o SDK já tem. O escopo
|
|
11
|
+
e o formato da API são combinados aqui, antes de existir código.
|
|
12
|
+
- type: textarea
|
|
13
|
+
id: use-case
|
|
14
|
+
attributes:
|
|
15
|
+
label: Caso de uso
|
|
16
|
+
description: O que você está construindo e onde o SDK te obriga a escrever código repetido, frágil ou fora do padrão.
|
|
17
|
+
validations:
|
|
18
|
+
required: true
|
|
19
|
+
- type: textarea
|
|
20
|
+
id: today
|
|
21
|
+
attributes:
|
|
22
|
+
label: Como você resolve isso hoje
|
|
23
|
+
description: O workaround atual, com código se ajudar.
|
|
24
|
+
render: python
|
|
25
|
+
- type: textarea
|
|
26
|
+
id: proposal
|
|
27
|
+
attributes:
|
|
28
|
+
label: Ideia de API (opcional)
|
|
29
|
+
description: Se já imaginou uma assinatura, mostre o call site que gostaria de escrever.
|
|
30
|
+
render: python
|
|
31
|
+
- type: dropdown
|
|
32
|
+
id: area
|
|
33
|
+
attributes:
|
|
34
|
+
label: Área do SDK
|
|
35
|
+
options:
|
|
36
|
+
- auth / authz
|
|
37
|
+
- db / repository / migrations
|
|
38
|
+
- api / middlewares / HTTP
|
|
39
|
+
- queue / tasks / outbox
|
|
40
|
+
- cache / flags
|
|
41
|
+
- admin
|
|
42
|
+
- genai
|
|
43
|
+
- geo
|
|
44
|
+
- storage / upload / download
|
|
45
|
+
- sse / websocket / webpush
|
|
46
|
+
- CLI / tooling
|
|
47
|
+
- docs
|
|
48
|
+
- outra / não sei
|
|
49
|
+
validations:
|
|
50
|
+
required: true
|
|
51
|
+
- type: checkboxes
|
|
52
|
+
id: checks
|
|
53
|
+
attributes:
|
|
54
|
+
label: Antes de enviar
|
|
55
|
+
options:
|
|
56
|
+
- label: Verifiquei no [roadmap](https://mauriciobenjamin700.github.io/tempest-fastapi-sdk/roadmap/) se já está entregue ou na fila.
|
|
57
|
+
required: true
|
|
58
|
+
- label: Procurei uma issue existente com o mesmo pedido.
|
|
59
|
+
required: true
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
name: Dúvida de uso
|
|
2
|
+
description: "\"Como faço X com o SDK?\""
|
|
3
|
+
title: "dúvida: "
|
|
4
|
+
labels: ["question"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: |
|
|
9
|
+
Dúvida é bem-vinda como issue: se a resposta não estava na doc, a doc
|
|
10
|
+
tem um buraco — e a issue costuma virar uma receita ou um trecho novo.
|
|
11
|
+
- type: textarea
|
|
12
|
+
id: goal
|
|
13
|
+
attributes:
|
|
14
|
+
label: O que você quer fazer
|
|
15
|
+
description: O objetivo em uma ou duas frases.
|
|
16
|
+
validations:
|
|
17
|
+
required: true
|
|
18
|
+
- type: textarea
|
|
19
|
+
id: tried
|
|
20
|
+
attributes:
|
|
21
|
+
label: O que você já tentou
|
|
22
|
+
description: Código, se houver, e onde travou.
|
|
23
|
+
render: python
|
|
24
|
+
- type: input
|
|
25
|
+
id: docs-read
|
|
26
|
+
attributes:
|
|
27
|
+
label: Páginas da doc que você leu
|
|
28
|
+
description: Ajuda a saber onde a explicação falhou.
|
|
29
|
+
placeholder: "recipes/auth-flow, tutorial"
|
|
30
|
+
- type: input
|
|
31
|
+
id: sdk-version
|
|
32
|
+
attributes:
|
|
33
|
+
label: Versão do SDK
|
|
34
|
+
placeholder: "0.167.1"
|
|
35
|
+
validations:
|
|
36
|
+
required: true
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
Tem Script? | Novas Env Vars
|
|
2
|
+
-- | --
|
|
3
|
+
Não/Sim | Não/Sim
|
|
4
|
+
|
|
5
|
+
> :warning: **NOTA**
|
|
6
|
+
> - <o que precisa ficar saliente para o revisor: migrations, env vars, scripts, integrações externas>
|
|
7
|
+
|
|
8
|
+
Issue relacionada: #
|
|
9
|
+
|
|
10
|
+
> Este repositório trabalha com **issue primeiro**: a superfície pública é versionada e a doc PT+EN entra no mesmo commit, então o escopo é combinado na issue antes do código. PR sem issue aceita costuma voltar com um pedido pra abrir uma — veja [Contribuindo](https://mauriciobenjamin700.github.io/tempest-fastapi-sdk/contributing/).
|
|
11
|
+
|
|
12
|
+
## Problema
|
|
13
|
+
|
|
14
|
+
<por que esse PR existe; o estado anterior, riscos, bugs latentes>
|
|
15
|
+
|
|
16
|
+
## Solução
|
|
17
|
+
|
|
18
|
+
<o que foi feito, em sub-seções (### Componente A / ### Componente B) quando faz sentido>
|
|
19
|
+
|
|
20
|
+
## Screenshots
|
|
21
|
+
|
|
22
|
+
**Descrição do Screenshot**:
|
|
23
|
+
<descrição da captura, ou "Não se aplica — alterações de backend/tooling/etc.">
|
|
24
|
+
|
|
25
|
+
## Outras mudanças
|
|
26
|
+
|
|
27
|
+
<bullets pequenos / "Nenhuma">
|
|
28
|
+
|
|
29
|
+
## Notas sobre deploy
|
|
30
|
+
|
|
31
|
+
<passos de deploy, rebuilds necessários, validação local executada>
|
|
32
|
+
|
|
33
|
+
**Validação local executada**:
|
|
34
|
+
- <comandos rodados (testes, build, lint) com resultado>
|
|
35
|
+
|
|
36
|
+
**Novas Variáveis de Ambiente**:
|
|
37
|
+
- Nenhuma | <nome>: <descrição>
|
|
38
|
+
|
|
39
|
+
**Novos Scripts e/ou Tarefas de Background**:
|
|
40
|
+
- Nenhum | <descrição>
|
|
41
|
+
|
|
42
|
+
**Novas Dependências**:
|
|
43
|
+
- Nenhuma | <pacote@versão>: <motivo>
|
|
44
|
+
|
|
45
|
+
**Documentação** (obrigatório quando muda superfície pública):
|
|
46
|
+
- [ ] `README.md`
|
|
47
|
+
- [ ] `CHANGELOG.md`
|
|
48
|
+
- [ ] receita / página em `docs/<página>.md` **e** `docs/<página>.en.md`
|
|
49
|
+
- [ ] stub em `docs/reference.md` para cada símbolo público novo
|
|
50
|
+
- [ ] `uv run --group docs mkdocs build --strict` verde
|
|
@@ -5,6 +5,84 @@ 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.167.2] — 2026-07-26
|
|
9
|
+
|
|
10
|
+
Documentation layout only — no code change, no API change.
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- **The tab bar is down from 13 tabs to 11, and every section is reachable from
|
|
15
|
+
the landing page.** `Exemplos` and `SSR (páginas tipadas)` were loose
|
|
16
|
+
top-level nav entries, which crowded the Material tab bar; the landing page
|
|
17
|
+
meanwhile pointed only at Installation / Architecture / Tutorial, so Recipes,
|
|
18
|
+
Reference and Learning projects existed on the bar and nowhere in the prose.
|
|
19
|
+
Both fixed:
|
|
20
|
+
- `Exemplos` is gone as a tab. The five integrated walkthroughs (Pix
|
|
21
|
+
checkout, neighborhood marketplace, full store admin, fullstack web,
|
|
22
|
+
GenAI flows) now live under **Recipes** as the `Exemplos completos` /
|
|
23
|
+
`Complete examples` sub-section, and are indexed in a table on the
|
|
24
|
+
Recipes landing. Their URLs are unchanged.
|
|
25
|
+
- `SSR (páginas tipadas)` is now a recipe, listed in the Recipes index
|
|
26
|
+
alongside the others. URL unchanged.
|
|
27
|
+
- The **SDK tour** was merged into the Recipes landing
|
|
28
|
+
(`docs/recipes/index.md`) as its opening section, so one page is the
|
|
29
|
+
entry point instead of two competing for the role. `docs/tour.md` /
|
|
30
|
+
`docs/tour.en.md` are removed and the `/tour/` URL is gone — inbound
|
|
31
|
+
links now target the tour section of the Recipes landing.
|
|
32
|
+
- The Recipes index table covers **all 53 recipes**; twelve were missing
|
|
33
|
+
(`authz`, `permission-guards`, `introspection-auth`, `geo`, `genai`,
|
|
34
|
+
`file-store`, `artifact-registry`, `openapi-errors`, `openapi-client`,
|
|
35
|
+
`system-checks`, `management-commands`, `react-spa`) plus SSR.
|
|
36
|
+
- The landing page gained a **"Por onde continuar" / "Where to go next"**
|
|
37
|
+
card grid naming every section — Installation, Architecture, Tutorial,
|
|
38
|
+
Recipes, Reference, Learning projects, Roadmap, Migration guide and
|
|
39
|
+
Changelog — and its stale Status row (`630+ tests, ≥ 89 %`) now reads
|
|
40
|
+
`2.650+ / ≥ 90 %`.
|
|
41
|
+
- **Contributing is issue-first.** The page now opens with the policy: the
|
|
42
|
+
useful contribution is an issue, not a PR, because the public surface is
|
|
43
|
+
versioned and the bilingual docs ship in the same commit as the code. It
|
|
44
|
+
explains what makes an issue actionable, why the ordering exists, and what a
|
|
45
|
+
PR needs *after* an issue is accepted. "Docs typo → PR straight against
|
|
46
|
+
`docs/<page>.md`" is gone: a fix touching only one of the two language
|
|
47
|
+
mirrors leaves the site inconsistent, so typos are issues too.
|
|
48
|
+
|
|
49
|
+
### Added
|
|
50
|
+
|
|
51
|
+
- **GitHub issue forms** under `.github/ISSUE_TEMPLATE/` — bug, feature / API
|
|
52
|
+
idea, documentation and usage question — with `config.yml` disabling blank
|
|
53
|
+
issues and pointing at the docs site and the private security contact. Plus a
|
|
54
|
+
`PULL_REQUEST_TEMPLATE.md` carrying the project's PT-BR PR shape and a
|
|
55
|
+
documentation checklist.
|
|
56
|
+
|
|
57
|
+
## [0.167.1] — 2026-07-26
|
|
58
|
+
|
|
59
|
+
### Fixed
|
|
60
|
+
|
|
61
|
+
- **`BaseController` now accepts services typed over a concrete update
|
|
62
|
+
schema.** `ServiceT`'s bound was written `BaseService[Any, Any]`, which is not
|
|
63
|
+
a partial application: PEP 696 fills the omitted `UpdateT` with its
|
|
64
|
+
`BaseSchema` default, and since that parameter is invariant the bound admitted
|
|
65
|
+
only services whose update schema was exactly `BaseSchema`. Every service
|
|
66
|
+
written the documented way — `BaseService[Repo, Resp, MyUpdateSchema]` — was
|
|
67
|
+
rejected by the type checker with `Type parameter "UpdateT@BaseService" is
|
|
68
|
+
invariant, but "MyUpdateSchema" is not the same as "BaseSchema"`, forcing a
|
|
69
|
+
`# type: ignore[type-var]` on the controller declaration. The bound is now
|
|
70
|
+
`BaseService[Any, Any, Any]`, which leaves the invariant parameter open while
|
|
71
|
+
keeping the `BaseSchema` constraint. Type-check only — runtime behavior is
|
|
72
|
+
unchanged, and the `# type: ignore[type-var]` workarounds can be dropped.
|
|
73
|
+
- **The suite can now see this class of bug.** `mypy` runs over the package, not
|
|
74
|
+
over `tests/`, so `tests/controllers/test_base.py` already declared exactly
|
|
75
|
+
this service/controller pair and stayed green. New
|
|
76
|
+
`tests/controllers/test_generic_bounds.py` inspects `ServiceT.__bound__`
|
|
77
|
+
directly and runs `mypy --strict` over a downstream-shaped snippet, asserting
|
|
78
|
+
no `[type-var]` diagnostic.
|
|
79
|
+
|
|
80
|
+
### Documentation
|
|
81
|
+
|
|
82
|
+
- `docs/architecture.md` / `docs/architecture.en.md` — the controllers & services
|
|
83
|
+
section now shows the 3rd generic parameter on both layers and notes that the
|
|
84
|
+
pair requires 0.167.1+.
|
|
85
|
+
|
|
8
86
|
## [0.167.0] — 2026-07-26
|
|
9
87
|
|
|
10
88
|
Permission guards: a decorator that runs plain `(user) -> user | None`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: tempest-fastapi-sdk
|
|
3
|
-
Version: 0.167.
|
|
3
|
+
Version: 0.167.2
|
|
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
|
|
@@ -163,6 +163,31 @@ What you inherit by subclassing `BaseController[ServiceT, ResponseT]`:
|
|
|
163
163
|
| `update(id, data)` | `service.update` | Same. |
|
|
164
164
|
| `delete(id)` | `service.delete` | Same. |
|
|
165
165
|
|
|
166
|
+
!!! tip "Typing the `update` payload end to end"
|
|
167
|
+
The 3rd generic parameter is the update schema, and it must be the **same** on both layers: a service declared as `BaseService[Repo, Resp, MyUpdateSchema]` fits `BaseController[MyService, Resp, MyUpdateSchema]`. Omit the 3rd parameter on either one and it falls back to the `BaseSchema` default, leaving `update`'s `data` loosely typed.
|
|
168
|
+
|
|
169
|
+
```python
|
|
170
|
+
from tempest_fastapi_sdk import BaseController, BaseService
|
|
171
|
+
|
|
172
|
+
from src.db.repositories import CoinPackRepository
|
|
173
|
+
from src.schemas import CoinPackResponseSchema, CoinPackUpdateSchema
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
class CoinPackService(
|
|
177
|
+
BaseService[CoinPackRepository, CoinPackResponseSchema, CoinPackUpdateSchema]
|
|
178
|
+
):
|
|
179
|
+
"""Service typed over the concrete update schema."""
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
class CoinPackController(
|
|
183
|
+
BaseController[CoinPackService, CoinPackResponseSchema, CoinPackUpdateSchema]
|
|
184
|
+
):
|
|
185
|
+
"""Controller repeating the same update schema."""
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
!!! warning "Requires 0.167.1+"
|
|
189
|
+
On earlier versions this pair failed type checking with `Type parameter "UpdateT@BaseService" is invariant, but "CoinPackUpdateSchema" is not the same as "BaseSchema"` — `ServiceT`'s bound pinned that invariant parameter to `BaseSchema`. Fixed in 0.167.1; nothing changes at runtime.
|
|
190
|
+
|
|
166
191
|
When a use case needs domain rules, override the inherited method in the service. When a use case needs to coordinate more than one service, override the inherited method (or add a new one) in the controller. The router never grows — it only depends on the controller.
|
|
167
192
|
|
|
168
193
|
```python
|
|
@@ -163,6 +163,31 @@ O que você herda ao subclassear `BaseController[ServiceT, ResponseT]`:
|
|
|
163
163
|
| `update(id, data)` | `service.update` | Igual. |
|
|
164
164
|
| `delete(id)` | `service.delete` | Igual. |
|
|
165
165
|
|
|
166
|
+
!!! tip "Tipando o payload de `update` ponta a ponta"
|
|
167
|
+
O 3º parâmetro genérico é o schema de update, e ele precisa ser o **mesmo** nas duas camadas: um service declarado como `BaseService[Repo, Resp, MeuUpdateSchema]` encaixa em `BaseController[MeuService, Resp, MeuUpdateSchema]`. Omitir o 3º parâmetro em qualquer uma delas cai no default `BaseSchema`, e o `data` de `update` chega sem tipo preciso.
|
|
168
|
+
|
|
169
|
+
```python
|
|
170
|
+
from tempest_fastapi_sdk import BaseController, BaseService
|
|
171
|
+
|
|
172
|
+
from src.db.repositories import CoinPackRepository
|
|
173
|
+
from src.schemas import CoinPackResponseSchema, CoinPackUpdateSchema
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
class CoinPackService(
|
|
177
|
+
BaseService[CoinPackRepository, CoinPackResponseSchema, CoinPackUpdateSchema]
|
|
178
|
+
):
|
|
179
|
+
"""Service tipado sobre o schema de update concreto."""
|
|
180
|
+
|
|
181
|
+
|
|
182
|
+
class CoinPackController(
|
|
183
|
+
BaseController[CoinPackService, CoinPackResponseSchema, CoinPackUpdateSchema]
|
|
184
|
+
):
|
|
185
|
+
"""Controller que repete o mesmo schema de update."""
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
!!! warning "Requer 0.167.1+"
|
|
189
|
+
Em versões anteriores esse par falhava no type check com `Type parameter "UpdateT@BaseService" is invariant, but "CoinPackUpdateSchema" is not the same as "BaseSchema"` — o bound de `ServiceT` deixava o parâmetro invariante fixado em `BaseSchema`. Corrigido em 0.167.1; nada muda em runtime.
|
|
190
|
+
|
|
166
191
|
Quando um caso de uso precisa de regras de domínio, sobrescreva o método herdado no service. Quando um caso de uso precisa coordenar mais de um service, sobrescreva o método herdado (ou adicione um novo) no controller. O router nunca cresce — ele só depende do controller.
|
|
167
192
|
|
|
168
193
|
```python
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
!!! tip "The most useful contribution is an issue — not a PR"
|
|
4
|
+
This SDK is a **versioned public surface**: every release publishes to PyPI, and every new symbol carries a docstring, bilingual docs and a reference entry. So the flow here is **issue first**: you describe the problem (or the idea), we agree on the scope and the shape, and only then does anyone write code. A PR that arrives before that agreement almost always has to be redone.
|
|
5
|
+
|
|
6
|
+
**[Open an issue »](https://github.com/mauriciobenjamin700/tempest-fastapi-sdk/issues/new/choose)**
|
|
7
|
+
|
|
8
|
+
## Open an issue
|
|
9
|
+
|
|
10
|
+
| Need | Where |
|
|
11
|
+
| --- | --- |
|
|
12
|
+
| Bug (something does not behave as documented) | [Issue: bug report](https://github.com/mauriciobenjamin700/tempest-fastapi-sdk/issues/new?template=bug_report.yml) |
|
|
13
|
+
| Feature / API idea | [Issue: feature request](https://github.com/mauriciobenjamin700/tempest-fastapi-sdk/issues/new?template=feature_request.yml) |
|
|
14
|
+
| Confusing or incomplete docs, an example that does not run, a typo | [Issue: docs](https://github.com/mauriciobenjamin700/tempest-fastapi-sdk/issues/new?template=docs.yml) |
|
|
15
|
+
| Usage question ("how do I do X with the SDK?") | [Issue: question](https://github.com/mauriciobenjamin700/tempest-fastapi-sdk/issues/new?template=question.yml) |
|
|
16
|
+
| Security disclosure | mauricio.benjamin@reloverelations.com (private, **never** a public issue) |
|
|
17
|
+
|
|
18
|
+
What makes an issue get resolved fast:
|
|
19
|
+
|
|
20
|
+
- the **SDK version** (`python -c "import tempest_fastapi_sdk as t; print(t.__version__)"`) and the Python version;
|
|
21
|
+
- a **minimal snippet** that reproduces it — complete, with imports, no `...`;
|
|
22
|
+
- **what you expected** and **what happened** (the whole traceback, not its last line);
|
|
23
|
+
- for a feature: the **use case**, not a solution already designed. The problem often has a better answer built from pieces the SDK already ships.
|
|
24
|
+
|
|
25
|
+
!!! note "A docs typo is an issue too"
|
|
26
|
+
It used to say "send a PR straight away". Not anymore: every page exists **twice** (`docs/<page>.md` in PT-BR and `docs/<page>.en.md` in EN-US), and a PR fixing only one side leaves the site inconsistent. Open the issue pointing at the page and the passage — the fix lands in both at once.
|
|
27
|
+
|
|
28
|
+
## Why an issue comes before code
|
|
29
|
+
|
|
30
|
+
Three constraints of this repository that never show up in a diff:
|
|
31
|
+
|
|
32
|
+
1. **Versioning and compatibility.** Every public symbol lands in `__all__`, in the rendered reference and in the SemVer contract. Renaming it or changing its signature later is a breaking change with a migration guide.
|
|
33
|
+
2. **Docs in the same commit.** A public-surface change without README, `CHANGELOG.md`, the bilingual recipe and the reference stub updated does not pass — that is a project rule, not a reviewer's preference.
|
|
34
|
+
3. **One release per feature.** Each slice ships as its own version (bump in `pyproject.toml`, `__version__` and `uv.lock`, full gates, tag). The maintainer drives that cycle.
|
|
35
|
+
|
|
36
|
+
None of this blocks your contribution — it just means **agreeing on the scope in the issue is faster** than discovering it during PR review.
|
|
37
|
+
|
|
38
|
+
## I want to implement it
|
|
39
|
+
|
|
40
|
+
Great — say so **in the issue** and wait for the go-ahead. Then:
|
|
41
|
+
|
|
42
|
+
- work on a `feat/<slug>` / `fix/<slug>` branch off `main`;
|
|
43
|
+
- run `make check` (lint + format + mypy + tests) — CI runs the same target on 3.11 / 3.12 / 3.13;
|
|
44
|
+
- update the PT **and** EN docs along with the code, plus `CHANGELOG.md`;
|
|
45
|
+
- do **not** bump the version or create a tag — that belongs to the release;
|
|
46
|
+
- one PR per topic, with a body that states the problem before the solution.
|
|
47
|
+
|
|
48
|
+
A PR without an accepted issue is usually closed with a request to open one — that is not a rejection of the work, it is the ordering that keeps the docs and the release coherent.
|
|
49
|
+
|
|
50
|
+
## Development environment
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# Clone + sync every extra and the dev/docs groups
|
|
54
|
+
git clone https://github.com/mauriciobenjamin700/tempest-fastapi-sdk.git
|
|
55
|
+
cd tempest-fastapi-sdk
|
|
56
|
+
uv sync --all-extras --group dev --group docs
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
!!! tip "Quick verification"
|
|
60
|
+
`make check` runs the full quality gate (lint + format check + mypy + pytest). CI runs the same target on every push, so a green `make check` locally means a green PR.
|
|
61
|
+
|
|
62
|
+
## Quality gates
|
|
63
|
+
|
|
64
|
+
| Command | What it does |
|
|
65
|
+
| --- | --- |
|
|
66
|
+
| `make lint` | `ruff check .` (no auto-fix) |
|
|
67
|
+
| `make fix` | `ruff check --fix .` + `ruff format .` (writes) |
|
|
68
|
+
| `make fmt` | `ruff format .` (writes) |
|
|
69
|
+
| `make fmt-check` | `ruff format --check .` (read-only) |
|
|
70
|
+
| `make type` | `mypy tempest_fastapi_sdk` (strict) |
|
|
71
|
+
| `make test` | `pytest` with coverage |
|
|
72
|
+
| `make check` | `lint + fmt-check + type + test` (stops at first failure) |
|
|
73
|
+
| `make ci` | `check + build + smoke` (full CI mirror) |
|
|
74
|
+
|
|
75
|
+
The same gates are available through the bundled CLI: `tempest lint` / `tempest fix` / `tempest check` work in any consumer project too.
|
|
76
|
+
|
|
77
|
+
## Tests
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
make test # full suite + coverage
|
|
81
|
+
uv run pytest tests/admin # the admin module only
|
|
82
|
+
uv run pytest -k cursor # tests matching "cursor"
|
|
83
|
+
uv run pytest -x # stop at the first failure
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
The suite uses in-memory SQLite via `tempest_fastapi_sdk.testing.test_session`. Repository tests share the `session` fixture from `tests/conftest.py`.
|
|
87
|
+
|
|
88
|
+
## Docs
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
make docs-serve # mkdocs serve — live reload at http://127.0.0.1:8000
|
|
92
|
+
make docs-build # build the static site into ./site/
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Every page lives in two languages (`docs/<page>.md` + `docs/<page>.en.md`) and the build runs with `--strict` — a warning is an error. Edits reach the Pages site on push to `main` via [`.github/workflows/docs.yml`](https://github.com/mauriciobenjamin700/tempest-fastapi-sdk/blob/main/.github/workflows/docs.yml).
|
|
96
|
+
|
|
97
|
+
## Commit message style
|
|
98
|
+
|
|
99
|
+
Conventional Commits prefixes:
|
|
100
|
+
|
|
101
|
+
- `feat:` — new user-facing capability
|
|
102
|
+
- `fix:` — bug fix
|
|
103
|
+
- `refactor:` — internal restructuring with no behavior change
|
|
104
|
+
- `docs:` — documentation only
|
|
105
|
+
- `style:` — formatting / whitespace
|
|
106
|
+
- `tests:` — test-only changes
|
|
107
|
+
- `chore:` — tooling, deps, release plumbing
|
|
108
|
+
|
|
109
|
+
Add `!` after the prefix for breaking changes (`feat!: drop class-attr config`). Note in the message which version delivers the change.
|
|
110
|
+
|
|
111
|
+
## Release (maintainer)
|
|
112
|
+
|
|
113
|
+
`make release VERSION=X.Y.Z` bumps the version locations, runs every gate, creates the commit + tag and tells you what to push:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
make release VERSION=0.20.0
|
|
117
|
+
git push origin main
|
|
118
|
+
git push origin v0.20.0
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
The PyPI publish workflow fires on the `vX.Y.Z` tag push (trusted publishing — no API token in the repository).
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
# Contribuindo
|
|
2
|
+
|
|
3
|
+
!!! tip "A contribuição mais útil é uma issue — não um PR"
|
|
4
|
+
Este SDK é uma **superfície pública versionada**: cada release publica no PyPI e cada símbolo novo carrega docstring, docs bilíngues e entrada na referência. Por isso o fluxo aqui é **issue primeiro**: você descreve o problema (ou a ideia), a gente combina o escopo e o formato, e só então alguém escreve código. Um PR que chega antes desse alinhamento quase sempre precisa ser refeito.
|
|
5
|
+
|
|
6
|
+
**[Abrir uma issue »](https://github.com/mauriciobenjamin700/tempest-fastapi-sdk/issues/new/choose)**
|
|
7
|
+
|
|
8
|
+
## Abra uma issue
|
|
9
|
+
|
|
10
|
+
| Necessidade | Onde |
|
|
11
|
+
| --- | --- |
|
|
12
|
+
| Bug (algo não funciona como documentado) | [Issue: bug report](https://github.com/mauriciobenjamin700/tempest-fastapi-sdk/issues/new?template=bug_report.yml) |
|
|
13
|
+
| Feature / ideia de API | [Issue: feature request](https://github.com/mauriciobenjamin700/tempest-fastapi-sdk/issues/new?template=feature_request.yml) |
|
|
14
|
+
| Doc confusa, incompleta, exemplo que não roda, typo | [Issue: docs](https://github.com/mauriciobenjamin700/tempest-fastapi-sdk/issues/new?template=docs.yml) |
|
|
15
|
+
| Dúvida de uso ("como faço X com o SDK?") | [Issue: dúvida](https://github.com/mauriciobenjamin700/tempest-fastapi-sdk/issues/new?template=question.yml) |
|
|
16
|
+
| Divulgação de segurança | mauricio.benjamin@reloverelations.com (privado, **nunca** em issue pública) |
|
|
17
|
+
|
|
18
|
+
O que faz uma issue ser resolvida rápido:
|
|
19
|
+
|
|
20
|
+
- **versão do SDK** (`python -c "import tempest_fastapi_sdk as t; print(t.__version__)"`) e do Python;
|
|
21
|
+
- **snippet mínimo** que reproduz — completo, com imports, sem `...`;
|
|
22
|
+
- **o que você esperava** e **o que aconteceu** (traceback inteiro, não a última linha);
|
|
23
|
+
- para feature: **o caso de uso**, não a solução já desenhada. O problema costuma ter uma resposta melhor com as peças que o SDK já tem.
|
|
24
|
+
|
|
25
|
+
!!! note "Typo na doc também é issue"
|
|
26
|
+
Antes era "manda PR direto". Não mais: cada página existe **duas vezes** (`docs/<página>.md` em PT-BR e `docs/<página>.en.md` em EN-US) e um PR que corrige só um lado deixa o site inconsistente. Abra a issue apontando a página e o trecho — a correção sai nas duas de uma vez.
|
|
27
|
+
|
|
28
|
+
## Por que issue antes de código
|
|
29
|
+
|
|
30
|
+
Três restrições deste repositório que não aparecem no diff:
|
|
31
|
+
|
|
32
|
+
1. **Versionamento e compatibilidade.** Todo símbolo público entra em `__all__`, na referência renderizada e no contrato SemVer. Renomear ou mudar assinatura depois é breaking change com guia de migração.
|
|
33
|
+
2. **Docs no mesmo commit.** Mudança de superfície pública sem README, `CHANGELOG.md`, receita bilíngue e stub de referência atualizados não passa — é regra do projeto, não preferência do revisor.
|
|
34
|
+
3. **Release por feature.** Cada fatia sai como sua própria versão (bump em `pyproject.toml`, `__version__` e `uv.lock`, gates completos, tag). Quem conduz esse ciclo é o mantenedor.
|
|
35
|
+
|
|
36
|
+
Nada disso impede sua contribuição — só significa que **combinar o escopo na issue é mais rápido** do que descobrir na revisão do PR.
|
|
37
|
+
|
|
38
|
+
## Quero implementar
|
|
39
|
+
|
|
40
|
+
Ótimo — diga isso **na issue** e espere o "vai". Aí:
|
|
41
|
+
|
|
42
|
+
- trabalhe num branch `feat/<slug>` / `fix/<slug>` a partir de `main`;
|
|
43
|
+
- rode `make check` (lint + formato + mypy + testes) — o CI roda o mesmo alvo em 3.11 / 3.12 / 3.13;
|
|
44
|
+
- atualize a doc PT **e** EN junto com o código, mais `CHANGELOG.md`;
|
|
45
|
+
- **não** faça bump de versão nem crie tag — isso é do release;
|
|
46
|
+
- um PR por assunto, com o corpo explicando o problema antes da solução.
|
|
47
|
+
|
|
48
|
+
PR sem issue aceita costuma ser fechado com um pedido pra abrir a issue — não é rejeição do trabalho, é a ordem que mantém a doc e o release coerentes.
|
|
49
|
+
|
|
50
|
+
## Ambiente de desenvolvimento
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# Clone + sincronize todos os extras e os grupos dev/docs
|
|
54
|
+
git clone https://github.com/mauriciobenjamin700/tempest-fastapi-sdk.git
|
|
55
|
+
cd tempest-fastapi-sdk
|
|
56
|
+
uv sync --all-extras --group dev --group docs
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
!!! tip "Verificação rápida"
|
|
60
|
+
`make check` roda o gate de qualidade completo (lint + checagem de formato + mypy + pytest). O CI roda o mesmo alvo em cada push, então um `make check` verde localmente significa um PR verde.
|
|
61
|
+
|
|
62
|
+
## Gates de qualidade
|
|
63
|
+
|
|
64
|
+
| Comando | O que faz |
|
|
65
|
+
| --- | --- |
|
|
66
|
+
| `make lint` | `ruff check .` (sem auto-fix) |
|
|
67
|
+
| `make fix` | `ruff check --fix .` + `ruff format .` (escreve) |
|
|
68
|
+
| `make fmt` | `ruff format .` (escreve) |
|
|
69
|
+
| `make fmt-check` | `ruff format --check .` (somente leitura) |
|
|
70
|
+
| `make type` | `mypy tempest_fastapi_sdk` (strict) |
|
|
71
|
+
| `make test` | `pytest` com cobertura |
|
|
72
|
+
| `make check` | `lint + fmt-check + type + test` (para no primeiro erro) |
|
|
73
|
+
| `make ci` | `check + build + smoke` (espelho completo do CI) |
|
|
74
|
+
|
|
75
|
+
Os mesmos gates estão disponíveis pela CLI embutida: `tempest lint` / `tempest fix` / `tempest check` funcionam em qualquer projeto consumidor também.
|
|
76
|
+
|
|
77
|
+
## Testes
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
make test # suite completa + cobertura
|
|
81
|
+
uv run pytest tests/admin # só o módulo admin
|
|
82
|
+
uv run pytest -k cursor # testes que casam com "cursor"
|
|
83
|
+
uv run pytest -x # para no primeiro erro
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
A suite usa SQLite em memória via `tempest_fastapi_sdk.testing.test_session`. Os testes de repository compartilham a fixture `session` de `tests/conftest.py`.
|
|
87
|
+
|
|
88
|
+
## Docs
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
make docs-serve # mkdocs serve — live reload em http://127.0.0.1:8000
|
|
92
|
+
make docs-build # build do site estático em ./site/
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Toda página vive em duas línguas (`docs/<página>.md` + `docs/<página>.en.md`) e o build roda com `--strict` — warning é erro. As edições caem no site do Pages no push para `main` via [`.github/workflows/docs.yml`](https://github.com/mauriciobenjamin700/tempest-fastapi-sdk/blob/main/.github/workflows/docs.yml).
|
|
96
|
+
|
|
97
|
+
## Estilo das mensagens de commit
|
|
98
|
+
|
|
99
|
+
Prefixos de Conventional Commits:
|
|
100
|
+
|
|
101
|
+
- `feat:` — nova capacidade voltada ao usuário
|
|
102
|
+
- `fix:` — correção de bug
|
|
103
|
+
- `refactor:` — reestruturação interna sem mudança de comportamento
|
|
104
|
+
- `docs:` — só documentação
|
|
105
|
+
- `style:` — formatação / espaços
|
|
106
|
+
- `tests:` — só mudanças de teste
|
|
107
|
+
- `chore:` — tooling, deps, encanamento de release
|
|
108
|
+
|
|
109
|
+
Adicione `!` após o prefixo para mudanças que quebram compatibilidade (`feat!: drop class-attr config`). Marque na mensagem a versão que entrega a mudança.
|
|
110
|
+
|
|
111
|
+
## Release (mantenedor)
|
|
112
|
+
|
|
113
|
+
`make release VERSION=X.Y.Z` faz o bump nas localizações da versão, roda todos os gates, cria o commit + tag e diz o que você deve dar push:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
make release VERSION=0.20.0
|
|
117
|
+
git push origin main
|
|
118
|
+
git push origin v0.20.0
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
O workflow de publicação no PyPI dispara no push da tag `vX.Y.Z` (publicação confiável — sem token de API no repositório).
|