matrx-orm 3.1.201__tar.gz → 3.1.202__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 (433) hide show
  1. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/PKG-INFO +1 -1
  2. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/schema_builder/diff_preview.py +7 -0
  3. matrx_orm-3.1.202/matrx_orm/schema_builder/excluded_targets.py +93 -0
  4. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/schema_builder/runner.py +7 -0
  5. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/schema_builder/schema_manager.py +26 -0
  6. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/pyproject.toml +1 -1
  7. matrx_orm-3.1.202/tests/schema/test_excluded_fk_targets.py +128 -0
  8. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/.gitignore +0 -0
  9. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/AGENTS.md +0 -0
  10. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/BASE_CLASS_METHODS.md +0 -0
  11. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/CHANGELOG.md +0 -0
  12. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/CLAUDE.md +0 -0
  13. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/MODEL_API.md +0 -0
  14. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/README.md +0 -0
  15. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/database/orm/extended/managers/ai_model_base.py +0 -0
  16. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/docs/migrations.md +0 -0
  17. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/FEATURE.md +0 -0
  18. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/MODULE_README.md +0 -0
  19. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/__init__.py +0 -0
  20. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/adapters/MODULE_README.md +0 -0
  21. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/adapters/__init__.py +0 -0
  22. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/adapters/async_postgresql.py +0 -0
  23. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/adapters/base_adapter.py +0 -0
  24. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/adapters/postgrest_client_adapter.py +0 -0
  25. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/adapters/supabase_adapter.py +0 -0
  26. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/admin/FEATURE.md +0 -0
  27. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/admin/__init__.py +0 -0
  28. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/admin/router.py +0 -0
  29. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/api/__init__.py +0 -0
  30. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/api/auth.py +0 -0
  31. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/api/config.py +0 -0
  32. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/api/handlers.py +0 -0
  33. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/api/protocol.py +0 -0
  34. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/api/server.py +0 -0
  35. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/associations.py +0 -0
  36. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/cache_debug.py +0 -0
  37. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/catalog.py +0 -0
  38. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/catalog_sql.py +0 -0
  39. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/client/MODULE_README.md +0 -0
  40. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/client/__init__.py +0 -0
  41. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/client/postgres_connection.py +0 -0
  42. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/client/postgrest.py +0 -0
  43. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/client/supabase_auth.py +0 -0
  44. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/client/supabase_config.py +0 -0
  45. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/client/supabase_manager.py +0 -0
  46. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/EXTENDED-TASK.md +0 -0
  47. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/FEATURE.md +0 -0
  48. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/MODULE_README.md +0 -0
  49. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/RELATIONS-TASKS.md +0 -0
  50. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/TASKS.md +0 -0
  51. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/__init__.py +0 -0
  52. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/admin_lane.py +0 -0
  53. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/async_db_manager.py +0 -0
  54. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/base.py +0 -0
  55. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/config.py +0 -0
  56. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/connections.py +0 -0
  57. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/db_function.py +0 -0
  58. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/diagnostics.py +0 -0
  59. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/expressions.py +0 -0
  60. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/extended.py +0 -0
  61. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/fields.py +0 -0
  62. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/introspection.py +0 -0
  63. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/listen.py +0 -0
  64. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/loop_filters.py +0 -0
  65. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/model_dto.py +0 -0
  66. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/model_view.py +0 -0
  67. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/one_database.py +0 -0
  68. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/paginator.py +0 -0
  69. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/pool_maintenance.py +0 -0
  70. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/pool_watch.py +0 -0
  71. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/pooler_role.py +0 -0
  72. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/pydantic_bridge.py +0 -0
  73. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/read_write.py +0 -0
  74. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/registry.py +0 -0
  75. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/relations.py +0 -0
  76. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/resilience.py +0 -0
  77. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/rls_session.py +0 -0
  78. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/session_context.py +0 -0
  79. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/signals.py +0 -0
  80. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/statement_ceiling.py +0 -0
  81. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/tls.py +0 -0
  82. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/transaction.py +0 -0
  83. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/types.py +0 -0
  84. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/write_queue.py +0 -0
  85. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/core/write_retry.py +0 -0
  86. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/entity.py +0 -0
  87. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/error_handling.py +0 -0
  88. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/exceptions.py +0 -0
  89. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/extended/__init__.py +0 -0
  90. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/extended/app_error_handler.py +0 -0
  91. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/identity_rule.py +0 -0
  92. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/local_sqlite.py +0 -0
  93. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/middleware/__init__.py +0 -0
  94. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/middleware/base.py +0 -0
  95. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/migrations/MODULE_README.md +0 -0
  96. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/migrations/__init__.py +0 -0
  97. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/migrations/cli.py +0 -0
  98. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/migrations/ddl.py +0 -0
  99. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/migrations/diff.py +0 -0
  100. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/migrations/executor.py +0 -0
  101. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/migrations/integration.py +0 -0
  102. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/migrations/loader.py +0 -0
  103. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/migrations/operations.py +0 -0
  104. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/migrations/state.py +0 -0
  105. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/migrations/table_filter.py +0 -0
  106. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/no_org_assignment.py +0 -0
  107. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/operations/FEATURE.md +0 -0
  108. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/operations/MODULE_README.md +0 -0
  109. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/operations/__init__.py +0 -0
  110. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/operations/bulk_update_values.py +0 -0
  111. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/operations/catalog_select.py +0 -0
  112. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/operations/conflict.py +0 -0
  113. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/operations/conflict_writes.py +0 -0
  114. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/operations/create.py +0 -0
  115. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/operations/db_functions.py +0 -0
  116. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/operations/delete.py +0 -0
  117. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/operations/dynamic_admin.py +0 -0
  118. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/operations/dynamic_crud.py +0 -0
  119. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/operations/graph_walk.py +0 -0
  120. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/operations/latest_rows.py +0 -0
  121. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/operations/queue_claim.py +0 -0
  122. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/operations/read.py +0 -0
  123. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/operations/relational_backfill.py +0 -0
  124. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/operations/staging_load.py +0 -0
  125. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/operations/update.py +0 -0
  126. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/platform_access.py +0 -0
  127. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/platform_db.py +0 -0
  128. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/py.typed +0 -0
  129. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/pytest_live_db_guard.py +0 -0
  130. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/pytest_lock_guard.py +0 -0
  131. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/pytest_plugin.py +0 -0
  132. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/python_sql/MODULE_README.md +0 -0
  133. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/python_sql/__init__.py +0 -0
  134. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/python_sql/db_objects.py +0 -0
  135. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/python_sql/table_detailed_relationships.py +0 -0
  136. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/python_sql/table_typescript_relationship.py +0 -0
  137. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/query/FEATURE.md +0 -0
  138. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/query/MODULE_README.md +0 -0
  139. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/query/__init__.py +0 -0
  140. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/query/builder.py +0 -0
  141. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/query/executor.py +0 -0
  142. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/resources/__init__.py +0 -0
  143. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/resources/additional-assigners-2026-09-12.json +0 -0
  144. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/resources/org_assignment_trigger_baseline.json +0 -0
  145. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/schema_builder/FEATURE.md +0 -0
  146. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/schema_builder/MODULE_README.md +0 -0
  147. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/schema_builder/__init__.py +0 -0
  148. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/schema_builder/code_handler.py +0 -0
  149. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/schema_builder/codegen_writer.py +0 -0
  150. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/schema_builder/columns.py +0 -0
  151. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/schema_builder/common.py +0 -0
  152. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/schema_builder/entity_capabilities.py +0 -0
  153. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/schema_builder/generator.py +0 -0
  154. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/schema_builder/helpers/__init__.py +0 -0
  155. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/schema_builder/helpers/base_generators.py +0 -0
  156. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/schema_builder/helpers/entity_generators.py +0 -0
  157. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/schema_builder/helpers/git_checker.py +0 -0
  158. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/schema_builder/package_wiring.py +0 -0
  159. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/schema_builder/relationships.py +0 -0
  160. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/schema_builder/schema.py +0 -0
  161. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/schema_builder/tables.py +0 -0
  162. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/schema_builder/views.py +0 -0
  163. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/secrets_battery/FEATURE.md +0 -0
  164. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/secrets_battery/__init__.py +0 -0
  165. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/secrets_battery/attachments.py +0 -0
  166. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/secrets_battery/backup_restore.py +0 -0
  167. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/secrets_battery/crypto.py +0 -0
  168. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/secrets_battery/host_authorization.py +0 -0
  169. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/secrets_battery/items.py +0 -0
  170. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/secrets_battery/model.py +0 -0
  171. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/secrets_battery/mutation_receipts.py +0 -0
  172. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/secrets_battery/native_enable.py +0 -0
  173. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/secrets_battery/native_lifecycle.py +0 -0
  174. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/secrets_battery/native_passkeys.py +0 -0
  175. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/secrets_battery/native_source.py +0 -0
  176. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/secrets_battery/org_service.py +0 -0
  177. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/secrets_battery/org_vault_gate.py +0 -0
  178. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/secrets_battery/service.py +0 -0
  179. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/secrets_battery/vault_history.py +0 -0
  180. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/session/README.md +0 -0
  181. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/session/__init__.py +0 -0
  182. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/session/coalesce.py +0 -0
  183. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/session/dag.py +0 -0
  184. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/session/errors.py +0 -0
  185. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/session/fallback.py +0 -0
  186. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/session/flush.py +0 -0
  187. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/session/lifecycle.py +0 -0
  188. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/session/managed.py +0 -0
  189. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/session/op.py +0 -0
  190. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/session/reads.py +0 -0
  191. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/session/session.py +0 -0
  192. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/session/telemetry.py +0 -0
  193. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/sql_executor/MODULE_README.md +0 -0
  194. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/sql_executor/__init__.py +0 -0
  195. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/sql_executor/executor.py +0 -0
  196. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/sql_executor/queries.py +0 -0
  197. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/sql_executor/registry.py +0 -0
  198. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/sql_executor/types.py +0 -0
  199. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/sql_executor/utils.py +0 -0
  200. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/state.py +0 -0
  201. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/utils/__init__.py +0 -0
  202. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/utils/sql_utils.py +0 -0
  203. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/utils/type_converters.py +0 -0
  204. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/matrx_orm/write_actor.py +0 -0
  205. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/scripts/git-branches.sh +0 -0
  206. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/scripts/publish.sh +0 -0
  207. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/scripts/release.sh +0 -0
  208. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/MODULE_README.md +0 -0
  209. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/__init__.py +0 -0
  210. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/conftest.py +0 -0
  211. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/MODULE_README.md +0 -0
  212. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/__init__.py +0 -0
  213. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_adapter_registry.py +0 -0
  214. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_admin_db_columns.py +0 -0
  215. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_admin_response_rendering.py +0 -0
  216. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_admin_search_negation.py +0 -0
  217. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_admin_search_sentinels.py +0 -0
  218. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_advisory_lock.py +0 -0
  219. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_agent_message.py +0 -0
  220. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_api_auth.py +0 -0
  221. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_api_config.py +0 -0
  222. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_api_handlers.py +0 -0
  223. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_api_protocol.py +0 -0
  224. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_array_agg_order_by.py +0 -0
  225. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_association_trigger_actor_naming.py +0 -0
  226. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_associations.py +0 -0
  227. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_associations_wiring.py +0 -0
  228. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_bulk_hydration_offload.py +0 -0
  229. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_bulk_update_by_pk.py +0 -0
  230. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_bulk_upsert_increment_set_fields.py +0 -0
  231. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_cache_debug.py +0 -0
  232. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_call_function.py +0 -0
  233. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_case_when.py +0 -0
  234. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_catalog.py +0 -0
  235. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_column_scoped_writes.py +0 -0
  236. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_committed_row_guard.py +0 -0
  237. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_composite_pk_filter.py +0 -0
  238. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_composite_pk_write_paths.py +0 -0
  239. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_config.py +0 -0
  240. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_conflict_target.py +0 -0
  241. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_conflict_writes.py +0 -0
  242. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_connection_codecs.py +0 -0
  243. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_connection_poison_guard.py +0 -0
  244. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_connection_primitives.py +0 -0
  245. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_count_composite_distinct.py +0 -0
  246. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_count_limit_param_leak.py +0 -0
  247. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_db_function_field.py +0 -0
  248. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_ddl_generator.py +0 -0
  249. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_deadlock_retry.py +0 -0
  250. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_derived_table.py +0 -0
  251. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_dirty_tracking.py +0 -0
  252. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_dynamic_crud.py +0 -0
  253. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_exceptions.py +0 -0
  254. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_execute_query_integrity_mapping.py +0 -0
  255. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_expression_primitives.py +0 -0
  256. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_fields.py +0 -0
  257. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_filter_jsonb_agg_array_index.py +0 -0
  258. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_fk_cycle_resolution.py +0 -0
  259. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_from_alias.py +0 -0
  260. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_fts.py +0 -0
  261. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_func_expression_args.py +0 -0
  262. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_graph_walk.py +0 -0
  263. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_having_annotate_alias.py +0 -0
  264. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_insert_ignore_and_admin_primitives.py +0 -0
  265. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_introspect_rls_policies.py +0 -0
  266. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_join_and_aggregate.py +0 -0
  267. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_latest_rows.py +0 -0
  268. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_listen_notify.py +0 -0
  269. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_local_sqlite.py +0 -0
  270. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_lock_contention_retry.py +0 -0
  271. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_managed_write_guard.py +0 -0
  272. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_matrx_entity.py +0 -0
  273. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_migration_diff_types.py +0 -0
  274. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_migration_loader.py +0 -0
  275. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_model_instance.py +0 -0
  276. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_model_meta.py +0 -0
  277. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_optimistic_concurrency.py +0 -0
  278. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_order_by_expression.py +0 -0
  279. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_org_assignment_inventory.py +0 -0
  280. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_orm_banners_are_client_safe.py +0 -0
  281. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_parameter_name_hydration.py +0 -0
  282. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_patch_jsonb_path.py +0 -0
  283. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_percentile_cont.py +0 -0
  284. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_persisted_count.py +0 -0
  285. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_person_scoped_session_bypasses_shared_cache.py +0 -0
  286. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_pool_create_never_wedges.py +0 -0
  287. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_pool_holder_census.py +0 -0
  288. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_pool_loop_recreation.py +0 -0
  289. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_pool_maintenance.py +0 -0
  290. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_postgrest_filters.py +0 -0
  291. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_pydantic_bridge.py +0 -0
  292. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_query_builder.py +0 -0
  293. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_query_error_detail.py +0 -0
  294. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_query_executor_sql.py +0 -0
  295. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_query_timeout.py +0 -0
  296. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_querybuilder_clone_semantics.py +0 -0
  297. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_queue_claim.py +0 -0
  298. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_read_connection_retry.py +0 -0
  299. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_read_write_declared.py +0 -0
  300. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_registry.py +0 -0
  301. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_registry_multi_database.py +0 -0
  302. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_registry_multi_schema.py +0 -0
  303. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_relational_backfill.py +0 -0
  304. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_relations.py +0 -0
  305. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_resilience.py +0 -0
  306. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_rls_session_scope.py +0 -0
  307. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_schema_exists.py +0 -0
  308. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_session_advisory_lock.py +0 -0
  309. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_standalone_write_session_context.py +0 -0
  310. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_state_cache.py +0 -0
  311. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_subquery_filter_raw.py +0 -0
  312. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_subquery_in_filter.py +0 -0
  313. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_subquery_nested_expressions.py +0 -0
  314. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_supabase_auth.py +0 -0
  315. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_supabase_config.py +0 -0
  316. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_tls.py +0 -0
  317. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_transaction_database_identity.py +0 -0
  318. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_transaction_gucs_one_round_trip.py +0 -0
  319. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_transaction_pool_release_sends_nothing.py +0 -0
  320. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_typed_join_projection.py +0 -0
  321. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_typed_predicates.py +0 -0
  322. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_update_case_expression.py +0 -0
  323. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_update_subquery.py +0 -0
  324. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_update_with_rebase.py +0 -0
  325. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_upsert_default_leak.py +0 -0
  326. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_upsert_with_conflict.py +0 -0
  327. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_values_jsonb_decode.py +0 -0
  328. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_watched_lifecycle.py +0 -0
  329. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_write_queue_deadline.py +0 -0
  330. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level1/test_write_retry_semantics.py +0 -0
  331. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level2/MODULE_README.md +0 -0
  332. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level2/__init__.py +0 -0
  333. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level2/conftest.py +0 -0
  334. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level2/test_bulk_ops.py +0 -0
  335. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level2/test_cache_integration.py +0 -0
  336. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level2/test_crud.py +0 -0
  337. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level2/test_foreign_keys.py +0 -0
  338. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level2/test_m2m.py +0 -0
  339. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level2/test_manager.py +0 -0
  340. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level2/test_migrations_live.py +0 -0
  341. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level2/test_query_execution.py +0 -0
  342. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level2/test_schema_diff.py +0 -0
  343. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/level2/verify_committed_row_guard_pg17.py +0 -0
  344. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/live_pooler_role.py +0 -0
  345. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/native_source_cases.py +0 -0
  346. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/native_source_oracle.rs +0 -0
  347. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/sample_project/.env.example +0 -0
  348. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/sample_project/README.md +0 -0
  349. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/sample_project/__init__.py +0 -0
  350. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/sample_project/generate.py +0 -0
  351. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/sample_project/generated/.gitkeep +0 -0
  352. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/sample_project/matrx_orm.yaml +0 -0
  353. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/sample_project/test_schema_generation.py +0 -0
  354. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/sample_project_desktop/.env.example +0 -0
  355. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/sample_project_desktop/README.md +0 -0
  356. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/sample_project_desktop/__init__.py +0 -0
  357. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/sample_project_desktop/client_example.py +0 -0
  358. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/sample_project_desktop/client_example.ts +0 -0
  359. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/sample_project_desktop/client_supabase_example.py +0 -0
  360. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/sample_project_desktop/server.py +0 -0
  361. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/schema/entity_tests.py +0 -0
  362. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/schema/test_base_generation.py +0 -0
  363. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/schema/test_composite_pk_fk_generation.py +0 -0
  364. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/schema/test_composite_unique_generation.py +0 -0
  365. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/schema/test_dto_identity_generation.py +0 -0
  366. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/schema/test_entity_capability_generation.py +0 -0
  367. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/schema/test_enum_ordering.py +0 -0
  368. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/schema/test_generate_schema.py +0 -0
  369. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/schema/test_junction_analysis.py +0 -0
  370. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/schema/test_multi_schema_output.py +0 -0
  371. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/schema/test_schema_analysis.py +0 -0
  372. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/schema/test_sql_expression_defaults.py +0 -0
  373. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/schema/test_table_relationships_query.py +0 -0
  374. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/schema/test_view_generation.py +0 -0
  375. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/schema_builder/test_array_default_parsing.py +0 -0
  376. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/schema_builder/test_focused_generation_plan.py +0 -0
  377. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/schema_builder/test_host_models_aggregator.py +0 -0
  378. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/schema_builder/test_never_filter_columns.py +0 -0
  379. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/session/__init__.py +0 -0
  380. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/session/conftest.py +0 -0
  381. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/session/test_a_failed_capture_still_names_the_failure.py +0 -0
  382. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/session/test_cache_no_downgrade.py +0 -0
  383. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/session/test_capture_poison_proof.py +0 -0
  384. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/session/test_coalesce.py +0 -0
  385. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/session/test_dag.py +0 -0
  386. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/session/test_disk_spill_fallback.py +0 -0
  387. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/session/test_flush_individual_fallback.py +0 -0
  388. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/session/test_governed_write.py +0 -0
  389. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/session/test_live_db_guard_plugin.py +0 -0
  390. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/session/test_managed.py +0 -0
  391. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/session/test_op_enqueue_site.py +0 -0
  392. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/session/test_reads.py +0 -0
  393. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/session/test_record_error_bounded_insert.py +0 -0
  394. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/session/test_record_error_storm.py +0 -0
  395. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/session/test_session.py +0 -0
  396. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/session/test_spill_guard_plugin.py +0 -0
  397. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_a_backend_handed_over_mid_transaction_never_takes_our_writes.py +0 -0
  398. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_a_read_only_backend_never_refuses_our_writes.py +0 -0
  399. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_array_arg_element_type.py +0 -0
  400. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_attachment_mutation_serialization.py +0 -0
  401. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_backup_alias_conflict.py +0 -0
  402. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_backup_history_restore.py +0 -0
  403. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_backup_restore_live.py +0 -0
  404. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_call_function_as.py +0 -0
  405. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_call_function_none_mode.py +0 -0
  406. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_composite_fk_is_not_a_column_fk.py +0 -0
  407. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_database_name_alias.py +0 -0
  408. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_db_functions.py +0 -0
  409. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_dsn_password_masking.py +0 -0
  410. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_dynamic_select_unregistered.py +0 -0
  411. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_immutable_insert_or_exact_verify.py +0 -0
  412. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_keyed_digest.py +0 -0
  413. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_model_cls_refactor.py +0 -0
  414. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_native_enable.py +0 -0
  415. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_native_lifecycle.py +0 -0
  416. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_native_lifecycle_fences.py +0 -0
  417. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_native_passkey_receipts.py +0 -0
  418. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_native_source.py +0 -0
  419. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_no_blocking_asyncpg_tls.py +0 -0
  420. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_one_database.py +0 -0
  421. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_order_by_desc_nulls_last.py +0 -0
  422. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_org_vault_gate.py +0 -0
  423. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_pooler_role_guard.py +0 -0
  424. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_secret_audit_names_its_organization.py +0 -0
  425. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_secrets_battery.py +0 -0
  426. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_secrets_minting_keys.py +0 -0
  427. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_shared_lock_guard.py +0 -0
  428. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_sql_param_casts.py +0 -0
  429. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_statement_ceiling_warning.py +0 -0
  430. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_sync_twins_guard.py +0 -0
  431. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_update_result_truthiness.py +0 -0
  432. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_user_visible_lookup.py +0 -0
  433. {matrx_orm-3.1.201 → matrx_orm-3.1.202}/tests/test_vault_aggregate_recovery_stateful.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: matrx-orm
3
- Version: 3.1.201
3
+ Version: 3.1.202
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
@@ -725,6 +725,7 @@ def preview_schema_changes(
725
725
  from matrx_orm.core.config import register_database_from_env
726
726
  from matrx_orm.schema_builder.common import DEBUG_CONFIG, OutputConfig
727
727
  from matrx_orm.schema_builder.schema import entry_manager_flags
728
+ from matrx_orm.schema_builder.excluded_targets import excluded_targets, modeled_schemas
728
729
  from matrx_orm.schema_builder.schema_manager import SchemaManager
729
730
 
730
731
  caller_dir = Path(sys.argv[0]).parent.resolve()
@@ -804,6 +805,12 @@ def preview_schema_changes(
804
805
  include_tables=include_tables,
805
806
  exclude_tables=exclude_tables,
806
807
  manager_flags=manager_flags,
808
+ excluded_fk_targets=excluded_targets(cfg.get("generate", []), db_name),
809
+ modeled_schemas=modeled_schemas(
810
+ cfg.get("generate", []),
811
+ db_name,
812
+ next((d.get("additional_schemas") or [] for d in cfg.get("databases", []) if d.get("name") == db_name), []),
813
+ ),
807
814
  )
808
815
  manager.initialize()
809
816
 
@@ -0,0 +1,93 @@
1
+ """A table excluded from generation is excluded as a REFERENCE target too.
2
+
3
+ ``exclude_tables`` under a schema's ``generate[]`` entry keeps that table's model out of the
4
+ schema's file. A table in ANOTHER schema (or the same one) whose foreign key points at it would
5
+ still emit ``ForeignKey(to_model='<Excluded>')`` and a ``get_*_with_related('<schema>.<table>')``
6
+ manager method — a lazy reference that resolves to nothing at runtime and a relation that reads a
7
+ table the host chose not to model. So every reference to an excluded table is dropped at load:
8
+ the column generates as its plain type, and the relation (both directions) is not emitted.
9
+
10
+ The excluded set is qualified (``schema.table``) and spans every ``generate[]`` entry of the same
11
+ database, because the referencing table usually lives in another schema's run.
12
+
13
+ The same holds for a table in a schema the host never models: a foreign key follows its table's
14
+ oid, so once a retired table moves to ``graveyard`` every reference to it reads
15
+ ``to_schema='graveyard'`` — a class the registry can never hold. A reference whose target schema
16
+ is neither generated nor one of the database's ``additional_schemas`` is dropped the same way.
17
+ """
18
+
19
+ from __future__ import annotations
20
+
21
+ from collections.abc import Iterable
22
+ from typing import Any
23
+
24
+
25
+ def excluded_targets(generate_list: Iterable[dict[str, Any]], database: str) -> frozenset[str]:
26
+ """Every ``schema.table`` an ``exclude_tables`` list names for ``database``."""
27
+ out: set[str] = set()
28
+ for entry in generate_list:
29
+ if entry.get("database") != database:
30
+ continue
31
+ schema = entry.get("schema") or "public"
32
+ for table in entry.get("exclude_tables") or ():
33
+ out.add(f"{schema}.{table}")
34
+ return frozenset(out)
35
+
36
+
37
+ def modeled_schemas(
38
+ generate_list: Iterable[dict[str, Any]], database: str, additional_schemas: Iterable[str] = ()
39
+ ) -> frozenset[str]:
40
+ """Every schema the host models for ``database``: the generated ones and its additional schemas."""
41
+ out = {"public", *additional_schemas}
42
+ out.update(e.get("schema") or "public" for e in generate_list if e.get("database") == database)
43
+ return frozenset(out)
44
+
45
+
46
+ def drop_references_to(
47
+ excluded: frozenset[str] | set[str],
48
+ *,
49
+ schema: str,
50
+ processed_objects: list[dict[str, Any]],
51
+ full_relationships: list[dict[str, Any]],
52
+ modeled: frozenset[str] | set[str] | None = None,
53
+ ) -> list[str]:
54
+ """Remove every reference to an excluded table, or into a schema outside ``modeled``, in place.
55
+
56
+ Returns what was dropped, for the log. ``modeled=None`` keeps every schema.
57
+ """
58
+ if not excluded and modeled is None:
59
+ return []
60
+
61
+ def gone(target_schema: str, table: str) -> bool:
62
+ return f"{target_schema}.{table}" in excluded or (modeled is not None and target_schema not in modeled)
63
+
64
+ dropped: list[str] = []
65
+ for obj in processed_objects:
66
+ for column in obj.get("table_columns") or ():
67
+ fk = column.get("foreign_key_reference")
68
+ if not isinstance(fk, dict) or not fk.get("table"):
69
+ continue
70
+ target_schema = fk.get("schema") or "public"
71
+ if gone(target_schema, fk["table"]):
72
+ column["foreign_key_reference"] = None
73
+ dropped.append(
74
+ f"{obj.get('schema')}.{obj.get('name')}.{column.get('name')} -> {target_schema}.{fk['table']}"
75
+ )
76
+ for rel in full_relationships:
77
+ fks = rel.get("foreign_keys")
78
+ if isinstance(fks, dict):
79
+ for key in [
80
+ k
81
+ for k, v in fks.items()
82
+ if isinstance(v, dict) and gone(v.get("foreign_schema") or schema, v.get("foreign_table") or k)
83
+ ]:
84
+ fks.pop(key)
85
+ refs = rel.get("referenced_by")
86
+ if isinstance(refs, dict):
87
+ # Keys of referenced_by are always tables of THIS schema (bare names).
88
+ for key in [k for k in refs if f"{schema}.{k}" in excluded]:
89
+ refs.pop(key)
90
+ return dropped
91
+
92
+
93
+ __all__ = ["drop_references_to", "excluded_targets", "modeled_schemas"]
@@ -19,6 +19,7 @@ from dotenv import load_dotenv
19
19
  from matrx_utils import vcprint
20
20
 
21
21
  from matrx_orm.core.config import DatabaseConfigError, register_database_from_env
22
+ from matrx_orm.schema_builder.excluded_targets import excluded_targets, modeled_schemas
22
23
  from matrx_orm.schema_builder.common import (
23
24
  DEBUG_CONFIG,
24
25
  GenerationOutputOverrides,
@@ -386,6 +387,12 @@ def run_schema_generation(
386
387
  output_config=output_config,
387
388
  include_tables=include_tables,
388
389
  exclude_tables=exclude_tables,
390
+ excluded_fk_targets=excluded_targets(cfg.get("generate", []), db_name),
391
+ modeled_schemas=modeled_schemas(
392
+ cfg.get("generate", []),
393
+ db_name,
394
+ next((d.get("additional_schemas") or [] for d in cfg.get("databases", []) if d.get("name") == db_name), []),
395
+ ),
389
396
  manager_flags=manager_flags,
390
397
  skip_unchanged_managers=skip_unchanged_managers,
391
398
  output_overrides=output_overrides,
@@ -39,6 +39,8 @@ class SchemaManager:
39
39
  manager_flags: dict | None = None,
40
40
  skip_unchanged_managers: bool = False,
41
41
  output_overrides: GenerationOutputOverrides | None = None,
42
+ excluded_fk_targets: frozenset[str] | set[str] | None = None,
43
+ modeled_schemas: frozenset[str] | set[str] | None = None,
42
44
  ):
43
45
  if additional_schemas is None:
44
46
  # Read from the registered database config if a project name is provided;
@@ -93,6 +95,13 @@ class SchemaManager:
93
95
  self._exclude_tables: set[str] | None = (
94
96
  set(exclude_tables) if exclude_tables is not None else None
95
97
  )
98
+ #: ``schema.table`` names excluded from generation in ANY generate[] entry of this database:
99
+ #: a reference to one is dropped at load (``excluded_targets.drop_references_to``).
100
+ self._excluded_fk_targets: frozenset[str] = frozenset(excluded_fk_targets or ())
101
+ #: Schemas the host models; a reference into any other (``graveyard``) is dropped the same way.
102
+ self._modeled_schemas: frozenset[str] | None = (
103
+ frozenset(modeled_schemas) if modeled_schemas is not None else None
104
+ )
96
105
 
97
106
  vcprint(
98
107
  self.schema, title="SCHEMA MANAGER] with schema", verbose=self.verbose, color="blue"
@@ -160,6 +169,23 @@ class SchemaManager:
160
169
  self.overview_analysis,
161
170
  ) = get_db_objects(self.schema.name, self.database_project)
162
171
 
172
+ if self._excluded_fk_targets or self._modeled_schemas is not None:
173
+ from matrx_orm.schema_builder.excluded_targets import drop_references_to
174
+
175
+ dropped = drop_references_to(
176
+ self._excluded_fk_targets,
177
+ schema=self.schema.name or "public",
178
+ processed_objects=self.processed_objects,
179
+ full_relationships=self.full_relationships,
180
+ modeled=self._modeled_schemas,
181
+ )
182
+ if dropped:
183
+ vcprint(
184
+ f"[MATRX ORM] {len(dropped)} reference(s) to an excluded or unmodeled table generate as plain "
185
+ f"columns: {', '.join(dropped)}",
186
+ color="yellow",
187
+ )
188
+
163
189
  # NOTE: no filtering here — all relationship/overview data loads in full so
164
190
  # that topological sort, FK resolution, and relationship analysis are always
165
191
  # correct. The filter is applied in Schema.generate_models() just before
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "matrx-orm"
3
- version = "3.1.201"
3
+ version = "3.1.202"
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" }
@@ -0,0 +1,128 @@
1
+ """A table excluded from generation is excluded as a reference target too (excluded_targets).
2
+
3
+ The host excludes workbench.udt_datasets; extend.wbx_pattern.target_user_table_id and
4
+ workbench.udt_workbooks' inverse relation point at it. Without the rule the generated extend file
5
+ says ``ForeignKey(to_model='UdtDatasets')`` (a lazy reference that resolves to nothing) and the
6
+ managers grow ``get_*_with_related('workbench.udt_datasets')``.
7
+ """
8
+
9
+ from __future__ import annotations
10
+
11
+ from matrx_orm.schema_builder.excluded_targets import drop_references_to, excluded_targets
12
+
13
+ GENERATE = [
14
+ {"database": "main", "schema": "workbench", "exclude_tables": ["udt_datasets"]},
15
+ {"database": "main", "schema": "extend"},
16
+ {"database": "cms", "schema": "public", "exclude_tables": ["udt_datasets"]},
17
+ ]
18
+
19
+
20
+ def _extend_objects() -> list[dict]:
21
+ return [
22
+ {
23
+ "schema": "extend",
24
+ "name": "wbx_pattern",
25
+ "table_columns": [
26
+ {"name": "id", "foreign_key_reference": None},
27
+ {
28
+ "name": "target_user_table_id",
29
+ "foreign_key_reference": {"table": "udt_datasets", "schema": "workbench", "column": "id"},
30
+ },
31
+ {
32
+ "name": "organization_id",
33
+ "foreign_key_reference": {"table": "organizations", "schema": "iam", "column": "id"},
34
+ },
35
+ ],
36
+ }
37
+ ]
38
+
39
+
40
+ def _extend_relationships() -> list[dict]:
41
+ return [
42
+ {
43
+ "table_name": "wbx_pattern",
44
+ "foreign_keys": {
45
+ "workbench.udt_datasets": {"foreign_schema": "workbench", "foreign_table": "udt_datasets"},
46
+ "iam.organizations": {"foreign_schema": "iam", "foreign_table": "organizations"},
47
+ },
48
+ "referenced_by": {},
49
+ }
50
+ ]
51
+
52
+
53
+ def test_the_excluded_set_is_qualified_and_per_database() -> None:
54
+ assert excluded_targets(GENERATE, "main") == frozenset({"workbench.udt_datasets"})
55
+ assert excluded_targets(GENERATE, "cms") == frozenset({"public.udt_datasets"})
56
+
57
+
58
+ def test_a_reference_to_an_excluded_table_becomes_a_plain_column() -> None:
59
+ objects, rels = _extend_objects(), _extend_relationships()
60
+ dropped = drop_references_to(
61
+ excluded_targets(GENERATE, "main"), schema="extend", processed_objects=objects, full_relationships=rels
62
+ )
63
+ columns = {c["name"]: c["foreign_key_reference"] for c in objects[0]["table_columns"]}
64
+ assert columns["target_user_table_id"] is None
65
+ assert columns["organization_id"] == {"table": "organizations", "schema": "iam", "column": "id"}
66
+ assert list(rels[0]["foreign_keys"]) == ["iam.organizations"]
67
+ assert dropped == ["extend.wbx_pattern.target_user_table_id -> workbench.udt_datasets"]
68
+
69
+
70
+ def test_an_inverse_relation_from_an_excluded_table_is_dropped_in_its_own_schema() -> None:
71
+ rels = [
72
+ {
73
+ "table_name": "udt_workbooks",
74
+ "foreign_keys": {},
75
+ "referenced_by": {"udt_datasets": {"column": "workbook_id"}, "udt_workbook_snapshots": {"column": "workbook_id"}},
76
+ },
77
+ {
78
+ "table_name": "udt_dataset_templates",
79
+ "foreign_keys": {"udt_workbooks": {"foreign_schema": "workbench", "foreign_table": "udt_workbooks"}},
80
+ "referenced_by": {},
81
+ },
82
+ ]
83
+ drop_references_to(excluded_targets(GENERATE, "main"), schema="workbench", processed_objects=[], full_relationships=rels)
84
+ assert list(rels[0]["referenced_by"]) == ["udt_workbook_snapshots"]
85
+ assert list(rels[1]["foreign_keys"]) == ["udt_workbooks"]
86
+
87
+
88
+ def test_without_an_exclusion_nothing_changes() -> None:
89
+ objects, rels = _extend_objects(), _extend_relationships()
90
+ assert drop_references_to(frozenset(), schema="extend", processed_objects=objects, full_relationships=rels) == []
91
+ assert objects == _extend_objects() and rels == _extend_relationships()
92
+
93
+
94
+ def test_the_schema_manager_applies_the_rule_at_load(monkeypatch) -> None:
95
+ """The generator's own load path drops the reference (red when SchemaManager ignores the set)."""
96
+ from matrx_orm.schema_builder import schema_manager as sm
97
+
98
+ monkeypatch.setattr(
99
+ sm, "get_db_objects", lambda schema, project: (_extend_objects(), _extend_relationships(), {}, set(), {})
100
+ )
101
+ manager = sm.SchemaManager(
102
+ schema="extend", database_project=None, additional_schemas=[],
103
+ excluded_fk_targets=excluded_targets(GENERATE, "main"),
104
+ )
105
+ manager.set_all_schema_data()
106
+ column = next(c for c in manager.processed_objects[0]["table_columns"] if c["name"] == "target_user_table_id")
107
+ assert column["foreign_key_reference"] is None
108
+ assert list(manager.full_relationships[0]["foreign_keys"]) == ["iam.organizations"]
109
+
110
+
111
+ def test_a_reference_into_an_unmodeled_schema_becomes_a_plain_column() -> None:
112
+ """After step two the FK follows the table into graveyard: to_schema='graveyard' is never a model."""
113
+ from matrx_orm.schema_builder.excluded_targets import modeled_schemas
114
+
115
+ objects = _extend_objects()
116
+ objects[0]["table_columns"][1]["foreign_key_reference"]["schema"] = "graveyard"
117
+ rels = _extend_relationships()
118
+ rels[0]["foreign_keys"] = {
119
+ "graveyard.udt_datasets": {"foreign_schema": "graveyard", "foreign_table": "udt_datasets"},
120
+ "iam.organizations": {"foreign_schema": "iam", "foreign_table": "organizations"},
121
+ }
122
+ modeled = modeled_schemas(GENERATE, "main", ["iam", "auth"])
123
+ assert "graveyard" not in modeled and {"workbench", "extend", "iam", "auth", "public"} <= modeled
124
+ drop_references_to(frozenset(), schema="extend", processed_objects=objects, full_relationships=rels, modeled=modeled)
125
+ columns = {c["name"]: c["foreign_key_reference"] for c in objects[0]["table_columns"]}
126
+ assert columns["target_user_table_id"] is None
127
+ assert columns["organization_id"] is not None
128
+ assert list(rels[0]["foreign_keys"]) == ["iam.organizations"]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes