svc-infra 0.1.617__tar.gz → 0.1.618__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.
Potentially problematic release.
This version of svc-infra might be problematic. Click here for more details.
- {svc_infra-0.1.617 → svc_infra-0.1.618}/PKG-INFO +1 -1
- {svc_infra-0.1.617 → svc_infra-0.1.618}/pyproject.toml +1 -1
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cli/cmds/docs/docs_cmds.py +59 -6
- {svc_infra-0.1.617 → svc_infra-0.1.618}/README.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/docs/acceptance-matrix.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/docs/acceptance.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/docs/adr/0002-background-jobs-and-scheduling.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/docs/adr/0003-webhooks-framework.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/docs/adr/0004-tenancy-model.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/docs/adr/0005-data-lifecycle.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/docs/adr/0006-ops-slos-and-metrics.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/docs/adr/0007-docs-and-sdks.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/docs/adr/0008-billing-primitives.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/docs/adr/0009-acceptance-harness.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/docs/api.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/docs/auth.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/docs/cache.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/docs/cli.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/docs/contributing.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/docs/data-lifecycle.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/docs/database.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/docs/docs-and-sdks.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/docs/environment.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/docs/idempotency.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/docs/jobs.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/docs/observability.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/docs/ops.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/docs/rate-limiting.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/docs/repo-review.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/docs/security.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/docs/tenancy.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/docs/webhooks.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/apf_payments/README.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/apf_payments/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/apf_payments/alembic.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/apf_payments/models.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/apf_payments/provider/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/apf_payments/provider/aiydan.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/apf_payments/provider/base.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/apf_payments/provider/registry.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/apf_payments/provider/stripe.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/apf_payments/schemas.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/apf_payments/service.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/apf_payments/settings.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/apf_payments/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/apf_payments/router.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/apf_payments/setup.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/auth/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/auth/_cookies.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/auth/add.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/auth/gaurd.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/auth/mfa/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/auth/mfa/models.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/auth/mfa/pre_auth.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/auth/mfa/router.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/auth/mfa/security.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/auth/mfa/utils.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/auth/mfa/verify.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/auth/policy.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/auth/providers.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/auth/routers/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/auth/routers/account.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/auth/routers/apikey_router.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/auth/routers/oauth_router.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/auth/routers/session_router.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/auth/security.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/auth/sender.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/auth/settings.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/auth/state.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/cache/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/cache/add.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/db/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/db/http.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/db/nosql/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/db/nosql/mongo/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/db/nosql/mongo/add.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/db/nosql/mongo/crud_router.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/db/nosql/mongo/health.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/db/sql/README.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/db/sql/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/db/sql/add.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/db/sql/crud_router.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/db/sql/health.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/db/sql/session.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/db/sql/users.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/dependencies/ratelimit.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/docs/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/docs/add.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/docs/landing.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/docs/scoped.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/dual/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/dual/dualize.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/dual/protected.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/dual/public.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/dual/router.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/dual/utils.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/dx.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/ease.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/http/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/http/concurrency.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/http/conditional.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/http/deprecation.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/middleware/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/middleware/debug.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/middleware/errors/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/middleware/errors/catchall.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/middleware/errors/exceptions.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/middleware/errors/handlers.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/middleware/idempotency.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/middleware/idempotency_store.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/middleware/optimistic_lock.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/middleware/ratelimit.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/middleware/ratelimit_store.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/middleware/request_id.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/middleware/request_size_limit.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/openapi/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/openapi/apply.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/openapi/conventions.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/openapi/models.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/openapi/mutators.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/openapi/pipeline.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/openapi/responses.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/openapi/security.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/ops/add.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/pagination.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/paths/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/paths/auth.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/paths/generic.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/paths/prefix.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/paths/user.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/routers/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/routers/ping.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/setup.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/tenancy/add.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/tenancy/context.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/app/README.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/app/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/app/env.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/app/logging/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/app/logging/add.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/app/logging/filter.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/app/logging/formats.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/app/root.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/billing/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/billing/models.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/billing/service.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/bundled_docs/README.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/bundled_docs/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/bundled_docs/getting-started.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cache/README.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cache/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cache/backend.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cache/decorators.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cache/demo.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cache/keys.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cache/recache.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cache/resources.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cache/tags.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cache/ttl.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cache/utils.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cli/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cli/__main__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cli/cmds/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cli/cmds/db/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cli/cmds/db/nosql/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cli/cmds/db/nosql/mongo/README.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cli/cmds/db/nosql/mongo/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cli/cmds/db/nosql/mongo/mongo_cmds.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cli/cmds/db/nosql/mongo/mongo_scaffold_cmds.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cli/cmds/db/sql/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cli/cmds/db/sql/alembic_cmds.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cli/cmds/db/sql/sql_export_cmds.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cli/cmds/db/sql/sql_scaffold_cmds.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cli/cmds/dx/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cli/cmds/dx/dx_cmds.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cli/cmds/help.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cli/cmds/jobs/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cli/cmds/jobs/jobs_cmds.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cli/cmds/obs/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cli/cmds/obs/obs_cmds.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cli/cmds/sdk/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cli/cmds/sdk/sdk_cmds.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cli/foundation/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cli/foundation/runner.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cli/foundation/typer_bootstrap.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/data/add.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/data/backup.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/data/erasure.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/data/fixtures.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/data/retention.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/crud_schema.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/inbox.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/nosql/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/nosql/base.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/nosql/constants.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/nosql/core.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/nosql/indexes.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/nosql/management.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/nosql/mongo/README.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/nosql/mongo/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/nosql/mongo/client.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/nosql/mongo/settings.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/nosql/mongo/templates/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/nosql/mongo/templates/documents.py.tmpl +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/nosql/mongo/templates/resources.py.tmpl +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/nosql/mongo/templates/schemas.py.tmpl +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/nosql/repository.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/nosql/resource.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/nosql/scaffold.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/nosql/service.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/nosql/service_with_hooks.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/nosql/types.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/nosql/utils.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/outbox.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/sql/README.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/sql/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/sql/apikey.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/sql/authref.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/sql/base.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/sql/constants.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/sql/core.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/sql/management.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/sql/repository.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/sql/resource.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/sql/scaffold.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/sql/service.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/sql/service_with_hooks.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/sql/templates/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/sql/templates/models_schemas/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/sql/templates/models_schemas/auth/models.py.tmpl +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/sql/templates/models_schemas/auth/schemas.py.tmpl +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/sql/templates/models_schemas/entity/models.py.tmpl +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/sql/templates/models_schemas/entity/schemas.py.tmpl +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/sql/templates/setup/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/sql/templates/setup/alembic.ini.tmpl +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/sql/templates/setup/env_async.py.tmpl +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/sql/templates/setup/env_sync.py.tmpl +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/sql/templates/setup/script.py.mako.tmpl +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/sql/tenant.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/sql/types.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/sql/uniq.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/sql/uniq_hooks.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/sql/utils.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/sql/versioning.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/db/utils.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/dx/add.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/dx/changelog.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/dx/checks.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/jobs/builtins/outbox_processor.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/jobs/builtins/webhook_delivery.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/jobs/easy.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/jobs/loader.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/jobs/queue.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/jobs/redis_queue.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/jobs/scheduler.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/jobs/worker.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/mcp/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/mcp/svc_infra_mcp.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/README.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/add.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/cloud_dash.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/grafana/dashboards/http-overview.json +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/metrics/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/metrics/asgi.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/metrics/base.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/metrics/http.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/metrics/sqlalchemy.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/metrics.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/providers/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/providers/compose_cloud/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/providers/compose_cloud/templates/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/providers/compose_cloud/templates/agent.yaml.tmpl +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/providers/compose_cloud/templates/docker-compose.cloud.yml.tmpl +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/providers/grafana/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/providers/grafana/dashboards/00_overview.json +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/providers/grafana/dashboards/10_http.json +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/providers/grafana/dashboards/20_db.json +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/providers/grafana/dashboards/30_runtime.json +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/providers/grafana/dashboards/40_clients.json +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/providers/grafana/dashboards/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/providers/grafana/templates/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/providers/grafana/templates/docker-compose.yml.tmpl +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/providers/grafana/templates/prometheus.yml.tmpl +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/providers/grafana/templates/provisioning/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/providers/grafana/templates/provisioning/dashboards.yml +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/providers/grafana/templates/provisioning/datasource.yml +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/settings.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/templates/grafana_dashboard.json +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/templates/prometheus_rules.yml +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/templates/sidecars/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/templates/sidecars/compose/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/templates/sidecars/compose/agent.yaml +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/templates/sidecars/compose/docker-compose.yml +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/templates/sidecars/fly/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/templates/sidecars/fly/agent.yaml +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/templates/sidecars/fly/fly.toml.fragment +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/templates/sidecars/k8s/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/templates/sidecars/k8s/configmap.yaml +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/templates/sidecars/k8s/deployment.yaml +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/templates/sidecars/railway/Dockerfile +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/templates/sidecars/railway/README.md +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/templates/sidecars/railway/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/obs/templates/sidecars/railway/agent.yaml +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/py.typed +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/security/add.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/security/audit.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/security/audit_service.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/security/headers.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/security/hibp.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/security/jwt_rotation.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/security/lockout.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/security/models.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/security/org_invites.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/security/passwords.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/security/permissions.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/security/session.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/security/signed_cookies.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/utils.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/webhooks/__init__.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/webhooks/add.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/webhooks/fastapi.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/webhooks/router.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/webhooks/service.py +0 -0
- {svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/webhooks/signing.py +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
3
|
import os
|
|
4
|
+
from importlib.metadata import PackageNotFoundError, distribution
|
|
4
5
|
from pathlib import Path
|
|
5
6
|
from typing import Dict, List
|
|
6
7
|
|
|
@@ -20,9 +21,35 @@ def _discover_fs_topics(docs_dir: Path) -> Dict[str, Path]:
|
|
|
20
21
|
return topics
|
|
21
22
|
|
|
22
23
|
|
|
23
|
-
def _discover_pkg_topics() -> Dict[str,
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
def _discover_pkg_topics() -> Dict[str, Path]:
|
|
25
|
+
"""Discover docs packaged under 'docs/' in the installed distribution.
|
|
26
|
+
|
|
27
|
+
This lets 'svc-infra docs' work from external projects that don't have a
|
|
28
|
+
local docs/ directory by falling back to files shipped in the wheel.
|
|
29
|
+
"""
|
|
30
|
+
topics: Dict[str, Path] = {}
|
|
31
|
+
try:
|
|
32
|
+
dist = distribution("svc-infra")
|
|
33
|
+
except PackageNotFoundError:
|
|
34
|
+
return topics
|
|
35
|
+
|
|
36
|
+
files = getattr(dist, "files", None) or []
|
|
37
|
+
for f in files:
|
|
38
|
+
# f is a PackagePath; string form like 'docs/topic.md'
|
|
39
|
+
s = str(f)
|
|
40
|
+
if not s.startswith("docs/") or not s.endswith(".md"):
|
|
41
|
+
continue
|
|
42
|
+
name = Path(s).stem.replace(" ", "-")
|
|
43
|
+
try:
|
|
44
|
+
abs_path = dist.locate_file(f)
|
|
45
|
+
# Ensure it's a file before adding
|
|
46
|
+
abs_p = Path(abs_path)
|
|
47
|
+
if abs_p.exists() and abs_p.is_file():
|
|
48
|
+
topics[name] = abs_p
|
|
49
|
+
except Exception:
|
|
50
|
+
# best-effort; skip unreadable entries
|
|
51
|
+
continue
|
|
52
|
+
return topics
|
|
26
53
|
|
|
27
54
|
|
|
28
55
|
def _resolve_docs_dir(ctx: click.Context) -> Path | None:
|
|
@@ -56,7 +83,10 @@ class DocsGroup(TyperGroup):
|
|
|
56
83
|
names: List[str] = list(super().list_commands(ctx) or [])
|
|
57
84
|
dir_to_use = _resolve_docs_dir(ctx)
|
|
58
85
|
fs = _discover_fs_topics(dir_to_use) if dir_to_use else {}
|
|
59
|
-
|
|
86
|
+
pkg = _discover_pkg_topics()
|
|
87
|
+
# FS topics win on conflicts; add both for visibility
|
|
88
|
+
names.extend([k for k in fs.keys()])
|
|
89
|
+
names.extend([k for k in pkg.keys() if k not in fs])
|
|
60
90
|
# Deduplicate and sort
|
|
61
91
|
uniq = sorted({*names})
|
|
62
92
|
return uniq
|
|
@@ -79,7 +109,16 @@ class DocsGroup(TyperGroup):
|
|
|
79
109
|
|
|
80
110
|
return _show_fs
|
|
81
111
|
|
|
82
|
-
#
|
|
112
|
+
# Packaged fallback
|
|
113
|
+
pkg = _discover_pkg_topics()
|
|
114
|
+
if name in pkg:
|
|
115
|
+
file_path = pkg[name]
|
|
116
|
+
|
|
117
|
+
@click.command(name=name)
|
|
118
|
+
def _show_pkg() -> None:
|
|
119
|
+
click.echo(file_path.read_text(encoding="utf-8", errors="replace"))
|
|
120
|
+
|
|
121
|
+
return _show_pkg
|
|
83
122
|
|
|
84
123
|
return None
|
|
85
124
|
|
|
@@ -114,13 +153,23 @@ def register(app: typer.Typer) -> None:
|
|
|
114
153
|
root = resolve_project_root()
|
|
115
154
|
dir_to_use = _resolve_docs_dir(ctx)
|
|
116
155
|
fs = _discover_fs_topics(dir_to_use) if dir_to_use else {}
|
|
117
|
-
|
|
156
|
+
pkg = _discover_pkg_topics()
|
|
157
|
+
|
|
158
|
+
# Print FS topics first (project/env/option), then packaged topics not shadowed by FS
|
|
159
|
+
def _print(name: str, path: Path) -> None:
|
|
118
160
|
try:
|
|
119
161
|
rel = path.relative_to(root)
|
|
120
162
|
typer.echo(f"{name}\t{rel}")
|
|
121
163
|
except Exception:
|
|
164
|
+
# For packaged topics, path will be site-packages absolute path
|
|
122
165
|
typer.echo(f"{name}\t{path}")
|
|
123
166
|
|
|
167
|
+
for name, path in fs.items():
|
|
168
|
+
_print(name, path)
|
|
169
|
+
for name, path in pkg.items():
|
|
170
|
+
if name not in fs:
|
|
171
|
+
_print(name, path)
|
|
172
|
+
|
|
124
173
|
# Also support a generic "show" command
|
|
125
174
|
@docs_app.command("show", help="Show docs for a topic (alternative to dynamic subcommand)")
|
|
126
175
|
def show(topic: str) -> None:
|
|
@@ -130,6 +179,10 @@ def register(app: typer.Typer) -> None:
|
|
|
130
179
|
if topic in fs:
|
|
131
180
|
typer.echo(fs[topic].read_text(encoding="utf-8", errors="replace"))
|
|
132
181
|
return
|
|
182
|
+
pkg = _discover_pkg_topics()
|
|
183
|
+
if topic in pkg:
|
|
184
|
+
typer.echo(pkg[topic].read_text(encoding="utf-8", errors="replace"))
|
|
185
|
+
return
|
|
133
186
|
raise typer.BadParameter(f"Unknown topic: {topic}")
|
|
134
187
|
|
|
135
188
|
app.add_typer(docs_app, name="docs")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/auth/routers/apikey_router.py
RENAMED
|
File without changes
|
{svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/auth/routers/oauth_router.py
RENAMED
|
File without changes
|
{svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/auth/routers/session_router.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/db/nosql/mongo/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/db/nosql/mongo/crud_router.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/middleware/errors/__init__.py
RENAMED
|
File without changes
|
{svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/middleware/errors/catchall.py
RENAMED
|
File without changes
|
{svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/middleware/errors/exceptions.py
RENAMED
|
File without changes
|
{svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/middleware/errors/handlers.py
RENAMED
|
File without changes
|
|
File without changes
|
{svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/middleware/idempotency_store.py
RENAMED
|
File without changes
|
{svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/middleware/optimistic_lock.py
RENAMED
|
File without changes
|
|
File without changes
|
{svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/middleware/ratelimit_store.py
RENAMED
|
File without changes
|
|
File without changes
|
{svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/api/fastapi/middleware/request_size_limit.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{svc_infra-0.1.617 → svc_infra-0.1.618}/src/svc_infra/cli/cmds/db/nosql/mongo/mongo_scaffold_cmds.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|