matrx-orm 3.1.209__tar.gz → 3.1.211__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.209 → matrx_orm-3.1.211}/CLAUDE.md +1 -1
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/PKG-INFO +1 -1
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/secrets_battery/FEATURE.md +2 -2
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/secrets_battery/crypto.py +16 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/secrets_battery/items.py +6 -6
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/pyproject.toml +1 -1
- matrx_orm-3.1.211/tests/test_a_sealed_field_shows_no_character_of_its_value.py +51 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_secrets_minting_keys.py +1 -1
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/.gitignore +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/AGENTS.md +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/BASE_CLASS_METHODS.md +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/CHANGELOG.md +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/MODEL_API.md +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/README.md +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/database/orm/extended/managers/ai_model_base.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/docs/migrations.md +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/FEATURE.md +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/MODULE_README.md +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/__init__.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/adapters/MODULE_README.md +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/adapters/__init__.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/adapters/async_postgresql.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/adapters/base_adapter.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/adapters/postgrest_client_adapter.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/adapters/supabase_adapter.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/admin/FEATURE.md +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/admin/__init__.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/admin/router.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/api/__init__.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/api/auth.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/api/config.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/api/handlers.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/api/protocol.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/api/server.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/associations.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/cache_debug.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/catalog.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/catalog_sql.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/client/MODULE_README.md +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/client/__init__.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/client/postgres_connection.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/client/postgrest.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/client/supabase_auth.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/client/supabase_config.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/client/supabase_manager.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/EXTENDED-TASK.md +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/FEATURE.md +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/MODULE_README.md +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/RELATIONS-TASKS.md +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/TASKS.md +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/__init__.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/admin_lane.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/async_db_manager.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/base.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/config.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/connections.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/db_function.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/diagnostics.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/expressions.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/extended.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/fields.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/introspection.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/listen.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/loop_filters.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/model_dto.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/model_view.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/one_database.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/paginator.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/pool_maintenance.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/pool_watch.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/pooler_role.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/pydantic_bridge.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/read_write.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/registry.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/relations.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/resilience.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/rls_session.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/session_context.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/signals.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/statement_ceiling.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/tls.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/transaction.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/types.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/write_queue.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/core/write_retry.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/entity.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/error_handling.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/exceptions.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/extended/__init__.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/extended/app_error_handler.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/identity_rule.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/local_sqlite.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/matrx_orm_production_door.pth +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/middleware/__init__.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/middleware/base.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/migrations/MODULE_README.md +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/migrations/__init__.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/migrations/cli.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/migrations/ddl.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/migrations/diff.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/migrations/executor.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/migrations/integration.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/migrations/loader.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/migrations/operations.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/migrations/state.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/migrations/table_filter.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/no_org_assignment.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/operations/FEATURE.md +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/operations/MODULE_README.md +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/operations/__init__.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/operations/bulk_update_values.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/operations/catalog_select.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/operations/conflict.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/operations/conflict_writes.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/operations/create.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/operations/db_functions.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/operations/delete.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/operations/dynamic_admin.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/operations/dynamic_crud.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/operations/graph_walk.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/operations/latest_rows.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/operations/queue_claim.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/operations/read.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/operations/relational_backfill.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/operations/staging_load.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/operations/update.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/platform_access.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/platform_db.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/py.typed +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/pytest_live_db_guard.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/pytest_lock_guard.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/pytest_plugin.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/pytest_production_door.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/python_sql/MODULE_README.md +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/python_sql/__init__.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/python_sql/db_objects.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/python_sql/table_detailed_relationships.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/python_sql/table_typescript_relationship.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/query/FEATURE.md +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/query/MODULE_README.md +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/query/__init__.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/query/builder.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/query/executor.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/resources/__init__.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/resources/additional-assigners-2026-09-12.json +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/resources/org_assignment_trigger_baseline.json +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/schema_builder/FEATURE.md +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/schema_builder/MODULE_README.md +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/schema_builder/__init__.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/schema_builder/code_handler.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/schema_builder/codegen_writer.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/schema_builder/columns.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/schema_builder/common.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/schema_builder/diff_preview.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/schema_builder/entity_capabilities.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/schema_builder/excluded_targets.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/schema_builder/generator.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/schema_builder/helpers/__init__.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/schema_builder/helpers/base_generators.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/schema_builder/helpers/entity_generators.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/schema_builder/helpers/git_checker.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/schema_builder/package_wiring.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/schema_builder/relationships.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/schema_builder/runner.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/schema_builder/schema.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/schema_builder/schema_manager.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/schema_builder/tables.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/schema_builder/views.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/secrets_battery/__init__.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/secrets_battery/attachments.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/secrets_battery/backup_restore.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/secrets_battery/host_authorization.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/secrets_battery/model.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/secrets_battery/mutation_receipts.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/secrets_battery/native_enable.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/secrets_battery/native_lifecycle.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/secrets_battery/native_passkeys.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/secrets_battery/native_source.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/secrets_battery/org_service.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/secrets_battery/org_vault_gate.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/secrets_battery/service.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/secrets_battery/vault_history.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/session/README.md +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/session/__init__.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/session/coalesce.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/session/dag.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/session/errors.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/session/fallback.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/session/flush.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/session/lifecycle.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/session/managed.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/session/op.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/session/reads.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/session/session.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/session/telemetry.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/sql_executor/MODULE_README.md +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/sql_executor/__init__.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/sql_executor/executor.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/sql_executor/queries.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/sql_executor/registry.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/sql_executor/types.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/sql_executor/utils.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/state.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/utils/__init__.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/utils/sql_utils.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/utils/type_converters.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/write_actor.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/scripts/git-branches.sh +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/scripts/publish.sh +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/scripts/release.sh +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/MODULE_README.md +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/__init__.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/conftest.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/MODULE_README.md +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/__init__.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_adapter_registry.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_admin_db_columns.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_admin_response_rendering.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_admin_search_negation.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_admin_search_sentinels.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_advisory_lock.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_agent_message.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_api_auth.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_api_config.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_api_handlers.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_api_protocol.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_array_agg_order_by.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_association_trigger_actor_naming.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_associations.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_associations_wiring.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_bulk_hydration_offload.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_bulk_update_by_pk.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_bulk_upsert_increment_set_fields.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_cache_debug.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_call_function.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_case_when.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_catalog.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_column_scoped_writes.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_committed_row_guard.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_composite_pk_filter.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_composite_pk_write_paths.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_config.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_conflict_target.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_conflict_writes.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_connection_codecs.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_connection_poison_guard.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_connection_primitives.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_count_composite_distinct.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_count_limit_param_leak.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_db_function_field.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_ddl_generator.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_deadlock_retry.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_derived_table.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_dirty_tracking.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_dynamic_crud.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_exceptions.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_execute_query_integrity_mapping.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_expression_primitives.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_fields.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_filter_jsonb_agg_array_index.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_fk_cycle_resolution.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_from_alias.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_fts.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_func_expression_args.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_graph_walk.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_having_annotate_alias.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_insert_ignore_and_admin_primitives.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_introspect_rls_policies.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_join_and_aggregate.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_latest_rows.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_listen_notify.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_local_sqlite.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_lock_contention_retry.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_managed_write_guard.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_matrx_entity.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_migration_diff_types.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_migration_loader.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_model_instance.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_model_meta.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_optimistic_concurrency.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_order_by_expression.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_org_assignment_inventory.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_orm_banners_are_client_safe.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_parameter_name_hydration.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_patch_jsonb_path.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_percentile_cont.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_persisted_count.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_person_scoped_session_bypasses_shared_cache.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_pool_create_never_wedges.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_pool_holder_census.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_pool_loop_recreation.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_pool_maintenance.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_postgrest_filters.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_pydantic_bridge.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_query_builder.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_query_error_detail.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_query_executor_sql.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_query_timeout.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_querybuilder_clone_semantics.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_queue_claim.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_read_connection_retry.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_read_write_declared.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_registry.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_registry_multi_database.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_registry_multi_schema.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_relational_backfill.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_relations.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_resilience.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_rls_session_scope.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_schema_exists.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_session_advisory_lock.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_standalone_write_session_context.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_state_cache.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_subquery_filter_raw.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_subquery_in_filter.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_subquery_nested_expressions.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_supabase_auth.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_supabase_config.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_tls.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_transaction_database_identity.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_transaction_gucs_one_round_trip.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_transaction_pool_release_sends_nothing.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_typed_join_projection.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_typed_predicates.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_update_case_expression.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_update_subquery.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_update_with_rebase.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_upsert_default_leak.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_upsert_with_conflict.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_values_jsonb_decode.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_watched_lifecycle.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_write_queue_deadline.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level1/test_write_retry_semantics.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level2/MODULE_README.md +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level2/__init__.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level2/conftest.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level2/test_bulk_ops.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level2/test_cache_integration.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level2/test_crud.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level2/test_foreign_keys.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level2/test_m2m.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level2/test_manager.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level2/test_migrations_live.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level2/test_query_execution.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level2/test_schema_diff.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/level2/verify_committed_row_guard_pg17.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/live_pooler_role.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/native_source_cases.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/native_source_oracle.rs +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/sample_project/.env.example +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/sample_project/README.md +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/sample_project/__init__.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/sample_project/generate.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/sample_project/generated/.gitkeep +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/sample_project/matrx_orm.yaml +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/sample_project/test_schema_generation.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/sample_project_desktop/.env.example +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/sample_project_desktop/README.md +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/sample_project_desktop/__init__.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/sample_project_desktop/client_example.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/sample_project_desktop/client_example.ts +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/sample_project_desktop/client_supabase_example.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/sample_project_desktop/server.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/schema/entity_tests.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/schema/test_base_generation.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/schema/test_composite_pk_fk_generation.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/schema/test_composite_unique_generation.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/schema/test_dto_identity_generation.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/schema/test_entity_capability_generation.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/schema/test_enum_ordering.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/schema/test_excluded_fk_targets.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/schema/test_generate_schema.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/schema/test_junction_analysis.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/schema/test_multi_schema_output.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/schema/test_schema_analysis.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/schema/test_sql_expression_defaults.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/schema/test_table_relationships_query.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/schema/test_view_generation.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/schema_builder/test_array_default_parsing.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/schema_builder/test_focused_generation_plan.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/schema_builder/test_host_models_aggregator.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/schema_builder/test_never_filter_columns.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/session/__init__.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/session/conftest.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/session/test_a_failed_capture_still_names_the_failure.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/session/test_cache_no_downgrade.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/session/test_capture_poison_proof.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/session/test_coalesce.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/session/test_dag.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/session/test_disk_spill_fallback.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/session/test_flush_individual_fallback.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/session/test_governed_write.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/session/test_live_db_guard_plugin.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/session/test_managed.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/session/test_op_enqueue_site.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/session/test_reads.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/session/test_record_error_bounded_insert.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/session/test_record_error_storm.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/session/test_session.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/session/test_spill_guard_plugin.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_a_backend_handed_over_mid_transaction_never_takes_our_writes.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_a_list_of_uuids_binds_as_uuid_array.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_a_read_only_backend_never_refuses_our_writes.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_array_arg_element_type.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_attachment_mutation_serialization.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_backup_alias_conflict.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_backup_history_restore.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_backup_restore_live.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_call_function_as.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_call_function_none_mode.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_composite_fk_is_not_a_column_fk.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_database_name_alias.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_db_functions.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_dsn_password_masking.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_dynamic_select_unregistered.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_immutable_insert_or_exact_verify.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_keyed_digest.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_model_cls_refactor.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_native_enable.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_native_lifecycle.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_native_lifecycle_fences.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_native_passkey_receipts.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_native_source.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_no_blocking_asyncpg_tls.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_one_database.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_order_by_desc_nulls_last.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_org_vault_gate.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_pooler_role_guard.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_secret_audit_names_its_organization.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_secrets_battery.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_shared_lock_guard.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_sql_param_casts.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_statement_ceiling_warning.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_sync_twins_guard.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_update_result_truthiness.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_user_visible_lookup.py +0 -0
- {matrx_orm-3.1.209 → matrx_orm-3.1.211}/tests/test_vault_aggregate_recovery_stateful.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# CLAUDE.md — matrx-orm
|
|
2
2
|
|
|
3
|
-
> 🟢 **RETIREMENT DECIDED 2026-08-22:** this package is being replaced by SQLAlchemy 2 + Alembic under a thin opinion layer and extracted to its own repo. Cross-repo system-of-record: /Users/armanisadeghi/code/common-docs/projects/orm-switch/PLAN.md — read it before touching this feature in ANY repo.
|
|
3
|
+
> 🟢 **RETIREMENT DECIDED 2026-08-22:** this package is being replaced by SQLAlchemy 2 + Alembic under a thin opinion layer and extracted to its own repo. Cross-repo system-of-record: /Users/armanisadeghi/code/common-docs/systems/architecture/database/orm-persistence/projects/orm-switch/PLAN.md — read it before touching this feature in ANY repo.
|
|
4
4
|
|
|
5
5
|
> **Operating Principle: Build the platform, not the artifact.** Every task is a probe that exposes a missing capability — build it, then consume it. Code that only serves one artifact is forbidden. Full doctrine: [/PRINCIPLES.md](../../PRINCIPLES.md).
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: matrx-orm
|
|
3
|
-
Version: 3.1.
|
|
3
|
+
Version: 3.1.211
|
|
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
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# matrx-orm secrets battery — the ONE credential vault
|
|
2
2
|
|
|
3
|
-
> Cross-repo plan (implementation authority): `/Users/armanisadeghi/code/common-docs/
|
|
3
|
+
> Cross-repo plan (implementation authority): `/Users/armanisadeghi/code/common-docs/systems/account/vault-secrets/FEATURE.md` — read it before expanding credential storage or package resolution in any repository. Phase 1 (schema) + Phase 2 (this battery's item layer, rotation script, unified aidream service) are live.
|
|
4
4
|
|
|
5
5
|
**One table, one key, everywhere.** Every platform credential — personal AND
|
|
6
6
|
organizational — lives in `users.user_secrets` (Fernet-encrypted). Every package
|
|
@@ -84,7 +84,7 @@ ownership/shape helper and does not decrypt.
|
|
|
84
84
|
|
|
85
85
|
**Native source admission (`native_source.py`).** `validate_native_source` is the server reader of the provider's exact source-v1 byte format; Rust remains the encoder and authenticator. It requires an explicit positive source-size limit, preserves nullable names and bytes, rejects duplicate/noncanonical JSON and COSE, and derives public metadata only after maintained P-256 key-pair validation. The result is provider-custody data, never a response model or generic field. `repr` and fixed failures omit material. `scripts/check_native_source_parity.py --rust-core <native-vault-provider/core>` compares the real compiled Rust reader against the server corpus; no mocked oracle. This prerequisite adds no creator, materializer, database row or native readiness. Verified September19 against132 focused tests and525 cross-language cases.
|
|
86
86
|
|
|
87
|
-
**Native lifecycle component (`native_lifecycle.py`).** The shared coordinator must supply locked parent/child projections from the exported field constants, current host management authority and its active transaction. Inspection locks the exact native metadata child; component delete/restore mutate only that child's tombstone and lifecycle. Deletion accepts active and restored-quarantined sources; recovery compares aware ISO manifest timestamps to database timestamps, then parses the already-validated manifest instant only at the typed native restore mutation boundary. Personal metadata provenance is enforced by the database guard, never inferred from the request scope. Coordinator/preview integration and actual aggregate database acceptance remain pending; these helpers alone do not enable protected recovery. Contract: [native lifecycle](../../../../../common-docs/projects/credential-sharing-browser-login/
|
|
87
|
+
**Native lifecycle component (`native_lifecycle.py`).** The shared coordinator must supply locked parent/child projections from the exported field constants, current host management authority and its active transaction. Inspection locks the exact native metadata child; component delete/restore mutate only that child's tombstone and lifecycle. Deletion accepts active and restored-quarantined sources; recovery compares aware ISO manifest timestamps to database timestamps, then parses the already-validated manifest instant only at the typed native restore mutation boundary. Personal metadata provenance is enforced by the database guard, never inferred from the request scope. Coordinator/preview integration and actual aggregate database acceptance remain pending; these helpers alone do not enable protected recovery. Contract: [native lifecycle](../../../../../common-docs/projects/credential-sharing-browser-login/REGISTER.md).
|
|
88
88
|
|
|
89
89
|
**`inject_into_sandbox=true` REQUIRES an env alias — refused otherwise.** A
|
|
90
90
|
container environment is a NAME→value map, so a field with `key IS NULL` has
|
|
@@ -255,6 +255,21 @@ def mask_value(plaintext: str) -> str:
|
|
|
255
255
|
return f"{plaintext[:head_len]}…{plaintext[-head_len:]}"
|
|
256
256
|
|
|
257
257
|
|
|
258
|
+
def hint_for(handling: str | None, plaintext: str) -> str:
|
|
259
|
+
"""The ``value_hint`` a stored field may carry: ``mask_value`` for a field a person may see
|
|
260
|
+
again, and NOTHING for a ``sealed`` one.
|
|
261
|
+
|
|
262
|
+
A sealed field is a value nobody can ever read back — a connection string, an authenticator
|
|
263
|
+
seed — and its hint goes to every client that lists the item. ``postg…uire`` is eight
|
|
264
|
+
characters of a secret handed to a browser (lane VISION-REACH, verifier 2026-10-03); the
|
|
265
|
+
first and last four of a connection string are its scheme and its ``sslmode``, but the
|
|
266
|
+
rule is the class, not the sample: no character of a sealed value leaves the server.
|
|
267
|
+
"""
|
|
268
|
+
if handling == "sealed":
|
|
269
|
+
return ""
|
|
270
|
+
return mask_value(plaintext)
|
|
271
|
+
|
|
272
|
+
|
|
258
273
|
__all__ = [
|
|
259
274
|
"configure_encryption",
|
|
260
275
|
"fernet_for_key",
|
|
@@ -270,4 +285,5 @@ __all__ = [
|
|
|
270
285
|
"derive_hmac_key",
|
|
271
286
|
"keyed_digest",
|
|
272
287
|
"mask_value",
|
|
288
|
+
"hint_for",
|
|
273
289
|
]
|
|
@@ -30,7 +30,7 @@ from typing import Any
|
|
|
30
30
|
|
|
31
31
|
from matrx_orm import transaction
|
|
32
32
|
|
|
33
|
-
from .crypto import decrypt_value, encrypt_value,
|
|
33
|
+
from .crypto import decrypt_value, encrypt_value, hint_for
|
|
34
34
|
from .host_authorization import CAPABILITY_MANAGE, require_host_authorization
|
|
35
35
|
from .model import PACKAGE_DB_NAME, CredentialAttachment, CredentialItem, UserSecret, UserSecretGrant
|
|
36
36
|
from .org_service import audit_organization, record_secret_audit
|
|
@@ -55,7 +55,7 @@ copied into a fork.
|
|
|
55
55
|
A field lands here when possessing it MINTS future access rather than merely
|
|
56
56
|
holding a value someone already gave you — an authenticator seed generates
|
|
57
57
|
every future code for the account, forever, with nothing recording it. D-15
|
|
58
|
-
(``common-docs/
|
|
58
|
+
(``common-docs/systems/architecture/persistent-cloud-browser/VISION.md``) ruled that a
|
|
59
59
|
seed does not travel with an account handover: the new owner enrols again.
|
|
60
60
|
|
|
61
61
|
🚨 This is deliberately NOT "every ``sealed`` field". Sealed also covers OAuth
|
|
@@ -739,7 +739,7 @@ async def create_credential_bundle(
|
|
|
739
739
|
field_key=spec.field_key,
|
|
740
740
|
key=spec.env_key,
|
|
741
741
|
value_encrypted=encrypt_value(spec.value),
|
|
742
|
-
value_hint=
|
|
742
|
+
value_hint=hint_for(spec.handling, spec.value),
|
|
743
743
|
handling=spec.handling,
|
|
744
744
|
editable=spec.editable,
|
|
745
745
|
inject_into_sandbox=spec.inject_into_sandbox,
|
|
@@ -1270,7 +1270,7 @@ async def add_credential_field(
|
|
|
1270
1270
|
field_key=spec.field_key,
|
|
1271
1271
|
key=spec.env_key,
|
|
1272
1272
|
value_encrypted=encrypt_value(spec.value),
|
|
1273
|
-
value_hint=
|
|
1273
|
+
value_hint=hint_for(spec.handling, spec.value),
|
|
1274
1274
|
handling=spec.handling,
|
|
1275
1275
|
editable=spec.editable,
|
|
1276
1276
|
inject_into_sandbox=spec.inject_into_sandbox,
|
|
@@ -1435,7 +1435,7 @@ async def update_credential_field_value(
|
|
|
1435
1435
|
await UserSecret.update_where(
|
|
1436
1436
|
{"id": field_id, "deleted_at__isnull": True},
|
|
1437
1437
|
value_encrypted=encrypted_value,
|
|
1438
|
-
value_hint=
|
|
1438
|
+
value_hint=hint_for(str(raw.get("handling") or ""), value),
|
|
1439
1439
|
updated_by=actor_id,
|
|
1440
1440
|
updated_at=datetime.now(UTC),
|
|
1441
1441
|
)
|
|
@@ -1512,7 +1512,7 @@ async def rotate_credential_fields(
|
|
|
1512
1512
|
await UserSecret.update_where(
|
|
1513
1513
|
{"id": str(field_raw["id"])},
|
|
1514
1514
|
value_encrypted=encrypted_value,
|
|
1515
|
-
value_hint=
|
|
1515
|
+
value_hint=hint_for(str(field_raw.get("handling") or ""), plaintext),
|
|
1516
1516
|
updated_by=actor_id,
|
|
1517
1517
|
updated_at=now,
|
|
1518
1518
|
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "matrx-orm"
|
|
3
|
-
version = "3.1.
|
|
3
|
+
version = "3.1.211"
|
|
4
4
|
description = "Async-first PostgreSQL ORM with bidirectional migrations, schema introspection, many-to-many relationships, and built-in state caching"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = { text = "MIT" }
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"""A SEALED FIELD'S value_hint IS EMPTY — no character of a secret reaches a client (lane VISION-REACH wave 3).
|
|
2
|
+
|
|
3
|
+
THE USE CASE: Cedar Ridge Physical Therapy connects its own Postgres to AI Matrx. The connection string
|
|
4
|
+
is a SEALED vault field (nobody can ever reveal it), yet every vault listing carried its ``value_hint`` —
|
|
5
|
+
``postg…uire`` — eight characters of the secret, to every browser that opened the item (verifier,
|
|
6
|
+
2026-10-03). The hint is the only value-derived data a field row may carry, so it is the one thing to
|
|
7
|
+
guard: sealed → nothing; anything a person may see again → the masked shape as before.
|
|
8
|
+
|
|
9
|
+
The census below reads the battery's own write paths: every ``value_hint=`` a UserSecret write sets
|
|
10
|
+
goes through ``hint_for``; a new write that reaches for ``mask_value`` directly is a new member of the
|
|
11
|
+
class and turns this red.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
from __future__ import annotations
|
|
15
|
+
|
|
16
|
+
import re
|
|
17
|
+
from pathlib import Path
|
|
18
|
+
|
|
19
|
+
import pytest
|
|
20
|
+
|
|
21
|
+
from matrx_orm.secrets_battery import crypto
|
|
22
|
+
|
|
23
|
+
CONNECTION = "postgresql://clinic_reader:Sentinel-Pw-7f3a9c@aws-0-us-east-1.pooler.supabase.com:6543/postgres?sslmode=require"
|
|
24
|
+
TOKEN = "ghp_1234567890abcd"
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
@pytest.mark.parametrize(
|
|
28
|
+
("handling", "value", "expected"),
|
|
29
|
+
[
|
|
30
|
+
("sealed", CONNECTION, ""),
|
|
31
|
+
("sealed", TOKEN, ""),
|
|
32
|
+
("revealable", TOKEN, "ghp_…abcd"),
|
|
33
|
+
("visible", "clinic_reader", "clin…ader"),
|
|
34
|
+
(None, TOKEN, "ghp_…abcd"),
|
|
35
|
+
],
|
|
36
|
+
)
|
|
37
|
+
def test_the_hint_of_a_field_is_nothing_when_sealed_and_the_mask_otherwise(handling, value, expected) -> None:
|
|
38
|
+
hint = crypto.hint_for(handling, value)
|
|
39
|
+
assert hint == expected
|
|
40
|
+
if handling == "sealed":
|
|
41
|
+
assert not any(ch in hint for ch in value if ch not in "…")
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def test_every_value_hint_the_battery_writes_goes_through_hint_for() -> None:
|
|
45
|
+
"""CENSUS (not a change detector): the class is 'a UserSecret write that sets value_hint'."""
|
|
46
|
+
source = Path(crypto.__file__).with_name("items.py").read_text()
|
|
47
|
+
# a WRITE derives the hint from a plaintext; a projection copies the row's own column back out
|
|
48
|
+
writes = [w for w in re.findall(r"value_hint=([^,\n]+)", source) if '"value_hint"' not in w]
|
|
49
|
+
assert len(writes) >= 4, f"items.py writes value_hint in fewer places than the four it had: {writes}"
|
|
50
|
+
direct = [w for w in writes if not w.startswith("hint_for(")]
|
|
51
|
+
assert direct == [], f"a value_hint written without hint_for: {direct}"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""Minting keys never change hands — D-15, enforced in the battery (no DB).
|
|
2
2
|
|
|
3
|
-
``common-docs/
|
|
3
|
+
``common-docs/systems/architecture/persistent-cloud-browser/VISION.md`` D-15: *"A seed
|
|
4
4
|
does NOT transfer with an account handover — the new owner enrolls again.
|
|
5
5
|
Otherwise two people generate valid codes forever with nothing recording it."*
|
|
6
6
|
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/python_sql/table_detailed_relationships.py
RENAMED
|
File without changes
|
{matrx_orm-3.1.209 → matrx_orm-3.1.211}/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.209 → matrx_orm-3.1.211}/matrx_orm/resources/additional-assigners-2026-09-12.json
RENAMED
|
File without changes
|
{matrx_orm-3.1.209 → matrx_orm-3.1.211}/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
|
|
File without changes
|
{matrx_orm-3.1.209 → matrx_orm-3.1.211}/matrx_orm/schema_builder/helpers/entity_generators.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|