matrx-orm 3.1.146__tar.gz → 3.1.147__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.146 → matrx_orm-3.1.147}/PKG-INFO +1 -1
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/expressions.py +1 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/query/executor.py +43 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/pyproject.toml +1 -1
- matrx_orm-3.1.147/tests/test_user_visible_lookup.py +52 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/.gitignore +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/AGENTS.md +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/BASE_CLASS_METHODS.md +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/CLAUDE.md +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/MODEL_API.md +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/README.md +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/database/orm/extended/managers/ai_model_base.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/docs/migrations.md +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/FEATURE.md +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/MODULE_README.md +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/__init__.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/adapters/MODULE_README.md +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/adapters/__init__.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/adapters/async_postgresql.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/adapters/base_adapter.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/adapters/postgresql.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/adapters/postgrest_client_adapter.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/adapters/supabase_adapter.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/admin/FEATURE.md +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/admin/__init__.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/admin/router.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/api/__init__.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/api/auth.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/api/config.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/api/handlers.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/api/protocol.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/api/server.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/associations.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/cache_debug.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/catalog.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/catalog_sql.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/client/MODULE_README.md +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/client/__init__.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/client/postgres_connection.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/client/postgrest.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/client/supabase_auth.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/client/supabase_config.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/client/supabase_manager.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/EXTENDED-TASK.md +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/FEATURE.md +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/MODULE_README.md +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/RELATIONS-TASKS.md +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/TASKS.md +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/__init__.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/async_db_manager.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/base.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/config.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/connections.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/db_function.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/diagnostics.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/extended.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/fields.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/introspection.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/listen.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/loop_filters.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/model_dto.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/model_view.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/one_database.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/paginator.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/pool_maintenance.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/pool_watch.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/pooler_role.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/pydantic_bridge.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/registry.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/relations.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/resilience.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/rls_session.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/session_context.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/signals.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/tls.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/transaction.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/types.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/write_queue.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/core/write_retry.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/entity.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/error_handling.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/exceptions.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/extended/__init__.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/extended/app_error_handler.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/identity_rule.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/local_sqlite.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/middleware/__init__.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/middleware/base.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/migrations/MODULE_README.md +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/migrations/__init__.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/migrations/cli.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/migrations/ddl.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/migrations/diff.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/migrations/executor.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/migrations/integration.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/migrations/loader.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/migrations/operations.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/migrations/state.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/migrations/table_filter.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/no_org_assignment.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/operations/FEATURE.md +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/operations/MODULE_README.md +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/operations/__init__.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/operations/bulk_update_values.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/operations/catalog_select.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/operations/conflict.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/operations/conflict_writes.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/operations/create.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/operations/db_functions.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/operations/delete.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/operations/dynamic_admin.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/operations/dynamic_crud.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/operations/graph_walk.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/operations/latest_rows.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/operations/queue_claim.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/operations/read.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/operations/relational_backfill.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/operations/staging_load.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/operations/update.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/platform_access.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/platform_db.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/py.typed +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/pytest_plugin.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/python_sql/MODULE_README.md +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/python_sql/__init__.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/python_sql/db_objects.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/python_sql/table_detailed_relationships.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/python_sql/table_typescript_relationship.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/query/FEATURE.md +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/query/MODULE_README.md +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/query/__init__.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/query/builder.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/resources/__init__.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/resources/additional-assigners-2026-09-12.json +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/resources/org_assignment_trigger_baseline.json +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/schema_builder/FEATURE.md +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/schema_builder/MODULE_README.md +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/schema_builder/__init__.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/schema_builder/code_handler.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/schema_builder/codegen_writer.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/schema_builder/columns.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/schema_builder/common.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/schema_builder/diff_preview.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/schema_builder/entity_capabilities.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/schema_builder/generator.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/schema_builder/helpers/__init__.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/schema_builder/helpers/base_generators.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/schema_builder/helpers/entity_generators.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/schema_builder/helpers/git_checker.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/schema_builder/package_wiring.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/schema_builder/relationships.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/schema_builder/runner.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/schema_builder/schema.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/schema_builder/schema_manager.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/schema_builder/tables.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/schema_builder/views.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/secrets_battery/FEATURE.md +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/secrets_battery/__init__.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/secrets_battery/attachments.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/secrets_battery/crypto.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/secrets_battery/host_authorization.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/secrets_battery/items.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/secrets_battery/model.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/secrets_battery/mutation_receipts.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/secrets_battery/org_service.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/secrets_battery/service.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/session/README.md +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/session/__init__.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/session/coalesce.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/session/dag.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/session/errors.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/session/fallback.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/session/flush.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/session/lifecycle.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/session/managed.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/session/op.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/session/reads.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/session/session.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/session/telemetry.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/sql_executor/MODULE_README.md +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/sql_executor/__init__.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/sql_executor/executor.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/sql_executor/queries.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/sql_executor/registry.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/sql_executor/types.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/sql_executor/utils.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/state.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/utils/__init__.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/utils/sql_utils.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/utils/type_converters.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/scripts/git-branches.sh +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/scripts/publish.sh +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/scripts/release.sh +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/MODULE_README.md +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/__init__.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/conftest.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/MODULE_README.md +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/__init__.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_adapter_registry.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_admin_db_columns.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_admin_response_rendering.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_admin_search_negation.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_admin_search_sentinels.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_advisory_lock.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_agent_message.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_api_auth.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_api_config.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_api_handlers.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_api_protocol.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_array_agg_order_by.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_associations.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_associations_wiring.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_bulk_hydration_offload.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_bulk_update_by_pk.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_bulk_upsert_increment_set_fields.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_cache_debug.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_call_function.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_case_when.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_catalog.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_committed_row_guard.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_composite_pk_filter.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_composite_pk_write_paths.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_config.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_conflict_target.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_conflict_writes.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_connection_codecs.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_connection_poison_guard.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_connection_primitives.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_count_composite_distinct.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_count_limit_param_leak.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_db_function_field.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_ddl_generator.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_deadlock_retry.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_derived_table.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_dirty_tracking.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_dynamic_crud.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_exceptions.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_execute_query_integrity_mapping.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_expression_primitives.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_fields.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_filter_jsonb_agg_array_index.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_from_alias.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_fts.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_func_expression_args.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_graph_walk.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_having_annotate_alias.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_insert_ignore_and_admin_primitives.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_introspect_rls_policies.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_join_and_aggregate.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_latest_rows.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_listen_notify.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_local_sqlite.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_lock_contention_retry.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_managed_write_guard.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_matrx_entity.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_migration_diff_types.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_migration_loader.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_model_instance.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_model_meta.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_optimistic_concurrency.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_order_by_expression.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_org_assignment_inventory.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_parameter_name_hydration.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_patch_jsonb_path.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_persisted_count.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_pool_holder_census.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_pool_loop_recreation.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_pool_maintenance.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_postgrest_filters.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_pydantic_bridge.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_query_builder.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_query_error_detail.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_query_executor_sql.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_query_timeout.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_querybuilder_clone_semantics.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_queue_claim.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_read_connection_retry.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_registry.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_registry_multi_database.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_registry_multi_schema.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_relational_backfill.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_relations.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_resilience.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_rls_session_scope.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_schema_exists.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_session_advisory_lock.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_standalone_write_session_context.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_state_cache.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_subquery_filter_raw.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_subquery_in_filter.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_subquery_nested_expressions.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_supabase_auth.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_supabase_config.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_tls.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_transaction_database_identity.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_typed_join_projection.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_typed_predicates.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_update_case_expression.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_update_subquery.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_update_with_rebase.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_upsert_default_leak.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_upsert_with_conflict.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_values_jsonb_decode.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_watched_lifecycle.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_write_queue_deadline.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level1/test_write_retry_semantics.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level2/MODULE_README.md +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level2/__init__.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level2/conftest.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level2/test_bulk_ops.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level2/test_cache_integration.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level2/test_crud.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level2/test_foreign_keys.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level2/test_m2m.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level2/test_manager.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level2/test_migrations_live.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level2/test_query_execution.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level2/test_schema_diff.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/level2/verify_committed_row_guard_pg17.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/live_pooler_role.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/sample_project/.env.example +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/sample_project/README.md +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/sample_project/__init__.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/sample_project/generate.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/sample_project/generated/.gitkeep +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/sample_project/matrx_orm.yaml +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/sample_project/test_schema_generation.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/sample_project_desktop/.env.example +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/sample_project_desktop/README.md +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/sample_project_desktop/__init__.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/sample_project_desktop/client_example.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/sample_project_desktop/client_example.ts +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/sample_project_desktop/client_supabase_example.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/sample_project_desktop/server.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/schema/entity_tests.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/schema/test_base_generation.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/schema/test_composite_pk_fk_generation.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/schema/test_composite_unique_generation.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/schema/test_dto_identity_generation.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/schema/test_entity_capability_generation.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/schema/test_enum_ordering.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/schema/test_generate_schema.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/schema/test_junction_analysis.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/schema/test_multi_schema_output.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/schema/test_schema_analysis.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/schema/test_sql_expression_defaults.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/schema/test_table_relationships_query.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/schema/test_view_generation.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/schema_builder/test_array_default_parsing.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/schema_builder/test_focused_generation_plan.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/schema_builder/test_host_models_aggregator.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/session/__init__.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/session/conftest.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/session/test_cache_no_downgrade.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/session/test_capture_poison_proof.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/session/test_coalesce.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/session/test_dag.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/session/test_disk_spill_fallback.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/session/test_flush_individual_fallback.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/session/test_governed_write.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/session/test_managed.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/session/test_op_enqueue_site.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/session/test_reads.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/session/test_record_error_bounded_insert.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/session/test_record_error_storm.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/session/test_session.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/session/test_spill_guard_plugin.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/test_array_arg_element_type.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/test_database_name_alias.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/test_db_functions.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/test_dynamic_select_unregistered.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/test_immutable_insert_or_exact_verify.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/test_keyed_digest.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/test_model_cls_refactor.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/test_no_blocking_asyncpg_tls.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/test_one_database.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/test_order_by_desc_nulls_last.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/test_pooler_role_guard.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/test_secrets_battery.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/test_secrets_minting_keys.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/test_sql_param_casts.py +0 -0
- {matrx_orm-3.1.146 → matrx_orm-3.1.147}/tests/test_sync_twins_guard.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: matrx-orm
|
|
3
|
-
Version: 3.1.
|
|
3
|
+
Version: 3.1.147
|
|
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
|
|
@@ -32,6 +32,12 @@ _BULK_HYDRATION_THREAD_THRESHOLD = 200
|
|
|
32
32
|
|
|
33
33
|
_SKIP_PARAM = object()
|
|
34
34
|
|
|
35
|
+
# The path field family the `__user_visible` lookup is registered on. The lookup
|
|
36
|
+
# emits `files.is_user_visible_path(<column>)`, an IMMUTABLE predicate over a
|
|
37
|
+
# logical file path; applying it to any other column would test the wrong value,
|
|
38
|
+
# so the lookup raises instead.
|
|
39
|
+
_USER_VISIBLE_PATH_FIELDS = frozenset({"file_path", "folder_path"})
|
|
40
|
+
|
|
35
41
|
_PARAM_RE = re.compile(r"\$(\d+)")
|
|
36
42
|
# Plain SQL identifier — same trust model as conflict_writes._IDENT_RE. Used for
|
|
37
43
|
# the primary-key name interpolated into the pk-ordered locking sub-select.
|
|
@@ -351,6 +357,8 @@ class QueryExecutor:
|
|
|
351
357
|
"startswith",
|
|
352
358
|
"endswith",
|
|
353
359
|
"exclude",
|
|
360
|
+
# Path-family predicate lookup (see _USER_VISIBLE_PATH_FIELDS)
|
|
361
|
+
"user_visible",
|
|
354
362
|
# JSONB operators
|
|
355
363
|
"json_key",
|
|
356
364
|
"json_has_key",
|
|
@@ -444,6 +452,41 @@ class QueryExecutor:
|
|
|
444
452
|
return f"{field} LIKE {placeholder}", f"%{_escape_like(value)}"
|
|
445
453
|
if operator == "exclude":
|
|
446
454
|
return f"{field} != {placeholder}", value
|
|
455
|
+
if operator == "user_visible":
|
|
456
|
+
# `file_path__user_visible=True` -> files.is_user_visible_path(file_path) = $n
|
|
457
|
+
#
|
|
458
|
+
# ONE EXPRESSION, not merely one rule. Postgres's predicate-implication
|
|
459
|
+
# prover matches a partial index whose predicate contains a function call
|
|
460
|
+
# only against the SAME expression in the query: spelling the rule as
|
|
461
|
+
# `path NOT LIKE 'system-files/%' AND ...` does NOT imply
|
|
462
|
+
# `files.is_user_visible_path(path)`, so the index is lost (measured live
|
|
463
|
+
# 2026-09-13: cost 11,177 with Sort+Filter vs 13.83 Index Only Scan for
|
|
464
|
+
# the identical predicate spelled as the function call). This named lookup
|
|
465
|
+
# is how every consumer -- the change feed, the tree RPC and both partial
|
|
466
|
+
# index predicates -- spells one expression. It is NOT a raw-SQL escape
|
|
467
|
+
# hatch: matrx-orm deliberately has none, and the emitted call is fixed.
|
|
468
|
+
column = field.rsplit(".", 1)[-1].strip('"')
|
|
469
|
+
if column not in _USER_VISIBLE_PATH_FIELDS:
|
|
470
|
+
raise QueryError(
|
|
471
|
+
message=(
|
|
472
|
+
f"The `__user_visible` lookup is registered on the path field "
|
|
473
|
+
f"family {sorted(_USER_VISIBLE_PATH_FIELDS)} and cannot be applied "
|
|
474
|
+
f"to {column!r}: files.is_user_visible_path() takes a logical file "
|
|
475
|
+
f"path, so applying it to another column would silently test the "
|
|
476
|
+
f"wrong value."
|
|
477
|
+
),
|
|
478
|
+
details={"query": f"{field} __user_visible"},
|
|
479
|
+
)
|
|
480
|
+
if not isinstance(value, bool):
|
|
481
|
+
raise QueryError(
|
|
482
|
+
message=(
|
|
483
|
+
f"The `__user_visible` lookup is boolean-valued; got "
|
|
484
|
+
f"{type(value).__name__} ({value!r}). Pass True for user-visible "
|
|
485
|
+
f"rows or False for their complement."
|
|
486
|
+
),
|
|
487
|
+
details={"query": f"{field} __user_visible"},
|
|
488
|
+
)
|
|
489
|
+
return f"files.is_user_visible_path({field}) = {placeholder}", value
|
|
447
490
|
# JSONB operators
|
|
448
491
|
if operator == "json_key":
|
|
449
492
|
# value is either a bare key (non-null test) or (key, expected_value)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "matrx-orm"
|
|
3
|
-
version = "3.1.
|
|
3
|
+
version = "3.1.147"
|
|
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,52 @@
|
|
|
1
|
+
"""The `__user_visible` path lookup (folder-sync SPEC-SERVER S25).
|
|
2
|
+
|
|
3
|
+
ONE EXPRESSION, not merely one rule: the change feed, `public.get_user_file_tree`
|
|
4
|
+
and both partial index predicates must spell the visibility rule as the identical
|
|
5
|
+
call `files.is_user_visible_path(<column>)`, because Postgres's predicate-implication
|
|
6
|
+
prover only matches an index predicate containing a function call against the same
|
|
7
|
+
expression. These tests pin the emitted SQL text, so a refactor that "simplifies" the
|
|
8
|
+
lookup into LIKE conjuncts fails here instead of silently losing the index.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
import pytest
|
|
12
|
+
|
|
13
|
+
from matrx_orm.core.expressions import _parse_lookup_simple
|
|
14
|
+
from matrx_orm.exceptions import QueryError
|
|
15
|
+
from matrx_orm.query.executor import QueryExecutor
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def test_lookup_is_parsed_as_an_operator_not_a_column():
|
|
19
|
+
assert QueryExecutor._parse_lookup("file_path__user_visible") == ("file_path", "user_visible")
|
|
20
|
+
assert _parse_lookup_simple("file_path__user_visible") == ("file_path", "user_visible")
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
@pytest.mark.parametrize(
|
|
24
|
+
("field", "expected"),
|
|
25
|
+
[
|
|
26
|
+
("file_path", "files.is_user_visible_path(file_path) = $1"),
|
|
27
|
+
("files.files.file_path", "files.is_user_visible_path(files.files.file_path) = $1"),
|
|
28
|
+
("folder_path", "files.is_user_visible_path(folder_path) = $1"),
|
|
29
|
+
],
|
|
30
|
+
)
|
|
31
|
+
def test_emits_the_predicate_call_verbatim(field, expected):
|
|
32
|
+
sql, param = QueryExecutor._build_condition(field, "user_visible", True, 1)
|
|
33
|
+
assert sql == expected
|
|
34
|
+
assert param is True
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def test_false_is_the_complement_not_a_negated_spelling():
|
|
38
|
+
sql, param = QueryExecutor._build_condition("file_path", "user_visible", False, 7)
|
|
39
|
+
assert sql == "files.is_user_visible_path(file_path) = $7"
|
|
40
|
+
assert param is False
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def test_a_non_path_column_raises_instead_of_testing_the_wrong_value():
|
|
44
|
+
with pytest.raises(QueryError) as exc:
|
|
45
|
+
QueryExecutor._build_condition("files.files.file_name", "user_visible", True, 1)
|
|
46
|
+
assert "path field family" in str(exc.value)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def test_a_non_boolean_value_raises():
|
|
50
|
+
with pytest.raises(QueryError) as exc:
|
|
51
|
+
QueryExecutor._build_condition("file_path", "user_visible", "true", 1)
|
|
52
|
+
assert "boolean-valued" in str(exc.value)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.146 → matrx_orm-3.1.147}/matrx_orm/python_sql/table_detailed_relationships.py
RENAMED
|
File without changes
|
{matrx_orm-3.1.146 → matrx_orm-3.1.147}/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
|
{matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/resources/additional-assigners-2026-09-12.json
RENAMED
|
File without changes
|
{matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/resources/org_assignment_trigger_baseline.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{matrx_orm-3.1.146 → matrx_orm-3.1.147}/matrx_orm/schema_builder/helpers/entity_generators.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|