matrx-orm 3.1.166__tar.gz → 3.1.167__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.166 → matrx_orm-3.1.167}/PKG-INFO +1 -1
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/operations/create.py +18 -8
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/pyproject.toml +1 -1
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_query_timeout.py +49 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/.gitignore +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/AGENTS.md +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/BASE_CLASS_METHODS.md +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/CLAUDE.md +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/MODEL_API.md +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/README.md +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/database/orm/extended/managers/ai_model_base.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/docs/migrations.md +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/FEATURE.md +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/MODULE_README.md +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/__init__.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/adapters/MODULE_README.md +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/adapters/__init__.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/adapters/async_postgresql.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/adapters/base_adapter.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/adapters/postgrest_client_adapter.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/adapters/supabase_adapter.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/admin/FEATURE.md +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/admin/__init__.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/admin/router.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/api/__init__.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/api/auth.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/api/config.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/api/handlers.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/api/protocol.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/api/server.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/associations.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/cache_debug.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/catalog.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/catalog_sql.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/client/MODULE_README.md +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/client/__init__.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/client/postgres_connection.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/client/postgrest.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/client/supabase_auth.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/client/supabase_config.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/client/supabase_manager.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/EXTENDED-TASK.md +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/FEATURE.md +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/MODULE_README.md +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/RELATIONS-TASKS.md +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/TASKS.md +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/__init__.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/async_db_manager.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/base.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/config.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/connections.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/db_function.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/diagnostics.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/expressions.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/extended.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/fields.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/introspection.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/listen.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/loop_filters.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/model_dto.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/model_view.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/one_database.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/paginator.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/pool_maintenance.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/pool_watch.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/pooler_role.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/pydantic_bridge.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/registry.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/relations.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/resilience.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/rls_session.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/session_context.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/signals.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/tls.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/transaction.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/types.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/write_queue.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/core/write_retry.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/entity.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/error_handling.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/exceptions.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/extended/__init__.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/extended/app_error_handler.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/identity_rule.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/local_sqlite.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/middleware/__init__.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/middleware/base.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/migrations/MODULE_README.md +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/migrations/__init__.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/migrations/cli.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/migrations/ddl.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/migrations/diff.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/migrations/executor.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/migrations/integration.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/migrations/loader.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/migrations/operations.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/migrations/state.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/migrations/table_filter.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/no_org_assignment.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/operations/FEATURE.md +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/operations/MODULE_README.md +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/operations/__init__.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/operations/bulk_update_values.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/operations/catalog_select.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/operations/conflict.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/operations/conflict_writes.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/operations/db_functions.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/operations/delete.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/operations/dynamic_admin.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/operations/dynamic_crud.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/operations/graph_walk.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/operations/latest_rows.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/operations/queue_claim.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/operations/read.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/operations/relational_backfill.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/operations/staging_load.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/operations/update.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/platform_access.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/platform_db.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/py.typed +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/pytest_lock_guard.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/pytest_plugin.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/python_sql/MODULE_README.md +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/python_sql/__init__.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/python_sql/db_objects.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/python_sql/table_detailed_relationships.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/python_sql/table_typescript_relationship.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/query/FEATURE.md +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/query/MODULE_README.md +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/query/__init__.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/query/builder.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/query/executor.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/resources/__init__.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/resources/additional-assigners-2026-09-12.json +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/resources/org_assignment_trigger_baseline.json +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/schema_builder/FEATURE.md +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/schema_builder/MODULE_README.md +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/schema_builder/__init__.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/schema_builder/code_handler.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/schema_builder/codegen_writer.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/schema_builder/columns.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/schema_builder/common.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/schema_builder/diff_preview.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/schema_builder/entity_capabilities.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/schema_builder/generator.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/schema_builder/helpers/__init__.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/schema_builder/helpers/base_generators.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/schema_builder/helpers/entity_generators.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/schema_builder/helpers/git_checker.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/schema_builder/package_wiring.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/schema_builder/relationships.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/schema_builder/runner.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/schema_builder/schema.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/schema_builder/schema_manager.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/schema_builder/tables.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/schema_builder/views.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/secrets_battery/FEATURE.md +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/secrets_battery/__init__.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/secrets_battery/attachments.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/secrets_battery/crypto.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/secrets_battery/host_authorization.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/secrets_battery/items.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/secrets_battery/model.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/secrets_battery/mutation_receipts.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/secrets_battery/org_service.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/secrets_battery/service.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/session/README.md +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/session/__init__.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/session/coalesce.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/session/dag.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/session/errors.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/session/fallback.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/session/flush.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/session/lifecycle.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/session/managed.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/session/op.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/session/reads.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/session/session.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/session/telemetry.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/sql_executor/MODULE_README.md +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/sql_executor/__init__.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/sql_executor/executor.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/sql_executor/queries.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/sql_executor/registry.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/sql_executor/types.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/sql_executor/utils.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/state.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/utils/__init__.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/utils/sql_utils.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/utils/type_converters.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/matrx_orm/write_actor.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/scripts/git-branches.sh +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/scripts/publish.sh +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/scripts/release.sh +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/MODULE_README.md +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/__init__.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/conftest.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/MODULE_README.md +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/__init__.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_adapter_registry.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_admin_db_columns.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_admin_response_rendering.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_admin_search_negation.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_admin_search_sentinels.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_advisory_lock.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_agent_message.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_api_auth.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_api_config.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_api_handlers.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_api_protocol.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_array_agg_order_by.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_associations.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_associations_wiring.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_bulk_hydration_offload.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_bulk_update_by_pk.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_bulk_upsert_increment_set_fields.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_cache_debug.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_call_function.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_case_when.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_catalog.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_committed_row_guard.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_composite_pk_filter.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_composite_pk_write_paths.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_config.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_conflict_target.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_conflict_writes.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_connection_codecs.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_connection_poison_guard.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_connection_primitives.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_count_composite_distinct.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_count_limit_param_leak.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_db_function_field.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_ddl_generator.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_deadlock_retry.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_derived_table.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_dirty_tracking.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_dynamic_crud.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_exceptions.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_execute_query_integrity_mapping.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_expression_primitives.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_fields.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_filter_jsonb_agg_array_index.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_from_alias.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_fts.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_func_expression_args.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_graph_walk.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_having_annotate_alias.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_insert_ignore_and_admin_primitives.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_introspect_rls_policies.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_join_and_aggregate.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_latest_rows.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_listen_notify.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_local_sqlite.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_lock_contention_retry.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_managed_write_guard.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_matrx_entity.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_migration_diff_types.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_migration_loader.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_model_instance.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_model_meta.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_optimistic_concurrency.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_order_by_expression.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_org_assignment_inventory.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_orm_banners_are_client_safe.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_parameter_name_hydration.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_patch_jsonb_path.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_persisted_count.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_pool_holder_census.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_pool_loop_recreation.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_pool_maintenance.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_postgrest_filters.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_pydantic_bridge.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_query_builder.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_query_error_detail.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_query_executor_sql.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_querybuilder_clone_semantics.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_queue_claim.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_read_connection_retry.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_registry.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_registry_multi_database.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_registry_multi_schema.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_relational_backfill.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_relations.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_resilience.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_rls_session_scope.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_schema_exists.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_session_advisory_lock.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_standalone_write_session_context.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_state_cache.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_subquery_filter_raw.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_subquery_in_filter.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_subquery_nested_expressions.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_supabase_auth.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_supabase_config.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_tls.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_transaction_database_identity.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_typed_join_projection.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_typed_predicates.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_update_case_expression.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_update_subquery.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_update_with_rebase.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_upsert_default_leak.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_upsert_with_conflict.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_values_jsonb_decode.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_watched_lifecycle.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_write_queue_deadline.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level1/test_write_retry_semantics.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level2/MODULE_README.md +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level2/__init__.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level2/conftest.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level2/test_bulk_ops.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level2/test_cache_integration.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level2/test_crud.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level2/test_foreign_keys.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level2/test_m2m.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level2/test_manager.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level2/test_migrations_live.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level2/test_query_execution.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level2/test_schema_diff.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/level2/verify_committed_row_guard_pg17.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/live_pooler_role.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/sample_project/.env.example +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/sample_project/README.md +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/sample_project/__init__.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/sample_project/generate.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/sample_project/generated/.gitkeep +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/sample_project/matrx_orm.yaml +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/sample_project/test_schema_generation.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/sample_project_desktop/.env.example +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/sample_project_desktop/README.md +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/sample_project_desktop/__init__.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/sample_project_desktop/client_example.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/sample_project_desktop/client_example.ts +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/sample_project_desktop/client_supabase_example.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/sample_project_desktop/server.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/schema/entity_tests.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/schema/test_base_generation.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/schema/test_composite_pk_fk_generation.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/schema/test_composite_unique_generation.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/schema/test_dto_identity_generation.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/schema/test_entity_capability_generation.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/schema/test_enum_ordering.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/schema/test_generate_schema.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/schema/test_junction_analysis.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/schema/test_multi_schema_output.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/schema/test_schema_analysis.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/schema/test_sql_expression_defaults.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/schema/test_table_relationships_query.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/schema/test_view_generation.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/schema_builder/test_array_default_parsing.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/schema_builder/test_focused_generation_plan.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/schema_builder/test_host_models_aggregator.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/session/__init__.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/session/conftest.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/session/test_cache_no_downgrade.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/session/test_capture_poison_proof.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/session/test_coalesce.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/session/test_dag.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/session/test_disk_spill_fallback.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/session/test_flush_individual_fallback.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/session/test_governed_write.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/session/test_managed.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/session/test_op_enqueue_site.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/session/test_reads.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/session/test_record_error_bounded_insert.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/session/test_record_error_storm.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/session/test_session.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/session/test_spill_guard_plugin.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/test_array_arg_element_type.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/test_database_name_alias.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/test_db_functions.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/test_dynamic_select_unregistered.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/test_immutable_insert_or_exact_verify.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/test_keyed_digest.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/test_model_cls_refactor.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/test_no_blocking_asyncpg_tls.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/test_one_database.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/test_order_by_desc_nulls_last.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/test_pooler_role_guard.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/test_secret_audit_names_its_organization.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/test_secrets_battery.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/test_secrets_minting_keys.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/test_shared_lock_guard.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/test_sql_param_casts.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/test_sync_twins_guard.py +0 -0
- {matrx_orm-3.1.166 → matrx_orm-3.1.167}/tests/test_user_visible_lookup.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.167
|
|
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,5 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import asyncio
|
|
3
4
|
from typing import Any, TYPE_CHECKING, Union
|
|
4
5
|
|
|
5
6
|
from matrx_orm.state import StateManager
|
|
@@ -20,6 +21,19 @@ if TYPE_CHECKING:
|
|
|
20
21
|
OnConflictArg = Union[list[str], "ConflictTarget"]
|
|
21
22
|
|
|
22
23
|
|
|
24
|
+
def _prepare_instance_data(model_cls: type[Model], instance: Model) -> dict[str, Any]:
|
|
25
|
+
"""Coerce a single insert row without occupying the request event loop."""
|
|
26
|
+
data: dict[str, Any] = {}
|
|
27
|
+
for field_name, field in model_cls._fields.items():
|
|
28
|
+
if isinstance(field, Field):
|
|
29
|
+
value = getattr(instance, field_name)
|
|
30
|
+
if value is None and field.default is not None:
|
|
31
|
+
value = field.get_default()
|
|
32
|
+
if value is not None:
|
|
33
|
+
data[field_name] = field.get_db_prep_value(value)
|
|
34
|
+
return data
|
|
35
|
+
|
|
36
|
+
|
|
23
37
|
def _normalise_on_conflict(on_conflict: OnConflictArg) -> tuple[list[str], ConflictTarget | None]:
|
|
24
38
|
"""Internal: unify the two acceptable shapes.
|
|
25
39
|
|
|
@@ -85,14 +99,10 @@ async def save(instance: Model, *, statement_timeout: float | None = None) -> Mo
|
|
|
85
99
|
model_cls = instance.__class__
|
|
86
100
|
await pre_create.send(model_cls, instance=instance)
|
|
87
101
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
if value is None and field.default is not None:
|
|
93
|
-
value = field.get_default()
|
|
94
|
-
if value is not None:
|
|
95
|
-
data[field_name] = field.get_db_prep_value(value)
|
|
102
|
+
# JSONB conversion can recursively walk a large OCR/PDF payload and take
|
|
103
|
+
# seconds. This is a shared write boundary, so every single-row create
|
|
104
|
+
# gets the same event-loop protection as the existing bulk write paths.
|
|
105
|
+
data = await asyncio.to_thread(_prepare_instance_data, model_cls, instance)
|
|
96
106
|
|
|
97
107
|
query = QueryBuilder(model_cls)._build_query()
|
|
98
108
|
query["data"] = data
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "matrx-orm"
|
|
3
|
-
version = "3.1.
|
|
3
|
+
version = "3.1.167"
|
|
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" }
|
|
@@ -10,7 +10,10 @@ dict, and the adapter call (via a fake adapter — no DB).
|
|
|
10
10
|
|
|
11
11
|
from __future__ import annotations
|
|
12
12
|
|
|
13
|
+
import asyncio
|
|
13
14
|
from contextlib import asynccontextmanager
|
|
15
|
+
import threading
|
|
16
|
+
import time
|
|
14
17
|
from typing import Any
|
|
15
18
|
from unittest.mock import AsyncMock
|
|
16
19
|
|
|
@@ -273,3 +276,49 @@ class TestInsertStatementTimeout:
|
|
|
273
276
|
)
|
|
274
277
|
|
|
275
278
|
assert seen["statement_timeout"] == 30.0
|
|
279
|
+
|
|
280
|
+
@pytest.mark.asyncio
|
|
281
|
+
async def test_model_create_prepares_a_slow_json_payload_off_the_event_loop(self, monkeypatch):
|
|
282
|
+
"""Single-row JSONB coercion must not freeze unrelated requests."""
|
|
283
|
+
from matrx_orm.operations import create as create_ops
|
|
284
|
+
|
|
285
|
+
entity = _make_entity_model()
|
|
286
|
+
worker_thread_ids: list[int] = []
|
|
287
|
+
|
|
288
|
+
def slow_prepare(model_cls, instance):
|
|
289
|
+
worker_thread_ids.append(threading.get_ident())
|
|
290
|
+
time.sleep(0.08)
|
|
291
|
+
return {"id": instance.id, "kind": instance.kind}
|
|
292
|
+
|
|
293
|
+
class _Recorder:
|
|
294
|
+
def __init__(self, query: dict[str, Any]) -> None:
|
|
295
|
+
pass
|
|
296
|
+
|
|
297
|
+
async def insert(self, query: dict[str, Any]) -> dict[str, Any]:
|
|
298
|
+
return {"id": query["data"]["id"]}
|
|
299
|
+
|
|
300
|
+
monkeypatch.setattr(create_ops, "_prepare_instance_data", slow_prepare)
|
|
301
|
+
monkeypatch.setattr(create_ops, "QueryExecutor", _Recorder)
|
|
302
|
+
|
|
303
|
+
ticks = 0
|
|
304
|
+
stop = asyncio.Event()
|
|
305
|
+
|
|
306
|
+
async def heartbeat() -> None:
|
|
307
|
+
nonlocal ticks
|
|
308
|
+
while not stop.is_set():
|
|
309
|
+
ticks += 1
|
|
310
|
+
await asyncio.sleep(0.005)
|
|
311
|
+
|
|
312
|
+
heartbeat_task = asyncio.create_task(heartbeat())
|
|
313
|
+
try:
|
|
314
|
+
await create_ops.create(
|
|
315
|
+
entity,
|
|
316
|
+
id="00000000-0000-0000-0000-000000000001",
|
|
317
|
+
kind="person",
|
|
318
|
+
)
|
|
319
|
+
finally:
|
|
320
|
+
stop.set()
|
|
321
|
+
await heartbeat_task
|
|
322
|
+
|
|
323
|
+
assert worker_thread_ids and worker_thread_ids[0] != threading.get_ident()
|
|
324
|
+
assert ticks >= 5
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.166 → matrx_orm-3.1.167}/matrx_orm/python_sql/table_detailed_relationships.py
RENAMED
|
File without changes
|
{matrx_orm-3.1.166 → matrx_orm-3.1.167}/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.166 → matrx_orm-3.1.167}/matrx_orm/resources/additional-assigners-2026-09-12.json
RENAMED
|
File without changes
|
{matrx_orm-3.1.166 → matrx_orm-3.1.167}/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.166 → matrx_orm-3.1.167}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|