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.
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/PKG-INFO +1 -1
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/secrets_battery/backup_restore.py +10 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/secrets_battery/vault_history.py +25 -2
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/pyproject.toml +1 -1
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_backup_history_restore.py +16 -1
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_secrets_battery.py +24 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/.gitignore +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/AGENTS.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/BASE_CLASS_METHODS.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/CHANGELOG.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/CLAUDE.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/MODEL_API.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/README.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/database/orm/extended/managers/ai_model_base.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/docs/migrations.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/FEATURE.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/MODULE_README.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/__init__.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/adapters/MODULE_README.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/adapters/__init__.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/adapters/async_postgresql.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/adapters/base_adapter.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/adapters/postgrest_client_adapter.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/adapters/supabase_adapter.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/admin/FEATURE.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/admin/__init__.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/admin/router.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/api/__init__.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/api/auth.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/api/config.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/api/handlers.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/api/protocol.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/api/server.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/associations.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/cache_debug.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/catalog.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/catalog_sql.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/client/MODULE_README.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/client/__init__.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/client/postgres_connection.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/client/postgrest.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/client/supabase_auth.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/client/supabase_config.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/client/supabase_manager.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/EXTENDED-TASK.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/FEATURE.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/MODULE_README.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/RELATIONS-TASKS.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/TASKS.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/__init__.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/admin_lane.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/async_db_manager.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/base.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/config.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/connections.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/db_function.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/diagnostics.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/expressions.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/extended.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/fields.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/introspection.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/listen.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/loop_filters.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/model_dto.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/model_view.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/one_database.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/paginator.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/pool_maintenance.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/pool_watch.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/pooler_role.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/pydantic_bridge.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/registry.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/relations.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/resilience.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/rls_session.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/session_context.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/signals.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/tls.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/transaction.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/types.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/write_queue.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/core/write_retry.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/entity.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/error_handling.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/exceptions.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/extended/__init__.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/extended/app_error_handler.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/identity_rule.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/local_sqlite.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/middleware/__init__.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/middleware/base.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/migrations/MODULE_README.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/migrations/__init__.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/migrations/cli.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/migrations/ddl.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/migrations/diff.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/migrations/executor.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/migrations/integration.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/migrations/loader.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/migrations/operations.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/migrations/state.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/migrations/table_filter.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/no_org_assignment.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/FEATURE.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/MODULE_README.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/__init__.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/bulk_update_values.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/catalog_select.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/conflict.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/conflict_writes.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/create.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/db_functions.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/delete.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/dynamic_admin.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/dynamic_crud.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/graph_walk.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/latest_rows.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/queue_claim.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/read.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/relational_backfill.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/staging_load.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/operations/update.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/platform_access.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/platform_db.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/py.typed +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/pytest_live_db_guard.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/pytest_lock_guard.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/pytest_plugin.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/python_sql/MODULE_README.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/python_sql/__init__.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/python_sql/db_objects.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/python_sql/table_detailed_relationships.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/python_sql/table_typescript_relationship.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/query/FEATURE.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/query/MODULE_README.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/query/__init__.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/query/builder.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/query/executor.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/resources/__init__.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/resources/additional-assigners-2026-09-12.json +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/resources/org_assignment_trigger_baseline.json +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/FEATURE.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/MODULE_README.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/__init__.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/code_handler.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/codegen_writer.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/columns.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/common.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/diff_preview.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/entity_capabilities.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/generator.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/helpers/__init__.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/helpers/base_generators.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/helpers/entity_generators.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/helpers/git_checker.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/package_wiring.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/relationships.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/runner.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/schema.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/schema_manager.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/tables.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/views.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/secrets_battery/FEATURE.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/secrets_battery/__init__.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/secrets_battery/attachments.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/secrets_battery/crypto.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/secrets_battery/host_authorization.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/secrets_battery/items.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/secrets_battery/model.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/secrets_battery/mutation_receipts.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/secrets_battery/native_enable.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/secrets_battery/native_lifecycle.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/secrets_battery/native_passkeys.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/secrets_battery/native_source.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/secrets_battery/org_service.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/secrets_battery/service.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/session/README.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/session/__init__.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/session/coalesce.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/session/dag.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/session/errors.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/session/fallback.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/session/flush.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/session/lifecycle.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/session/managed.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/session/op.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/session/reads.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/session/session.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/session/telemetry.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/sql_executor/MODULE_README.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/sql_executor/__init__.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/sql_executor/executor.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/sql_executor/queries.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/sql_executor/registry.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/sql_executor/types.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/sql_executor/utils.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/state.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/utils/__init__.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/utils/sql_utils.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/utils/type_converters.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/write_actor.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/scripts/git-branches.sh +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/scripts/publish.sh +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/scripts/release.sh +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/MODULE_README.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/__init__.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/conftest.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/MODULE_README.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/__init__.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_adapter_registry.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_admin_db_columns.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_admin_response_rendering.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_admin_search_negation.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_admin_search_sentinels.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_advisory_lock.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_agent_message.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_api_auth.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_api_config.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_api_handlers.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_api_protocol.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_array_agg_order_by.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_association_trigger_actor_naming.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_associations.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_associations_wiring.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_bulk_hydration_offload.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_bulk_update_by_pk.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_bulk_upsert_increment_set_fields.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_cache_debug.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_call_function.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_case_when.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_catalog.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_committed_row_guard.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_composite_pk_filter.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_composite_pk_write_paths.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_config.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_conflict_target.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_conflict_writes.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_connection_codecs.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_connection_poison_guard.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_connection_primitives.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_count_composite_distinct.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_count_limit_param_leak.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_db_function_field.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_ddl_generator.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_deadlock_retry.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_derived_table.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_dirty_tracking.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_dynamic_crud.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_exceptions.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_execute_query_integrity_mapping.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_expression_primitives.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_fields.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_filter_jsonb_agg_array_index.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_fk_cycle_resolution.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_from_alias.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_fts.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_func_expression_args.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_graph_walk.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_having_annotate_alias.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_insert_ignore_and_admin_primitives.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_introspect_rls_policies.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_join_and_aggregate.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_latest_rows.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_listen_notify.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_local_sqlite.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_lock_contention_retry.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_managed_write_guard.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_matrx_entity.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_migration_diff_types.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_migration_loader.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_model_instance.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_model_meta.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_optimistic_concurrency.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_order_by_expression.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_org_assignment_inventory.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_orm_banners_are_client_safe.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_parameter_name_hydration.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_patch_jsonb_path.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_percentile_cont.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_persisted_count.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_pool_create_never_wedges.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_pool_holder_census.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_pool_loop_recreation.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_pool_maintenance.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_postgrest_filters.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_pydantic_bridge.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_query_builder.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_query_error_detail.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_query_executor_sql.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_query_timeout.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_querybuilder_clone_semantics.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_queue_claim.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_read_connection_retry.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_registry.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_registry_multi_database.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_registry_multi_schema.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_relational_backfill.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_relations.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_resilience.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_rls_session_scope.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_schema_exists.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_session_advisory_lock.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_standalone_write_session_context.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_state_cache.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_subquery_filter_raw.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_subquery_in_filter.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_subquery_nested_expressions.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_supabase_auth.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_supabase_config.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_tls.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_transaction_database_identity.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_typed_join_projection.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_typed_predicates.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_update_case_expression.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_update_subquery.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_update_with_rebase.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_upsert_default_leak.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_upsert_with_conflict.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_values_jsonb_decode.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_watched_lifecycle.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_write_queue_deadline.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level1/test_write_retry_semantics.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level2/MODULE_README.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level2/__init__.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level2/conftest.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level2/test_bulk_ops.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level2/test_cache_integration.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level2/test_crud.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level2/test_foreign_keys.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level2/test_m2m.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level2/test_manager.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level2/test_migrations_live.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level2/test_query_execution.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level2/test_schema_diff.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/level2/verify_committed_row_guard_pg17.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/live_pooler_role.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/native_source_cases.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/native_source_oracle.rs +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/sample_project/.env.example +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/sample_project/README.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/sample_project/__init__.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/sample_project/generate.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/sample_project/generated/.gitkeep +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/sample_project/matrx_orm.yaml +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/sample_project/test_schema_generation.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/sample_project_desktop/.env.example +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/sample_project_desktop/README.md +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/sample_project_desktop/__init__.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/sample_project_desktop/client_example.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/sample_project_desktop/client_example.ts +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/sample_project_desktop/client_supabase_example.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/sample_project_desktop/server.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema/entity_tests.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema/test_base_generation.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema/test_composite_pk_fk_generation.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema/test_composite_unique_generation.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema/test_dto_identity_generation.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema/test_entity_capability_generation.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema/test_enum_ordering.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema/test_generate_schema.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema/test_junction_analysis.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema/test_multi_schema_output.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema/test_schema_analysis.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema/test_sql_expression_defaults.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema/test_table_relationships_query.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema/test_view_generation.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema_builder/test_array_default_parsing.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema_builder/test_focused_generation_plan.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/schema_builder/test_host_models_aggregator.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/__init__.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/conftest.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/test_a_failed_capture_still_names_the_failure.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/test_cache_no_downgrade.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/test_capture_poison_proof.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/test_coalesce.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/test_dag.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/test_disk_spill_fallback.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/test_flush_individual_fallback.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/test_governed_write.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/test_live_db_guard_plugin.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/test_managed.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/test_op_enqueue_site.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/test_reads.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/test_record_error_bounded_insert.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/test_record_error_storm.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/test_session.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/session/test_spill_guard_plugin.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_array_arg_element_type.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_attachment_mutation_serialization.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_backup_alias_conflict.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_backup_restore_live.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_composite_fk_is_not_a_column_fk.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_database_name_alias.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_db_functions.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_dsn_password_masking.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_dynamic_select_unregistered.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_immutable_insert_or_exact_verify.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_keyed_digest.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_model_cls_refactor.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_native_enable.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_native_lifecycle.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_native_lifecycle_fences.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_native_passkey_receipts.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_native_source.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_no_blocking_asyncpg_tls.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_one_database.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_order_by_desc_nulls_last.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_pooler_role_guard.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_secret_audit_names_its_organization.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_secrets_minting_keys.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_shared_lock_guard.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_sql_param_casts.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_sync_twins_guard.py +0 -0
- {matrx_orm-3.1.184 → matrx_orm-3.1.185}/tests/test_user_visible_lookup.py +0 -0
- {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.
|
|
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
|
|
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.
|
|
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=(
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/python_sql/table_detailed_relationships.py
RENAMED
|
File without changes
|
{matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/python_sql/table_typescript_relationship.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/resources/additional-assigners-2026-09-12.json
RENAMED
|
File without changes
|
{matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/resources/org_assignment_trigger_baseline.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{matrx_orm-3.1.184 → matrx_orm-3.1.185}/matrx_orm/schema_builder/helpers/entity_generators.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|