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.
Files changed (797) hide show
  1. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/CHANGELOG.md +116 -14
  2. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/PKG-INFO +6 -6
  3. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/pyproject.toml +6 -6
  4. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/compiler/phases/_output.py +2 -1
  5. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/compiler/phases/_state.py +2 -1
  6. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_output.py +1 -1
  7. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/fastapi/endpoints.py +2 -1
  8. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/runtime/_grants.py +2 -1
  9. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/runtime/_lifecycle.py +2 -1
  10. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/celery/errors.py +1 -1
  11. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/celery/runner.py +1 -1
  12. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/cli/check.py +4 -1
  13. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/composition/build.py +7 -22
  14. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/repository.py +2 -1
  15. loom_kernel-10.2.0/src/loom/core/config/_interpolations.py +68 -0
  16. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/loader.py +15 -1
  17. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/overrides.py +42 -32
  18. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/resolver.py +20 -1
  19. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/secrets.py +1 -5
  20. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/ssm.py +1 -5
  21. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/discovery/worker.py +9 -0
  22. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/engine/__init__.py +1 -2
  23. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/engine/compiler.py +2 -1
  24. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/engine/executor.py +17 -12
  25. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/engine/post_commit.py +1 -24
  26. loom_kernel-10.2.0/src/loom/core/errors/__init__.py +64 -0
  27. loom_kernel-10.2.0/src/loom/core/errors/auth.py +133 -0
  28. loom_kernel-10.2.0/src/loom/core/errors/base.py +67 -0
  29. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/errors/codes.py +6 -1
  30. loom_kernel-10.2.0/src/loom/core/errors/domain.py +139 -0
  31. loom_kernel-10.2.0/src/loom/core/errors/jobs.py +85 -0
  32. loom_kernel-10.2.0/src/loom/core/errors/model.py +52 -0
  33. loom_kernel-10.2.0/src/loom/core/errors/stores.py +249 -0
  34. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/job/__init__.py +2 -5
  35. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/job/context.py +2 -2
  36. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/job/handle.py +1 -46
  37. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/job/outcome.py +1 -1
  38. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/job/router.py +1 -14
  39. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/__init__.py +0 -4
  40. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/_loom_type.py +1 -48
  41. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/abc/__init__.py +0 -2
  42. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/abc/cursor.py +16 -10
  43. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/dynamodb/repository.py +6 -14
  44. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/mongo/query_compiler.py +2 -2
  45. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/repository.py +1 -1
  46. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/transactional.py +8 -8
  47. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/values.py +2 -2
  48. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/uow/__init__.py +0 -12
  49. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/uow/coordinator.py +1 -23
  50. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/uow/scope.py +7 -158
  51. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/markers.py +5 -0
  52. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/rule.py +1 -1
  53. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/__init__.py +1 -1
  54. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/_format_registry.py +2 -30
  55. loom_kernel-10.2.0/src/loom/etl/runner/errors.py +38 -0
  56. loom_kernel-10.2.0/src/loom/jobs/aws/errors.py +36 -0
  57. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/jobs/aws/sqs.py +14 -18
  58. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/auth/abc.py +3 -35
  59. loom_kernel-10.2.0/src/loom/rest/auth/errors.py +43 -0
  60. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/checks.py +7 -5
  61. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/compiler.py +2 -7
  62. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/errors.py +10 -4
  63. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/fastapi/adapter.py +31 -38
  64. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/fastapi/response.py +2 -1
  65. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/fastapi/router_runtime.py +2 -2
  66. loom_kernel-10.2.0/src/loom/serverless/aws/lambda_/__init__.py +49 -0
  67. loom_kernel-10.2.0/src/loom/serverless/aws/lambda_/_jobs.py +137 -0
  68. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/serverless/aws/lambda_/_refusals.py +6 -5
  69. loom_kernel-10.2.0/src/loom/serverless/aws/lambda_/checks.py +93 -0
  70. loom_kernel-10.2.0/src/loom/serverless/aws/lambda_/errors.py +16 -0
  71. loom_kernel-10.2.0/src/loom/serverless/aws/lambda_/functions.py +260 -0
  72. loom_kernel-10.2.0/src/loom/serverless/aws/lambda_/handler.py +302 -0
  73. loom_kernel-10.2.0/src/loom/serverless/aws/lambda_/interfaces.py +90 -0
  74. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/serverless/aws/lambda_/manifest.py +110 -119
  75. loom_kernel-10.2.0/src/loom/serverless/aws/lambda_/triggers/__init__.py +64 -0
  76. loom_kernel-10.2.0/src/loom/serverless/aws/lambda_/triggers/eventbridge.py +22 -0
  77. {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
  78. loom_kernel-10.2.0/src/loom/serverless/aws/lambda_/triggers/s3.py +88 -0
  79. loom_kernel-10.2.0/src/loom/serverless/aws/lambda_/triggers/schedule.py +16 -0
  80. loom_kernel-10.2.0/src/loom/serverless/aws/lambda_/triggers/sns.py +55 -0
  81. loom_kernel-10.2.0/src/loom/serverless/aws/lambda_/triggers/sqs.py +183 -0
  82. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/_error_boundary.py +1 -1
  83. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_table/common.py +1 -1
  84. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/testing/__init__.py +3 -8
  85. loom_kernel-10.2.0/src/loom/testing/gateway.py +48 -0
  86. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/testing/jobs.py +5 -67
  87. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/testing/lambda_http.py +20 -38
  88. loom_kernel-10.2.0/src/loom/testing/serverless.py +227 -0
  89. loom_kernel-10.1.0/src/loom/core/errors/__init__.py +0 -35
  90. loom_kernel-10.1.0/src/loom/core/errors/errors.py +0 -340
  91. loom_kernel-10.1.0/src/loom/core/repository/abc/errors.py +0 -30
  92. loom_kernel-10.1.0/src/loom/serverless/aws/lambda_/__init__.py +0 -46
  93. loom_kernel-10.1.0/src/loom/serverless/aws/lambda_/functions.py +0 -203
  94. loom_kernel-10.1.0/src/loom/serverless/aws/lambda_/sqs.py +0 -316
  95. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/.gitignore +0 -0
  96. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/LICENSE +0 -0
  97. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/README.md +0 -0
  98. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/__init__.py +0 -0
  99. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/__init__.py +0 -0
  100. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/_concurrency.py +0 -0
  101. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/_filters.py +0 -0
  102. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/_paths.py +0 -0
  103. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/_roles.py +0 -0
  104. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/_startup.py +0 -0
  105. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/_transport.py +0 -0
  106. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/_usecase.py +0 -0
  107. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/a2a/__init__.py +0 -0
  108. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/a2a/_binding.py +0 -0
  109. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/a2a/_handlers.py +0 -0
  110. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/a2a/_rpc.py +0 -0
  111. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/a2a/card.py +0 -0
  112. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/a2a/events.py +0 -0
  113. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/a2a/server.py +0 -0
  114. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/abc.py +0 -0
  115. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/bootstrap.py +0 -0
  116. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/compiler/__init__.py +0 -0
  117. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/compiler/_compiler.py +0 -0
  118. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/compiler/_fingerprint.py +0 -0
  119. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/compiler/_plan.py +0 -0
  120. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/compiler/phases/__init__.py +0 -0
  121. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/compiler/phases/_capabilities.py +0 -0
  122. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/compiler/phases/_conversation.py +0 -0
  123. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/compiler/phases/_feedable.py +0 -0
  124. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/compiler/phases/_hook.py +0 -0
  125. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/compiler/phases/_instructions.py +0 -0
  126. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/compiler/phases/_limits.py +0 -0
  127. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/compiler/phases/_model_role.py +0 -0
  128. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/config.py +0 -0
  129. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/declarative/__init__.py +0 -0
  130. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/declarative/_envelope.py +0 -0
  131. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/declarative/_schema.py +0 -0
  132. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/declarative/_v1.py +0 -0
  133. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/declarative/schemas/agent-spec-v1.schema.json +0 -0
  134. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/describe.py +0 -0
  135. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/__init__.py +0 -0
  136. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/__init__.py +0 -0
  137. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_a2a.py +0 -0
  138. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_capabilities.py +0 -0
  139. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_engine.py +0 -0
  140. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_errors.py +0 -0
  141. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_escape.py +0 -0
  142. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_events.py +0 -0
  143. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_guards.py +0 -0
  144. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_history.py +0 -0
  145. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_instructions.py +0 -0
  146. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_limits.py +0 -0
  147. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_mcp.py +0 -0
  148. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_models.py +0 -0
  149. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_native.py +0 -0
  150. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_returns.py +0 -0
  151. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_schemas.py +0 -0
  152. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/_spec.py +0 -0
  153. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/extras/__init__.py +0 -0
  154. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/extras/a2a.py +0 -0
  155. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/extras/handlebars.py +0 -0
  156. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/extras/mcp.py +0 -0
  157. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/extras/skills.py +0 -0
  158. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/provider.py +0 -0
  159. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/providers/__init__.py +0 -0
  160. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/providers/_shared.py +0 -0
  161. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/providers/anthropic.py +0 -0
  162. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/providers/bedrock.py +0 -0
  163. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/providers/gateway.py +0 -0
  164. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/providers/openai.py +0 -0
  165. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/engines/pydantic_ai/providers/typesafe.py +0 -0
  166. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/errors.py +0 -0
  167. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/etl/__init__.py +0 -0
  168. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/etl/_batch.py +0 -0
  169. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/etl/_columns.py +0 -0
  170. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/etl/_frames.py +0 -0
  171. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/etl/_ledger.py +0 -0
  172. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/etl/_runner.py +0 -0
  173. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/etl/_validation.py +0 -0
  174. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/fastapi/__init__.py +0 -0
  175. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/fastapi/response.py +0 -0
  176. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/fastapi/streaming.py +0 -0
  177. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/inference.py +0 -0
  178. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/pricing.py +0 -0
  179. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/registry.py +0 -0
  180. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/remote_auth.py +0 -0
  181. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/runtime/__init__.py +0 -0
  182. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/runtime/_bounded.py +0 -0
  183. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/runtime/_chain.py +0 -0
  184. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/runtime/_conversation.py +0 -0
  185. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/runtime/_handle.py +0 -0
  186. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/runtime/_health.py +0 -0
  187. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/runtime/_hooks.py +0 -0
  188. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/runtime/_limits.py +0 -0
  189. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/runtime/_mcp.py +0 -0
  190. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/validate/__init__.py +0 -0
  191. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/ai/validate/__main__.py +0 -0
  192. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/celery/__init__.py +0 -0
  193. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/celery/_discovery.py +0 -0
  194. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/celery/adapter.py +0 -0
  195. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/celery/auto.py +0 -0
  196. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/celery/bootstrap.py +0 -0
  197. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/celery/config.py +0 -0
  198. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/celery/constants.py +0 -0
  199. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/celery/service.py +0 -0
  200. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/cli/__init__.py +0 -0
  201. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/cli/app.py +0 -0
  202. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/cli/deploy.py +0 -0
  203. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/cli/schema.py +0 -0
  204. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/composition/__init__.py +0 -0
  205. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/composition/_ai.py +0 -0
  206. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/composition/_jobs.py +0 -0
  207. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/composition/_reserved.py +0 -0
  208. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/composition/_sql.py +0 -0
  209. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/composition/application.py +0 -0
  210. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/composition/errors.py +0 -0
  211. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/composition/host.py +0 -0
  212. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/composition/recipe.py +0 -0
  213. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/composition/resources.py +0 -0
  214. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/composition/source.py +0 -0
  215. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/_async.py +0 -0
  216. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/async_bridge.py +0 -0
  217. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/authz/__init__.py +0 -0
  218. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/authz/_decide.py +0 -0
  219. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/authz/_grants.py +0 -0
  220. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/authz/_roles.py +0 -0
  221. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/authz/_scope.py +0 -0
  222. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/authz/elevation.py +0 -0
  223. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/authz/product.py +0 -0
  224. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/backend/__init__.py +0 -0
  225. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/backend/core_model.py +0 -0
  226. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/backend/protocol.py +0 -0
  227. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/backend/scoped_ddl.py +0 -0
  228. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/backend/sqlalchemy.py +0 -0
  229. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/bootstrap/__init__.py +0 -0
  230. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/bootstrap/bootstrap.py +0 -0
  231. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/bootstrap/kernel.py +0 -0
  232. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/__init__.py +0 -0
  233. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/_batching.py +0 -0
  234. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/_single_flight.py +0 -0
  235. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/abc/__init__.py +0 -0
  236. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/abc/backend.py +0 -0
  237. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/abc/config.py +0 -0
  238. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/abc/dependency.py +0 -0
  239. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/calls.py +0 -0
  240. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/codec.py +0 -0
  241. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/decorators.py +0 -0
  242. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/dependency.py +0 -0
  243. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/errors.py +0 -0
  244. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/gateway.py +0 -0
  245. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/keys.py +0 -0
  246. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/memory.py +0 -0
  247. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/result_codec.py +0 -0
  248. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/serializer.py +0 -0
  249. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/cache/wiring.py +0 -0
  250. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/checks.py +0 -0
  251. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/command/__init__.py +0 -0
  252. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/command/adapter.py +0 -0
  253. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/command/base.py +0 -0
  254. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/command/field.py +0 -0
  255. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/command/introspection.py +0 -0
  256. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/compiler.py +0 -0
  257. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/__init__.py +0 -0
  258. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/_includes.py +0 -0
  259. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/_resolver_utils.py +0 -0
  260. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/aws.py +0 -0
  261. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/binder.py +0 -0
  262. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/checks.py +0 -0
  263. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/configurable.py +0 -0
  264. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/context.py +0 -0
  265. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/convert.py +0 -0
  266. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/errors.py +0 -0
  267. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/keys.py +0 -0
  268. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/model.py +0 -0
  269. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/observability.py +0 -0
  270. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/config/retired.py +0 -0
  271. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/connections/__init__.py +0 -0
  272. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/connections/_base.py +0 -0
  273. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/connections/aws/__init__.py +0 -0
  274. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/connections/aws/client.py +0 -0
  275. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/connections/aws/config.py +0 -0
  276. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/connections/aws/loader.py +0 -0
  277. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/connections/clickhouse/__init__.py +0 -0
  278. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/connections/clickhouse/client.py +0 -0
  279. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/connections/clickhouse/config.py +0 -0
  280. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/connections/clickhouse/loader.py +0 -0
  281. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/connections/mongo/__init__.py +0 -0
  282. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/connections/mongo/client.py +0 -0
  283. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/connections/mongo/config.py +0 -0
  284. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/connections/mongo/loader.py +0 -0
  285. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/connections/relational.py +0 -0
  286. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/contracts/__init__.py +0 -0
  287. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/contracts/manifest.py +0 -0
  288. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/di/__init__.py +0 -0
  289. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/di/container.py +0 -0
  290. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/di/scope.py +0 -0
  291. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/discovery/__init__.py +0 -0
  292. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/discovery/_utils.py +0 -0
  293. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/discovery/base.py +0 -0
  294. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/discovery/config.py +0 -0
  295. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/discovery/interfaces.py +0 -0
  296. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/discovery/manifest.py +0 -0
  297. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/discovery/modules.py +0 -0
  298. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/discovery/worker_manifest.py +0 -0
  299. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/engine/compilable.py +0 -0
  300. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/engine/events.py +0 -0
  301. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/engine/metrics.py +0 -0
  302. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/engine/plan.py +0 -0
  303. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/environment.py +0 -0
  304. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/expr/__init__.py +0 -0
  305. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/expr/eval.py +0 -0
  306. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/expr/nodes.py +0 -0
  307. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/expr/refs.py +0 -0
  308. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/identity/__init__.py +0 -0
  309. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/identity/context.py +0 -0
  310. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/identity/identity.py +0 -0
  311. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/identity/issuer.py +0 -0
  312. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/identity/wire.py +0 -0
  313. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/introspection/__init__.py +0 -0
  314. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/introspection/base.py +0 -0
  315. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/introspection/describe.py +0 -0
  316. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/job/callback.py +0 -0
  317. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/job/config.py +0 -0
  318. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/job/envelope.py +0 -0
  319. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/job/job.py +0 -0
  320. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/job/run.py +0 -0
  321. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/job/service.py +0 -0
  322. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/locator.py +0 -0
  323. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/logger/__init__.py +0 -0
  324. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/logger/abc.py +0 -0
  325. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/logger/checks.py +0 -0
  326. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/logger/config.py +0 -0
  327. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/logger/context.py +0 -0
  328. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/logger/registry.py +0 -0
  329. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/logger/structlogger.py +0 -0
  330. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/_json_schema.py +0 -0
  331. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/base.py +0 -0
  332. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/convert.py +0 -0
  333. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/enums.py +0 -0
  334. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/field.py +0 -0
  335. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/introspection.py +0 -0
  336. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/partition.py +0 -0
  337. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/privilege.py +0 -0
  338. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/projection.py +0 -0
  339. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/redaction.py +0 -0
  340. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/relation.py +0 -0
  341. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/scoped.py +0 -0
  342. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/struct.py +0 -0
  343. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/timestamped.py +0 -0
  344. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/types.py +0 -0
  345. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/model/types_postgres.py +0 -0
  346. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/observability/__init__.py +0 -0
  347. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/observability/config.py +0 -0
  348. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/observability/event.py +0 -0
  349. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/observability/observer/__init__.py +0 -0
  350. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/observability/observer/noop.py +0 -0
  351. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/observability/observer/otel.py +0 -0
  352. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/observability/observer/structlog.py +0 -0
  353. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/observability/otel_ids.py +0 -0
  354. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/observability/protocol.py +0 -0
  355. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/observability/runtime.py +0 -0
  356. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/observability/span.py +0 -0
  357. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/observability/topology.py +0 -0
  358. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/persistence/__init__.py +0 -0
  359. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/persistence/abc.py +0 -0
  360. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/persistence/database.py +0 -0
  361. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/persistence/elevation.py +0 -0
  362. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/persistence/none.py +0 -0
  363. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/persistence/profile.py +0 -0
  364. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/persistence/registry.py +0 -0
  365. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/persistence/stores.py +0 -0
  366. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/plugins/__init__.py +0 -0
  367. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/plugins/entrypoints.py +0 -0
  368. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/plugins/optional.py +0 -0
  369. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/projection/__init__.py +0 -0
  370. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/projection/loaders.py +0 -0
  371. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/projection/runtime.py +0 -0
  372. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/__init__.py +0 -0
  373. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/abc/checks.py +0 -0
  374. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/abc/query.py +0 -0
  375. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/abc/query_compiler.py +0 -0
  376. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/abc/repo_for.py +0 -0
  377. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/abc/repository.py +0 -0
  378. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/abc/session_scope.py +0 -0
  379. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/dynamodb/__init__.py +0 -0
  380. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/dynamodb/backend.py +0 -0
  381. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/dynamodb/registry.py +0 -0
  382. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/dynamodb/uow.py +0 -0
  383. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/mongo/__init__.py +0 -0
  384. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/mongo/backend.py +0 -0
  385. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/mongo/ids.py +0 -0
  386. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/mongo/registry.py +0 -0
  387. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/mongo/repository.py +0 -0
  388. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/mongo/uow.py +0 -0
  389. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/mongo/values.py +0 -0
  390. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/mutation.py +0 -0
  391. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/registration.py +0 -0
  392. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/registry.py +0 -0
  393. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/__init__.py +0 -0
  394. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/_pool_metrics.py +0 -0
  395. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/backend.py +0 -0
  396. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/integrity.py +0 -0
  397. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/loaders.py +0 -0
  398. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/migrations/__init__.py +0 -0
  399. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/migrations/env_template.py +0 -0
  400. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/migrations/hook.py +0 -0
  401. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/migrations/operations.py +0 -0
  402. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/migrations/runners.py +0 -0
  403. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/mixins.py +0 -0
  404. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/model.py +0 -0
  405. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/profile_loader.py +0 -0
  406. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/projection.py +0 -0
  407. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/query_compiler/__init__.py +0 -0
  408. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/query_compiler/compiler.py +0 -0
  409. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/query_compiler/cursor.py +0 -0
  410. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/query_compiler/errors.py +0 -0
  411. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/query_compiler/filters.py +0 -0
  412. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/query_compiler/ordering.py +0 -0
  413. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/query_compiler/paths.py +0 -0
  414. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/query_compiler/subquery.py +0 -0
  415. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/registry.py +0 -0
  416. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/rls/__init__.py +0 -0
  417. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/rls/bootstrap.py +0 -0
  418. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/rls/config.py +0 -0
  419. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/rls/elevate.py +0 -0
  420. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/rls/guard/0001.sql +0 -0
  421. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/rls/guard/0002.sql +0 -0
  422. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/rls/guard/preflight.sql +0 -0
  423. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/rls/guard_manifest.py +0 -0
  424. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/rls/integrity.py +0 -0
  425. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/rls/partitions.py +0 -0
  426. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/rls/provider.py +0 -0
  427. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/rls/schema.py +0 -0
  428. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/rls/sources.py +0 -0
  429. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/rls/verify.py +0 -0
  430. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/session_manager.py +0 -0
  431. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/session_settings.py +0 -0
  432. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/repository/sqlalchemy/uow.py +0 -0
  433. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/response/__init__.py +0 -0
  434. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/response/base.py +0 -0
  435. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/routing/__init__.py +0 -0
  436. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/routing/ref.py +0 -0
  437. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/routing/resolver.py +0 -0
  438. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/runner.py +0 -0
  439. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/schema/__init__.py +0 -0
  440. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/schema/schema_mode.py +0 -0
  441. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/schema_names.py +0 -0
  442. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/sql/__init__.py +0 -0
  443. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/sql/abc/__init__.py +0 -0
  444. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/sql/abc/contracts.py +0 -0
  445. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/sql/abc/errors.py +0 -0
  446. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/sql/caller_bound.py +0 -0
  447. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/sql/clickhouse/__init__.py +0 -0
  448. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/sql/clickhouse/_client.py +0 -0
  449. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/sql/clickhouse/executor.py +0 -0
  450. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/sql/clickhouse/registry.py +0 -0
  451. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/sql/config.py +0 -0
  452. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/sql/loader.py +0 -0
  453. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/sql/roles.py +0 -0
  454. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/sql/service.py +0 -0
  455. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/symbols.py +0 -0
  456. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/tracing/__init__.py +0 -0
  457. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/tracing/context.py +0 -0
  458. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/transport/__init__.py +0 -0
  459. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/transport/adapter.py +0 -0
  460. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/uow/abc.py +0 -0
  461. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/uow/alone.py +0 -0
  462. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/__init__.py +0 -0
  463. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/_predicates.py +0 -0
  464. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/agent_markers.py +0 -0
  465. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/compute.py +0 -0
  466. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/constants.py +0 -0
  467. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/errors.py +0 -0
  468. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/factory.py +0 -0
  469. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/field_ref.py +0 -0
  470. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/invoker.py +0 -0
  471. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/joined.py +0 -0
  472. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/keys.py +0 -0
  473. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/mcp_markers.py +0 -0
  474. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/outcome.py +0 -0
  475. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/registry.py +0 -0
  476. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/core/use_case/use_case.py +0 -0
  477. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/_uri.py +0 -0
  478. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/__init__.py +0 -0
  479. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/_historify/__init__.py +0 -0
  480. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/_historify/_common.py +0 -0
  481. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/_historify/_log.py +0 -0
  482. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/_historify/_ops.py +0 -0
  483. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/_historify/_snapshot.py +0 -0
  484. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/_historify/_transform.py +0 -0
  485. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/_merge.py +0 -0
  486. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/_path_template.py +0 -0
  487. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/_predicate.py +0 -0
  488. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/_schema_aligner/__init__.py +0 -0
  489. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/_schema_aligner/_aligner.py +0 -0
  490. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/_schema_aligner/_policy.py +0 -0
  491. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/_write_policy.py +0 -0
  492. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/polars/__init__.py +0 -0
  493. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/polars/_dtype.py +0 -0
  494. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/polars/_file_writer.py +0 -0
  495. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/polars/_frame.py +0 -0
  496. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/polars/_historify.py +0 -0
  497. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/polars/_predicate.py +0 -0
  498. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/polars/_reader.py +0 -0
  499. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/polars/_schema.py +0 -0
  500. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/polars/_schema_aligner.py +0 -0
  501. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/polars/_streaming.py +0 -0
  502. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/polars/_writer.py +0 -0
  503. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/polars/provider.py +0 -0
  504. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/spark/__init__.py +0 -0
  505. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/spark/_dtype.py +0 -0
  506. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/spark/_historify.py +0 -0
  507. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/spark/_reader.py +0 -0
  508. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/spark/_schema.py +0 -0
  509. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/spark/_schema_aligner.py +0 -0
  510. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/spark/_writer.py +0 -0
  511. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/backends/spark/provider.py +0 -0
  512. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/checkpoint/__init__.py +0 -0
  513. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/checkpoint/_backends/_memory.py +0 -0
  514. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/checkpoint/_backends/_polars.py +0 -0
  515. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/checkpoint/_backends/_spark.py +0 -0
  516. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/checkpoint/_cleaners.py +0 -0
  517. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/checkpoint/_options.py +0 -0
  518. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/checkpoint/_paths.py +0 -0
  519. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/checkpoint/_scope.py +0 -0
  520. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/checkpoint/_store.py +0 -0
  521. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/compiler/__init__.py +0 -0
  522. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/compiler/_binding.py +0 -0
  523. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/compiler/_compiler.py +0 -0
  524. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/compiler/_errors.py +0 -0
  525. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/compiler/_filter.py +0 -0
  526. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/compiler/_plan.py +0 -0
  527. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/compiler/_validators.py +0 -0
  528. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/compiler/_validators_agents.py +0 -0
  529. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/compiler/_validators_config.py +0 -0
  530. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/compiler/_validators_plan.py +0 -0
  531. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/compiler/_validators_step.py +0 -0
  532. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/__init__.py +0 -0
  533. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/_format.py +0 -0
  534. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/_read_options.py +0 -0
  535. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/_utils.py +0 -0
  536. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/_with_agent.py +0 -0
  537. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/_write_options.py +0 -0
  538. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/expr/__init__.py +0 -0
  539. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/expr/_params.py +0 -0
  540. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/expr/_predicate.py +0 -0
  541. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/expr/_predicate_dialect.py +0 -0
  542. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/expr/_refs.py +0 -0
  543. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/source/__init__.py +0 -0
  544. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/source/_from.py +0 -0
  545. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/source/_from_clickhouse.py +0 -0
  546. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/source/_from_config.py +0 -0
  547. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/source/_from_dynamodb.py +0 -0
  548. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/source/_from_mongo.py +0 -0
  549. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/source/_specs.py +0 -0
  550. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/target/__init__.py +0 -0
  551. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/target/_client.py +0 -0
  552. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/target/_errors.py +0 -0
  553. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/target/_file.py +0 -0
  554. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/target/_history/__init__.py +0 -0
  555. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/target/_history/_builder.py +0 -0
  556. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/target/_history/_enums.py +0 -0
  557. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/target/_history/_errors.py +0 -0
  558. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/target/_history/_report.py +0 -0
  559. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/target/_history/_spec.py +0 -0
  560. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/target/_into.py +0 -0
  561. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/target/_table.py +0 -0
  562. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/declarative/target/_temp.py +0 -0
  563. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/executor/__init__.py +0 -0
  564. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/executor/_agents.py +0 -0
  565. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/executor/_dispatcher.py +0 -0
  566. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/executor/_executor.py +0 -0
  567. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/io/__init__.py +0 -0
  568. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/io/_clickhouse_connection.py +0 -0
  569. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/io/_registry.py +0 -0
  570. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/io/sources/__init__.py +0 -0
  571. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/io/sources/_clickhouse.py +0 -0
  572. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/io/sources/_dynamodb.py +0 -0
  573. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/io/sources/_dynamodb_items.py +0 -0
  574. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/io/sources/_dynamodb_predicate.py +0 -0
  575. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/io/sources/_mongo.py +0 -0
  576. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/io/sources/_mongo_batch.py +0 -0
  577. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/io/sources/_mongo_bson.py +0 -0
  578. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/io/sources/_mongo_predicate.py +0 -0
  579. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/io/sources/_serialization.py +0 -0
  580. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/io/targets/__init__.py +0 -0
  581. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/io/targets/_clickhouse.py +0 -0
  582. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/lineage/__init__.py +0 -0
  583. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/lineage/_config.py +0 -0
  584. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/lineage/_observer.py +0 -0
  585. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/lineage/_records.py +0 -0
  586. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/lineage/sinks/__init__.py +0 -0
  587. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/lineage/sinks/_protocol.py +0 -0
  588. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/lineage/sinks/_table.py +0 -0
  589. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/lineage/sinks/_writer.py +0 -0
  590. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/maintenance/__init__.py +0 -0
  591. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/maintenance/_builder.py +0 -0
  592. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/maintenance/_ops.py +0 -0
  593. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/maintenance/_protocol.py +0 -0
  594. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/maintenance/_runner.py +0 -0
  595. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/maintenance/_step.py +0 -0
  596. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/maintenance/backends/__init__.py +0 -0
  597. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/maintenance/backends/_delta_rs.py +0 -0
  598. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/pipeline/__init__.py +0 -0
  599. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/pipeline/_generics.py +0 -0
  600. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/pipeline/_params.py +0 -0
  601. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/pipeline/_pipeline.py +0 -0
  602. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/pipeline/_process.py +0 -0
  603. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/pipeline/_sql.py +0 -0
  604. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/pipeline/_step.py +0 -0
  605. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/pipeline/_step_client.py +0 -0
  606. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/pipeline/_step_sql.py +0 -0
  607. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/runner/__init__.py +0 -0
  608. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/runner/_agents.py +0 -0
  609. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/runner/_providers.py +0 -0
  610. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/runner/_wiring.py +0 -0
  611. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/runner/config_loader.py +0 -0
  612. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/runner/core.py +0 -0
  613. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/runtime/__init__.py +0 -0
  614. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/runtime/_config_values.py +0 -0
  615. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/runtime/contracts.py +0 -0
  616. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/schema/__init__.py +0 -0
  617. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/schema/_contract.py +0 -0
  618. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/schema/_schema.py +0 -0
  619. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/storage/__init__.py +0 -0
  620. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/storage/_config.py +0 -0
  621. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/storage/_file_locator.py +0 -0
  622. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/storage/_locator.py +0 -0
  623. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/storage/routing.py +0 -0
  624. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/testing/__init__.py +0 -0
  625. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/testing/_delta.py +0 -0
  626. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/testing/_result.py +0 -0
  627. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/testing/_runners.py +0 -0
  628. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/testing/_scenario.py +0 -0
  629. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/testing/_stubs.py +0 -0
  630. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/etl/testing/spark.py +0 -0
  631. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/jobs/__init__.py +0 -0
  632. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/jobs/aws/__init__.py +0 -0
  633. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/__init__.py +0 -0
  634. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/_async.py +0 -0
  635. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/_config.py +0 -0
  636. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/_ctx.py +0 -0
  637. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/_flow_yaml.py +0 -0
  638. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/_meta.py +0 -0
  639. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/_placeholders.py +0 -0
  640. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/_summary.py +0 -0
  641. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/deploy/__init__.py +0 -0
  642. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/deploy/_discovery.py +0 -0
  643. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/deploy/_schedule.py +0 -0
  644. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/deploy/_yaml_etls.py +0 -0
  645. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/deploy/entrypoint.py +0 -0
  646. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/flow/__init__.py +0 -0
  647. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/flow/_assemble.py +0 -0
  648. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/flow/_backfill.py +0 -0
  649. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/flow/_backfill_body.py +0 -0
  650. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/flow/_body.py +0 -0
  651. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/flow/_common.py +0 -0
  652. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/flow/_factory.py +0 -0
  653. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/flow/_hooks.py +0 -0
  654. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/flow/_maintenance.py +0 -0
  655. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/flow/_params.py +0 -0
  656. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/flow/_run_name.py +0 -0
  657. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/flow/_runtime.py +0 -0
  658. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/flow/_signature.py +0 -0
  659. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/flow/_stages.py +0 -0
  660. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/manifest/__init__.py +0 -0
  661. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/manifest/_model.py +0 -0
  662. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/manifest/_s3.py +0 -0
  663. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/manifest/_store.py +0 -0
  664. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/notify/__init__.py +0 -0
  665. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/notify/_event.py +0 -0
  666. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/notify/_factory.py +0 -0
  667. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/notify/_format.py +0 -0
  668. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/notify/_port.py +0 -0
  669. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/notify/_slack.py +0 -0
  670. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/notify/_sns.py +0 -0
  671. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/observer/__init__.py +0 -0
  672. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/observer/_flow.py +0 -0
  673. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/observer/_logging_bridge.py +0 -0
  674. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/observer/_manifest.py +0 -0
  675. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prefect/observer/_task_run.py +0 -0
  676. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prometheus/__init__.py +0 -0
  677. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prometheus/_instruments.py +0 -0
  678. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prometheus/adapter.py +0 -0
  679. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prometheus/db_pool.py +0 -0
  680. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prometheus/kafka.py +0 -0
  681. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prometheus/lifecycle.py +0 -0
  682. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/prometheus/middleware.py +0 -0
  683. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/py.typed +0 -0
  684. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/__init__.py +0 -0
  685. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/_body.py +0 -0
  686. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/adapter.py +0 -0
  687. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/auth/__init__.py +0 -0
  688. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/auth/config.py +0 -0
  689. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/auth/jwt.py +0 -0
  690. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/auth/middleware.py +0 -0
  691. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/autocrud.py +0 -0
  692. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/config.py +0 -0
  693. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/constants.py +0 -0
  694. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/cors.py +0 -0
  695. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/fastapi/__init__.py +0 -0
  696. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/fastapi/_auto_ai.py +0 -0
  697. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/fastapi/_auto_auth.py +0 -0
  698. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/fastapi/_auto_sql.py +0 -0
  699. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/fastapi/_errors.py +0 -0
  700. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/fastapi/_exclusions.py +0 -0
  701. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/fastapi/app.py +0 -0
  702. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/fastapi/auto.py +0 -0
  703. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/fastapi/health.py +0 -0
  704. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/fastapi/openapi.py +0 -0
  705. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/fastapi/sql.py +0 -0
  706. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/middleware.py +0 -0
  707. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/model.py +0 -0
  708. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/rest/rest_adapter.py +0 -0
  709. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/serverless/__init__.py +0 -0
  710. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/serverless/aws/__init__.py +0 -0
  711. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/__init__.py +0 -0
  712. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/__init__.py +0 -0
  713. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/_adapter.py +0 -0
  714. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/_batch_spans.py +0 -0
  715. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/_commit_tracker.py +0 -0
  716. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/_errors.py +0 -0
  717. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/_operators.py +0 -0
  718. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/_resource_manager.py +0 -0
  719. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/_runtime_io.py +0 -0
  720. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/_sink_registry.py +0 -0
  721. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/handlers/__init__.py +0 -0
  722. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/handlers/_shared.py +0 -0
  723. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/handlers/boundary.py +0 -0
  724. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/handlers/dispatcher.py +0 -0
  725. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/handlers/routing.py +0 -0
  726. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/handlers/scopes.py +0 -0
  727. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/handlers/shapes.py +0 -0
  728. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/handlers/steps.py +0 -0
  729. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/handlers/storage.py +0 -0
  730. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/bytewax/runner.py +0 -0
  731. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/compiler/__init__.py +0 -0
  732. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/compiler/_bindings.py +0 -0
  733. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/compiler/_compiler.py +0 -0
  734. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/compiler/_errors.py +0 -0
  735. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/compiler/_plan.py +0 -0
  736. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/compiler/phases/build_plan.py +0 -0
  737. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/compiler/phases/validate.py +0 -0
  738. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/core/__init__.py +0 -0
  739. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/core/_errors.py +0 -0
  740. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/core/_exceptions.py +0 -0
  741. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/core/_message.py +0 -0
  742. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/core/_tracing.py +0 -0
  743. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/core/_typing.py +0 -0
  744. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/graph/__init__.py +0 -0
  745. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/graph/_flow.py +0 -0
  746. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/__init__.py +0 -0
  747. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/_codec.py +0 -0
  748. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/_config.py +0 -0
  749. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/_errors.py +0 -0
  750. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/_key_resolver.py +0 -0
  751. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/_message.py +0 -0
  752. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/_record.py +0 -0
  753. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/_wire.py +0 -0
  754. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/client/__init__.py +0 -0
  755. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/client/_consumer.py +0 -0
  756. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/client/_producer.py +0 -0
  757. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/client/_protocol.py +0 -0
  758. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/client/_retry.py +0 -0
  759. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/message/__init__.py +0 -0
  760. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/message/_consumer.py +0 -0
  761. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/message/_producer.py +0 -0
  762. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/kafka/message/_protocol.py +0 -0
  763. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/mongo/__init__.py +0 -0
  764. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/mongo/_bytewax_source.py +0 -0
  765. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/mongo/_config.py +0 -0
  766. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/mongo/_event.py +0 -0
  767. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/mongo/_normalize.py +0 -0
  768. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/__init__.py +0 -0
  769. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_boundary.py +0 -0
  770. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_branches.py +0 -0
  771. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_broadcast.py +0 -0
  772. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_capabilities.py +0 -0
  773. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_decompose.py +0 -0
  774. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_expand_routes.py +0 -0
  775. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_expr_eval.py +0 -0
  776. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_fork.py +0 -0
  777. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_helpers.py +0 -0
  778. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_mongo.py +0 -0
  779. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_protocols.py +0 -0
  780. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_router.py +0 -0
  781. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_shape.py +0 -0
  782. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_sink.py +0 -0
  783. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_step.py +0 -0
  784. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_table/__init__.py +0 -0
  785. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_table/_clickhouse.py +0 -0
  786. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_table/_delta.py +0 -0
  787. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_table/_sqlalchemy.py +0 -0
  788. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_table/config.py +0 -0
  789. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/_with.py +0 -0
  790. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/nodes/refs.py +0 -0
  791. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/streaming/testing.py +0 -0
  792. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/testing/agents.py +0 -0
  793. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/testing/golden.py +0 -0
  794. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/testing/http_harness.py +0 -0
  795. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/testing/in_memory.py +0 -0
  796. {loom_kernel-10.1.0 → loom_kernel-10.2.0}/src/loom/testing/repository_harness.py +0 -0
  797. {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` the Lambda SQS adapter runs. `sqs:` inherits `aws:`.
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. `lambda.functions.<name>` with `sqs: true` declares `batch_size`,
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: 1`) of each function of
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 http routes and `auth` or its sqs queue
31
- and event source mapping, and the secret and SSM parameter names it
32
- resolves (never values; no resolver runs). It runs the deploy
33
- checks of `loom check --deploy` first, prints their findings to stderr and
34
- no manifest when one fails. New keys: `lambda.handler` and
35
- `lambda.functions.<name>.queue` (a key of `sqs.queues`), both required by
36
- the manifest only.
37
- - **rest:** `loom.rest.E001` also fails a `lambda.functions.<name>.auth`
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; `sqs_record` and
46
- `sqs_raw_record` drive the SQS handler with the `JobEnvelope`
47
- `SQSJobService` sends; `RecordingJobService`
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.1.0
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<3.0,>=2.3
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<3.0,>=2.3; extra == 'cache'
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<3.0,>=2.3; extra == 'config'
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<3.0,>=2.3; extra == 'config-ssm'
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<3.0,>=2.3; extra == 'prefect'
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,<3.0",
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,<3.0",
65
+ "omegaconf>=2.3,<2.4",
66
66
  "fsspec>=2024.2.0",
67
67
  ]
68
68
  config-ssm = [
69
- "omegaconf>=2.3,<3.0",
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,<3.0",
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,<3.0",
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,<3.0",
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.model import LoomType, UnsupportedBoundaryType, loom_type, msgspec_type
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.model import UnsupportedBoundaryType, loom_type, msgspec_type
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.model import BoundaryValidationError
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 BoundaryValidationError, LoomFrozenStruct
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 BoundaryValidationError, UnsupportedBoundaryType, loom_type_of
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 BoundaryValidationError, LoomType
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
 
@@ -4,7 +4,7 @@ from __future__ import annotations
4
4
 
5
5
  import re
6
6
 
7
- from loom.core.errors.errors import SystemError
7
+ from loom.core.errors import SystemError
8
8
  from loom.core.model.redaction import mask_dsn
9
9
 
10
10
  _ADDRESS = re.compile(r"[A-Za-z][A-Za-z0-9+.-]*://\S+")
@@ -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.engine.post_commit.PostCommitError` whose
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``, ``lambda_http``,
104
- ``lambda_sqs`` or a function of ``lambda.functions``.
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 _lambda_http() -> Adapter[object]:
144
- from loom.serverless.aws.lambda_.http import LambdaHTTPAdapter
143
+ def _lambda(function: str | None = None) -> Adapter[object]:
144
+ from loom.serverless.aws.lambda_.handler import LambdaAdapter
145
145
 
146
- return LambdaHTTPAdapter()
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
- "lambda_http": _lambda_http,
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 BoundaryValidationError, LoomType, is_pydantic_model, loom_type_of
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)))