matrx-orm 3.1.184__tar.gz → 3.1.185__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 (415) hide show
  1. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/PKG-INFO +1 -1
  2. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/secrets_battery/backup_restore.py +10 -0
  3. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/secrets_battery/vault_history.py +25 -2
  4. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/pyproject.toml +1 -1
  5. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_backup_history_restore.py +16 -1
  6. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_secrets_battery.py +24 -0
  7. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/.gitignore +0 -0
  8. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/AGENTS.md +0 -0
  9. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/BASE_CLASS_METHODS.md +0 -0
  10. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/CHANGELOG.md +0 -0
  11. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/CLAUDE.md +0 -0
  12. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/MODEL_API.md +0 -0
  13. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/README.md +0 -0
  14. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/database/orm/extended/managers/ai_model_base.py +0 -0
  15. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/docs/migrations.md +0 -0
  16. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/FEATURE.md +0 -0
  17. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/MODULE_README.md +0 -0
  18. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/__init__.py +0 -0
  19. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/adapters/MODULE_README.md +0 -0
  20. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/adapters/__init__.py +0 -0
  21. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/adapters/async_postgresql.py +0 -0
  22. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/adapters/base_adapter.py +0 -0
  23. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/adapters/postgrest_client_adapter.py +0 -0
  24. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/adapters/supabase_adapter.py +0 -0
  25. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/admin/FEATURE.md +0 -0
  26. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/admin/__init__.py +0 -0
  27. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/admin/router.py +0 -0
  28. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/api/__init__.py +0 -0
  29. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/api/auth.py +0 -0
  30. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/api/config.py +0 -0
  31. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/api/handlers.py +0 -0
  32. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/api/protocol.py +0 -0
  33. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/api/server.py +0 -0
  34. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/associations.py +0 -0
  35. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/cache_debug.py +0 -0
  36. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/catalog.py +0 -0
  37. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/catalog_sql.py +0 -0
  38. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/client/MODULE_README.md +0 -0
  39. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/client/__init__.py +0 -0
  40. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/client/postgres_connection.py +0 -0
  41. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/client/postgrest.py +0 -0
  42. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/client/supabase_auth.py +0 -0
  43. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/client/supabase_config.py +0 -0
  44. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/client/supabase_manager.py +0 -0
  45. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/EXTENDED-TASK.md +0 -0
  46. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/FEATURE.md +0 -0
  47. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/MODULE_README.md +0 -0
  48. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/RELATIONS-TASKS.md +0 -0
  49. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/TASKS.md +0 -0
  50. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/__init__.py +0 -0
  51. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/admin_lane.py +0 -0
  52. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/async_db_manager.py +0 -0
  53. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/base.py +0 -0
  54. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/config.py +0 -0
  55. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/connections.py +0 -0
  56. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/db_function.py +0 -0
  57. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/diagnostics.py +0 -0
  58. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/expressions.py +0 -0
  59. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/extended.py +0 -0
  60. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/fields.py +0 -0
  61. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/introspection.py +0 -0
  62. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/listen.py +0 -0
  63. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/loop_filters.py +0 -0
  64. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/model_dto.py +0 -0
  65. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/model_view.py +0 -0
  66. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/one_database.py +0 -0
  67. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/paginator.py +0 -0
  68. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/pool_maintenance.py +0 -0
  69. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/pool_watch.py +0 -0
  70. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/pooler_role.py +0 -0
  71. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/pydantic_bridge.py +0 -0
  72. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/registry.py +0 -0
  73. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/relations.py +0 -0
  74. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/resilience.py +0 -0
  75. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/rls_session.py +0 -0
  76. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/session_context.py +0 -0
  77. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/signals.py +0 -0
  78. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/tls.py +0 -0
  79. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/transaction.py +0 -0
  80. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/types.py +0 -0
  81. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/write_queue.py +0 -0
  82. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/write_retry.py +0 -0
  83. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/entity.py +0 -0
  84. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/error_handling.py +0 -0
  85. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/exceptions.py +0 -0
  86. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/extended/__init__.py +0 -0
  87. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/extended/app_error_handler.py +0 -0
  88. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/identity_rule.py +0 -0
  89. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/local_sqlite.py +0 -0
  90. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/middleware/__init__.py +0 -0
  91. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/middleware/base.py +0 -0
  92. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/migrations/MODULE_README.md +0 -0
  93. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/migrations/__init__.py +0 -0
  94. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/migrations/cli.py +0 -0
  95. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/migrations/ddl.py +0 -0
  96. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/migrations/diff.py +0 -0
  97. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/migrations/executor.py +0 -0
  98. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/migrations/integration.py +0 -0
  99. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/migrations/loader.py +0 -0
  100. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/migrations/operations.py +0 -0
  101. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/migrations/state.py +0 -0
  102. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/migrations/table_filter.py +0 -0
  103. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/no_org_assignment.py +0 -0
  104. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/FEATURE.md +0 -0
  105. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/MODULE_README.md +0 -0
  106. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/__init__.py +0 -0
  107. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/bulk_update_values.py +0 -0
  108. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/catalog_select.py +0 -0
  109. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/conflict.py +0 -0
  110. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/conflict_writes.py +0 -0
  111. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/create.py +0 -0
  112. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/db_functions.py +0 -0
  113. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/delete.py +0 -0
  114. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/dynamic_admin.py +0 -0
  115. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/dynamic_crud.py +0 -0
  116. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/graph_walk.py +0 -0
  117. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/latest_rows.py +0 -0
  118. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/queue_claim.py +0 -0
  119. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/read.py +0 -0
  120. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/relational_backfill.py +0 -0
  121. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/staging_load.py +0 -0
  122. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/update.py +0 -0
  123. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/platform_access.py +0 -0
  124. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/platform_db.py +0 -0
  125. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/py.typed +0 -0
  126. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/pytest_live_db_guard.py +0 -0
  127. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/pytest_lock_guard.py +0 -0
  128. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/pytest_plugin.py +0 -0
  129. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/python_sql/MODULE_README.md +0 -0
  130. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/python_sql/__init__.py +0 -0
  131. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/python_sql/db_objects.py +0 -0
  132. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/python_sql/table_detailed_relationships.py +0 -0
  133. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/python_sql/table_typescript_relationship.py +0 -0
  134. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/query/FEATURE.md +0 -0
  135. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/query/MODULE_README.md +0 -0
  136. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/query/__init__.py +0 -0
  137. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/query/builder.py +0 -0
  138. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/query/executor.py +0 -0
  139. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/resources/__init__.py +0 -0
  140. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/resources/additional-assigners-2026-09-12.json +0 -0
  141. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/resources/org_assignment_trigger_baseline.json +0 -0
  142. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/FEATURE.md +0 -0
  143. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/MODULE_README.md +0 -0
  144. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/__init__.py +0 -0
  145. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/code_handler.py +0 -0
  146. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/codegen_writer.py +0 -0
  147. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/columns.py +0 -0
  148. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/common.py +0 -0
  149. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/diff_preview.py +0 -0
  150. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/entity_capabilities.py +0 -0
  151. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/generator.py +0 -0
  152. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/helpers/__init__.py +0 -0
  153. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/helpers/base_generators.py +0 -0
  154. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/helpers/entity_generators.py +0 -0
  155. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/helpers/git_checker.py +0 -0
  156. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/package_wiring.py +0 -0
  157. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/relationships.py +0 -0
  158. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/runner.py +0 -0
  159. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/schema.py +0 -0
  160. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/schema_manager.py +0 -0
  161. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/tables.py +0 -0
  162. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/views.py +0 -0
  163. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/secrets_battery/FEATURE.md +0 -0
  164. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/secrets_battery/__init__.py +0 -0
  165. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/secrets_battery/attachments.py +0 -0
  166. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/secrets_battery/crypto.py +0 -0
  167. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/secrets_battery/host_authorization.py +0 -0
  168. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/secrets_battery/items.py +0 -0
  169. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/secrets_battery/model.py +0 -0
  170. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/secrets_battery/mutation_receipts.py +0 -0
  171. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/secrets_battery/native_enable.py +0 -0
  172. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/secrets_battery/native_lifecycle.py +0 -0
  173. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/secrets_battery/native_passkeys.py +0 -0
  174. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/secrets_battery/native_source.py +0 -0
  175. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/secrets_battery/org_service.py +0 -0
  176. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/secrets_battery/service.py +0 -0
  177. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/session/README.md +0 -0
  178. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/session/__init__.py +0 -0
  179. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/session/coalesce.py +0 -0
  180. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/session/dag.py +0 -0
  181. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/session/errors.py +0 -0
  182. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/session/fallback.py +0 -0
  183. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/session/flush.py +0 -0
  184. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/session/lifecycle.py +0 -0
  185. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/session/managed.py +0 -0
  186. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/session/op.py +0 -0
  187. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/session/reads.py +0 -0
  188. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/session/session.py +0 -0
  189. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/session/telemetry.py +0 -0
  190. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/sql_executor/MODULE_README.md +0 -0
  191. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/sql_executor/__init__.py +0 -0
  192. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/sql_executor/executor.py +0 -0
  193. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/sql_executor/queries.py +0 -0
  194. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/sql_executor/registry.py +0 -0
  195. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/sql_executor/types.py +0 -0
  196. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/sql_executor/utils.py +0 -0
  197. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/state.py +0 -0
  198. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/utils/__init__.py +0 -0
  199. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/utils/sql_utils.py +0 -0
  200. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/utils/type_converters.py +0 -0
  201. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/write_actor.py +0 -0
  202. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/scripts/git-branches.sh +0 -0
  203. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/scripts/publish.sh +0 -0
  204. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/scripts/release.sh +0 -0
  205. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/MODULE_README.md +0 -0
  206. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/__init__.py +0 -0
  207. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/conftest.py +0 -0
  208. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/MODULE_README.md +0 -0
  209. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/__init__.py +0 -0
  210. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_adapter_registry.py +0 -0
  211. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_admin_db_columns.py +0 -0
  212. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_admin_response_rendering.py +0 -0
  213. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_admin_search_negation.py +0 -0
  214. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_admin_search_sentinels.py +0 -0
  215. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_advisory_lock.py +0 -0
  216. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_agent_message.py +0 -0
  217. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_api_auth.py +0 -0
  218. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_api_config.py +0 -0
  219. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_api_handlers.py +0 -0
  220. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_api_protocol.py +0 -0
  221. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_array_agg_order_by.py +0 -0
  222. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_association_trigger_actor_naming.py +0 -0
  223. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_associations.py +0 -0
  224. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_associations_wiring.py +0 -0
  225. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_bulk_hydration_offload.py +0 -0
  226. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_bulk_update_by_pk.py +0 -0
  227. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_bulk_upsert_increment_set_fields.py +0 -0
  228. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_cache_debug.py +0 -0
  229. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_call_function.py +0 -0
  230. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_case_when.py +0 -0
  231. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_catalog.py +0 -0
  232. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_committed_row_guard.py +0 -0
  233. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_composite_pk_filter.py +0 -0
  234. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_composite_pk_write_paths.py +0 -0
  235. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_config.py +0 -0
  236. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_conflict_target.py +0 -0
  237. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_conflict_writes.py +0 -0
  238. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_connection_codecs.py +0 -0
  239. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_connection_poison_guard.py +0 -0
  240. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_connection_primitives.py +0 -0
  241. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_count_composite_distinct.py +0 -0
  242. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_count_limit_param_leak.py +0 -0
  243. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_db_function_field.py +0 -0
  244. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_ddl_generator.py +0 -0
  245. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_deadlock_retry.py +0 -0
  246. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_derived_table.py +0 -0
  247. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_dirty_tracking.py +0 -0
  248. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_dynamic_crud.py +0 -0
  249. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_exceptions.py +0 -0
  250. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_execute_query_integrity_mapping.py +0 -0
  251. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_expression_primitives.py +0 -0
  252. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_fields.py +0 -0
  253. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_filter_jsonb_agg_array_index.py +0 -0
  254. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_fk_cycle_resolution.py +0 -0
  255. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_from_alias.py +0 -0
  256. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_fts.py +0 -0
  257. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_func_expression_args.py +0 -0
  258. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_graph_walk.py +0 -0
  259. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_having_annotate_alias.py +0 -0
  260. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_insert_ignore_and_admin_primitives.py +0 -0
  261. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_introspect_rls_policies.py +0 -0
  262. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_join_and_aggregate.py +0 -0
  263. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_latest_rows.py +0 -0
  264. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_listen_notify.py +0 -0
  265. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_local_sqlite.py +0 -0
  266. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_lock_contention_retry.py +0 -0
  267. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_managed_write_guard.py +0 -0
  268. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_matrx_entity.py +0 -0
  269. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_migration_diff_types.py +0 -0
  270. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_migration_loader.py +0 -0
  271. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_model_instance.py +0 -0
  272. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_model_meta.py +0 -0
  273. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_optimistic_concurrency.py +0 -0
  274. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_order_by_expression.py +0 -0
  275. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_org_assignment_inventory.py +0 -0
  276. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_orm_banners_are_client_safe.py +0 -0
  277. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_parameter_name_hydration.py +0 -0
  278. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_patch_jsonb_path.py +0 -0
  279. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_percentile_cont.py +0 -0
  280. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_persisted_count.py +0 -0
  281. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_pool_create_never_wedges.py +0 -0
  282. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_pool_holder_census.py +0 -0
  283. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_pool_loop_recreation.py +0 -0
  284. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_pool_maintenance.py +0 -0
  285. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_postgrest_filters.py +0 -0
  286. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_pydantic_bridge.py +0 -0
  287. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_query_builder.py +0 -0
  288. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_query_error_detail.py +0 -0
  289. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_query_executor_sql.py +0 -0
  290. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_query_timeout.py +0 -0
  291. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_querybuilder_clone_semantics.py +0 -0
  292. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_queue_claim.py +0 -0
  293. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_read_connection_retry.py +0 -0
  294. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_registry.py +0 -0
  295. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_registry_multi_database.py +0 -0
  296. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_registry_multi_schema.py +0 -0
  297. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_relational_backfill.py +0 -0
  298. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_relations.py +0 -0
  299. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_resilience.py +0 -0
  300. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_rls_session_scope.py +0 -0
  301. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_schema_exists.py +0 -0
  302. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_session_advisory_lock.py +0 -0
  303. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_standalone_write_session_context.py +0 -0
  304. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_state_cache.py +0 -0
  305. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_subquery_filter_raw.py +0 -0
  306. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_subquery_in_filter.py +0 -0
  307. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_subquery_nested_expressions.py +0 -0
  308. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_supabase_auth.py +0 -0
  309. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_supabase_config.py +0 -0
  310. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_tls.py +0 -0
  311. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_transaction_database_identity.py +0 -0
  312. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_typed_join_projection.py +0 -0
  313. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_typed_predicates.py +0 -0
  314. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_update_case_expression.py +0 -0
  315. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_update_subquery.py +0 -0
  316. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_update_with_rebase.py +0 -0
  317. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_upsert_default_leak.py +0 -0
  318. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_upsert_with_conflict.py +0 -0
  319. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_values_jsonb_decode.py +0 -0
  320. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_watched_lifecycle.py +0 -0
  321. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_write_queue_deadline.py +0 -0
  322. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_write_retry_semantics.py +0 -0
  323. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level2/MODULE_README.md +0 -0
  324. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level2/__init__.py +0 -0
  325. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level2/conftest.py +0 -0
  326. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level2/test_bulk_ops.py +0 -0
  327. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level2/test_cache_integration.py +0 -0
  328. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level2/test_crud.py +0 -0
  329. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level2/test_foreign_keys.py +0 -0
  330. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level2/test_m2m.py +0 -0
  331. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level2/test_manager.py +0 -0
  332. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level2/test_migrations_live.py +0 -0
  333. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level2/test_query_execution.py +0 -0
  334. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level2/test_schema_diff.py +0 -0
  335. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level2/verify_committed_row_guard_pg17.py +0 -0
  336. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/live_pooler_role.py +0 -0
  337. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/native_source_cases.py +0 -0
  338. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/native_source_oracle.rs +0 -0
  339. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/sample_project/.env.example +0 -0
  340. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/sample_project/README.md +0 -0
  341. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/sample_project/__init__.py +0 -0
  342. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/sample_project/generate.py +0 -0
  343. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/sample_project/generated/.gitkeep +0 -0
  344. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/sample_project/matrx_orm.yaml +0 -0
  345. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/sample_project/test_schema_generation.py +0 -0
  346. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/sample_project_desktop/.env.example +0 -0
  347. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/sample_project_desktop/README.md +0 -0
  348. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/sample_project_desktop/__init__.py +0 -0
  349. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/sample_project_desktop/client_example.py +0 -0
  350. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/sample_project_desktop/client_example.ts +0 -0
  351. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/sample_project_desktop/client_supabase_example.py +0 -0
  352. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/sample_project_desktop/server.py +0 -0
  353. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema/entity_tests.py +0 -0
  354. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema/test_base_generation.py +0 -0
  355. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema/test_composite_pk_fk_generation.py +0 -0
  356. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema/test_composite_unique_generation.py +0 -0
  357. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema/test_dto_identity_generation.py +0 -0
  358. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema/test_entity_capability_generation.py +0 -0
  359. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema/test_enum_ordering.py +0 -0
  360. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema/test_generate_schema.py +0 -0
  361. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema/test_junction_analysis.py +0 -0
  362. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema/test_multi_schema_output.py +0 -0
  363. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema/test_schema_analysis.py +0 -0
  364. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema/test_sql_expression_defaults.py +0 -0
  365. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema/test_table_relationships_query.py +0 -0
  366. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema/test_view_generation.py +0 -0
  367. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema_builder/test_array_default_parsing.py +0 -0
  368. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema_builder/test_focused_generation_plan.py +0 -0
  369. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema_builder/test_host_models_aggregator.py +0 -0
  370. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/__init__.py +0 -0
  371. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/conftest.py +0 -0
  372. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/test_a_failed_capture_still_names_the_failure.py +0 -0
  373. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/test_cache_no_downgrade.py +0 -0
  374. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/test_capture_poison_proof.py +0 -0
  375. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/test_coalesce.py +0 -0
  376. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/test_dag.py +0 -0
  377. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/test_disk_spill_fallback.py +0 -0
  378. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/test_flush_individual_fallback.py +0 -0
  379. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/test_governed_write.py +0 -0
  380. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/test_live_db_guard_plugin.py +0 -0
  381. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/test_managed.py +0 -0
  382. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/test_op_enqueue_site.py +0 -0
  383. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/test_reads.py +0 -0
  384. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/test_record_error_bounded_insert.py +0 -0
  385. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/test_record_error_storm.py +0 -0
  386. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/test_session.py +0 -0
  387. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/test_spill_guard_plugin.py +0 -0
  388. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_array_arg_element_type.py +0 -0
  389. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_attachment_mutation_serialization.py +0 -0
  390. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_backup_alias_conflict.py +0 -0
  391. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_backup_restore_live.py +0 -0
  392. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_composite_fk_is_not_a_column_fk.py +0 -0
  393. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_database_name_alias.py +0 -0
  394. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_db_functions.py +0 -0
  395. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_dsn_password_masking.py +0 -0
  396. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_dynamic_select_unregistered.py +0 -0
  397. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_immutable_insert_or_exact_verify.py +0 -0
  398. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_keyed_digest.py +0 -0
  399. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_model_cls_refactor.py +0 -0
  400. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_native_enable.py +0 -0
  401. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_native_lifecycle.py +0 -0
  402. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_native_lifecycle_fences.py +0 -0
  403. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_native_passkey_receipts.py +0 -0
  404. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_native_source.py +0 -0
  405. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_no_blocking_asyncpg_tls.py +0 -0
  406. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_one_database.py +0 -0
  407. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_order_by_desc_nulls_last.py +0 -0
  408. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_pooler_role_guard.py +0 -0
  409. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_secret_audit_names_its_organization.py +0 -0
  410. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_secrets_minting_keys.py +0 -0
  411. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_shared_lock_guard.py +0 -0
  412. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_sql_param_casts.py +0 -0
  413. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_sync_twins_guard.py +0 -0
  414. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_user_visible_lookup.py +0 -0
  415. {matrx_orm-3.1.184 → matrx_orm-3.1.185}/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.184
3
+ Version: 3.1.185
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
@@ -70,6 +70,7 @@ class BackupHistoryRevisionSpec:
70
70
 
71
71
  revision: int
72
72
  value: str
73
+ source_recorded_at: datetime | None = None
73
74
 
74
75
 
75
76
  @asynccontextmanager
@@ -271,6 +272,14 @@ def _validate_history(
271
272
  or type(revision.revision) is not int
272
273
  or revision.revision != expected
273
274
  or not isinstance(revision.value, str)
275
+ or (
276
+ revision.source_recorded_at is not None
277
+ and (
278
+ not isinstance(revision.source_recorded_at, datetime)
279
+ or revision.source_recorded_at.tzinfo is None
280
+ or revision.source_recorded_at.utcoffset() is None
281
+ )
282
+ )
274
283
  ):
275
284
  raise ValueError("backup history is invalid")
276
285
  checked.append(revision)
@@ -328,6 +337,7 @@ async def _write_quarantined_history(
328
337
  before_encrypted=current,
329
338
  after_encrypted=after,
330
339
  capture_started_at=started,
340
+ source_recorded_at=revision.source_recorded_at,
331
341
  )
332
342
  expected_revision = await write_password_field_update_snapshot(
333
343
  item_id=item_id,
@@ -5,6 +5,7 @@ from __future__ import annotations
5
5
  import re
6
6
  import uuid
7
7
  from datetime import UTC, datetime
8
+ from math import isfinite
8
9
  from typing import Any
9
10
 
10
11
  from matrx_orm import call_function
@@ -22,6 +23,7 @@ _ENVELOPE_KEYS = {
22
23
  "schema_version", "snapshot_id", "mutation_kind", "original_ownership",
23
24
  "audit_organization_id", "capture_started_at", "component_manifest", "changed_components",
24
25
  }
26
+ _ENVELOPE_KEYS_WITH_SOURCE_RECORDED_AT = _ENVELOPE_KEYS | {"source_recorded_at"}
25
27
 
26
28
 
27
29
  class VaultHistorySnapshotError(ValueError):
@@ -44,10 +46,21 @@ def _state(value_encrypted: Any, key_fingerprint: str) -> dict[str, str]:
44
46
  return {"value_encrypted": _ciphertext(value_encrypted), "key_fingerprint": key_fingerprint}
45
47
 
46
48
 
49
+ def _source_recorded_at(value: datetime) -> str:
50
+ if not isinstance(value, datetime) or value.tzinfo is None or value.utcoffset() is None:
51
+ raise VaultHistorySnapshotError("Vault history source timestamp must be timezone-aware")
52
+ try:
53
+ if not isfinite(value.timestamp()):
54
+ raise ValueError
55
+ except (OverflowError, OSError, ValueError) as exc:
56
+ raise VaultHistorySnapshotError("Vault history source timestamp must be finite") from exc
57
+ return value.astimezone(UTC).isoformat()
58
+
59
+
47
60
  def password_field_update_snapshot(
48
61
  *, item_id: str, item_user_id: str, audit_organization_id: str, field_id: str,
49
62
  field_key: str, handling: str, execution_purpose: str, before_encrypted: Any,
50
- after_encrypted: Any, capture_started_at: datetime,
63
+ after_encrypted: Any, capture_started_at: datetime, source_recorded_at: datetime | None = None,
51
64
  ) -> dict[str, Any]:
52
65
  """Build the only Gate-B shape accepted for an ordinary password update."""
53
66
  if field_key != "password" or handling not in {"visible", "revealable"} or execution_purpose != "general":
@@ -79,13 +92,18 @@ def password_field_update_snapshot(
79
92
  "component_manifest": [manifest],
80
93
  "changed_components": [change],
81
94
  }
95
+ if source_recorded_at is not None:
96
+ snapshot["source_recorded_at"] = _source_recorded_at(source_recorded_at)
82
97
  validate_snapshot_v1(snapshot)
83
98
  return snapshot
84
99
 
85
100
 
86
101
  def validate_snapshot_v1(snapshot: dict[str, Any]) -> None:
87
102
  """Reject accidental plaintext, hints, unknown keys, and incomplete v1 states."""
88
- if set(snapshot) != _ENVELOPE_KEYS or snapshot.get("schema_version") != 1 or snapshot.get("mutation_kind") != "update":
103
+ if (
104
+ set(snapshot) != _ENVELOPE_KEYS
105
+ and set(snapshot) != _ENVELOPE_KEYS_WITH_SOURCE_RECORDED_AT
106
+ ) or snapshot.get("schema_version") != 1 or snapshot.get("mutation_kind") != "update":
89
107
  raise VaultHistorySnapshotError("Vault history snapshot is not the closed v1 envelope")
90
108
  try:
91
109
  uuid.UUID(str(snapshot["snapshot_id"]))
@@ -96,6 +114,11 @@ def validate_snapshot_v1(snapshot: dict[str, Any]) -> None:
96
114
  raise VaultHistorySnapshotError("Vault history snapshot has invalid identity data") from exc
97
115
  if set(snapshot["original_ownership"]) != {"user_id"}:
98
116
  raise VaultHistorySnapshotError("Vault history snapshot must have one personal owner")
117
+ if "source_recorded_at" in snapshot:
118
+ try:
119
+ _source_recorded_at(datetime.fromisoformat(str(snapshot["source_recorded_at"]).replace("Z", "+00:00")))
120
+ except (TypeError, ValueError) as exc:
121
+ raise VaultHistorySnapshotError("Vault history source timestamp is invalid") from exc
99
122
  manifest = snapshot["component_manifest"]
100
123
  changes = snapshot["changed_components"]
101
124
  if not isinstance(manifest, list) or len(manifest) != 1 or not isinstance(changes, list) or len(changes) != 1:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "matrx-orm"
3
- version = "3.1.184"
3
+ version = "3.1.185"
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" }
@@ -3,6 +3,7 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  from types import SimpleNamespace
6
+ from datetime import UTC, datetime
6
7
 
7
8
  import pytest
8
9
 
@@ -36,6 +37,14 @@ def test_history_allows_a_same_plaintext_delta_when_the_source_ciphertext_rotate
36
37
  assert len(result) == 2
37
38
 
38
39
 
40
+ def test_history_carries_an_aware_source_timestamp_without_using_it_for_ordering():
41
+ result = _validate_history(
42
+ [BackupHistoryRevisionSpec(1, "current", datetime(2040, 1, 1, tzinfo=UTC))],
43
+ _password(),
44
+ )
45
+ assert result[0].source_recorded_at == datetime(2040, 1, 1, tzinfo=UTC)
46
+
47
+
39
48
  @pytest.mark.parametrize(
40
49
  ("history", "fields"),
41
50
  [
@@ -124,6 +133,12 @@ async def test_same_plaintext_delta_is_written_with_fresh_destination_ciphertext
124
133
  actor_id="33333333-3333-4333-8333-333333333333",
125
134
  audit_organization_id="44444444-4444-4444-8444-444444444444",
126
135
  handling="revealable",
127
- history=(_revision(1, "same"), _revision(2, "same")),
136
+ history=(
137
+ BackupHistoryRevisionSpec(1, "same", datetime(2020, 1, 1, tzinfo=UTC)),
138
+ BackupHistoryRevisionSpec(2, "same", datetime(2020, 1, 2, tzinfo=UTC)),
139
+ ),
128
140
  )
129
141
  assert snapshots[1]["changed_components"][0]["before"] != snapshots[1]["changed_components"][0]["after"]
142
+ assert [snapshot["source_recorded_at"] for snapshot in snapshots] == [
143
+ "2020-01-01T00:00:00+00:00", "2020-01-02T00:00:00+00:00"
144
+ ]
@@ -1177,6 +1177,30 @@ def test_password_history_snapshot_v1_excludes_plaintext_and_hints(monkeypatch):
1177
1177
  vault_history.validate_snapshot_v1(snapshot)
1178
1178
 
1179
1179
 
1180
+ def test_password_history_snapshot_v1_accepts_only_a_valid_optional_source_timestamp(monkeypatch):
1181
+ from matrx_orm.secrets_battery import vault_history
1182
+
1183
+ monkeypatch.setenv("CREDENTIALS_ENCRYPTION_KEY", _fernet_key())
1184
+ snapshot = vault_history.password_field_update_snapshot(
1185
+ item_id="00000000-0000-0000-0000-000000000001",
1186
+ item_user_id="00000000-0000-0000-0000-000000000002",
1187
+ audit_organization_id="00000000-0000-0000-0000-000000000003",
1188
+ field_id="00000000-0000-0000-0000-000000000004",
1189
+ field_key="password", handling="revealable", execution_purpose="general",
1190
+ before_encrypted=_history_ciphertext(), after_encrypted=_history_ciphertext(),
1191
+ capture_started_at=datetime.now(UTC), source_recorded_at=datetime(2040, 1, 2, tzinfo=UTC),
1192
+ )
1193
+ assert set(snapshot) == {
1194
+ "schema_version", "snapshot_id", "mutation_kind", "original_ownership",
1195
+ "audit_organization_id", "capture_started_at", "source_recorded_at",
1196
+ "component_manifest", "changed_components",
1197
+ }
1198
+ assert snapshot["source_recorded_at"] == "2040-01-02T00:00:00+00:00"
1199
+ snapshot["source_recorded_at"] = "2040-01-02T00:00:00"
1200
+ with pytest.raises(vault_history.VaultHistorySnapshotError, match="source timestamp"):
1201
+ vault_history.validate_snapshot_v1(snapshot)
1202
+
1203
+
1180
1204
  def _history_update_fakes(
1181
1205
  monkeypatch, *, writer_error: Exception | None = None, writer_error_call: int | None = None,
1182
1206
  revision: int = 0,
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes