loom-kernel 4.0.0__tar.gz → 6.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/CHANGELOG.md +36 -2
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/PKG-INFO +1 -1
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/backend/sqlalchemy.py +16 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/model/introspection.py +90 -42
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/sql/config.py +5 -21
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/.gitignore +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/LICENSE +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/README.md +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/pyproject.toml +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/_concurrency.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/_filters.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/_paths.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/_roles.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/_startup.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/_transport.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/_usecase.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/a2a/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/a2a/_binding.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/a2a/_handlers.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/a2a/_rpc.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/a2a/card.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/a2a/events.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/a2a/server.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/abc.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/bootstrap.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/compiler/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/compiler/_compiler.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/compiler/_fingerprint.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/compiler/_plan.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/compiler/phases/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/compiler/phases/_capabilities.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/compiler/phases/_conversation.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/compiler/phases/_feedable.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/compiler/phases/_hook.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/compiler/phases/_instructions.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/compiler/phases/_limits.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/compiler/phases/_model_role.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/compiler/phases/_output.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/compiler/phases/_state.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/config.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/declarative/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/declarative/_envelope.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/declarative/_schema.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/declarative/_v1.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/declarative/schemas/agent-spec-v1.schema.json +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/describe.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/_a2a.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/_capabilities.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/_engine.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/_errors.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/_escape.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/_events.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/_guards.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/_history.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/_instructions.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/_limits.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/_mcp.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/_models.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/_native.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/_output.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/_returns.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/_schemas.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/_spec.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/extras/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/extras/a2a.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/extras/handlebars.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/extras/mcp.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/extras/skills.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/provider.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/providers/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/providers/_shared.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/providers/anthropic.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/providers/bedrock.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/providers/gateway.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/providers/openai.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/providers/typesafe.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/errors.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/etl/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/etl/_batch.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/etl/_columns.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/etl/_frames.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/etl/_ledger.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/etl/_runner.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/etl/_validation.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/fastapi/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/fastapi/endpoints.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/fastapi/response.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/fastapi/streaming.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/inference.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/pricing.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/registry.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/remote_auth.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/runtime/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/runtime/_bounded.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/runtime/_chain.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/runtime/_conversation.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/runtime/_grants.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/runtime/_handle.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/runtime/_health.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/runtime/_hooks.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/runtime/_lifecycle.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/runtime/_limits.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/runtime/_mcp.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/validate/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/validate/__main__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/celery/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/celery/auto.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/celery/bootstrap.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/celery/config.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/celery/constants.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/celery/runner.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/celery/service.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/cli/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/cli/app.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/cli/check.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/cli/schema.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/async_bridge.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/authz/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/authz/_decide.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/authz/_grants.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/authz/_roles.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/authz/_scope.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/authz/elevation.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/authz/product.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/backend/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/backend/core_model.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/backend/protocol.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/backend/scoped_ddl.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/bootstrap/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/bootstrap/bootstrap.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/bootstrap/kernel.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/cache/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/cache/_batching.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/cache/_single_flight.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/cache/abc/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/cache/abc/backend.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/cache/abc/config.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/cache/abc/dependency.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/cache/calls.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/cache/codec.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/cache/decorators.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/cache/dependency.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/cache/errors.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/cache/gateway.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/cache/keys.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/cache/memory.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/cache/repository.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/cache/result_codec.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/cache/serializer.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/cache/wiring.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/checks.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/command/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/command/adapter.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/command/base.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/command/field.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/command/introspection.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/compiler.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/config/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/config/_boto3.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/config/_includes.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/config/_resolver_utils.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/config/binder.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/config/configurable.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/config/context.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/config/errors.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/config/keys.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/config/loader.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/config/model.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/config/observability.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/config/overrides.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/config/resolver.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/config/secrets.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/config/ssm.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/contracts/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/contracts/manifest.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/di/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/di/container.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/di/scope.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/discovery/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/discovery/_utils.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/discovery/base.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/discovery/interfaces.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/discovery/manifest.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/discovery/modules.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/engine/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/engine/compilable.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/engine/compiler.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/engine/events.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/engine/executor.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/engine/metrics.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/engine/plan.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/engine/post_commit.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/environment.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/errors/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/errors/codes.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/errors/errors.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/expr/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/expr/eval.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/expr/nodes.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/expr/refs.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/identity/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/identity/context.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/identity/identity.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/identity/issuer.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/identity/wire.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/introspection/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/introspection/base.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/introspection/describe.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/job/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/job/callback.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/job/context.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/job/handle.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/job/job.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/job/service.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/locator.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/logger/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/logger/abc.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/logger/checks.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/logger/config.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/logger/registry.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/logger/structlogger.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/model/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/model/_json_schema.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/model/_loom_type.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/model/base.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/model/convert.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/model/enums.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/model/field.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/model/partition.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/model/privilege.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/model/projection.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/model/relation.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/model/scoped.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/model/struct.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/model/timestamped.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/model/types.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/model/types_postgres.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/observability/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/observability/config.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/observability/event.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/observability/observer/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/observability/observer/noop.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/observability/observer/otel.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/observability/observer/structlog.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/observability/otel_ids.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/observability/protocol.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/observability/runtime.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/observability/span.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/observability/topology.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/persistence/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/persistence/abc.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/persistence/none.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/persistence/registry.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/plugins/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/plugins/entrypoints.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/plugins/optional.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/projection/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/projection/loaders.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/projection/runtime.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/abc/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/abc/cursor.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/abc/errors.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/abc/query.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/abc/query_compiler.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/abc/repo_for.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/abc/repository.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/abc/session_scope.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/dynamodb/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/dynamodb/backend.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/dynamodb/registry.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/dynamodb/repository.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/dynamodb/uow.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/mongo/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/mongo/backend.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/mongo/ids.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/mongo/query_compiler.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/mongo/registry.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/mongo/repository.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/mongo/uow.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/mongo/values.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/mutation.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/registration.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/registry.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/backend.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/integrity.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/loaders.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/migrations/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/migrations/env_template.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/migrations/hook.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/migrations/operations.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/migrations/runners.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/mixins.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/model.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/profile_loader.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/projection.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/query_compiler/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/query_compiler/compiler.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/query_compiler/cursor.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/query_compiler/errors.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/query_compiler/filters.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/query_compiler/ordering.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/query_compiler/paths.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/query_compiler/subquery.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/registry.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/repository.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/rls/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/rls/bootstrap.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/rls/config.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/rls/elevate.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/rls/guard/0001.sql +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/rls/guard/0002.sql +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/rls/guard/preflight.sql +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/rls/guard_manifest.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/rls/integrity.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/rls/partitions.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/rls/provider.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/rls/schema.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/rls/sources.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/rls/verify.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/session_manager.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/session_settings.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/transactional.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/uow.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/repository/sqlalchemy/values.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/response/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/response/base.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/routing/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/routing/ref.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/routing/resolver.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/runner.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/schema/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/schema/schema_mode.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/schema_names.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/sql/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/sql/abc/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/sql/abc/contracts.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/sql/abc/errors.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/sql/caller_bound.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/sql/clickhouse/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/sql/clickhouse/_client.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/sql/clickhouse/executor.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/sql/clickhouse/registry.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/sql/roles.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/sql/service.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/symbols.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/tracing/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/tracing/context.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/transaction.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/transport/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/transport/adapter.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/uow/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/uow/abc.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/uow/context.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/use_case/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/use_case/_predicates.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/use_case/agent_markers.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/use_case/compute.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/use_case/constants.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/use_case/factory.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/use_case/field_ref.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/use_case/invoker.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/use_case/keys.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/use_case/markers.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/use_case/mcp_markers.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/use_case/outcome.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/use_case/registry.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/use_case/rule.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/core/use_case/use_case.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/_uri.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/_format_registry.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/_historify/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/_historify/_common.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/_historify/_log.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/_historify/_ops.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/_historify/_snapshot.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/_historify/_transform.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/_merge.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/_path_template.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/_predicate.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/_schema_aligner/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/_schema_aligner/_aligner.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/_schema_aligner/_policy.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/_write_policy.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/polars/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/polars/_dtype.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/polars/_file_writer.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/polars/_frame.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/polars/_historify.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/polars/_predicate.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/polars/_reader.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/polars/_schema.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/polars/_schema_aligner.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/polars/_streaming.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/polars/_writer.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/polars/provider.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/spark/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/spark/_dtype.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/spark/_historify.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/spark/_reader.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/spark/_schema.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/spark/_schema_aligner.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/spark/_writer.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/backends/spark/provider.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/checkpoint/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/checkpoint/_backends/_polars.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/checkpoint/_backends/_spark.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/checkpoint/_cleaners.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/checkpoint/_options.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/checkpoint/_paths.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/checkpoint/_scope.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/checkpoint/_store.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/compiler/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/compiler/_binding.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/compiler/_compiler.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/compiler/_errors.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/compiler/_filter.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/compiler/_plan.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/compiler/_validators.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/compiler/_validators_agents.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/compiler/_validators_config.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/compiler/_validators_plan.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/compiler/_validators_step.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/declarative/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/declarative/_format.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/declarative/_read_options.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/declarative/_utils.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/declarative/_with_agent.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/declarative/_write_options.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/declarative/expr/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/declarative/expr/_params.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/declarative/expr/_predicate.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/declarative/expr/_predicate_dialect.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/declarative/expr/_refs.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/declarative/source/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/declarative/source/_from.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/declarative/source/_from_clickhouse.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/declarative/source/_from_config.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/declarative/source/_from_dynamodb.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/declarative/source/_from_mongo.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/declarative/source/_specs.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/declarative/target/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/declarative/target/_client.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/declarative/target/_errors.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/declarative/target/_file.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/declarative/target/_history/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/declarative/target/_history/_builder.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/declarative/target/_history/_enums.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/declarative/target/_history/_errors.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/declarative/target/_history/_report.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/declarative/target/_history/_spec.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/declarative/target/_into.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/declarative/target/_schema_mode.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/declarative/target/_table.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/declarative/target/_temp.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/executor/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/executor/_agents.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/executor/_dispatcher.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/executor/_executor.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/io/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/io/_registry.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/io/sources/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/io/sources/_clickhouse.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/io/sources/_dynamodb.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/io/sources/_dynamodb_items.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/io/sources/_dynamodb_predicate.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/io/sources/_mongo.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/io/sources/_mongo_batch.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/io/sources/_mongo_bson.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/io/sources/_mongo_predicate.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/io/sources/_serialization.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/io/targets/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/io/targets/_clickhouse.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/lineage/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/lineage/_config.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/lineage/_observer.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/lineage/_records.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/lineage/sinks/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/lineage/sinks/_protocol.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/lineage/sinks/_table.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/lineage/sinks/_writer.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/maintenance/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/maintenance/_builder.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/maintenance/_ops.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/maintenance/_protocol.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/maintenance/_runner.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/maintenance/_step.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/maintenance/backends/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/maintenance/backends/_delta_rs.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/pipeline/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/pipeline/_generics.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/pipeline/_params.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/pipeline/_pipeline.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/pipeline/_process.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/pipeline/_sql.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/pipeline/_step.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/pipeline/_step_client.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/pipeline/_step_sql.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/runner/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/runner/_agents.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/runner/_providers.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/runner/_wiring.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/runner/config_loader.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/runner/core.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/runner/errors.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/runner/filtering.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/runtime/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/runtime/_config_values.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/runtime/contracts.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/schema/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/schema/_contract.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/schema/_schema.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/storage/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/storage/_config.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/storage/_file_locator.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/storage/_locator.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/storage/routing.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/testing/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/testing/_result.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/testing/_runners.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/testing/_scenario.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/testing/_stubs.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/etl/testing/spark.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/_async.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/_config.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/_ctx.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/_flow_yaml.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/_meta.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/_placeholders.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/_summary.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/deploy/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/deploy/_discovery.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/deploy/_schedule.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/deploy/_yaml_etls.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/deploy/entrypoint.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/flow/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/flow/_assemble.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/flow/_backfill.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/flow/_backfill_body.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/flow/_body.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/flow/_common.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/flow/_factory.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/flow/_hooks.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/flow/_maintenance.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/flow/_params.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/flow/_run_name.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/flow/_runtime.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/flow/_signature.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/flow/_stages.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/manifest/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/manifest/_model.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/manifest/_s3.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/manifest/_store.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/notify/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/notify/_event.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/notify/_factory.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/notify/_format.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/notify/_port.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/notify/_slack.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/notify/_sns.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/observer/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/observer/_flow.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/observer/_logging_bridge.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/observer/_manifest.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prefect/observer/_task_run.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prometheus/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prometheus/_instruments.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prometheus/adapter.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prometheus/kafka.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prometheus/lifecycle.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/prometheus/middleware.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/py.typed +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/rest/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/rest/_body.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/rest/adapter.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/rest/auth/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/rest/auth/abc.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/rest/auth/config.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/rest/auth/jwt.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/rest/auth/middleware.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/rest/autocrud.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/rest/checks.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/rest/compiler.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/rest/config.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/rest/constants.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/rest/cors.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/rest/errors.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/rest/fastapi/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/rest/fastapi/_errors.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/rest/fastapi/_exclusions.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/rest/fastapi/app.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/rest/fastapi/auto.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/rest/fastapi/health.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/rest/fastapi/openapi.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/rest/fastapi/response.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/rest/fastapi/router_runtime.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/rest/fastapi/sql.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/rest/middleware.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/rest/model.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/rest/rest_adapter.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/bytewax/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/bytewax/_adapter.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/bytewax/_batch_spans.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/bytewax/_commit_tracker.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/bytewax/_dlq.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/bytewax/_error_boundary.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/bytewax/_errors.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/bytewax/_operators.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/bytewax/_resource_manager.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/bytewax/_runtime_io.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/bytewax/_sink_registry.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/bytewax/handlers/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/bytewax/handlers/_shared.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/bytewax/handlers/boundary.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/bytewax/handlers/dispatcher.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/bytewax/handlers/routing.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/bytewax/handlers/scopes.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/bytewax/handlers/shapes.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/bytewax/handlers/steps.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/bytewax/handlers/storage.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/bytewax/runner.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/compiler/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/compiler/_bindings.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/compiler/_compiler.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/compiler/_errors.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/compiler/_plan.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/compiler/phases/build_plan.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/compiler/phases/validate.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/core/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/core/_errors.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/core/_exceptions.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/core/_message.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/core/_tracing.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/core/_typing.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/graph/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/graph/_flow.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/kafka/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/kafka/_codec.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/kafka/_config.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/kafka/_errors.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/kafka/_key_resolver.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/kafka/_message.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/kafka/_record.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/kafka/_wire.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/kafka/client/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/kafka/client/_consumer.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/kafka/client/_producer.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/kafka/client/_protocol.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/kafka/client/_retry.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/kafka/message/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/kafka/message/_consumer.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/kafka/message/_producer.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/kafka/message/_protocol.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/mongo/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/mongo/_bytewax_source.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/mongo/_config.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/mongo/_event.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/mongo/_normalize.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/nodes/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/nodes/_boundary.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/nodes/_branches.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/nodes/_broadcast.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/nodes/_capabilities.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/nodes/_decompose.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/nodes/_expand_routes.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/nodes/_expr_eval.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/nodes/_fork.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/nodes/_helpers.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/nodes/_mongo.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/nodes/_protocols.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/nodes/_router.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/nodes/_shape.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/nodes/_sink.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/nodes/_step.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/nodes/_table/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/nodes/_table/common.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/nodes/_table/config.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/nodes/_with.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/nodes/refs.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/streaming/testing.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/testing/__init__.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/testing/agents.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/testing/golden.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/testing/http_harness.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/testing/in_memory.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/testing/repository_harness.py +0 -0
- {loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/testing/runner.py +0 -0
|
@@ -459,6 +459,10 @@
|
|
|
459
459
|
|
|
460
460
|
### core
|
|
461
461
|
|
|
462
|
+
- **core:** `sql_endpoint.auth` admits only `identity` and `external`;
|
|
463
|
+
`auth: jwt` is refused when the config is loaded, and the alias and its
|
|
464
|
+
`DeprecationWarning` are gone. Migration: replace `auth: jwt` with
|
|
465
|
+
`auth: identity`.
|
|
462
466
|
- **core:** with no `LOOM_ENV` and no `environment=`, a process starts as
|
|
463
467
|
`production` and runs the deploy checks; an API without authentication now
|
|
464
468
|
fails at startup with `loom.rest.E001` until it configures
|
|
@@ -589,6 +593,36 @@
|
|
|
589
593
|
it. A `@cache_query` argument that is a pydantic instance now contributes
|
|
590
594
|
its builtins rendering to the cache key rather than the instance's own
|
|
591
595
|
`repr`, a one-time key change.
|
|
596
|
+
- **core:** a model field annotated with an enum and no declared column type
|
|
597
|
+
takes the column type of the scalar the enum is mixed with, the first class
|
|
598
|
+
of its MRO with a column rule, as that class itself would: a `StrEnum` (any
|
|
599
|
+
`str` enum) becomes `String`, honouring `length=`, an `IntEnum` or `IntFlag`
|
|
600
|
+
becomes `Integer`, a `float` enum `Float`, a `Decimal` enum `Numeric`,
|
|
601
|
+
instead of `JSON`. The value is stored as a plain string or integer, not
|
|
602
|
+
JSON-encoded, so the column can be filtered by equality; `Optional` of such
|
|
603
|
+
an enum behaves the same. An existing table with such a column needs a
|
|
604
|
+
migration that converts the data with a `USING` clause, which Alembic's
|
|
605
|
+
autogenerate does not write: on Postgres,
|
|
606
|
+
`ALTER TABLE t ALTER COLUMN c TYPE varchar USING c #>> '{}'` and
|
|
607
|
+
`ALTER TABLE t ALTER COLUMN c TYPE integer USING (c #>> '{}')::integer`. On
|
|
608
|
+
SQLAlchemy models, a plain `Enum` (mixed with no scalar) or a `Literal[...]`
|
|
609
|
+
field with no declared column type now fails model compilation with a
|
|
610
|
+
`ValueError` naming the model and the field, instead of becoming a `JSON`
|
|
611
|
+
column; loom does not infer a type from the values. Declare the column, for
|
|
612
|
+
example `colour: Colour = ColumnField(String(20))`. Mongo and DynamoDB
|
|
613
|
+
models keep such fields as they are. Declared column types are unchanged,
|
|
614
|
+
and an `Annotated[...]` column type or `Field` is now read also when the
|
|
615
|
+
`Annotated` sits inside `Optional` (`Annotated[T, String(1)] | None`), and
|
|
616
|
+
is used when a `ColumnField(...)` on the field declares no column type.
|
|
617
|
+
`ColumnFieldInfo` gains `needs_declared_type`.
|
|
618
|
+
- **core:** an `Optional` inside `Annotated` whose metadata carries no column
|
|
619
|
+
type, such as `Annotated[int | None, msgspec.Meta(ge=0)]`, now takes the
|
|
620
|
+
column of its scalar type (`Integer` here) instead of `JSON`; an existing
|
|
621
|
+
table needs the same `USING` migration as above. A `Field(...)` inside
|
|
622
|
+
`Annotated` with no column type is now read instead of being dropped, so its
|
|
623
|
+
settings take effect: `primary_key=True` adds the column to the primary key,
|
|
624
|
+
which can turn a model's key composite, and `nullable=True` makes the column
|
|
625
|
+
nullable. Review such fields before upgrading.
|
|
592
626
|
|
|
593
627
|
### ai
|
|
594
628
|
|
|
@@ -704,8 +738,8 @@
|
|
|
704
738
|
the route at startup. Only scalar columns of the use case's own model
|
|
705
739
|
(`UseCase[Model, ...]`) qualify. A related model's column (`warehouse.code`)
|
|
706
740
|
is refused, and so are JSON, array and text-search columns; lists, dicts
|
|
707
|
-
and structs
|
|
708
|
-
|
|
741
|
+
and structs are JSON. A `StrEnum` or `IntEnum` column is scalar; a plain
|
|
742
|
+
`Enum` or a `Literal` needs a declared column type. `InterfaceCompilationError` names the route and the field. It is also
|
|
709
743
|
raised for a declaration on a use case with no model, and for a route-level
|
|
710
744
|
declaration on a route without a `QuerySpec`; an inherited one is ignored.
|
|
711
745
|
`exists` and `not_exists` answer `400 unsupported_query`, and so do `like`
|
|
@@ -234,6 +234,7 @@ def _compile_model(
|
|
|
234
234
|
|
|
235
235
|
table_name = get_table_name(struct_cls)
|
|
236
236
|
column_fields = get_column_fields(struct_cls)
|
|
237
|
+
_refuse_undeclared_column_types(struct_cls, column_fields)
|
|
237
238
|
scopes = scope_columns(struct_cls)
|
|
238
239
|
boundary = next((scope for scope in scopes if scope.is_boundary), None)
|
|
239
240
|
constraints, composite_columns = _foreign_key_constraints(
|
|
@@ -284,6 +285,21 @@ def _compile_model(
|
|
|
284
285
|
return sa_cls
|
|
285
286
|
|
|
286
287
|
|
|
288
|
+
def _refuse_undeclared_column_types(
|
|
289
|
+
struct_cls: type, column_fields: Mapping[str, ColumnFieldInfo]
|
|
290
|
+
) -> None:
|
|
291
|
+
"""Refuse a plain enum or ``Literal`` field whose column type is not declared.
|
|
292
|
+
|
|
293
|
+
loom does not infer a SQL type from the values of such a field.
|
|
294
|
+
"""
|
|
295
|
+
for name, info in column_fields.items():
|
|
296
|
+
if info.needs_declared_type:
|
|
297
|
+
raise ValueError(
|
|
298
|
+
f"{struct_cls.__name__}.{name}: no column type can be inferred from a plain "
|
|
299
|
+
"Enum or Literal annotation; declare it, e.g. `ColumnField(String(20))`"
|
|
300
|
+
)
|
|
301
|
+
|
|
302
|
+
|
|
287
303
|
def _declared_constraints(struct_cls: type, table_name: str) -> list[Constraint | Index]:
|
|
288
304
|
"""Keys, indexes and checks declared on the model, in declaration order.
|
|
289
305
|
|
|
@@ -5,8 +5,19 @@ from collections.abc import Callable, Mapping
|
|
|
5
5
|
from dataclasses import dataclass, replace
|
|
6
6
|
from datetime import date, datetime, time
|
|
7
7
|
from decimal import Decimal
|
|
8
|
+
from enum import Enum
|
|
8
9
|
from types import UnionType
|
|
9
|
-
from typing import
|
|
10
|
+
from typing import (
|
|
11
|
+
Annotated,
|
|
12
|
+
Any,
|
|
13
|
+
ClassVar,
|
|
14
|
+
Literal,
|
|
15
|
+
Union,
|
|
16
|
+
cast,
|
|
17
|
+
get_args,
|
|
18
|
+
get_origin,
|
|
19
|
+
get_type_hints,
|
|
20
|
+
)
|
|
10
21
|
|
|
11
22
|
import msgspec
|
|
12
23
|
|
|
@@ -40,12 +51,18 @@ class PartialUnique:
|
|
|
40
51
|
|
|
41
52
|
@dataclass(frozen=True, slots=True)
|
|
42
53
|
class ColumnFieldInfo:
|
|
43
|
-
"""Resolved metadata for a single column field.
|
|
54
|
+
"""Resolved metadata for a single column field.
|
|
55
|
+
|
|
56
|
+
``needs_declared_type`` marks a field whose column type was not declared
|
|
57
|
+
and cannot be inferred, a plain enum or a ``Literal``: ``column_type`` is
|
|
58
|
+
then a JSON placeholder.
|
|
59
|
+
"""
|
|
44
60
|
|
|
45
61
|
name: str
|
|
46
62
|
python_type: type
|
|
47
63
|
column_type: ColumnType
|
|
48
64
|
field: Field
|
|
65
|
+
needs_declared_type: bool = False
|
|
49
66
|
|
|
50
67
|
|
|
51
68
|
def _collect_inherited_dict_metadata(cls: type, attr: str) -> dict[str, Any]:
|
|
@@ -86,40 +103,31 @@ def _resolve_column_field(
|
|
|
86
103
|
struct_default: Any,
|
|
87
104
|
declared: ColumnFieldSpec | None,
|
|
88
105
|
) -> ColumnFieldInfo:
|
|
89
|
-
"""Build the column metadata for one field, declared or inferred.
|
|
90
|
-
python_type = _extract_origin_type(annotation)
|
|
91
|
-
if declared is not None:
|
|
92
|
-
return ColumnFieldInfo(
|
|
93
|
-
name=name,
|
|
94
|
-
python_type=python_type,
|
|
95
|
-
column_type=declared.column_type
|
|
96
|
-
or _infer_column_type(annotation, field=declared.field),
|
|
97
|
-
field=_with_struct_default(declared.field, struct_default),
|
|
98
|
-
)
|
|
99
|
-
|
|
100
|
-
annotated_type, annotated_field = _extract_annotated_column(annotation)
|
|
101
|
-
if annotated_type is not None:
|
|
102
|
-
return ColumnFieldInfo(
|
|
103
|
-
name=name,
|
|
104
|
-
python_type=python_type,
|
|
105
|
-
column_type=annotated_type,
|
|
106
|
-
field=_with_struct_default(annotated_field, struct_default),
|
|
107
|
-
)
|
|
106
|
+
"""Build the column metadata for one field, declared or inferred.
|
|
108
107
|
|
|
109
|
-
|
|
108
|
+
A ``ColumnField`` supplies the ``Field``; its column type, else the one in
|
|
109
|
+
``Annotated``, else the inferred one is used.
|
|
110
|
+
"""
|
|
111
|
+
annotated_type, field = _extract_annotated_column(annotation)
|
|
112
|
+
if declared is not None:
|
|
113
|
+
annotated_type, field = declared.column_type or annotated_type, declared.field
|
|
114
|
+
field = _with_struct_default(field, struct_default)
|
|
115
|
+
column_type = annotated_type or _infer_column_type(annotation, field=field)
|
|
110
116
|
return ColumnFieldInfo(
|
|
111
117
|
name=name,
|
|
112
|
-
python_type=
|
|
113
|
-
column_type=
|
|
114
|
-
field=
|
|
118
|
+
python_type=_extract_origin_type(annotation),
|
|
119
|
+
column_type=column_type or JSON,
|
|
120
|
+
field=field,
|
|
121
|
+
needs_declared_type=column_type is None,
|
|
115
122
|
)
|
|
116
123
|
|
|
117
124
|
|
|
118
125
|
def _extract_annotated_column(annotation: Any) -> tuple[ColumnType | None, Field]:
|
|
119
|
-
"""Read the ``ColumnType`` and ``Field`` carried by ``Annotated[T, ...]
|
|
126
|
+
"""Read the ``ColumnType`` and ``Field`` carried by ``Annotated[T, ...]``, optional or not."""
|
|
120
127
|
column_type: ColumnType | None = None
|
|
121
128
|
field = Field()
|
|
122
|
-
|
|
129
|
+
_, metadata = _column_base(annotation)
|
|
130
|
+
for entry in metadata:
|
|
123
131
|
if isinstance(entry, ColumnType):
|
|
124
132
|
column_type = entry
|
|
125
133
|
elif isinstance(entry, Field):
|
|
@@ -170,11 +178,6 @@ def get_table_name(cls: type) -> str:
|
|
|
170
178
|
return table
|
|
171
179
|
|
|
172
180
|
|
|
173
|
-
def _extract_metadata(annotation: Any) -> tuple[Any, ...]:
|
|
174
|
-
"""Pull metadata entries from ``Annotated[T, ...]``."""
|
|
175
|
-
return getattr(annotation, "__metadata__", ())
|
|
176
|
-
|
|
177
|
-
|
|
178
181
|
def resolve_type_hints(obj: Any, *, include_extras: bool = False) -> dict[str, Any]:
|
|
179
182
|
"""Return the resolved annotations of *obj*, or ``{}`` when they cannot be resolved.
|
|
180
183
|
|
|
@@ -325,8 +328,10 @@ def scalar_column_annotations(model: type) -> dict[str, Any]:
|
|
|
325
328
|
"""Return the annotation of each scalar column of *model*, ``Annotated`` metadata removed.
|
|
326
329
|
|
|
327
330
|
A JSON, array or text-search column is not scalar; lists, dicts and
|
|
328
|
-
structs
|
|
329
|
-
|
|
331
|
+
structs are inferred as JSON. An enum mixed with a scalar type, such as a
|
|
332
|
+
``StrEnum`` or ``IntEnum``, takes that type's column and is scalar. No
|
|
333
|
+
column type can be inferred for a plain ``Enum`` or a ``Literal`` declared
|
|
334
|
+
without one; its ``column_type`` is a JSON placeholder and it is not listed.
|
|
330
335
|
|
|
331
336
|
Args:
|
|
332
337
|
model: Model whose columns are read.
|
|
@@ -373,6 +378,23 @@ def _unwrap_optional(annotation: Any) -> Any:
|
|
|
373
378
|
return annotation
|
|
374
379
|
|
|
375
380
|
|
|
381
|
+
def _column_base(annotation: Any) -> tuple[Any, tuple[Any, ...]]:
|
|
382
|
+
"""Strip ``Optional`` and ``Annotated`` layers, in either order.
|
|
383
|
+
|
|
384
|
+
Returns:
|
|
385
|
+
The inner annotation and the metadata of the ``Annotated`` layers.
|
|
386
|
+
"""
|
|
387
|
+
metadata: tuple[Any, ...] = ()
|
|
388
|
+
while True:
|
|
389
|
+
unwrapped = _unwrap_optional(annotation)
|
|
390
|
+
if get_origin(unwrapped) is Annotated:
|
|
391
|
+
metadata += unwrapped.__metadata__
|
|
392
|
+
unwrapped = get_args(unwrapped)[0]
|
|
393
|
+
if unwrapped is annotation:
|
|
394
|
+
return annotation, metadata
|
|
395
|
+
annotation = unwrapped
|
|
396
|
+
|
|
397
|
+
|
|
376
398
|
def _is_classvar(annotation: Any) -> bool:
|
|
377
399
|
return get_origin(annotation) is ClassVar
|
|
378
400
|
|
|
@@ -383,20 +405,46 @@ _SCALAR_TYPE_MAP: dict[type, ColumnType] = {
|
|
|
383
405
|
bool: Boolean,
|
|
384
406
|
bytes: Bytes,
|
|
385
407
|
datetime: DateTime(tz=True),
|
|
408
|
+
date: String(None),
|
|
409
|
+
time: String(None),
|
|
386
410
|
Decimal: Numeric(),
|
|
387
411
|
}
|
|
388
412
|
|
|
389
413
|
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
414
|
+
_COLUMN_RULE_TYPES = frozenset({str, *_SCALAR_TYPE_MAP})
|
|
415
|
+
|
|
416
|
+
|
|
417
|
+
def _column_rule_type(annotation: Any) -> type:
|
|
418
|
+
"""The class whose column rule the annotation follows.
|
|
419
|
+
|
|
420
|
+
An enum follows the first class of its MRO that has a rule, the scalar it is
|
|
421
|
+
mixed with; a plain enum has none and is returned as it is.
|
|
422
|
+
"""
|
|
423
|
+
python_type = _extract_origin_type(annotation)
|
|
424
|
+
if not issubclass(python_type, Enum):
|
|
425
|
+
return python_type
|
|
426
|
+
return next((t for t in python_type.__mro__ if t in _COLUMN_RULE_TYPES), python_type)
|
|
427
|
+
|
|
428
|
+
|
|
429
|
+
def _infer_column_type(annotation: Any, *, field: Field) -> ColumnType | None:
|
|
430
|
+
"""Infer the column type from the annotation; an enum follows its scalar mixin.
|
|
431
|
+
|
|
432
|
+
Returns:
|
|
433
|
+
The column type, or ``None`` for a plain enum or a ``Literal``, which
|
|
434
|
+
have no scalar type to follow.
|
|
435
|
+
"""
|
|
436
|
+
base, _ = _column_base(annotation)
|
|
437
|
+
origin = get_origin(base)
|
|
438
|
+
if origin is Literal:
|
|
439
|
+
return None
|
|
440
|
+
if origin in (list, tuple, set, dict):
|
|
393
441
|
return JSON
|
|
394
|
-
|
|
395
|
-
if
|
|
442
|
+
rule_type = _column_rule_type(base)
|
|
443
|
+
if rule_type is str:
|
|
396
444
|
return String(field.length)
|
|
397
|
-
if
|
|
398
|
-
return
|
|
399
|
-
return _SCALAR_TYPE_MAP.get(
|
|
445
|
+
if issubclass(rule_type, Enum):
|
|
446
|
+
return None
|
|
447
|
+
return _SCALAR_TYPE_MAP.get(rule_type, JSON)
|
|
400
448
|
|
|
401
449
|
|
|
402
450
|
_SCOPE_NAME = re.compile(r"^[a-z_][a-z0-9_]*$")
|
|
@@ -8,7 +8,6 @@ invalid values abort the parse and surface as
|
|
|
8
8
|
from __future__ import annotations
|
|
9
9
|
|
|
10
10
|
import re
|
|
11
|
-
import warnings
|
|
12
11
|
from collections.abc import Sequence
|
|
13
12
|
from typing import Any, Literal
|
|
14
13
|
|
|
@@ -24,11 +23,7 @@ _URL_CREDENTIALS_RE = re.compile(r"://[^@]+@")
|
|
|
24
23
|
|
|
25
24
|
# The only ``sql_endpoint.auth`` mode carrying a verified caller identity, and
|
|
26
25
|
# therefore the only one able to bind a request to a subset of the allowlist.
|
|
27
|
-
# ``jwt`` is the deprecated spelling of the same mode, kept because it named a
|
|
28
|
-
# mechanism where the contract only ever needed "the framework knows the caller".
|
|
29
26
|
_IDENTITY_BOUND_AUTH = "identity"
|
|
30
|
-
_DEPRECATED_AUTH_ALIAS = "jwt"
|
|
31
|
-
_IDENTITY_BOUND_AUTH_MODES = frozenset({_IDENTITY_BOUND_AUTH, _DEPRECATED_AUTH_ALIAS})
|
|
32
27
|
|
|
33
28
|
|
|
34
29
|
def _redact_url(url: str) -> str:
|
|
@@ -69,36 +64,25 @@ class SqlEndpointConfig(LoomFrozenStruct, frozen=True, kw_only=True, forbid_unkn
|
|
|
69
64
|
authenticates the caller with the configured mechanism and binds
|
|
70
65
|
roles to their verified identity) or ``"external"`` (explicit
|
|
71
66
|
acknowledgement that the operator provides authentication, with no
|
|
72
|
-
identity the framework can read).
|
|
73
|
-
|
|
67
|
+
identity the framework can read). Any other value fails the
|
|
68
|
+
parse.
|
|
74
69
|
path: Mount path override. Defaults to ``/sql/{name}`` when ``None``.
|
|
75
70
|
include_in_schema: Whether the endpoint appears in the OpenAPI schema.
|
|
76
71
|
"""
|
|
77
72
|
|
|
78
73
|
enabled: bool = False
|
|
79
|
-
auth: Literal["identity", "
|
|
74
|
+
auth: Literal["identity", "external"] | None = None
|
|
80
75
|
path: str | None = None
|
|
81
76
|
include_in_schema: bool = False
|
|
82
77
|
|
|
83
|
-
def __post_init__(self) -> None:
|
|
84
|
-
if self.auth != _DEPRECATED_AUTH_ALIAS:
|
|
85
|
-
return
|
|
86
|
-
warnings.warn(
|
|
87
|
-
f"sql_endpoint.auth: {_DEPRECATED_AUTH_ALIAS!r} is deprecated because it names "
|
|
88
|
-
f"a mechanism instead of a contract. Use {_IDENTITY_BOUND_AUTH!r}: the endpoint "
|
|
89
|
-
"requires a verified caller, whichever authenticator provides it.",
|
|
90
|
-
DeprecationWarning,
|
|
91
|
-
stacklevel=3,
|
|
92
|
-
)
|
|
93
|
-
|
|
94
78
|
@property
|
|
95
79
|
def binds_identity(self) -> bool:
|
|
96
80
|
"""Whether this endpoint requires an identity the framework can read.
|
|
97
81
|
|
|
98
82
|
Returns:
|
|
99
|
-
``True`` for ``"identity"
|
|
83
|
+
``True`` for ``"identity"``.
|
|
100
84
|
"""
|
|
101
|
-
return self.auth
|
|
85
|
+
return self.auth == _IDENTITY_BOUND_AUTH
|
|
102
86
|
|
|
103
87
|
|
|
104
88
|
class SqlConnectionConfig(LoomFrozenStruct, frozen=True, kw_only=True, forbid_unknown_fields=True):
|
|
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
|
{loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/declarative/schemas/agent-spec-v1.schema.json
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
|
{loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/extras/handlebars.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/providers/__init__.py
RENAMED
|
File without changes
|
{loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/providers/_shared.py
RENAMED
|
File without changes
|
{loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/providers/anthropic.py
RENAMED
|
File without changes
|
{loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/providers/bedrock.py
RENAMED
|
File without changes
|
{loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/providers/gateway.py
RENAMED
|
File without changes
|
|
File without changes
|
{loom_kernel-4.0.0 → loom_kernel-6.0.0}/src/loom/ai/engines/pydantic_ai/providers/typesafe.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
|