matrx-orm 3.1.165__tar.gz → 3.1.166__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 (386) hide show
  1. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/PKG-INFO +1 -1
  2. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/__init__.py +2 -0
  3. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/FEATURE.md +5 -0
  4. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/pool_watch.py +56 -2
  5. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/pyproject.toml +1 -1
  6. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_pool_holder_census.py +29 -0
  7. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/.gitignore +0 -0
  8. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/AGENTS.md +0 -0
  9. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/BASE_CLASS_METHODS.md +0 -0
  10. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/CLAUDE.md +0 -0
  11. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/MODEL_API.md +0 -0
  12. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/README.md +0 -0
  13. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/database/orm/extended/managers/ai_model_base.py +0 -0
  14. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/docs/migrations.md +0 -0
  15. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/FEATURE.md +0 -0
  16. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/MODULE_README.md +0 -0
  17. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/adapters/MODULE_README.md +0 -0
  18. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/adapters/__init__.py +0 -0
  19. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/adapters/async_postgresql.py +0 -0
  20. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/adapters/base_adapter.py +0 -0
  21. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/adapters/postgrest_client_adapter.py +0 -0
  22. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/adapters/supabase_adapter.py +0 -0
  23. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/admin/FEATURE.md +0 -0
  24. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/admin/__init__.py +0 -0
  25. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/admin/router.py +0 -0
  26. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/api/__init__.py +0 -0
  27. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/api/auth.py +0 -0
  28. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/api/config.py +0 -0
  29. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/api/handlers.py +0 -0
  30. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/api/protocol.py +0 -0
  31. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/api/server.py +0 -0
  32. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/associations.py +0 -0
  33. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/cache_debug.py +0 -0
  34. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/catalog.py +0 -0
  35. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/catalog_sql.py +0 -0
  36. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/client/MODULE_README.md +0 -0
  37. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/client/__init__.py +0 -0
  38. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/client/postgres_connection.py +0 -0
  39. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/client/postgrest.py +0 -0
  40. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/client/supabase_auth.py +0 -0
  41. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/client/supabase_config.py +0 -0
  42. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/client/supabase_manager.py +0 -0
  43. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/EXTENDED-TASK.md +0 -0
  44. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/MODULE_README.md +0 -0
  45. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/RELATIONS-TASKS.md +0 -0
  46. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/TASKS.md +0 -0
  47. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/__init__.py +0 -0
  48. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/async_db_manager.py +0 -0
  49. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/base.py +0 -0
  50. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/config.py +0 -0
  51. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/connections.py +0 -0
  52. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/db_function.py +0 -0
  53. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/diagnostics.py +0 -0
  54. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/expressions.py +0 -0
  55. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/extended.py +0 -0
  56. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/fields.py +0 -0
  57. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/introspection.py +0 -0
  58. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/listen.py +0 -0
  59. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/loop_filters.py +0 -0
  60. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/model_dto.py +0 -0
  61. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/model_view.py +0 -0
  62. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/one_database.py +0 -0
  63. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/paginator.py +0 -0
  64. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/pool_maintenance.py +0 -0
  65. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/pooler_role.py +0 -0
  66. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/pydantic_bridge.py +0 -0
  67. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/registry.py +0 -0
  68. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/relations.py +0 -0
  69. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/resilience.py +0 -0
  70. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/rls_session.py +0 -0
  71. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/session_context.py +0 -0
  72. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/signals.py +0 -0
  73. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/tls.py +0 -0
  74. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/transaction.py +0 -0
  75. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/types.py +0 -0
  76. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/write_queue.py +0 -0
  77. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/core/write_retry.py +0 -0
  78. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/entity.py +0 -0
  79. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/error_handling.py +0 -0
  80. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/exceptions.py +0 -0
  81. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/extended/__init__.py +0 -0
  82. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/extended/app_error_handler.py +0 -0
  83. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/identity_rule.py +0 -0
  84. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/local_sqlite.py +0 -0
  85. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/middleware/__init__.py +0 -0
  86. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/middleware/base.py +0 -0
  87. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/migrations/MODULE_README.md +0 -0
  88. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/migrations/__init__.py +0 -0
  89. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/migrations/cli.py +0 -0
  90. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/migrations/ddl.py +0 -0
  91. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/migrations/diff.py +0 -0
  92. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/migrations/executor.py +0 -0
  93. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/migrations/integration.py +0 -0
  94. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/migrations/loader.py +0 -0
  95. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/migrations/operations.py +0 -0
  96. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/migrations/state.py +0 -0
  97. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/migrations/table_filter.py +0 -0
  98. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/no_org_assignment.py +0 -0
  99. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/operations/FEATURE.md +0 -0
  100. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/operations/MODULE_README.md +0 -0
  101. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/operations/__init__.py +0 -0
  102. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/operations/bulk_update_values.py +0 -0
  103. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/operations/catalog_select.py +0 -0
  104. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/operations/conflict.py +0 -0
  105. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/operations/conflict_writes.py +0 -0
  106. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/operations/create.py +0 -0
  107. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/operations/db_functions.py +0 -0
  108. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/operations/delete.py +0 -0
  109. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/operations/dynamic_admin.py +0 -0
  110. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/operations/dynamic_crud.py +0 -0
  111. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/operations/graph_walk.py +0 -0
  112. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/operations/latest_rows.py +0 -0
  113. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/operations/queue_claim.py +0 -0
  114. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/operations/read.py +0 -0
  115. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/operations/relational_backfill.py +0 -0
  116. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/operations/staging_load.py +0 -0
  117. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/operations/update.py +0 -0
  118. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/platform_access.py +0 -0
  119. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/platform_db.py +0 -0
  120. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/py.typed +0 -0
  121. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/pytest_lock_guard.py +0 -0
  122. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/pytest_plugin.py +0 -0
  123. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/python_sql/MODULE_README.md +0 -0
  124. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/python_sql/__init__.py +0 -0
  125. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/python_sql/db_objects.py +0 -0
  126. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/python_sql/table_detailed_relationships.py +0 -0
  127. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/python_sql/table_typescript_relationship.py +0 -0
  128. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/query/FEATURE.md +0 -0
  129. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/query/MODULE_README.md +0 -0
  130. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/query/__init__.py +0 -0
  131. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/query/builder.py +0 -0
  132. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/query/executor.py +0 -0
  133. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/resources/__init__.py +0 -0
  134. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/resources/additional-assigners-2026-09-12.json +0 -0
  135. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/resources/org_assignment_trigger_baseline.json +0 -0
  136. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/schema_builder/FEATURE.md +0 -0
  137. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/schema_builder/MODULE_README.md +0 -0
  138. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/schema_builder/__init__.py +0 -0
  139. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/schema_builder/code_handler.py +0 -0
  140. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/schema_builder/codegen_writer.py +0 -0
  141. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/schema_builder/columns.py +0 -0
  142. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/schema_builder/common.py +0 -0
  143. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/schema_builder/diff_preview.py +0 -0
  144. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/schema_builder/entity_capabilities.py +0 -0
  145. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/schema_builder/generator.py +0 -0
  146. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/schema_builder/helpers/__init__.py +0 -0
  147. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/schema_builder/helpers/base_generators.py +0 -0
  148. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/schema_builder/helpers/entity_generators.py +0 -0
  149. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/schema_builder/helpers/git_checker.py +0 -0
  150. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/schema_builder/package_wiring.py +0 -0
  151. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/schema_builder/relationships.py +0 -0
  152. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/schema_builder/runner.py +0 -0
  153. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/schema_builder/schema.py +0 -0
  154. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/schema_builder/schema_manager.py +0 -0
  155. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/schema_builder/tables.py +0 -0
  156. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/schema_builder/views.py +0 -0
  157. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/secrets_battery/FEATURE.md +0 -0
  158. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/secrets_battery/__init__.py +0 -0
  159. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/secrets_battery/attachments.py +0 -0
  160. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/secrets_battery/crypto.py +0 -0
  161. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/secrets_battery/host_authorization.py +0 -0
  162. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/secrets_battery/items.py +0 -0
  163. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/secrets_battery/model.py +0 -0
  164. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/secrets_battery/mutation_receipts.py +0 -0
  165. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/secrets_battery/org_service.py +0 -0
  166. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/secrets_battery/service.py +0 -0
  167. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/session/README.md +0 -0
  168. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/session/__init__.py +0 -0
  169. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/session/coalesce.py +0 -0
  170. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/session/dag.py +0 -0
  171. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/session/errors.py +0 -0
  172. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/session/fallback.py +0 -0
  173. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/session/flush.py +0 -0
  174. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/session/lifecycle.py +0 -0
  175. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/session/managed.py +0 -0
  176. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/session/op.py +0 -0
  177. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/session/reads.py +0 -0
  178. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/session/session.py +0 -0
  179. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/session/telemetry.py +0 -0
  180. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/sql_executor/MODULE_README.md +0 -0
  181. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/sql_executor/__init__.py +0 -0
  182. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/sql_executor/executor.py +0 -0
  183. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/sql_executor/queries.py +0 -0
  184. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/sql_executor/registry.py +0 -0
  185. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/sql_executor/types.py +0 -0
  186. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/sql_executor/utils.py +0 -0
  187. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/state.py +0 -0
  188. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/utils/__init__.py +0 -0
  189. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/utils/sql_utils.py +0 -0
  190. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/utils/type_converters.py +0 -0
  191. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/matrx_orm/write_actor.py +0 -0
  192. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/scripts/git-branches.sh +0 -0
  193. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/scripts/publish.sh +0 -0
  194. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/scripts/release.sh +0 -0
  195. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/MODULE_README.md +0 -0
  196. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/__init__.py +0 -0
  197. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/conftest.py +0 -0
  198. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/MODULE_README.md +0 -0
  199. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/__init__.py +0 -0
  200. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_adapter_registry.py +0 -0
  201. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_admin_db_columns.py +0 -0
  202. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_admin_response_rendering.py +0 -0
  203. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_admin_search_negation.py +0 -0
  204. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_admin_search_sentinels.py +0 -0
  205. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_advisory_lock.py +0 -0
  206. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_agent_message.py +0 -0
  207. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_api_auth.py +0 -0
  208. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_api_config.py +0 -0
  209. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_api_handlers.py +0 -0
  210. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_api_protocol.py +0 -0
  211. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_array_agg_order_by.py +0 -0
  212. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_associations.py +0 -0
  213. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_associations_wiring.py +0 -0
  214. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_bulk_hydration_offload.py +0 -0
  215. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_bulk_update_by_pk.py +0 -0
  216. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_bulk_upsert_increment_set_fields.py +0 -0
  217. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_cache_debug.py +0 -0
  218. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_call_function.py +0 -0
  219. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_case_when.py +0 -0
  220. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_catalog.py +0 -0
  221. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_committed_row_guard.py +0 -0
  222. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_composite_pk_filter.py +0 -0
  223. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_composite_pk_write_paths.py +0 -0
  224. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_config.py +0 -0
  225. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_conflict_target.py +0 -0
  226. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_conflict_writes.py +0 -0
  227. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_connection_codecs.py +0 -0
  228. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_connection_poison_guard.py +0 -0
  229. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_connection_primitives.py +0 -0
  230. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_count_composite_distinct.py +0 -0
  231. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_count_limit_param_leak.py +0 -0
  232. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_db_function_field.py +0 -0
  233. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_ddl_generator.py +0 -0
  234. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_deadlock_retry.py +0 -0
  235. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_derived_table.py +0 -0
  236. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_dirty_tracking.py +0 -0
  237. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_dynamic_crud.py +0 -0
  238. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_exceptions.py +0 -0
  239. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_execute_query_integrity_mapping.py +0 -0
  240. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_expression_primitives.py +0 -0
  241. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_fields.py +0 -0
  242. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_filter_jsonb_agg_array_index.py +0 -0
  243. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_from_alias.py +0 -0
  244. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_fts.py +0 -0
  245. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_func_expression_args.py +0 -0
  246. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_graph_walk.py +0 -0
  247. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_having_annotate_alias.py +0 -0
  248. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_insert_ignore_and_admin_primitives.py +0 -0
  249. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_introspect_rls_policies.py +0 -0
  250. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_join_and_aggregate.py +0 -0
  251. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_latest_rows.py +0 -0
  252. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_listen_notify.py +0 -0
  253. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_local_sqlite.py +0 -0
  254. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_lock_contention_retry.py +0 -0
  255. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_managed_write_guard.py +0 -0
  256. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_matrx_entity.py +0 -0
  257. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_migration_diff_types.py +0 -0
  258. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_migration_loader.py +0 -0
  259. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_model_instance.py +0 -0
  260. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_model_meta.py +0 -0
  261. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_optimistic_concurrency.py +0 -0
  262. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_order_by_expression.py +0 -0
  263. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_org_assignment_inventory.py +0 -0
  264. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_orm_banners_are_client_safe.py +0 -0
  265. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_parameter_name_hydration.py +0 -0
  266. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_patch_jsonb_path.py +0 -0
  267. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_persisted_count.py +0 -0
  268. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_pool_loop_recreation.py +0 -0
  269. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_pool_maintenance.py +0 -0
  270. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_postgrest_filters.py +0 -0
  271. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_pydantic_bridge.py +0 -0
  272. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_query_builder.py +0 -0
  273. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_query_error_detail.py +0 -0
  274. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_query_executor_sql.py +0 -0
  275. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_query_timeout.py +0 -0
  276. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_querybuilder_clone_semantics.py +0 -0
  277. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_queue_claim.py +0 -0
  278. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_read_connection_retry.py +0 -0
  279. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_registry.py +0 -0
  280. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_registry_multi_database.py +0 -0
  281. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_registry_multi_schema.py +0 -0
  282. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_relational_backfill.py +0 -0
  283. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_relations.py +0 -0
  284. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_resilience.py +0 -0
  285. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_rls_session_scope.py +0 -0
  286. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_schema_exists.py +0 -0
  287. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_session_advisory_lock.py +0 -0
  288. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_standalone_write_session_context.py +0 -0
  289. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_state_cache.py +0 -0
  290. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_subquery_filter_raw.py +0 -0
  291. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_subquery_in_filter.py +0 -0
  292. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_subquery_nested_expressions.py +0 -0
  293. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_supabase_auth.py +0 -0
  294. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_supabase_config.py +0 -0
  295. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_tls.py +0 -0
  296. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_transaction_database_identity.py +0 -0
  297. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_typed_join_projection.py +0 -0
  298. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_typed_predicates.py +0 -0
  299. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_update_case_expression.py +0 -0
  300. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_update_subquery.py +0 -0
  301. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_update_with_rebase.py +0 -0
  302. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_upsert_default_leak.py +0 -0
  303. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_upsert_with_conflict.py +0 -0
  304. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_values_jsonb_decode.py +0 -0
  305. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_watched_lifecycle.py +0 -0
  306. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_write_queue_deadline.py +0 -0
  307. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level1/test_write_retry_semantics.py +0 -0
  308. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level2/MODULE_README.md +0 -0
  309. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level2/__init__.py +0 -0
  310. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level2/conftest.py +0 -0
  311. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level2/test_bulk_ops.py +0 -0
  312. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level2/test_cache_integration.py +0 -0
  313. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level2/test_crud.py +0 -0
  314. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level2/test_foreign_keys.py +0 -0
  315. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level2/test_m2m.py +0 -0
  316. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level2/test_manager.py +0 -0
  317. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level2/test_migrations_live.py +0 -0
  318. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level2/test_query_execution.py +0 -0
  319. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level2/test_schema_diff.py +0 -0
  320. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/level2/verify_committed_row_guard_pg17.py +0 -0
  321. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/live_pooler_role.py +0 -0
  322. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/sample_project/.env.example +0 -0
  323. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/sample_project/README.md +0 -0
  324. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/sample_project/__init__.py +0 -0
  325. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/sample_project/generate.py +0 -0
  326. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/sample_project/generated/.gitkeep +0 -0
  327. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/sample_project/matrx_orm.yaml +0 -0
  328. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/sample_project/test_schema_generation.py +0 -0
  329. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/sample_project_desktop/.env.example +0 -0
  330. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/sample_project_desktop/README.md +0 -0
  331. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/sample_project_desktop/__init__.py +0 -0
  332. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/sample_project_desktop/client_example.py +0 -0
  333. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/sample_project_desktop/client_example.ts +0 -0
  334. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/sample_project_desktop/client_supabase_example.py +0 -0
  335. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/sample_project_desktop/server.py +0 -0
  336. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/schema/entity_tests.py +0 -0
  337. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/schema/test_base_generation.py +0 -0
  338. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/schema/test_composite_pk_fk_generation.py +0 -0
  339. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/schema/test_composite_unique_generation.py +0 -0
  340. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/schema/test_dto_identity_generation.py +0 -0
  341. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/schema/test_entity_capability_generation.py +0 -0
  342. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/schema/test_enum_ordering.py +0 -0
  343. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/schema/test_generate_schema.py +0 -0
  344. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/schema/test_junction_analysis.py +0 -0
  345. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/schema/test_multi_schema_output.py +0 -0
  346. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/schema/test_schema_analysis.py +0 -0
  347. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/schema/test_sql_expression_defaults.py +0 -0
  348. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/schema/test_table_relationships_query.py +0 -0
  349. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/schema/test_view_generation.py +0 -0
  350. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/schema_builder/test_array_default_parsing.py +0 -0
  351. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/schema_builder/test_focused_generation_plan.py +0 -0
  352. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/schema_builder/test_host_models_aggregator.py +0 -0
  353. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/session/__init__.py +0 -0
  354. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/session/conftest.py +0 -0
  355. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/session/test_cache_no_downgrade.py +0 -0
  356. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/session/test_capture_poison_proof.py +0 -0
  357. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/session/test_coalesce.py +0 -0
  358. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/session/test_dag.py +0 -0
  359. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/session/test_disk_spill_fallback.py +0 -0
  360. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/session/test_flush_individual_fallback.py +0 -0
  361. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/session/test_governed_write.py +0 -0
  362. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/session/test_managed.py +0 -0
  363. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/session/test_op_enqueue_site.py +0 -0
  364. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/session/test_reads.py +0 -0
  365. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/session/test_record_error_bounded_insert.py +0 -0
  366. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/session/test_record_error_storm.py +0 -0
  367. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/session/test_session.py +0 -0
  368. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/session/test_spill_guard_plugin.py +0 -0
  369. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/test_array_arg_element_type.py +0 -0
  370. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/test_database_name_alias.py +0 -0
  371. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/test_db_functions.py +0 -0
  372. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/test_dynamic_select_unregistered.py +0 -0
  373. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/test_immutable_insert_or_exact_verify.py +0 -0
  374. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/test_keyed_digest.py +0 -0
  375. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/test_model_cls_refactor.py +0 -0
  376. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/test_no_blocking_asyncpg_tls.py +0 -0
  377. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/test_one_database.py +0 -0
  378. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/test_order_by_desc_nulls_last.py +0 -0
  379. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/test_pooler_role_guard.py +0 -0
  380. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/test_secret_audit_names_its_organization.py +0 -0
  381. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/test_secrets_battery.py +0 -0
  382. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/test_secrets_minting_keys.py +0 -0
  383. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/test_shared_lock_guard.py +0 -0
  384. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/test_sql_param_casts.py +0 -0
  385. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/test_sync_twins_guard.py +0 -0
  386. {matrx_orm-3.1.165 → matrx_orm-3.1.166}/tests/test_user_visible_lookup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: matrx-orm
3
- Version: 3.1.165
3
+ Version: 3.1.166
4
4
  Summary: Async-first PostgreSQL ORM with bidirectional migrations, schema introspection, many-to-many relationships, and built-in state caching
5
5
  Project-URL: Homepage, https://github.com/AI-Matrix-Engine/aidream-current
6
6
  Project-URL: Repository, https://github.com/AI-Matrix-Engine/aidream-current
@@ -226,6 +226,7 @@ from .core.pydantic_bridge import (
226
226
  model_json_schema,
227
227
  )
228
228
  from .core.pool_watch import (
229
+ PoolHolderProvenance,
229
230
  PoolHolderSnapshot,
230
231
  PoolSaturationEvent,
231
232
  connection_holder_census,
@@ -657,6 +658,7 @@ __all__ = [
657
658
  "Paginator",
658
659
  "Page",
659
660
  # ── Pool saturation observability ───────────────────────────────────────────
661
+ "PoolHolderProvenance",
660
662
  "PoolHolderSnapshot",
661
663
  "PoolSaturationEvent",
662
664
  "connection_holder_census",
@@ -186,6 +186,11 @@ and invokes host sinks; subsequent retry timeouts do not spam another incident.
186
186
  Once a release returns an idle slot, the alarm re-arms. The final
187
187
  `PoolAcquireTimeoutError.details` carries both the first snapshot and the current
188
188
  census, so retry/persistence casualties preserve the diagnosis.
189
+ The census also carries only identifier-validated request provenance from the
190
+ host-injected context (`request_id`, source/execution labels). It deliberately
191
+ excludes route text, users, arguments, SQL, and arbitrary metadata, so an opaque
192
+ ORM operation can be tied to its producer without turning the saturation sink
193
+ into a request-payload recorder.
189
194
 
190
195
  **Release is bounded and cancellation-safe.** Return/reset runs in a dedicated,
191
196
  shielded task with a 10-second asyncpg release timeout. A holder remains visible
@@ -2,6 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  import asyncio
4
4
  import logging
5
+ import re
5
6
  import time
6
7
  import traceback
7
8
  from collections.abc import AsyncIterator, Callable
@@ -10,14 +11,41 @@ from dataclasses import dataclass
10
11
  from datetime import UTC, datetime
11
12
  from typing import Any, Literal
12
13
 
13
- from pydantic import BaseModel, ConfigDict
14
+ from pydantic import BaseModel, ConfigDict, field_validator
14
15
 
15
- from matrx_utils import vcprint
16
+ from matrx_utils import get_active_context, vcprint
16
17
 
17
18
  logger = logging.getLogger("matrx_orm.pool_watch")
18
19
 
19
20
  _STACK_LIMIT = 24
20
21
  _DISPLAY_STACK_LIMIT = 8
22
+ _PROVENANCE_TEXT = re.compile(r"^[A-Za-z0-9_.:/-]{1,128}$")
23
+
24
+
25
+ class PoolHolderProvenance(BaseModel):
26
+ """Bounded, request-scoped producer identity safe for durable capture."""
27
+
28
+ model_config = ConfigDict(extra="forbid", frozen=True)
29
+
30
+ request_id: str | None = None
31
+ source_app: str | None = None
32
+ source_feature: str | None = None
33
+ origin_class: str | None = None
34
+ execution_kind: str | None = None
35
+ execution_id: str | None = None
36
+
37
+ @field_validator(
38
+ "request_id",
39
+ "source_app",
40
+ "source_feature",
41
+ "origin_class",
42
+ "execution_kind",
43
+ "execution_id",
44
+ mode="before",
45
+ )
46
+ @classmethod
47
+ def _only_bounded_identifiers(cls, value: Any) -> str | None:
48
+ return value if isinstance(value, str) and _PROVENANCE_TEXT.fullmatch(value) else None
21
49
 
22
50
 
23
51
  class PoolHolderSnapshot(BaseModel):
@@ -32,6 +60,7 @@ class PoolHolderSnapshot(BaseModel):
32
60
  acquired_at: datetime
33
61
  checkout_site: str
34
62
  checkout_stack: tuple[str, ...]
63
+ provenance: PoolHolderProvenance = PoolHolderProvenance()
35
64
  current_site: str | None
36
65
  current_stack: tuple[str, ...]
37
66
  task_done: bool
@@ -68,6 +97,7 @@ class _TrackedHolder:
68
97
  acquired_at: datetime
69
98
  checkout_site: str
70
99
  checkout_stack: tuple[str, ...]
100
+ provenance: PoolHolderProvenance
71
101
  state: Literal["held", "releasing"] = "held"
72
102
 
73
103
 
@@ -105,6 +135,26 @@ def _capture_checkout_stack() -> tuple[str, tuple[str, ...]]:
105
135
  return site, formatted
106
136
 
107
137
 
138
+ def _safe_provenance_text(value: Any) -> str | None:
139
+ """Keep only bounded identifier vocabulary; never persist context payloads."""
140
+ return value if isinstance(value, str) and _PROVENANCE_TEXT.fullmatch(value) else None
141
+
142
+
143
+ def _capture_provenance() -> PoolHolderProvenance:
144
+ """Project host request context without coupling this package to that host."""
145
+ context = get_active_context()
146
+ if context is None:
147
+ return PoolHolderProvenance()
148
+ return PoolHolderProvenance(
149
+ request_id=_safe_provenance_text(getattr(context, "request_id", None)),
150
+ source_app=_safe_provenance_text(getattr(context, "source_app", None)),
151
+ source_feature=_safe_provenance_text(getattr(context, "source_feature", None)),
152
+ origin_class=_safe_provenance_text(getattr(context, "origin_class", None)),
153
+ execution_kind=_safe_provenance_text(getattr(context, "execution_kind", None)),
154
+ execution_id=_safe_provenance_text(getattr(context, "execution_id", None)),
155
+ )
156
+
157
+
108
158
  def _task_stack(task: asyncio.Task[Any]) -> tuple[str | None, tuple[str, ...]]:
109
159
  try:
110
160
  frames = task.get_stack(limit=_DISPLAY_STACK_LIMIT)
@@ -122,6 +172,7 @@ def track_connection_holder(config_name: str, connection: Any) -> None:
122
172
  if task is None:
123
173
  return
124
174
  checkout_site, checkout_stack = _capture_checkout_stack()
175
+ provenance = _capture_provenance()
125
176
  tracked = _TrackedHolder(
126
177
  config_name=config_name,
127
178
  connection=connection,
@@ -130,6 +181,7 @@ def track_connection_holder(config_name: str, connection: Any) -> None:
130
181
  acquired_at=datetime.now(UTC),
131
182
  checkout_site=checkout_site,
132
183
  checkout_stack=checkout_stack,
184
+ provenance=provenance,
133
185
  )
134
186
  _holders.setdefault(config_name, {})[id(connection)] = tracked
135
187
 
@@ -166,6 +218,7 @@ def connection_holder_census(config_name: str) -> tuple[PoolHolderSnapshot, ...]
166
218
  acquired_at=tracked.acquired_at,
167
219
  checkout_site=tracked.checkout_site,
168
220
  checkout_stack=tracked.checkout_stack,
221
+ provenance=tracked.provenance,
169
222
  current_site=current_site,
170
223
  current_stack=current_stack,
171
224
  task_done=tracked.task.done(),
@@ -304,6 +357,7 @@ def emit_first_pool_timeout(
304
357
 
305
358
 
306
359
  __all__ = [
360
+ "PoolHolderProvenance",
307
361
  "PoolHolderSnapshot",
308
362
  "PoolSaturationEvent",
309
363
  "connection_holder_census",
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "matrx-orm"
3
- version = "3.1.165"
3
+ version = "3.1.166"
4
4
  description = "Async-first PostgreSQL ORM with bidirectional migrations, schema introspection, many-to-many relationships, and built-in state caching"
5
5
  readme = "README.md"
6
6
  license = { text = "MIT" }
@@ -1,13 +1,16 @@
1
1
  from __future__ import annotations
2
2
 
3
3
  import asyncio
4
+ from types import SimpleNamespace
4
5
  from typing import Any
5
6
 
6
7
  import pytest
7
8
 
8
9
  import matrx_orm.core.async_db_manager as manager_module
10
+ import matrx_orm.core.pool_watch as pool_watch
9
11
  from matrx_orm.core.async_db_manager import AsyncDatabaseManager
10
12
  from matrx_orm.core.pool_watch import (
13
+ PoolHolderProvenance,
11
14
  PoolSaturationEvent,
12
15
  emit_first_pool_timeout,
13
16
  note_pool_recovered,
@@ -47,6 +50,16 @@ class _OneSlotPool:
47
50
  return 1
48
51
 
49
52
 
53
+ def test_holder_provenance_refuses_unbounded_text() -> None:
54
+ provenance = PoolHolderProvenance(
55
+ request_id="request-ok",
56
+ source_feature="not safe; contains request payload",
57
+ )
58
+
59
+ assert provenance.request_id == "request-ok"
60
+ assert provenance.source_feature is None
61
+
62
+
50
63
  @pytest.mark.asyncio
51
64
  async def test_first_acquire_timeout_names_deliberate_long_holder(monkeypatch: Any) -> None:
52
65
  """Reproduce the wedge: a holder waits forever while the next acquire times out."""
@@ -81,6 +94,19 @@ async def test_first_acquire_timeout_names_deliberate_long_holder(monkeypatch: A
81
94
  monkeypatch.setattr(manager_module, "resolve_database_name", lambda name: name)
82
95
  monkeypatch.setattr(manager_module, "get_database_config", lambda _name: {"pool_min": 1})
83
96
  monkeypatch.setattr(manager_module, "POOL_ACQUIRE_RETRIES", 0)
97
+ monkeypatch.setattr(
98
+ pool_watch,
99
+ "get_active_context",
100
+ lambda: SimpleNamespace(
101
+ request_id="req-opaque-exists",
102
+ source_app="aidream-api",
103
+ source_feature="opaque-exists-probe",
104
+ origin_class="api",
105
+ execution_kind=None,
106
+ execution_id=None,
107
+ metadata={"never": "captured"},
108
+ ),
109
+ )
84
110
 
85
111
  async def deliberate_long_holder() -> None:
86
112
  async with AsyncDatabaseManager.get_connection("repro", timeout=0.01):
@@ -102,6 +128,9 @@ async def test_first_acquire_timeout_names_deliberate_long_holder(monkeypatch: A
102
128
  holder = event.holders[0]
103
129
  assert holder.task_name == "deliberate-long-holder"
104
130
  assert "deliberate_long_holder" in holder.checkout_site
131
+ assert holder.provenance.request_id == "req-opaque-exists"
132
+ assert holder.provenance.source_feature == "opaque-exists-probe"
133
+ assert holder.provenance.origin_class == "api"
105
134
  assert holder.current_site is not None
106
135
  assert "deliberate_long_holder" in holder.current_site
107
136
  assert holder.age_seconds >= 0.0
File without changes
File without changes
File without changes
File without changes
File without changes