loom-kernel 10.1.0__tar.gz → 10.2.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-10.1.0 → loom_kernel-10.2.0}/CHANGELOG.md +116 -14
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/PKG-INFO +6 -6
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/pyproject.toml +6 -6
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/compiler/phases/_output.py +2 -1
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/compiler/phases/_state.py +2 -1
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_output.py +1 -1
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/fastapi/endpoints.py +2 -1
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/runtime/_grants.py +2 -1
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/runtime/_lifecycle.py +2 -1
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/celery/errors.py +1 -1
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/celery/runner.py +1 -1
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/cli/check.py +4 -1
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/composition/build.py +7 -22
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/repository.py +2 -1
- loom_kernel-10.2.0/src/loom/core/config/_interpolations.py +68 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/loader.py +15 -1
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/overrides.py +42 -32
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/resolver.py +20 -1
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/secrets.py +1 -5
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/ssm.py +1 -5
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/discovery/worker.py +9 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/engine/__init__.py +1 -2
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/engine/compiler.py +2 -1
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/engine/executor.py +17 -12
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/engine/post_commit.py +1 -24
- loom_kernel-10.2.0/src/loom/core/errors/__init__.py +64 -0
- loom_kernel-10.2.0/src/loom/core/errors/auth.py +133 -0
- loom_kernel-10.2.0/src/loom/core/errors/base.py +67 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/errors/codes.py +6 -1
- loom_kernel-10.2.0/src/loom/core/errors/domain.py +139 -0
- loom_kernel-10.2.0/src/loom/core/errors/jobs.py +85 -0
- loom_kernel-10.2.0/src/loom/core/errors/model.py +52 -0
- loom_kernel-10.2.0/src/loom/core/errors/stores.py +249 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/job/__init__.py +2 -5
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/job/context.py +2 -2
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/job/handle.py +1 -46
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/job/outcome.py +1 -1
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/job/router.py +1 -14
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/__init__.py +0 -4
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/_loom_type.py +1 -48
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/abc/__init__.py +0 -2
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/abc/cursor.py +16 -10
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/dynamodb/repository.py +6 -14
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/mongo/query_compiler.py +2 -2
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/repository.py +1 -1
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/transactional.py +8 -8
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/values.py +2 -2
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/uow/__init__.py +0 -12
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/uow/coordinator.py +1 -23
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/uow/scope.py +7 -158
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/markers.py +5 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/rule.py +1 -1
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/__init__.py +1 -1
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/_format_registry.py +2 -30
- loom_kernel-10.2.0/src/loom/etl/runner/errors.py +38 -0
- loom_kernel-10.2.0/src/loom/jobs/aws/errors.py +36 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/jobs/aws/sqs.py +14 -18
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/auth/abc.py +3 -35
- loom_kernel-10.2.0/src/loom/rest/auth/errors.py +43 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/checks.py +7 -5
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/compiler.py +2 -7
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/errors.py +10 -4
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/fastapi/adapter.py +31 -38
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/fastapi/response.py +2 -1
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/fastapi/router_runtime.py +2 -2
- loom_kernel-10.2.0/src/loom/serverless/aws/lambda_/__init__.py +49 -0
- loom_kernel-10.2.0/src/loom/serverless/aws/lambda_/_jobs.py +137 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/serverless/aws/lambda_/_refusals.py +6 -5
- loom_kernel-10.2.0/src/loom/serverless/aws/lambda_/checks.py +93 -0
- loom_kernel-10.2.0/src/loom/serverless/aws/lambda_/errors.py +16 -0
- loom_kernel-10.2.0/src/loom/serverless/aws/lambda_/functions.py +260 -0
- loom_kernel-10.2.0/src/loom/serverless/aws/lambda_/handler.py +302 -0
- loom_kernel-10.2.0/src/loom/serverless/aws/lambda_/interfaces.py +90 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/serverless/aws/lambda_/manifest.py +110 -119
- loom_kernel-10.2.0/src/loom/serverless/aws/lambda_/triggers/__init__.py +64 -0
- loom_kernel-10.2.0/src/loom/serverless/aws/lambda_/triggers/eventbridge.py +22 -0
- {loom_kernel-10.1.0/src/loom/serverless/aws/lambda_ → loom_kernel-10.2.0/src/loom/serverless/aws/lambda_/triggers}/http.py +46 -87
- loom_kernel-10.2.0/src/loom/serverless/aws/lambda_/triggers/s3.py +88 -0
- loom_kernel-10.2.0/src/loom/serverless/aws/lambda_/triggers/schedule.py +16 -0
- loom_kernel-10.2.0/src/loom/serverless/aws/lambda_/triggers/sns.py +55 -0
- loom_kernel-10.2.0/src/loom/serverless/aws/lambda_/triggers/sqs.py +183 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/_error_boundary.py +1 -1
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_table/common.py +1 -1
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/testing/__init__.py +3 -8
- loom_kernel-10.2.0/src/loom/testing/gateway.py +48 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/testing/jobs.py +5 -67
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/testing/lambda_http.py +20 -38
- loom_kernel-10.2.0/src/loom/testing/serverless.py +227 -0
- loom_kernel-10.1.0/src/loom/core/errors/__init__.py +0 -35
- loom_kernel-10.1.0/src/loom/core/errors/errors.py +0 -340
- loom_kernel-10.1.0/src/loom/core/repository/abc/errors.py +0 -30
- loom_kernel-10.1.0/src/loom/serverless/aws/lambda_/__init__.py +0 -46
- loom_kernel-10.1.0/src/loom/serverless/aws/lambda_/functions.py +0 -203
- loom_kernel-10.1.0/src/loom/serverless/aws/lambda_/sqs.py +0 -316
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/.gitignore +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/LICENSE +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/README.md +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/_concurrency.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/_filters.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/_paths.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/_roles.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/_startup.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/_transport.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/_usecase.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/a2a/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/a2a/_binding.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/a2a/_handlers.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/a2a/_rpc.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/a2a/card.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/a2a/events.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/a2a/server.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/abc.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/bootstrap.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/compiler/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/compiler/_compiler.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/compiler/_fingerprint.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/compiler/_plan.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/compiler/phases/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/compiler/phases/_capabilities.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/compiler/phases/_conversation.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/compiler/phases/_feedable.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/compiler/phases/_hook.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/compiler/phases/_instructions.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/compiler/phases/_limits.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/compiler/phases/_model_role.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/config.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/declarative/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/declarative/_envelope.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/declarative/_schema.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/declarative/_v1.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/declarative/schemas/agent-spec-v1.schema.json +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/describe.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_a2a.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_capabilities.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_engine.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_errors.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_escape.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_events.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_guards.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_history.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_instructions.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_limits.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_mcp.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_models.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_native.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_returns.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_schemas.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_spec.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/extras/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/extras/a2a.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/extras/handlebars.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/extras/mcp.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/extras/skills.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/provider.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/providers/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/providers/_shared.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/providers/anthropic.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/providers/bedrock.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/providers/gateway.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/providers/openai.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/providers/typesafe.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/errors.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/etl/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/etl/_batch.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/etl/_columns.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/etl/_frames.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/etl/_ledger.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/etl/_runner.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/etl/_validation.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/fastapi/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/fastapi/response.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/fastapi/streaming.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/inference.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/pricing.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/registry.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/remote_auth.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/runtime/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/runtime/_bounded.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/runtime/_chain.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/runtime/_conversation.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/runtime/_handle.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/runtime/_health.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/runtime/_hooks.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/runtime/_limits.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/runtime/_mcp.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/validate/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/validate/__main__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/celery/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/celery/_discovery.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/celery/adapter.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/celery/auto.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/celery/bootstrap.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/celery/config.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/celery/constants.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/celery/service.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/cli/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/cli/app.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/cli/deploy.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/cli/schema.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/composition/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/composition/_ai.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/composition/_jobs.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/composition/_reserved.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/composition/_sql.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/composition/application.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/composition/errors.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/composition/host.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/composition/recipe.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/composition/resources.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/composition/source.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/_async.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/async_bridge.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/authz/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/authz/_decide.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/authz/_grants.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/authz/_roles.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/authz/_scope.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/authz/elevation.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/authz/product.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/backend/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/backend/core_model.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/backend/protocol.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/backend/scoped_ddl.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/backend/sqlalchemy.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/bootstrap/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/bootstrap/bootstrap.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/bootstrap/kernel.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/_batching.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/_single_flight.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/abc/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/abc/backend.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/abc/config.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/abc/dependency.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/calls.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/codec.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/decorators.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/dependency.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/errors.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/gateway.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/keys.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/memory.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/result_codec.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/serializer.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/wiring.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/checks.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/command/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/command/adapter.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/command/base.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/command/field.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/command/introspection.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/compiler.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/_includes.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/_resolver_utils.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/aws.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/binder.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/checks.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/configurable.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/context.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/convert.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/errors.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/keys.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/model.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/observability.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/retired.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/connections/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/connections/_base.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/connections/aws/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/connections/aws/client.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/connections/aws/config.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/connections/aws/loader.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/connections/clickhouse/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/connections/clickhouse/client.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/connections/clickhouse/config.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/connections/clickhouse/loader.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/connections/mongo/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/connections/mongo/client.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/connections/mongo/config.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/connections/mongo/loader.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/connections/relational.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/contracts/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/contracts/manifest.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/di/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/di/container.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/di/scope.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/discovery/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/discovery/_utils.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/discovery/base.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/discovery/config.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/discovery/interfaces.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/discovery/manifest.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/discovery/modules.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/discovery/worker_manifest.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/engine/compilable.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/engine/events.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/engine/metrics.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/engine/plan.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/environment.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/expr/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/expr/eval.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/expr/nodes.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/expr/refs.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/identity/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/identity/context.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/identity/identity.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/identity/issuer.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/identity/wire.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/introspection/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/introspection/base.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/introspection/describe.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/job/callback.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/job/config.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/job/envelope.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/job/job.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/job/run.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/job/service.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/locator.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/logger/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/logger/abc.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/logger/checks.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/logger/config.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/logger/context.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/logger/registry.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/logger/structlogger.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/_json_schema.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/base.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/convert.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/enums.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/field.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/introspection.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/partition.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/privilege.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/projection.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/redaction.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/relation.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/scoped.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/struct.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/timestamped.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/types.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/types_postgres.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/observability/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/observability/config.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/observability/event.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/observability/observer/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/observability/observer/noop.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/observability/observer/otel.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/observability/observer/structlog.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/observability/otel_ids.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/observability/protocol.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/observability/runtime.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/observability/span.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/observability/topology.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/persistence/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/persistence/abc.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/persistence/database.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/persistence/elevation.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/persistence/none.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/persistence/profile.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/persistence/registry.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/persistence/stores.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/plugins/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/plugins/entrypoints.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/plugins/optional.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/projection/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/projection/loaders.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/projection/runtime.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/abc/checks.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/abc/query.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/abc/query_compiler.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/abc/repo_for.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/abc/repository.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/abc/session_scope.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/dynamodb/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/dynamodb/backend.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/dynamodb/registry.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/dynamodb/uow.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/mongo/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/mongo/backend.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/mongo/ids.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/mongo/registry.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/mongo/repository.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/mongo/uow.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/mongo/values.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/mutation.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/registration.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/registry.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/_pool_metrics.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/backend.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/integrity.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/loaders.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/migrations/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/migrations/env_template.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/migrations/hook.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/migrations/operations.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/migrations/runners.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/mixins.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/model.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/profile_loader.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/projection.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/query_compiler/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/query_compiler/compiler.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/query_compiler/cursor.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/query_compiler/errors.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/query_compiler/filters.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/query_compiler/ordering.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/query_compiler/paths.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/query_compiler/subquery.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/registry.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/rls/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/rls/bootstrap.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/rls/config.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/rls/elevate.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/rls/guard/0001.sql +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/rls/guard/0002.sql +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/rls/guard/preflight.sql +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/rls/guard_manifest.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/rls/integrity.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/rls/partitions.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/rls/provider.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/rls/schema.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/rls/sources.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/rls/verify.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/session_manager.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/session_settings.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/uow.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/response/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/response/base.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/routing/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/routing/ref.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/routing/resolver.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/runner.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/schema/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/schema/schema_mode.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/schema_names.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/sql/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/sql/abc/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/sql/abc/contracts.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/sql/abc/errors.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/sql/caller_bound.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/sql/clickhouse/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/sql/clickhouse/_client.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/sql/clickhouse/executor.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/sql/clickhouse/registry.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/sql/config.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/sql/loader.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/sql/roles.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/sql/service.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/symbols.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/tracing/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/tracing/context.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/transport/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/transport/adapter.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/uow/abc.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/uow/alone.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/_predicates.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/agent_markers.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/compute.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/constants.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/errors.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/factory.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/field_ref.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/invoker.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/joined.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/keys.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/mcp_markers.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/outcome.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/registry.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/use_case.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/_uri.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/_historify/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/_historify/_common.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/_historify/_log.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/_historify/_ops.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/_historify/_snapshot.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/_historify/_transform.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/_merge.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/_path_template.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/_predicate.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/_schema_aligner/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/_schema_aligner/_aligner.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/_schema_aligner/_policy.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/_write_policy.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/polars/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/polars/_dtype.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/polars/_file_writer.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/polars/_frame.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/polars/_historify.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/polars/_predicate.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/polars/_reader.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/polars/_schema.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/polars/_schema_aligner.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/polars/_streaming.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/polars/_writer.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/polars/provider.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/spark/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/spark/_dtype.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/spark/_historify.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/spark/_reader.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/spark/_schema.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/spark/_schema_aligner.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/spark/_writer.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/spark/provider.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/checkpoint/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/checkpoint/_backends/_memory.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/checkpoint/_backends/_polars.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/checkpoint/_backends/_spark.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/checkpoint/_cleaners.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/checkpoint/_options.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/checkpoint/_paths.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/checkpoint/_scope.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/checkpoint/_store.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/compiler/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/compiler/_binding.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/compiler/_compiler.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/compiler/_errors.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/compiler/_filter.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/compiler/_plan.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/compiler/_validators.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/compiler/_validators_agents.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/compiler/_validators_config.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/compiler/_validators_plan.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/compiler/_validators_step.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/_format.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/_read_options.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/_utils.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/_with_agent.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/_write_options.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/expr/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/expr/_params.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/expr/_predicate.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/expr/_predicate_dialect.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/expr/_refs.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/source/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/source/_from.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/source/_from_clickhouse.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/source/_from_config.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/source/_from_dynamodb.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/source/_from_mongo.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/source/_specs.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/target/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/target/_client.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/target/_errors.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/target/_file.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/target/_history/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/target/_history/_builder.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/target/_history/_enums.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/target/_history/_errors.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/target/_history/_report.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/target/_history/_spec.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/target/_into.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/target/_table.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/target/_temp.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/executor/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/executor/_agents.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/executor/_dispatcher.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/executor/_executor.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/io/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/io/_clickhouse_connection.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/io/_registry.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/io/sources/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/io/sources/_clickhouse.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/io/sources/_dynamodb.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/io/sources/_dynamodb_items.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/io/sources/_dynamodb_predicate.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/io/sources/_mongo.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/io/sources/_mongo_batch.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/io/sources/_mongo_bson.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/io/sources/_mongo_predicate.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/io/sources/_serialization.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/io/targets/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/io/targets/_clickhouse.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/lineage/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/lineage/_config.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/lineage/_observer.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/lineage/_records.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/lineage/sinks/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/lineage/sinks/_protocol.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/lineage/sinks/_table.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/lineage/sinks/_writer.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/maintenance/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/maintenance/_builder.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/maintenance/_ops.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/maintenance/_protocol.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/maintenance/_runner.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/maintenance/_step.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/maintenance/backends/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/maintenance/backends/_delta_rs.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/pipeline/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/pipeline/_generics.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/pipeline/_params.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/pipeline/_pipeline.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/pipeline/_process.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/pipeline/_sql.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/pipeline/_step.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/pipeline/_step_client.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/pipeline/_step_sql.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/runner/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/runner/_agents.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/runner/_providers.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/runner/_wiring.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/runner/config_loader.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/runner/core.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/runtime/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/runtime/_config_values.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/runtime/contracts.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/schema/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/schema/_contract.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/schema/_schema.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/storage/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/storage/_config.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/storage/_file_locator.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/storage/_locator.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/storage/routing.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/testing/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/testing/_delta.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/testing/_result.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/testing/_runners.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/testing/_scenario.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/testing/_stubs.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/testing/spark.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/jobs/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/jobs/aws/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/_async.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/_config.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/_ctx.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/_flow_yaml.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/_meta.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/_placeholders.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/_summary.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/deploy/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/deploy/_discovery.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/deploy/_schedule.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/deploy/_yaml_etls.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/deploy/entrypoint.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/flow/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/flow/_assemble.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/flow/_backfill.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/flow/_backfill_body.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/flow/_body.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/flow/_common.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/flow/_factory.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/flow/_hooks.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/flow/_maintenance.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/flow/_params.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/flow/_run_name.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/flow/_runtime.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/flow/_signature.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/flow/_stages.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/manifest/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/manifest/_model.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/manifest/_s3.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/manifest/_store.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/notify/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/notify/_event.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/notify/_factory.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/notify/_format.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/notify/_port.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/notify/_slack.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/notify/_sns.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/observer/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/observer/_flow.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/observer/_logging_bridge.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/observer/_manifest.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/observer/_task_run.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prometheus/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prometheus/_instruments.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prometheus/adapter.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prometheus/db_pool.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prometheus/kafka.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prometheus/lifecycle.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prometheus/middleware.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/py.typed +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/_body.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/adapter.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/auth/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/auth/config.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/auth/jwt.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/auth/middleware.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/autocrud.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/config.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/constants.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/cors.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/fastapi/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/fastapi/_auto_ai.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/fastapi/_auto_auth.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/fastapi/_auto_sql.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/fastapi/_errors.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/fastapi/_exclusions.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/fastapi/app.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/fastapi/auto.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/fastapi/health.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/fastapi/openapi.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/fastapi/sql.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/middleware.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/model.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/rest_adapter.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/serverless/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/serverless/aws/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/_adapter.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/_batch_spans.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/_commit_tracker.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/_errors.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/_operators.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/_resource_manager.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/_runtime_io.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/_sink_registry.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/handlers/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/handlers/_shared.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/handlers/boundary.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/handlers/dispatcher.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/handlers/routing.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/handlers/scopes.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/handlers/shapes.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/handlers/steps.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/handlers/storage.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/runner.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/compiler/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/compiler/_bindings.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/compiler/_compiler.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/compiler/_errors.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/compiler/_plan.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/compiler/phases/build_plan.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/compiler/phases/validate.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/core/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/core/_errors.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/core/_exceptions.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/core/_message.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/core/_tracing.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/core/_typing.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/graph/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/graph/_flow.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/_codec.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/_config.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/_errors.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/_key_resolver.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/_message.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/_record.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/_wire.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/client/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/client/_consumer.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/client/_producer.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/client/_protocol.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/client/_retry.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/message/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/message/_consumer.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/message/_producer.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/message/_protocol.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/mongo/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/mongo/_bytewax_source.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/mongo/_config.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/mongo/_event.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/mongo/_normalize.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_boundary.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_branches.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_broadcast.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_capabilities.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_decompose.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_expand_routes.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_expr_eval.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_fork.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_helpers.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_mongo.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_protocols.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_router.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_shape.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_sink.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_step.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_table/__init__.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_table/_clickhouse.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_table/_delta.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_table/_sqlalchemy.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_table/config.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_with.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/refs.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/testing.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/testing/agents.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/testing/golden.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/testing/http_harness.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/testing/in_memory.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/testing/repository_harness.py +0 -0
- {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/testing/runner.py +0 -0
|
@@ -1,5 +1,52 @@
|
|
|
1
1
|
# Unreleased
|
|
2
2
|
|
|
3
|
+
## 💥 Breaking
|
|
4
|
+
|
|
5
|
+
### lambda
|
|
6
|
+
|
|
7
|
+
- **lambda:** the deploy manifest reuses the loader: `served_routes(source,
|
|
8
|
+
select_interfaces=None)` reads and validates `app.rest.interfaces` and
|
|
9
|
+
`app.rest.disable_routes` itself, the placeholders are read by OmegaConf's
|
|
10
|
+
grammar (`loom.core.config.resolver.referenced`; an escaped `\${secrets:...}`
|
|
11
|
+
is no longer listed, `${secrets:a,b}` names `a`), the resolvers' `.reference()`
|
|
12
|
+
methods are gone and `FunctionManifest.event` is a `dict` with the same keys
|
|
13
|
+
the removed `Route`, `HttpEvent`, `QueueEvent`, `OnFailure` and `DirectEvent`
|
|
14
|
+
structs encoded. The JSON does not change. `omegaconf` is bound to `<2.4`:
|
|
15
|
+
the manifest reads its generated grammar (`loom.core.config._interpolations`).
|
|
16
|
+
|
|
17
|
+
- **lambda:** one adapter, `LambdaAdapter`, serves every Lambda function: it
|
|
18
|
+
binds the handler of the trigger the deployed function declares. Nothing
|
|
19
|
+
of the previous surface remains:
|
|
20
|
+
|
|
21
|
+
| Before | Now |
|
|
22
|
+
|---|---|
|
|
23
|
+
| `LambdaHTTPAdapter()` | `LambdaAdapter()` |
|
|
24
|
+
| `LambdaSQSAdapter(jobs=...)` | `LambdaAdapter(jobs=...)` on a function with `trigger: {source: jobs}` |
|
|
25
|
+
| `app.entry: lambda_http` | `app.entry: lambda` |
|
|
26
|
+
| `app.entry: lambda_sqs` | `app.entry: <function>` with `trigger: {source: jobs}` |
|
|
27
|
+
| `lambda.functions.<f>.http: [...]` | `lambda.functions.<f>.trigger: {source: http, interfaces: [...]}` |
|
|
28
|
+
| `lambda.functions.<f>.auth` | `lambda.functions.<f>.trigger.auth` |
|
|
29
|
+
| `lambda.functions.<f>.sqs: true` | `lambda.functions.<f>.trigger: {source: jobs, queue: {name: ...}}` |
|
|
30
|
+
| `lambda.functions.<f>.queue`, `batch_size`, `batching_window_s`, `max_concurrency`, `report_batch_item_failures` | The same keys under `trigger.queue` (`queue` becomes `queue.name`) |
|
|
31
|
+
| `loom.serverless.aws.lambda_.http` | `loom.serverless.aws.lambda_.triggers.http` |
|
|
32
|
+
| `loom.serverless.aws.lambda_.sqs.SQSBatchFailedError` | `loom.serverless.aws.lambda_.SQSBatchFailedError` |
|
|
33
|
+
| `loom.serverless.aws.lambda_.sqs.SQSHandler` | `loom.serverless.aws.lambda_.LambdaHandler` |
|
|
34
|
+
| `loom.serverless.aws.lambda_.LambdaHTTPHandler` | `LambdaHandler`; the class is internal |
|
|
35
|
+
| `loom.serverless.aws.lambda_.sqs.DuplicateJobName` | `loom.core.discovery.worker.DuplicateJobName` |
|
|
36
|
+
| `loom.serverless.aws.lambda_.sqs.MALFORMED_JOB`, `TIMEOUT_SAFETY_MARGIN_MS` | Internal |
|
|
37
|
+
| `loom.testing.sqs_record(Job, payload, ...)` | `loom.testing.LambdaEvent.jobs(Job, payload, ...)` |
|
|
38
|
+
| `loom.testing.sqs_raw_record(body, ...)` | `loom.testing.LambdaEvent.sqs_record(body, ...)["Records"][0]` |
|
|
39
|
+
| Deploy manifest `manifest_version: 1`, event `type` (`http`, `sqs`) | `manifest_version: 2`: each function's `source` and `via` |
|
|
40
|
+
|
|
41
|
+
`loom.serverless.aws.lambda_` exports `LambdaAdapter`, `LambdaHandler`,
|
|
42
|
+
`LambdaUnservedConfigError`, `S3Object` and `SQSBatchFailedError` only.
|
|
43
|
+
|
|
44
|
+
### config
|
|
45
|
+
|
|
46
|
+
- **config:** a `config.overridable` entry reaching `lambda.handler`,
|
|
47
|
+
`app.discovery` or `lambda.functions.*.trigger` stops every load, as one
|
|
48
|
+
reaching `aws` or `sqs.queues` does; `app.*` is such an entry.
|
|
49
|
+
|
|
3
50
|
## ✨ Features
|
|
4
51
|
|
|
5
52
|
### jobs
|
|
@@ -11,30 +58,38 @@
|
|
|
11
58
|
injecting `JobService`.
|
|
12
59
|
- **jobs:** `app.job_service: sqs` (extra `loom[sqs]`) sends each job to the
|
|
13
60
|
SQS queue `sqs.queues` maps its queue to, after the commit, as the
|
|
14
|
-
`JobEnvelope`
|
|
61
|
+
`JobEnvelope` a Lambda `jobs` function runs. `sqs:` inherits `aws:`.
|
|
15
62
|
FIFO queues take the SHA-256 of the new `Job.__group_by__` payload field as
|
|
16
63
|
`MessageGroupId`. Callbacks, priorities, delays SQS cannot honour and bodies
|
|
17
64
|
over 256 KiB raise `SQSDispatchError`; unmapped queues stop startup.
|
|
18
65
|
- **jobs:** an execution's SQS jobs leave after the commit in
|
|
19
66
|
`SendMessageBatch` calls per queue, in dispatch order (`sqs.batch`,
|
|
20
67
|
`sqs.batch_size`, `sqs.max_concurrent_sends`); a standard queue resends the
|
|
21
|
-
entries SQS refuses once, a FIFO queue stops at its first failure.
|
|
68
|
+
entries SQS refuses once, a FIFO queue stops at its first failure. A
|
|
69
|
+
Lambda `jobs` trigger's `queue` block declares `batch_size`,
|
|
22
70
|
`batching_window_s`, `max_concurrency` and `report_batch_item_failures`;
|
|
23
71
|
`false` makes the SQS handler fail the whole batch.
|
|
24
72
|
|
|
25
73
|
### lambda
|
|
26
74
|
|
|
75
|
+
- **lambda:** event triggers: `trigger: {source: eventbridge | s3 | sns |
|
|
76
|
+
schedule, job, identity}` runs the job for each event, directly or through
|
|
77
|
+
a `queue:` block, as the configured identity only. A failed job fails the
|
|
78
|
+
event, which Lambda retries, then sends to its on-failure destination;
|
|
79
|
+
through a queue it is reported, then dead-lettered. See "Event triggers" in
|
|
80
|
+
the composition guide.
|
|
27
81
|
- **lambda:** `loom deploy manifest <config> [--function x]` prints a
|
|
28
|
-
versioned JSON manifest (`manifest_version:
|
|
82
|
+
versioned JSON manifest (`manifest_version: 2`) of each function of
|
|
29
83
|
`lambda.functions` for a deployment tool: the handler, code path and
|
|
30
|
-
queues once, then per function its
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
84
|
+
queues once, then per function its trigger's `source` and `via`, what its
|
|
85
|
+
event needs deployed (http routes and `auth`, the queue and its event
|
|
86
|
+
source mapping, or a direct trigger's job, identity and `on_failure`), and
|
|
87
|
+
the secret and SSM parameter names it resolves (never values; no resolver
|
|
88
|
+
runs). It runs the deploy checks of `loom check --deploy` first, prints
|
|
89
|
+
their findings to stderr and no manifest when one fails. `lambda.handler`
|
|
90
|
+
and a trigger's `queue` (a key of `sqs.queues`) are required by the
|
|
91
|
+
manifest only.
|
|
92
|
+
- **rest:** `loom.rest.E001` also fails a `lambda.functions.<name>.trigger.auth`
|
|
38
93
|
that names no mechanism (`{}`, `jwt: null`, `custom: false`): it replaces
|
|
39
94
|
`app.rest.auth` for that function.
|
|
40
95
|
|
|
@@ -42,9 +97,10 @@
|
|
|
42
97
|
|
|
43
98
|
- **testing:** Lambda functions are tested in process, without AWS:
|
|
44
99
|
`LambdaTestClient`, an `httpx.Client` like FastAPI's `TestClient`, sends API
|
|
45
|
-
Gateway HTTP API or REST events to the real handler;
|
|
46
|
-
`
|
|
47
|
-
`
|
|
100
|
+
Gateway HTTP API or REST events to the real handler;
|
|
101
|
+
`LambdaEvent` builds the event AWS delivers, one typed constructor per
|
|
102
|
+
trigger source (`LambdaEvent.s3([...])`, `.sns({...})`, `.jobs(Job, ...)`)
|
|
103
|
+
and `.via_sqs()` for the queue in between; `RecordingJobService`
|
|
48
104
|
(`app.job_service: loom.testing:RecordingJobService`) records each dispatch
|
|
49
105
|
after the commit. The `testing` extra now includes `httpx`.
|
|
50
106
|
|
|
@@ -150,6 +206,52 @@
|
|
|
150
206
|
raise `NotImplementedError`. Cache scenarios and frames, not runners: tests
|
|
151
207
|
that mutate state need a function-scoped runner on their own `tmp_path`.
|
|
152
208
|
|
|
209
|
+
## 💥 Breaking
|
|
210
|
+
|
|
211
|
+
### errors
|
|
212
|
+
|
|
213
|
+
- **errors:** `loom.core.errors` is a package split by area (`base`, `domain`,
|
|
214
|
+
`auth`, `model`, `jobs`, `stores`, `codes`) and re-exports every error, so
|
|
215
|
+
`from loom.core.errors import X` is unchanged. The errors below are
|
|
216
|
+
importable only from `loom.core.errors`; their old paths, and the package
|
|
217
|
+
re-exports that pointed at them, are gone:
|
|
218
|
+
|
|
219
|
+
| Old path | New path |
|
|
220
|
+
|---|---|
|
|
221
|
+
| every class of the removed `errors` submodule of `loom.core.errors` | `loom.core.errors` |
|
|
222
|
+
| `loom.core.uow.scope.ScopeOwnershipError`, `UnitOfWorkInsideScope`, `UndeclaredStoreWrite`, `NestedIdentityMismatch`, `NestedElevation`, `StoresNotCommitted` (also `loom.core.uow.*`) | `loom.core.errors` |
|
|
223
|
+
| `loom.core.uow.coordinator.UncomposedStore` | `loom.core.errors` |
|
|
224
|
+
| `loom.core.job.handle.JobTimeoutError`, `JobFailedError` (also `loom.core.job.*`) | `loom.core.errors` |
|
|
225
|
+
| `loom.core.job.router.MixedJobBackendsError` (also `loom.core.job.*`) | `loom.core.errors` |
|
|
226
|
+
| `loom.core.engine.post_commit.PostCommitError` (also `loom.core.engine.*`) | `loom.core.errors` |
|
|
227
|
+
| `loom.core.model._loom_type.BoundaryValidationError`, `UnsupportedBoundaryType` (also `loom.core.model.*`) | `loom.core.errors` |
|
|
228
|
+
| `loom.core.repository.abc.errors.UnsupportedQuery` (also `loom.core.repository.abc.*`; the module is removed) | `loom.core.errors` |
|
|
229
|
+
| `loom.jobs.aws.sqs.SQSDispatchError` | `loom.jobs.aws.errors` |
|
|
230
|
+
| `loom.serverless.aws.lambda_.triggers.sqs.SQSBatchFailedError` | `loom.serverless.aws.lambda_.errors` (also `loom.serverless.aws.lambda_`) |
|
|
231
|
+
| `loom.rest.auth.abc.AuthenticationUnavailable` | `loom.rest.auth.errors` (also `loom.rest.auth`) |
|
|
232
|
+
| `loom.etl.backends._format_registry.UnsupportedFormatError` | `loom.etl.runner.errors` (also `loom.etl`) |
|
|
233
|
+
|
|
234
|
+
- **errors:** a `LoomError` code is a catalogue member, never a literal
|
|
235
|
+
string: `LoomError(message, code=)` is typed `StrEnum`, `ErrorCode` gains
|
|
236
|
+
`JOB_TIMEOUT`, `JOB_FAILED`, `JOB_BACKENDS_MIXED` and
|
|
237
|
+
`BOUNDARY_TYPE_UNSUPPORTED` (same string values, mapped to 500 explicitly),
|
|
238
|
+
and the SQS adapters' `sqs_*` codes are the members of
|
|
239
|
+
`loom.jobs.aws.errors.SQSErrorCode`, which `SQSDispatchError(message, code=)`
|
|
240
|
+
now requires. An application catalogue is its own `StrEnum`.
|
|
241
|
+
`AuthenticationUnavailable` is a `SystemError`, so the generic retry and
|
|
242
|
+
circuit-breaker handlers see the outage it reports.
|
|
243
|
+
|
|
244
|
+
- **errors:** every error belongs to a family. `BoundaryValidationError` and
|
|
245
|
+
`UnsupportedFormatError` are `DomainError`s (still `ValueError`s);
|
|
246
|
+
`JobTimeoutError`, `JobFailedError`, `MixedJobBackendsError`,
|
|
247
|
+
`PostCommitError`, `UnsupportedBoundaryType`, `SQSDispatchError` and
|
|
248
|
+
`SQSBatchFailedError` are `SystemError`s. HTTP statuses do not change. A
|
|
249
|
+
`DomainError` is never retryable: Celery and the SQS consumers consume a
|
|
250
|
+
job that raises one instead of requeuing it, and the streaming boundary
|
|
251
|
+
files a `BoundaryValidationError` as a business error. `UnsupportedQuery`
|
|
252
|
+
takes `(reason, *, backend=None, model=None)` and its message names the
|
|
253
|
+
model and the reason, never the backend.
|
|
254
|
+
|
|
153
255
|
## ⚠ Behaviour changes
|
|
154
256
|
|
|
155
257
|
### jobs
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: loom-kernel
|
|
3
|
-
Version: 10.
|
|
3
|
+
Version: 10.2.0
|
|
4
4
|
Summary: Loom Python project
|
|
5
5
|
License-File: LICENSE
|
|
6
6
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -13,7 +13,7 @@ Classifier: Typing :: Typed
|
|
|
13
13
|
Requires-Python: >=3.11
|
|
14
14
|
Requires-Dist: aiocache<1.0,>=0.12
|
|
15
15
|
Requires-Dist: msgspec<1.0,>=0.18
|
|
16
|
-
Requires-Dist: omegaconf<
|
|
16
|
+
Requires-Dist: omegaconf<2.4,>=2.3
|
|
17
17
|
Requires-Dist: opentelemetry-api<2.0,>=1.27
|
|
18
18
|
Requires-Dist: prometheus-client>=0.20
|
|
19
19
|
Requires-Dist: structlog<27.0,>=24.4
|
|
@@ -37,7 +37,7 @@ Provides-Extra: ai-typesafe
|
|
|
37
37
|
Requires-Dist: pydantic-ai-slim[typesafe]<3,>=2.45; extra == 'ai-typesafe'
|
|
38
38
|
Provides-Extra: cache
|
|
39
39
|
Requires-Dist: aiocache<1.0,>=0.12; extra == 'cache'
|
|
40
|
-
Requires-Dist: omegaconf<
|
|
40
|
+
Requires-Dist: omegaconf<2.4,>=2.3; extra == 'cache'
|
|
41
41
|
Provides-Extra: celery
|
|
42
42
|
Requires-Dist: celery<6.0,>=5.3; extra == 'celery'
|
|
43
43
|
Requires-Dist: kombu<6.0,>=5.3; extra == 'celery'
|
|
@@ -49,11 +49,11 @@ Provides-Extra: clickhouse
|
|
|
49
49
|
Requires-Dist: clickhouse-connect<1.0,>=0.9.2; extra == 'clickhouse'
|
|
50
50
|
Provides-Extra: config
|
|
51
51
|
Requires-Dist: fsspec>=2024.2.0; extra == 'config'
|
|
52
|
-
Requires-Dist: omegaconf<
|
|
52
|
+
Requires-Dist: omegaconf<2.4,>=2.3; extra == 'config'
|
|
53
53
|
Provides-Extra: config-ssm
|
|
54
54
|
Requires-Dist: boto3>=1.35; extra == 'config-ssm'
|
|
55
55
|
Requires-Dist: fsspec>=2024.2.0; extra == 'config-ssm'
|
|
56
|
-
Requires-Dist: omegaconf<
|
|
56
|
+
Requires-Dist: omegaconf<2.4,>=2.3; extra == 'config-ssm'
|
|
57
57
|
Provides-Extra: dynamodb
|
|
58
58
|
Requires-Dist: boto3>=1.35; extra == 'dynamodb'
|
|
59
59
|
Provides-Extra: etl-otel
|
|
@@ -96,7 +96,7 @@ Provides-Extra: prefect
|
|
|
96
96
|
Requires-Dist: boto3>=1.35; extra == 'prefect'
|
|
97
97
|
Requires-Dist: docker>=7.0; extra == 'prefect'
|
|
98
98
|
Requires-Dist: fsspec>=2024.2.0; extra == 'prefect'
|
|
99
|
-
Requires-Dist: omegaconf<
|
|
99
|
+
Requires-Dist: omegaconf<2.4,>=2.3; extra == 'prefect'
|
|
100
100
|
Requires-Dist: prefect<4.0,>=3.0; extra == 'prefect'
|
|
101
101
|
Requires-Dist: pyyaml>=6.0; extra == 'prefect'
|
|
102
102
|
Provides-Extra: prometheus
|
|
@@ -16,7 +16,7 @@ classifiers = [
|
|
|
16
16
|
dependencies = [
|
|
17
17
|
"msgspec>=0.18,<1.0",
|
|
18
18
|
"structlog>=24.4,<27.0",
|
|
19
|
-
"omegaconf>=2.3,<
|
|
19
|
+
"omegaconf>=2.3,<2.4",
|
|
20
20
|
"prometheus-client>=0.20",
|
|
21
21
|
"aiocache>=0.12,<1.0",
|
|
22
22
|
"typing_extensions>=4.12",
|
|
@@ -62,17 +62,17 @@ jwt = [
|
|
|
62
62
|
"pyjwt[crypto]>=2.8,<3",
|
|
63
63
|
]
|
|
64
64
|
config = [
|
|
65
|
-
"omegaconf>=2.3,<
|
|
65
|
+
"omegaconf>=2.3,<2.4",
|
|
66
66
|
"fsspec>=2024.2.0",
|
|
67
67
|
]
|
|
68
68
|
config-ssm = [
|
|
69
|
-
"omegaconf>=2.3,<
|
|
69
|
+
"omegaconf>=2.3,<2.4",
|
|
70
70
|
"fsspec>=2024.2.0",
|
|
71
71
|
"boto3>=1.35",
|
|
72
72
|
]
|
|
73
73
|
cache = [
|
|
74
74
|
"aiocache>=0.12,<1.0",
|
|
75
|
-
"omegaconf>=2.3,<
|
|
75
|
+
"omegaconf>=2.3,<2.4",
|
|
76
76
|
]
|
|
77
77
|
etl-polars = [
|
|
78
78
|
"polars>=1.24,<2.0",
|
|
@@ -107,7 +107,7 @@ prefect = [
|
|
|
107
107
|
"prefect>=3.0,<4.0",
|
|
108
108
|
"fsspec>=2024.2.0",
|
|
109
109
|
"pyyaml>=6.0",
|
|
110
|
-
"omegaconf>=2.3,<
|
|
110
|
+
"omegaconf>=2.3,<2.4",
|
|
111
111
|
"boto3>=1.35",
|
|
112
112
|
"docker>=7.0",
|
|
113
113
|
]
|
|
@@ -256,7 +256,7 @@ dev = [
|
|
|
256
256
|
"fastapi>=0.115,<1.0",
|
|
257
257
|
"greenlet>=3.0.0",
|
|
258
258
|
"mypy>=1.11.0,<2.0",
|
|
259
|
-
"omegaconf>=2.3,<
|
|
259
|
+
"omegaconf>=2.3,<2.4",
|
|
260
260
|
"pydantic>=2.0,<3.0",
|
|
261
261
|
"pre-commit>=3.8.0",
|
|
262
262
|
"pyright>=1.1.390,<2.0",
|
|
@@ -36,7 +36,8 @@ from loom.ai.abc import OutputCheck
|
|
|
36
36
|
from loom.ai.compiler._plan import CompiledOutput
|
|
37
37
|
from loom.ai.declarative import JsonSchemaOutput, OutputSpec, TypeRefOutput
|
|
38
38
|
from loom.ai.errors import AgentCompilationIssue, AgentErrorCode
|
|
39
|
-
from loom.core.
|
|
39
|
+
from loom.core.errors import UnsupportedBoundaryType
|
|
40
|
+
from loom.core.model import LoomType, loom_type, msgspec_type
|
|
40
41
|
from loom.core.symbols import import_symbol
|
|
41
42
|
|
|
42
43
|
_CompileResult = tuple[CompiledOutput | None, list[AgentCompilationIssue]]
|
|
@@ -38,7 +38,8 @@ import msgspec
|
|
|
38
38
|
from loom.ai.abc import StateShape
|
|
39
39
|
from loom.ai.compiler.phases._output import _resolve_symbol, _schema_to_annotation
|
|
40
40
|
from loom.ai.errors import AgentCompilationIssue, AgentErrorCode
|
|
41
|
-
from loom.core.
|
|
41
|
+
from loom.core.errors import UnsupportedBoundaryType
|
|
42
|
+
from loom.core.model import loom_type, msgspec_type
|
|
42
43
|
|
|
43
44
|
_CompileResult = tuple[StateShape | None, list[AgentCompilationIssue]]
|
|
44
45
|
|
|
@@ -48,7 +48,7 @@ from pydantic_ai.messages import ModelResponse, TextPart, ToolCallPart
|
|
|
48
48
|
|
|
49
49
|
from loom.ai.compiler import CompiledOutput
|
|
50
50
|
from loom.ai.errors import AgentRunError, AgentRunErrorCode
|
|
51
|
-
from loom.core.
|
|
51
|
+
from loom.core.errors import BoundaryValidationError
|
|
52
52
|
|
|
53
53
|
|
|
54
54
|
class MissingOutputPayload(Exception):
|
|
@@ -56,8 +56,9 @@ from loom.ai.fastapi.response import AgentJSONResponse, error_response, result_p
|
|
|
56
56
|
from loom.ai.fastapi.streaming import encode_sse_event, stream_sse
|
|
57
57
|
from loom.ai.runtime import AgentRuntime
|
|
58
58
|
from loom.core.config.errors import ConfigError
|
|
59
|
+
from loom.core.errors import BoundaryValidationError
|
|
59
60
|
from loom.core.identity import Identity, current_identity
|
|
60
|
-
from loom.core.model import
|
|
61
|
+
from loom.core.model import LoomFrozenStruct
|
|
61
62
|
from loom.core.observability.event import Scope
|
|
62
63
|
from loom.core.observability.runtime import ObservabilityRuntime
|
|
63
64
|
from loom.core.observability.span import LoomSpan
|
|
@@ -49,8 +49,9 @@ from loom.ai._roles import bound_query_roles
|
|
|
49
49
|
from loom.ai.abc import McpHandle, McpSession, McpToolInfo, SqlGrantHandle
|
|
50
50
|
from loom.ai.compiler import CompiledMcpCapability, CompiledSqlCapability
|
|
51
51
|
from loom.ai.errors import AgentRunError, AgentRunErrorCode
|
|
52
|
+
from loom.core.errors import BoundaryValidationError, UnsupportedBoundaryType
|
|
52
53
|
from loom.core.identity import Identity
|
|
53
|
-
from loom.core.model import
|
|
54
|
+
from loom.core.model import loom_type_of
|
|
54
55
|
from loom.core.observability.event import Scope
|
|
55
56
|
from loom.core.observability.runtime import ObservabilityRuntime
|
|
56
57
|
from loom.core.sql.abc import SqlQueryResult
|
|
@@ -79,8 +79,9 @@ from loom.ai.runtime._mcp import (
|
|
|
79
79
|
mcp_session_for,
|
|
80
80
|
)
|
|
81
81
|
from loom.core.di import LoomContainer
|
|
82
|
+
from loom.core.errors import BoundaryValidationError
|
|
82
83
|
from loom.core.identity import ANONYMOUS, Identity
|
|
83
|
-
from loom.core.model import
|
|
84
|
+
from loom.core.model import LoomType
|
|
84
85
|
from loom.core.sql.config import SqlConfig
|
|
85
86
|
from loom.core.use_case.invoker import ApplicationInvoker
|
|
86
87
|
|
|
@@ -233,7 +233,7 @@ def _make_job_task(
|
|
|
233
233
|
decoded from the envelope is forwarded, so a job declaring ``Caller()``
|
|
234
234
|
fails closed rather than running as an unknown caller.
|
|
235
235
|
|
|
236
|
-
A :class:`~loom.core.
|
|
236
|
+
A :class:`~loom.core.errors.PostCommitError` whose
|
|
237
237
|
transaction committed is terminal: the task is not retried, since the
|
|
238
238
|
write already stands. One raised without a commit is retried like any
|
|
239
239
|
other failure.
|
|
@@ -32,6 +32,7 @@ from loom.core.config.errors import ConfigError
|
|
|
32
32
|
from loom.core.config.overrides import load_application_config
|
|
33
33
|
from loom.core.environment import Environment, resolve_environment, select_config_paths
|
|
34
34
|
from loom.core.locator import DEFAULT_CODE_PATH, add_code_path
|
|
35
|
+
from loom.serverless.aws.lambda_.checks import check_triggers
|
|
35
36
|
|
|
36
37
|
|
|
37
38
|
def check(
|
|
@@ -79,7 +80,8 @@ def load_checked(config: list[Path], env: str | None, skip: tuple[str, ...]) ->
|
|
|
79
80
|
"""Load *config* for *env*, put its code path on the import path and run the deploy checks.
|
|
80
81
|
|
|
81
82
|
Raises:
|
|
82
|
-
ConfigError: When the configuration does not load
|
|
83
|
+
ConfigError: When the configuration does not load, or ``lambda`` is
|
|
84
|
+
one startup would refuse.
|
|
83
85
|
"""
|
|
84
86
|
_load_check_packages()
|
|
85
87
|
environment = resolve_environment(env)
|
|
@@ -89,6 +91,7 @@ def load_checked(config: list[Path], env: str | None, skip: tuple[str, ...]) ->
|
|
|
89
91
|
)
|
|
90
92
|
config_root = Path(paths[0]).resolve().parent
|
|
91
93
|
code_path = _add_code_path(context, config_root)
|
|
94
|
+
check_triggers(context)
|
|
92
95
|
report = run_deploy_checks(context, skip=skip)
|
|
93
96
|
return CheckedConfig(context, environment, report, skip, config_root, code_path)
|
|
94
97
|
|
|
@@ -100,8 +100,8 @@ def create_app(
|
|
|
100
100
|
Args:
|
|
101
101
|
*config_paths: YAML files merged left to right; exclusive with *config_dir*.
|
|
102
102
|
adapter: The transport, and how it wants the application composed;
|
|
103
|
-
``app.entry`` picks it when omitted: ``fastapi``, ``
|
|
104
|
-
|
|
103
|
+
``app.entry`` picks it when omitted: ``fastapi``, ``lambda`` or a
|
|
104
|
+
function of ``lambda.functions``.
|
|
105
105
|
config_dir: Directory with ``base.yaml`` and the per-environment overlays.
|
|
106
106
|
environment: Environment of the application; overrides ``LOOM_ENV``.
|
|
107
107
|
code_path: Overrides ``app.code_path``, relative to the first config file.
|
|
@@ -140,22 +140,15 @@ def _fastapi() -> Adapter[object]:
|
|
|
140
140
|
return FastAPIAdapter()
|
|
141
141
|
|
|
142
142
|
|
|
143
|
-
def
|
|
144
|
-
from loom.serverless.aws.lambda_.
|
|
143
|
+
def _lambda(function: str | None = None) -> Adapter[object]:
|
|
144
|
+
from loom.serverless.aws.lambda_.handler import LambdaAdapter
|
|
145
145
|
|
|
146
|
-
return
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
def _lambda_sqs() -> Adapter[object]:
|
|
150
|
-
from loom.serverless.aws.lambda_.sqs import LambdaSQSAdapter
|
|
151
|
-
|
|
152
|
-
return LambdaSQSAdapter()
|
|
146
|
+
return LambdaAdapter(function=function)
|
|
153
147
|
|
|
154
148
|
|
|
155
149
|
_BUILTIN_ENTRIES: Final[Mapping[str, Callable[[], Adapter[object]]]] = {
|
|
156
150
|
"fastapi": _fastapi,
|
|
157
|
-
"
|
|
158
|
-
"lambda_sqs": _lambda_sqs,
|
|
151
|
+
"lambda": _lambda,
|
|
159
152
|
}
|
|
160
153
|
|
|
161
154
|
|
|
@@ -164,15 +157,7 @@ def _adapter_from_entry(source: CompositionSource) -> Adapter[object]:
|
|
|
164
157
|
if entry is None:
|
|
165
158
|
raise ConfigError("create_app needs adapter= or app.entry")
|
|
166
159
|
builtin = _BUILTIN_ENTRIES.get(entry)
|
|
167
|
-
if builtin is not None
|
|
168
|
-
return builtin()
|
|
169
|
-
from loom.serverless.aws.lambda_.functions import declared_function
|
|
170
|
-
|
|
171
|
-
if declared_function(source.config, entry).sqs:
|
|
172
|
-
return _lambda_sqs()
|
|
173
|
-
from loom.serverless.aws.lambda_.http import LambdaHTTPAdapter
|
|
174
|
-
|
|
175
|
-
return LambdaHTTPAdapter(function=entry)
|
|
160
|
+
return builtin() if builtin is not None else _lambda(entry)
|
|
176
161
|
|
|
177
162
|
|
|
178
163
|
def build_application(
|
|
@@ -30,8 +30,9 @@ from loom.core.cache.result_codec import (
|
|
|
30
30
|
to_payload,
|
|
31
31
|
)
|
|
32
32
|
from loom.core.engine.post_commit import store_channel
|
|
33
|
+
from loom.core.errors import BoundaryValidationError
|
|
33
34
|
from loom.core.logger import get_logger
|
|
34
|
-
from loom.core.model import
|
|
35
|
+
from loom.core.model import LoomType, is_pydantic_model, loom_type_of
|
|
35
36
|
from loom.core.model.convert import to_struct
|
|
36
37
|
from loom.core.model.enums import Cardinality
|
|
37
38
|
from loom.core.model.introspection import (
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"""The placeholders of a configuration string, read by OmegaConf's own grammar.
|
|
2
|
+
|
|
3
|
+
This module is the one place loom touches the generated ANTLR parser behind
|
|
4
|
+
OmegaConf (``omegaconf.grammar``; written against omegaconf 2.3). It reads a
|
|
5
|
+
string the way the loader would, without resolving anything, so the deploy
|
|
6
|
+
manifest can name the secrets and parameters a configuration fetches.
|
|
7
|
+
``tests/unit/core/config/test_referenced.py`` pins every grammar path the
|
|
8
|
+
manifest relies on; an omegaconf upgrade that moves the parser fails there.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from __future__ import annotations
|
|
12
|
+
|
|
13
|
+
from collections.abc import Collection, Iterator
|
|
14
|
+
from typing import Any
|
|
15
|
+
|
|
16
|
+
from loom.core.config.errors import ConfigError
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def referenced(text: str, names: Collection[str]) -> dict[str, list[str]]:
|
|
20
|
+
"""The first argument of every ``${name:...}`` of *text* whose *name* is one of *names*.
|
|
21
|
+
|
|
22
|
+
OmegaConf's own grammar reads *text*, so the surrounding literal text, an
|
|
23
|
+
escaped ``\\${``, quotes and argument separators mean what they mean to
|
|
24
|
+
the loader; nothing is resolved.
|
|
25
|
+
|
|
26
|
+
Returns:
|
|
27
|
+
The arguments by resolver name, as the resolver would receive them,
|
|
28
|
+
in order of appearance; a name nothing references is absent.
|
|
29
|
+
|
|
30
|
+
Raises:
|
|
31
|
+
ConfigError: When a selected resolver's arguments nest another
|
|
32
|
+
interpolation, whose value the caller cannot know as written.
|
|
33
|
+
"""
|
|
34
|
+
if "${" not in text:
|
|
35
|
+
return {}
|
|
36
|
+
# Local imports keep omegaconf out of the import of ``loom.core.config``.
|
|
37
|
+
from omegaconf.grammar.gen.OmegaConfGrammarParser import OmegaConfGrammarParser as Grammar
|
|
38
|
+
from omegaconf.grammar_parser import parse
|
|
39
|
+
from omegaconf.grammar_visitor import GrammarVisitor
|
|
40
|
+
|
|
41
|
+
literal = GrammarVisitor(lambda _key, _memo: None, lambda **_kwargs: None, None)
|
|
42
|
+
found: dict[str, list[str]] = {}
|
|
43
|
+
for node in _parse_nodes(parse(text, parser_rule="configValue")):
|
|
44
|
+
if not isinstance(node, Grammar.InterpolationResolverContext):
|
|
45
|
+
continue
|
|
46
|
+
call: Any = node # the generated parser carries no useful types
|
|
47
|
+
name = call.resolverName().getText()
|
|
48
|
+
if name not in names:
|
|
49
|
+
continue
|
|
50
|
+
sequence = call.sequence()
|
|
51
|
+
if any(isinstance(n, Grammar.InterpolationContext) for n in _parse_nodes(sequence)):
|
|
52
|
+
raise ConfigError(f"nests a placeholder in a {name} key")
|
|
53
|
+
arguments = [] if sequence is None else sequence.element()
|
|
54
|
+
first = str(literal.visitElement(arguments[0])) if arguments else ""
|
|
55
|
+
found.setdefault(name, []).append(first)
|
|
56
|
+
return found
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def _parse_nodes(tree: Any) -> Iterator[Any]:
|
|
60
|
+
"""*tree* and every node under it, parents first; nothing for ``None``."""
|
|
61
|
+
if tree is None:
|
|
62
|
+
return
|
|
63
|
+
yield tree
|
|
64
|
+
for index in range(tree.getChildCount()):
|
|
65
|
+
yield from _parse_nodes(tree.getChild(index))
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
__all__ = ["referenced"]
|
|
@@ -78,7 +78,7 @@ reported across them::
|
|
|
78
78
|
from __future__ import annotations
|
|
79
79
|
|
|
80
80
|
import inspect
|
|
81
|
-
from collections.abc import Sequence
|
|
81
|
+
from collections.abc import Iterator, Sequence
|
|
82
82
|
from dataclasses import dataclass
|
|
83
83
|
from typing import TYPE_CHECKING, Any, NamedTuple, TypeVar
|
|
84
84
|
|
|
@@ -633,3 +633,17 @@ def convert_section(data: Any, key: str, target_type: type[T]) -> T:
|
|
|
633
633
|
raise ConfigError(
|
|
634
634
|
f"Config section {key!r} failed validation as {target_type.__name__!r}: {exc}"
|
|
635
635
|
) from exc
|
|
636
|
+
|
|
637
|
+
|
|
638
|
+
def config_strings(
|
|
639
|
+
node: object, path: tuple[str, ...] = ()
|
|
640
|
+
) -> Iterator[tuple[tuple[str, ...], str]]:
|
|
641
|
+
"""Every string of a configuration *node* as written, with its path of keys and indexes."""
|
|
642
|
+
if isinstance(node, str):
|
|
643
|
+
yield path, node
|
|
644
|
+
elif isinstance(node, dict):
|
|
645
|
+
for key, value in node.items():
|
|
646
|
+
yield from config_strings(value, (*path, str(key)))
|
|
647
|
+
elif isinstance(node, list):
|
|
648
|
+
for index, value in enumerate(node):
|
|
649
|
+
yield from config_strings(value, (*path, str(index)))
|