matrx-orm 3.1.207__tar.gz → 3.1.209__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.207 → matrx_orm-3.1.209}/.gitignore +5 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/CHANGELOG.md +7 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/CLAUDE.md +1 -1
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/PKG-INFO +2 -2
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/associations.py +31 -4
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/pyproject.toml +2 -2
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_associations.py +78 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/AGENTS.md +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/BASE_CLASS_METHODS.md +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/MODEL_API.md +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/README.md +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/database/orm/extended/managers/ai_model_base.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/docs/migrations.md +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/FEATURE.md +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/MODULE_README.md +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/__init__.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/adapters/MODULE_README.md +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/adapters/__init__.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/adapters/async_postgresql.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/adapters/base_adapter.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/adapters/postgrest_client_adapter.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/adapters/supabase_adapter.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/admin/FEATURE.md +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/admin/__init__.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/admin/router.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/api/__init__.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/api/auth.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/api/config.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/api/handlers.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/api/protocol.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/api/server.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/cache_debug.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/catalog.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/catalog_sql.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/client/MODULE_README.md +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/client/__init__.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/client/postgres_connection.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/client/postgrest.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/client/supabase_auth.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/client/supabase_config.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/client/supabase_manager.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/EXTENDED-TASK.md +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/FEATURE.md +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/MODULE_README.md +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/RELATIONS-TASKS.md +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/TASKS.md +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/__init__.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/admin_lane.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/async_db_manager.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/base.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/config.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/connections.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/db_function.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/diagnostics.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/expressions.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/extended.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/fields.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/introspection.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/listen.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/loop_filters.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/model_dto.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/model_view.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/one_database.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/paginator.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/pool_maintenance.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/pool_watch.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/pooler_role.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/pydantic_bridge.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/read_write.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/registry.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/relations.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/resilience.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/rls_session.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/session_context.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/signals.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/statement_ceiling.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/tls.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/transaction.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/types.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/write_queue.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/core/write_retry.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/entity.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/error_handling.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/exceptions.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/extended/__init__.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/extended/app_error_handler.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/identity_rule.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/local_sqlite.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/matrx_orm_production_door.pth +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/middleware/__init__.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/middleware/base.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/migrations/MODULE_README.md +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/migrations/__init__.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/migrations/cli.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/migrations/ddl.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/migrations/diff.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/migrations/executor.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/migrations/integration.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/migrations/loader.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/migrations/operations.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/migrations/state.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/migrations/table_filter.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/no_org_assignment.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/operations/FEATURE.md +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/operations/MODULE_README.md +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/operations/__init__.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/operations/bulk_update_values.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/operations/catalog_select.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/operations/conflict.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/operations/conflict_writes.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/operations/create.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/operations/db_functions.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/operations/delete.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/operations/dynamic_admin.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/operations/dynamic_crud.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/operations/graph_walk.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/operations/latest_rows.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/operations/queue_claim.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/operations/read.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/operations/relational_backfill.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/operations/staging_load.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/operations/update.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/platform_access.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/platform_db.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/py.typed +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/pytest_live_db_guard.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/pytest_lock_guard.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/pytest_plugin.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/pytest_production_door.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/python_sql/MODULE_README.md +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/python_sql/__init__.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/python_sql/db_objects.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/python_sql/table_detailed_relationships.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/python_sql/table_typescript_relationship.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/query/FEATURE.md +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/query/MODULE_README.md +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/query/__init__.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/query/builder.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/query/executor.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/resources/__init__.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/resources/additional-assigners-2026-09-12.json +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/resources/org_assignment_trigger_baseline.json +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/schema_builder/FEATURE.md +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/schema_builder/MODULE_README.md +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/schema_builder/__init__.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/schema_builder/code_handler.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/schema_builder/codegen_writer.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/schema_builder/columns.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/schema_builder/common.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/schema_builder/diff_preview.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/schema_builder/entity_capabilities.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/schema_builder/excluded_targets.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/schema_builder/generator.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/schema_builder/helpers/__init__.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/schema_builder/helpers/base_generators.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/schema_builder/helpers/entity_generators.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/schema_builder/helpers/git_checker.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/schema_builder/package_wiring.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/schema_builder/relationships.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/schema_builder/runner.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/schema_builder/schema.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/schema_builder/schema_manager.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/schema_builder/tables.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/schema_builder/views.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/secrets_battery/FEATURE.md +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/secrets_battery/__init__.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/secrets_battery/attachments.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/secrets_battery/backup_restore.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/secrets_battery/crypto.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/secrets_battery/host_authorization.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/secrets_battery/items.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/secrets_battery/model.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/secrets_battery/mutation_receipts.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/secrets_battery/native_enable.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/secrets_battery/native_lifecycle.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/secrets_battery/native_passkeys.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/secrets_battery/native_source.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/secrets_battery/org_service.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/secrets_battery/org_vault_gate.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/secrets_battery/service.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/secrets_battery/vault_history.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/session/README.md +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/session/__init__.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/session/coalesce.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/session/dag.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/session/errors.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/session/fallback.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/session/flush.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/session/lifecycle.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/session/managed.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/session/op.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/session/reads.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/session/session.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/session/telemetry.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/sql_executor/MODULE_README.md +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/sql_executor/__init__.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/sql_executor/executor.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/sql_executor/queries.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/sql_executor/registry.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/sql_executor/types.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/sql_executor/utils.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/state.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/utils/__init__.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/utils/sql_utils.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/utils/type_converters.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/matrx_orm/write_actor.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/scripts/git-branches.sh +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/scripts/publish.sh +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/scripts/release.sh +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/MODULE_README.md +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/__init__.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/conftest.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/MODULE_README.md +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/__init__.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_adapter_registry.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_admin_db_columns.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_admin_response_rendering.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_admin_search_negation.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_admin_search_sentinels.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_advisory_lock.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_agent_message.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_api_auth.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_api_config.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_api_handlers.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_api_protocol.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_array_agg_order_by.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_association_trigger_actor_naming.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_associations_wiring.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_bulk_hydration_offload.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_bulk_update_by_pk.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_bulk_upsert_increment_set_fields.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_cache_debug.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_call_function.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_case_when.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_catalog.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_column_scoped_writes.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_committed_row_guard.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_composite_pk_filter.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_composite_pk_write_paths.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_config.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_conflict_target.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_conflict_writes.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_connection_codecs.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_connection_poison_guard.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_connection_primitives.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_count_composite_distinct.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_count_limit_param_leak.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_db_function_field.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_ddl_generator.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_deadlock_retry.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_derived_table.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_dirty_tracking.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_dynamic_crud.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_exceptions.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_execute_query_integrity_mapping.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_expression_primitives.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_fields.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_filter_jsonb_agg_array_index.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_fk_cycle_resolution.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_from_alias.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_fts.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_func_expression_args.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_graph_walk.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_having_annotate_alias.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_insert_ignore_and_admin_primitives.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_introspect_rls_policies.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_join_and_aggregate.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_latest_rows.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_listen_notify.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_local_sqlite.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_lock_contention_retry.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_managed_write_guard.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_matrx_entity.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_migration_diff_types.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_migration_loader.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_model_instance.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_model_meta.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_optimistic_concurrency.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_order_by_expression.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_org_assignment_inventory.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_orm_banners_are_client_safe.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_parameter_name_hydration.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_patch_jsonb_path.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_percentile_cont.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_persisted_count.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_person_scoped_session_bypasses_shared_cache.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_pool_create_never_wedges.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_pool_holder_census.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_pool_loop_recreation.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_pool_maintenance.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_postgrest_filters.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_pydantic_bridge.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_query_builder.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_query_error_detail.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_query_executor_sql.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_query_timeout.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_querybuilder_clone_semantics.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_queue_claim.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_read_connection_retry.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_read_write_declared.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_registry.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_registry_multi_database.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_registry_multi_schema.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_relational_backfill.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_relations.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_resilience.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_rls_session_scope.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_schema_exists.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_session_advisory_lock.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_standalone_write_session_context.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_state_cache.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_subquery_filter_raw.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_subquery_in_filter.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_subquery_nested_expressions.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_supabase_auth.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_supabase_config.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_tls.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_transaction_database_identity.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_transaction_gucs_one_round_trip.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_transaction_pool_release_sends_nothing.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_typed_join_projection.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_typed_predicates.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_update_case_expression.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_update_subquery.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_update_with_rebase.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_upsert_default_leak.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_upsert_with_conflict.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_values_jsonb_decode.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_watched_lifecycle.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_write_queue_deadline.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level1/test_write_retry_semantics.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level2/MODULE_README.md +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level2/__init__.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level2/conftest.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level2/test_bulk_ops.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level2/test_cache_integration.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level2/test_crud.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level2/test_foreign_keys.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level2/test_m2m.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level2/test_manager.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level2/test_migrations_live.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level2/test_query_execution.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level2/test_schema_diff.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/level2/verify_committed_row_guard_pg17.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/live_pooler_role.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/native_source_cases.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/native_source_oracle.rs +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/sample_project/.env.example +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/sample_project/README.md +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/sample_project/__init__.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/sample_project/generate.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/sample_project/generated/.gitkeep +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/sample_project/matrx_orm.yaml +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/sample_project/test_schema_generation.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/sample_project_desktop/.env.example +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/sample_project_desktop/README.md +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/sample_project_desktop/__init__.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/sample_project_desktop/client_example.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/sample_project_desktop/client_example.ts +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/sample_project_desktop/client_supabase_example.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/sample_project_desktop/server.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/schema/entity_tests.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/schema/test_base_generation.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/schema/test_composite_pk_fk_generation.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/schema/test_composite_unique_generation.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/schema/test_dto_identity_generation.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/schema/test_entity_capability_generation.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/schema/test_enum_ordering.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/schema/test_excluded_fk_targets.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/schema/test_generate_schema.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/schema/test_junction_analysis.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/schema/test_multi_schema_output.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/schema/test_schema_analysis.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/schema/test_sql_expression_defaults.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/schema/test_table_relationships_query.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/schema/test_view_generation.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/schema_builder/test_array_default_parsing.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/schema_builder/test_focused_generation_plan.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/schema_builder/test_host_models_aggregator.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/schema_builder/test_never_filter_columns.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/session/__init__.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/session/conftest.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/session/test_a_failed_capture_still_names_the_failure.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/session/test_cache_no_downgrade.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/session/test_capture_poison_proof.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/session/test_coalesce.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/session/test_dag.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/session/test_disk_spill_fallback.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/session/test_flush_individual_fallback.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/session/test_governed_write.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/session/test_live_db_guard_plugin.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/session/test_managed.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/session/test_op_enqueue_site.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/session/test_reads.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/session/test_record_error_bounded_insert.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/session/test_record_error_storm.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/session/test_session.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/session/test_spill_guard_plugin.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_a_backend_handed_over_mid_transaction_never_takes_our_writes.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_a_list_of_uuids_binds_as_uuid_array.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_a_read_only_backend_never_refuses_our_writes.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_array_arg_element_type.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_attachment_mutation_serialization.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_backup_alias_conflict.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_backup_history_restore.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_backup_restore_live.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_call_function_as.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_call_function_none_mode.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_composite_fk_is_not_a_column_fk.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_database_name_alias.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_db_functions.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_dsn_password_masking.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_dynamic_select_unregistered.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_immutable_insert_or_exact_verify.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_keyed_digest.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_model_cls_refactor.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_native_enable.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_native_lifecycle.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_native_lifecycle_fences.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_native_passkey_receipts.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_native_source.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_no_blocking_asyncpg_tls.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_one_database.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_order_by_desc_nulls_last.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_org_vault_gate.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_pooler_role_guard.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_secret_audit_names_its_organization.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_secrets_battery.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_secrets_minting_keys.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_shared_lock_guard.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_sql_param_casts.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_statement_ceiling_warning.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_sync_twins_guard.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_update_result_truthiness.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_user_visible_lookup.py +0 -0
- {matrx_orm-3.1.207 → matrx_orm-3.1.209}/tests/test_vault_aggregate_recovery_stateful.py +0 -0
|
@@ -338,3 +338,8 @@ apps/shared/.kit-*-witness.*/
|
|
|
338
338
|
.wt/
|
|
339
339
|
.matrx/fixer-dispatch.json
|
|
340
340
|
.matrx/fixer-ledger.json
|
|
341
|
+
|
|
342
|
+
# Release streak ledger (scripts/release_repeats.py): per-machine state, never committed
|
|
343
|
+
.matrx/release-repeats.json
|
|
344
|
+
.matrx/release-repeats.json.tmp
|
|
345
|
+
.matrx/fixer-ledger.json
|
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
- **Feature: entity doors in the associations engine.** A registry token may resolve to a
|
|
6
|
+
*door* (`__entity_door__ = True`, `async load_by_ids(ids, *, actor_id) -> {id: row}`) instead of
|
|
7
|
+
a Model, for nouns whose rows live behind the host's read doors (a record store). The engine
|
|
8
|
+
reads a door's rows AS THE ACTOR for the write-side existence gate and for `targets_from` /
|
|
9
|
+
`sources_to`; the access policy still decides on top; with no actor a door finds nothing and the
|
|
10
|
+
write is refused as not found. New export `matrx_orm.associations.is_entity_door`. Guard:
|
|
11
|
+
`tests/level1/test_associations.py` (door tests).
|
|
5
12
|
- **Fix: the shared-lock sampler no longer leaves its timeouts on a pooled backend.**
|
|
6
13
|
`pytest_lock_guard` sent session-level `set lock_timeout` / `set statement_timeout`
|
|
7
14
|
through the transaction pooler, where they stay on the backend for the next client
|
|
@@ -51,7 +51,7 @@ Every table that becomes a Model needs row identity: a single-column primary key
|
|
|
51
51
|
- **Signals**: `pre_create`, `post_create`, `pre_save`, `post_save`, `pre_delete`, `post_delete`.
|
|
52
52
|
- **Schema builder** (`matrx_orm.schema_builder`): code generation for Python + TypeScript type definitions from the DB schema. Postgres **VIEWs** are emitted as **read-only `Model` classes** into the same schema models file (on by default; per-entry `output.include_views: false` opts a schema out, `output.exclude_views: [...]` skips individual views). View models get no manager/DTO/base-class/auto_config (views are not writable), synthesize `_primary_keys` from an `id` column (else the first column, for cache-key/`load_by_id` only), and emit plain typed fields with **no `ForeignKey`** (views carry no FK metadata — nothing cross-schema to resolve). Never hand-write a view model again.
|
|
53
53
|
- **Secrets battery** (`matrx_orm.secrets_battery`): the ONE canonical user-credential vault — `users.user_secrets` CRUD + the platform's single Fernet primitive, keyed by `CREDENTIALS_ENCRYPTION_KEY`. Any package: `configure_secrets(db_config_name=...)` once, then `await require_user_secret(user_id, key)`. No package ever calls another service to resolve a credential. Contract: [`matrx_orm/secrets_battery/FEATURE.md`](matrx_orm/secrets_battery/FEATURE.md).
|
|
54
|
-
- **Polymorphic associations** (`matrx_orm.associations`): `EntityRegistry` (token→Model) + `Associations` — a registry-driven, **access-gated** edge engine over a host's polymorphic edge table. Every `source→target` hop is org-scoped *and* each resolved endpoint is re-authorized against the ACTOR (fail-closed, screams on a genuine leak), so a hop can't widen access past what the actor may reach. 🚨 **The gate is `access_check` (wire `matrx_orm.platform_access_check` → `iam.has_access_for`), NEVER an org-column comparison** — a person belongs to several orgs on purpose, so org-equality denies her own data across her own workspaces (2026-08-30 incident) while granting any co-member of a private row. The edge's `org_id` is a TENANCY stamp, not a permission. Org-equality survives only for UNATTENDED writes (no actor) as an integrity guard, and **system vocabulary is exempt entirely** (existence still required): a model generated with `_rls_variant="system"` is platform-shared dictionary data (seo.keyword/topic) every tenant legitimately links to. Hardcodes no table names — the host wires its own edge + token-registry models.
|
|
54
|
+
- **Polymorphic associations** (`matrx_orm.associations`): `EntityRegistry` (token→Model) + `Associations` — a registry-driven, **access-gated** edge engine over a host's polymorphic edge table. Every `source→target` hop is org-scoped *and* each resolved endpoint is re-authorized against the ACTOR (fail-closed, screams on a genuine leak), so a hop can't widen access past what the actor may reach. 🚨 **The gate is `access_check` (wire `matrx_orm.platform_access_check` → `iam.has_access_for`), NEVER an org-column comparison** — a person belongs to several orgs on purpose, so org-equality denies her own data across her own workspaces (2026-08-30 incident) while granting any co-member of a private row. The edge's `org_id` is a TENANCY stamp, not a permission. Org-equality survives only for UNATTENDED writes (no actor) as an integrity guard, and **system vocabulary is exempt entirely** (existence still required): a model generated with `_rls_variant="system"` is platform-shared dictionary data (seo.keyword/topic) every tenant legitimately links to. Hardcodes no table names — the host wires its own edge + token-registry models. A token whose rows have no Model (a record store's Records) resolves to an **entity door** (`is_entity_door`: `load_by_ids(ids, *, actor_id)`), read as the actor — never by a service identity.
|
|
55
55
|
- **The host's declared session context** (`matrx_orm.core.session_context`): `configure_session_context(provider)` once at startup, and every **top-level** `transaction()` — including the one `rls_session` opens, before it drops to the restricted role — emits whatever the provider returns as transaction-local GUCs. This is how an application-level declaration reaches Postgres at all: a GUC set outside a transaction has no meaning, so the BEGIN is the only place it can land. aidream wires it to its provenance declaration (`app.actor_tier` / `app.actor_system`, read by `platform.actor_tier()`, the history capture and the tier rule). A nested entry is a savepoint inside a transaction that already carries them and emits nothing. A standalone write (`execute_write` outside any transaction) made while the provider has something to say opens its own transaction for that one statement — and still goes through the write queue, inside a copy of the caller's context, so the queue's concurrency gate is kept and the drain task's foreign context cannot hide the declaration (`tests/level1/test_standalone_write_session_context.py`). No provider configured ⇒ no GUCs (standalone behaviour unchanged); a provider that raises fails the transaction loudly rather than committing rows with a false provenance.
|
|
56
56
|
- **The platform access policy** (`matrx_orm.platform_access`): `platform_access_check(actor, token, id, level)` → `iam.has_access_for`. The ONE answer to "may this actor touch this row?", shared with RLS and the file-access gate. Fails closed. Never re-derive it from `organization_id` or `created_by` — both are strict subsets that deny legitimate access.
|
|
57
57
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: matrx-orm
|
|
3
|
-
Version: 3.1.
|
|
3
|
+
Version: 3.1.209
|
|
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
|
|
@@ -26,7 +26,7 @@ Requires-Dist: asyncpg>=0.31.0
|
|
|
26
26
|
Requires-Dist: cbor2<7,>=6.1.3
|
|
27
27
|
Requires-Dist: cryptography>=43.0
|
|
28
28
|
Requires-Dist: gitpython>=3.1.40
|
|
29
|
-
Requires-Dist: matrx-utils>=2.0.
|
|
29
|
+
Requires-Dist: matrx-utils>=2.0.63
|
|
30
30
|
Requires-Dist: psycopg-pool>=3.2.5
|
|
31
31
|
Requires-Dist: psycopg[binary]>=3.2.5
|
|
32
32
|
Requires-Dist: python-dotenv>=1.0
|
|
@@ -79,6 +79,7 @@ __all__ = [
|
|
|
79
79
|
"EntityRegistry",
|
|
80
80
|
"Associations",
|
|
81
81
|
"UnknownEntityType",
|
|
82
|
+
"is_entity_door",
|
|
82
83
|
"CrossOrgAssociationError",
|
|
83
84
|
"EntityAccessError",
|
|
84
85
|
"AccessCheck",
|
|
@@ -131,6 +132,24 @@ class EntityRef:
|
|
|
131
132
|
id: str
|
|
132
133
|
|
|
133
134
|
|
|
135
|
+
def is_entity_door(endpoint: Any) -> bool:
|
|
136
|
+
"""True when a registry token resolves to an ENTITY DOOR rather than a Model.
|
|
137
|
+
|
|
138
|
+
Some nouns a host registers have no table a Model could be generated over — their rows live
|
|
139
|
+
behind the host's own read doors (a record store's RPCs, a remote service). Such a token
|
|
140
|
+
resolves to a *door*: any object with ``__entity_door__ = True`` and::
|
|
141
|
+
|
|
142
|
+
async def load_by_ids(ids: list[str], *, actor_id: str) -> dict[str, Any]
|
|
143
|
+
|
|
144
|
+
returning ``{str(id): row}`` for the ids the ACTOR can open (each row exposes ``id`` and, when
|
|
145
|
+
it has one, the host's org field as attributes). The engine treats a door exactly like a
|
|
146
|
+
Model — existence, the access policy, the org fast path — except that the read is made AS
|
|
147
|
+
the actor, so with no actor (an unattended write) a door finds nothing and the write is
|
|
148
|
+
refused as not found, never authorized by a service identity.
|
|
149
|
+
"""
|
|
150
|
+
return bool(getattr(endpoint, "__entity_door__", False))
|
|
151
|
+
|
|
152
|
+
|
|
134
153
|
def _registry_model_lookup(schema: str, table: str) -> type[Model] | None:
|
|
135
154
|
"""Default ``(schema, table) -> Model`` resolver: scan matrx-orm's model_registry."""
|
|
136
155
|
from matrx_orm.core.registry import model_registry
|
|
@@ -578,7 +597,10 @@ class Associations:
|
|
|
578
597
|
With an actor present and NO policy wired, we refuse rather than fall
|
|
579
598
|
back to org-equality — a host that authorizes user writes must say how.
|
|
580
599
|
"""
|
|
581
|
-
|
|
600
|
+
if is_entity_door(model):
|
|
601
|
+
entity = (await model.load_by_ids([str(ref.id)], actor_id=actor_id)).get(str(ref.id))
|
|
602
|
+
else:
|
|
603
|
+
entity = await model.load_by_id_or_none(ref.id)
|
|
582
604
|
if entity is None:
|
|
583
605
|
raise CrossOrgAssociationError(
|
|
584
606
|
f"cannot associate {ref.type}:{ref.id} — not found or not accessible"
|
|
@@ -621,7 +643,9 @@ class Associations:
|
|
|
621
643
|
_FETCH_CHUNK = 500
|
|
622
644
|
|
|
623
645
|
@classmethod
|
|
624
|
-
async def _fetch_many(
|
|
646
|
+
async def _fetch_many(
|
|
647
|
+
cls, model: type[Model], ids: list[Any], actor_id: str = ""
|
|
648
|
+
) -> dict[str, Any]:
|
|
625
649
|
"""``{str(pk): row}`` for ``ids``, in a BOUNDED number of round trips.
|
|
626
650
|
|
|
627
651
|
One statement per :attr:`_FETCH_CHUNK` ids, through the same Model (so
|
|
@@ -631,9 +655,12 @@ class Associations:
|
|
|
631
655
|
it falls back to per-id loads — no association endpoint uses one today,
|
|
632
656
|
and this keeps the helper honest if one ever does.
|
|
633
657
|
"""
|
|
658
|
+
unique = list(dict.fromkeys(str(i) for i in ids))
|
|
659
|
+
if is_entity_door(model):
|
|
660
|
+
# A door reads as the actor (see ``is_entity_door``); it batches on its own side.
|
|
661
|
+
return await model.load_by_ids(unique, actor_id=actor_id)
|
|
634
662
|
meta = getattr(model, "_meta", None)
|
|
635
663
|
pks = list(getattr(meta, "primary_keys", None) or ["id"])
|
|
636
|
-
unique = list(dict.fromkeys(str(i) for i in ids))
|
|
637
664
|
if len(pks) > 1:
|
|
638
665
|
found = [await model.load_by_id_or_none(i) for i in unique]
|
|
639
666
|
return {
|
|
@@ -681,7 +708,7 @@ class Associations:
|
|
|
681
708
|
model = await self._reg.require(token)
|
|
682
709
|
actor = self._resolve_actor(actor_id)
|
|
683
710
|
is_system = getattr(model, "_rls_variant", None) == "system" # orm-getattr-ok: generator-stamped capability flag
|
|
684
|
-
by_id = await self._fetch_many(model, ids)
|
|
711
|
+
by_id = await self._fetch_many(model, ids, actor)
|
|
685
712
|
out: list[Any] = []
|
|
686
713
|
for rid in ids:
|
|
687
714
|
entity = by_id.get(str(rid))
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "matrx-orm"
|
|
3
|
-
version = "3.1.
|
|
3
|
+
version = "3.1.209"
|
|
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" }
|
|
@@ -41,7 +41,7 @@ dependencies = [
|
|
|
41
41
|
"gitpython>=3.1.40",
|
|
42
42
|
"psycopg[binary]>=3.2.5",
|
|
43
43
|
"psycopg-pool>=3.2.5",
|
|
44
|
-
"matrx-utils>=2.0.
|
|
44
|
+
"matrx-utils>=2.0.63",
|
|
45
45
|
"pyyaml>=6.0.3",
|
|
46
46
|
"python-dotenv>=1.0",
|
|
47
47
|
"cryptography>=43.0",
|
|
@@ -811,3 +811,81 @@ async def test_batched_fetch_chunks_and_still_drops_what_the_gate_refuses():
|
|
|
811
811
|
f"{total} targets took {ProjectModel.filter_calls} statements; it must take one "
|
|
812
812
|
"per chunk."
|
|
813
813
|
)
|
|
814
|
+
|
|
815
|
+
|
|
816
|
+
# --------------------------------------------------------------------------- #
|
|
817
|
+
# Entity doors — a noun whose rows live behind the host's read doors, not a Model
|
|
818
|
+
# --------------------------------------------------------------------------- #
|
|
819
|
+
|
|
820
|
+
|
|
821
|
+
class _ScopeDoor:
|
|
822
|
+
"""A noun with no Model (a record store's Records): rows are read AS the actor."""
|
|
823
|
+
|
|
824
|
+
__entity_door__ = True
|
|
825
|
+
rows = {"s1": {"id": "s1", "org_id": "org1", "owner": "alice"}}
|
|
826
|
+
calls: list = []
|
|
827
|
+
|
|
828
|
+
@classmethod
|
|
829
|
+
async def load_by_ids(cls, ids, *, actor_id):
|
|
830
|
+
from types import SimpleNamespace
|
|
831
|
+
|
|
832
|
+
cls.calls.append((tuple(ids), actor_id))
|
|
833
|
+
return {
|
|
834
|
+
i: SimpleNamespace(**cls.rows[i])
|
|
835
|
+
for i in ids
|
|
836
|
+
if i in cls.rows and cls.rows[i]["owner"] == actor_id
|
|
837
|
+
}
|
|
838
|
+
|
|
839
|
+
|
|
840
|
+
def _door_assoc(policy):
|
|
841
|
+
reg = EntityRegistry(token_map={"note": NoteModel, "scope": _ScopeDoor})
|
|
842
|
+
return Associations(association_model=AssociationRow, registry=reg, access_check=policy)
|
|
843
|
+
|
|
844
|
+
|
|
845
|
+
@pytest.mark.asyncio
|
|
846
|
+
async def test_a_door_endpoint_is_filed_when_the_actor_opens_it():
|
|
847
|
+
"""b9cf9424d7 dropped the scope model and every scope endpoint raised UnknownEntityType;
|
|
848
|
+
a door resolves the noun and reads its row as the actor."""
|
|
849
|
+
_ScopeDoor.calls = []
|
|
850
|
+
NoteModel.seed(id="n1", org_id="org1")
|
|
851
|
+
|
|
852
|
+
async def policy(actor, token, rid, level):
|
|
853
|
+
return actor == "alice"
|
|
854
|
+
|
|
855
|
+
edge = await _door_assoc(policy).associate(
|
|
856
|
+
EntityRef("note", "n1"), EntityRef("scope", "s1"), org_id="org1", actor_id="alice"
|
|
857
|
+
)
|
|
858
|
+
assert edge.target_type == "scope" and edge.target_id == "s1"
|
|
859
|
+
assert _ScopeDoor.calls == [(("s1",), "alice")]
|
|
860
|
+
|
|
861
|
+
|
|
862
|
+
@pytest.mark.asyncio
|
|
863
|
+
async def test_a_door_endpoint_the_actor_cannot_open_is_refused_and_unattended_finds_nothing():
|
|
864
|
+
NoteModel.seed(id="n1", org_id="org1")
|
|
865
|
+
|
|
866
|
+
async def policy(actor, token, rid, level):
|
|
867
|
+
return True # the door's own read is what refuses
|
|
868
|
+
|
|
869
|
+
with pytest.raises(CrossOrgAssociationError, match="not found"):
|
|
870
|
+
await _door_assoc(policy).associate(
|
|
871
|
+
EntityRef("note", "n1"), EntityRef("scope", "s1"), org_id="org1", actor_id="mallory"
|
|
872
|
+
)
|
|
873
|
+
with pytest.raises(CrossOrgAssociationError, match="not found"):
|
|
874
|
+
await _door_assoc(policy).associate(
|
|
875
|
+
EntityRef("note", "n1"), EntityRef("scope", "s1"), org_id="org1"
|
|
876
|
+
)
|
|
877
|
+
|
|
878
|
+
|
|
879
|
+
@pytest.mark.asyncio
|
|
880
|
+
async def test_a_door_endpoint_reads_back_through_the_door():
|
|
881
|
+
AssociationRow.seed(
|
|
882
|
+
source_type="note", source_id="n1", target_type="scope", target_id="s1", org_id="org1"
|
|
883
|
+
)
|
|
884
|
+
|
|
885
|
+
async def policy(actor, token, rid, level):
|
|
886
|
+
return True
|
|
887
|
+
|
|
888
|
+
rows = await _door_assoc(policy).targets_from(
|
|
889
|
+
EntityRef("note", "n1"), "scope", org_id="org1", actor_id="alice"
|
|
890
|
+
)
|
|
891
|
+
assert [r.id for r in rows] == ["s1"]
|
|
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.207 → matrx_orm-3.1.209}/matrx_orm/python_sql/table_detailed_relationships.py
RENAMED
|
File without changes
|
{matrx_orm-3.1.207 → matrx_orm-3.1.209}/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.207 → matrx_orm-3.1.209}/matrx_orm/resources/additional-assigners-2026-09-12.json
RENAMED
|
File without changes
|
{matrx_orm-3.1.207 → matrx_orm-3.1.209}/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
|