matrx-orm 3.1.128__tar.gz → 3.1.129__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.128 → matrx_orm-3.1.129}/PKG-INFO +1 -1
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/FEATURE.md +5 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/async_db_manager.py +11 -3
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/pyproject.toml +1 -1
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_read_connection_retry.py +35 -1
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/.gitignore +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/AGENTS.md +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/BASE_CLASS_METHODS.md +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/CLAUDE.md +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/MODEL_API.md +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/README.md +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/database/orm/extended/managers/ai_model_base.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/docs/migrations.md +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/FEATURE.md +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/MODULE_README.md +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/__init__.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/adapters/MODULE_README.md +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/adapters/__init__.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/adapters/async_postgresql.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/adapters/base_adapter.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/adapters/postgresql.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/adapters/postgrest_client_adapter.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/adapters/supabase_adapter.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/admin/FEATURE.md +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/admin/__init__.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/admin/router.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/api/__init__.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/api/auth.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/api/config.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/api/handlers.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/api/protocol.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/api/server.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/associations.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/cache_debug.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/catalog.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/catalog_sql.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/client/MODULE_README.md +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/client/__init__.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/client/postgres_connection.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/client/postgrest.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/client/supabase_auth.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/client/supabase_config.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/client/supabase_manager.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/EXTENDED-TASK.md +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/MODULE_README.md +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/RELATIONS-TASKS.md +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/TASKS.md +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/__init__.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/base.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/config.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/connections.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/db_function.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/diagnostics.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/expressions.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/extended.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/fields.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/introspection.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/listen.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/loop_filters.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/model_dto.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/model_view.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/one_database.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/paginator.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/pool_maintenance.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/pool_watch.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/pooler_role.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/pydantic_bridge.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/registry.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/relations.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/resilience.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/rls_session.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/signals.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/tls.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/transaction.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/types.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/core/write_queue.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/entity.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/error_handling.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/exceptions.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/extended/__init__.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/extended/app_error_handler.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/identity_rule.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/local_sqlite.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/middleware/__init__.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/middleware/base.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/migrations/MODULE_README.md +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/migrations/__init__.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/migrations/cli.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/migrations/ddl.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/migrations/diff.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/migrations/executor.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/migrations/integration.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/migrations/loader.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/migrations/operations.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/migrations/state.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/migrations/table_filter.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/operations/FEATURE.md +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/operations/MODULE_README.md +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/operations/__init__.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/operations/bulk_update_values.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/operations/conflict.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/operations/conflict_writes.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/operations/create.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/operations/db_functions.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/operations/delete.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/operations/dynamic_admin.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/operations/dynamic_crud.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/operations/graph_walk.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/operations/latest_rows.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/operations/queue_claim.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/operations/read.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/operations/relational_backfill.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/operations/staging_load.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/operations/update.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/platform_access.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/platform_db.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/py.typed +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/python_sql/MODULE_README.md +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/python_sql/__init__.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/python_sql/db_objects.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/python_sql/table_detailed_relationships.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/python_sql/table_typescript_relationship.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/query/FEATURE.md +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/query/MODULE_README.md +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/query/__init__.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/query/builder.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/query/executor.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/schema_builder/FEATURE.md +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/schema_builder/MODULE_README.md +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/schema_builder/__init__.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/schema_builder/code_handler.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/schema_builder/codegen_writer.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/schema_builder/columns.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/schema_builder/common.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/schema_builder/diff_preview.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/schema_builder/entity_capabilities.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/schema_builder/generator.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/schema_builder/helpers/__init__.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/schema_builder/helpers/base_generators.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/schema_builder/helpers/entity_generators.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/schema_builder/helpers/git_checker.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/schema_builder/package_wiring.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/schema_builder/relationships.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/schema_builder/runner.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/schema_builder/schema.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/schema_builder/schema_manager.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/schema_builder/tables.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/schema_builder/views.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/secrets_battery/FEATURE.md +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/secrets_battery/__init__.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/secrets_battery/attachments.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/secrets_battery/crypto.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/secrets_battery/host_authorization.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/secrets_battery/items.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/secrets_battery/model.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/secrets_battery/org_service.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/secrets_battery/service.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/session/README.md +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/session/__init__.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/session/coalesce.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/session/dag.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/session/errors.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/session/fallback.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/session/flush.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/session/lifecycle.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/session/managed.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/session/op.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/session/reads.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/session/session.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/session/telemetry.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/sql_executor/MODULE_README.md +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/sql_executor/__init__.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/sql_executor/executor.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/sql_executor/queries.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/sql_executor/registry.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/sql_executor/types.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/sql_executor/utils.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/state.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/utils/__init__.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/utils/sql_utils.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/utils/type_converters.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/scripts/git-branches.sh +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/scripts/publish.sh +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/scripts/release.sh +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/MODULE_README.md +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/__init__.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/conftest.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/MODULE_README.md +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/__init__.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_admin_db_columns.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_admin_response_rendering.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_admin_search_negation.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_admin_search_sentinels.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_advisory_lock.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_agent_message.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_api_auth.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_api_config.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_api_handlers.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_api_protocol.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_array_agg_order_by.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_associations.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_associations_wiring.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_bulk_hydration_offload.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_bulk_update_by_pk.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_bulk_upsert_increment_set_fields.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_cache_debug.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_call_function.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_case_when.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_catalog.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_composite_pk_filter.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_composite_pk_write_paths.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_config.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_conflict_target.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_conflict_writes.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_connection_codecs.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_connection_poison_guard.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_connection_primitives.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_count_composite_distinct.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_db_function_field.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_ddl_generator.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_derived_table.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_dirty_tracking.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_dynamic_crud.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_exceptions.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_execute_query_integrity_mapping.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_expression_primitives.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_fields.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_filter_jsonb_agg_array_index.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_from_alias.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_fts.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_func_expression_args.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_graph_walk.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_having_annotate_alias.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_insert_ignore_and_admin_primitives.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_introspect_rls_policies.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_join_and_aggregate.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_latest_rows.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_listen_notify.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_local_sqlite.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_managed_write_guard.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_matrx_entity.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_migration_diff_types.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_migration_loader.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_model_instance.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_model_meta.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_optimistic_concurrency.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_order_by_expression.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_parameter_name_hydration.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_patch_jsonb_path.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_persisted_count.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_pool_holder_census.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_pool_loop_recreation.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_pool_maintenance.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_postgrest_filters.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_pydantic_bridge.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_query_builder.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_query_error_detail.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_query_executor_sql.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_query_timeout.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_querybuilder_clone_semantics.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_queue_claim.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_registry.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_registry_multi_database.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_registry_multi_schema.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_relational_backfill.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_relations.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_resilience.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_rls_session_scope.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_schema_exists.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_session_advisory_lock.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_state_cache.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_subquery_filter_raw.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_subquery_in_filter.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_subquery_nested_expressions.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_supabase_auth.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_supabase_config.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_tls.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_typed_join_projection.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_typed_predicates.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_update_case_expression.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_update_subquery.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_update_with_rebase.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_upsert_default_leak.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_upsert_with_conflict.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_values_jsonb_decode.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_watched_lifecycle.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_write_queue_deadline.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level1/test_write_retry_semantics.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level2/MODULE_README.md +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level2/__init__.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level2/conftest.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level2/test_bulk_ops.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level2/test_cache_integration.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level2/test_crud.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level2/test_foreign_keys.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level2/test_m2m.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level2/test_manager.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level2/test_migrations_live.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level2/test_query_execution.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/level2/test_schema_diff.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/live_pooler_role.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/sample_project/.env.example +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/sample_project/README.md +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/sample_project/__init__.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/sample_project/generate.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/sample_project/generated/.gitkeep +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/sample_project/matrx_orm.yaml +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/sample_project/test_schema_generation.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/sample_project_desktop/.env.example +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/sample_project_desktop/README.md +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/sample_project_desktop/__init__.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/sample_project_desktop/client_example.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/sample_project_desktop/client_example.ts +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/sample_project_desktop/client_supabase_example.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/sample_project_desktop/server.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/schema/entity_tests.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/schema/test_base_generation.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/schema/test_composite_pk_fk_generation.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/schema/test_composite_unique_generation.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/schema/test_dto_identity_generation.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/schema/test_entity_capability_generation.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/schema/test_enum_ordering.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/schema/test_generate_schema.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/schema/test_junction_analysis.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/schema/test_multi_schema_output.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/schema/test_schema_analysis.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/schema/test_sql_expression_defaults.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/schema/test_table_relationships_query.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/schema/test_view_generation.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/schema_builder/test_array_default_parsing.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/schema_builder/test_focused_generation_plan.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/schema_builder/test_host_models_aggregator.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/session/__init__.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/session/conftest.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/session/test_cache_no_downgrade.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/session/test_capture_poison_proof.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/session/test_coalesce.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/session/test_dag.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/session/test_disk_spill_fallback.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/session/test_flush_individual_fallback.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/session/test_governed_write.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/session/test_managed.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/session/test_op_enqueue_site.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/session/test_reads.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/session/test_session.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/test_array_arg_element_type.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/test_database_name_alias.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/test_db_functions.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/test_keyed_digest.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/test_model_cls_refactor.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/test_no_blocking_asyncpg_tls.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/test_one_database.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/test_pooler_role_guard.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/test_secrets_battery.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/test_secrets_minting_keys.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/tests/test_sql_param_casts.py +0 -0
- {matrx_orm-3.1.128 → matrx_orm-3.1.129}/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.129
|
|
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
|
|
@@ -36,6 +36,11 @@ Pinned by `tests/level1/test_registry.py`.
|
|
|
36
36
|
|
|
37
37
|
## Database execution errors
|
|
38
38
|
|
|
39
|
+
A SELECT whose checkout disconnects retries once on a fresh checkout, including
|
|
40
|
+
when asyncpg has detached the pool proxy and its `is_closed()` accessor itself
|
|
41
|
+
raises. Unrelated interface errors and ambiguous writes are never replayed.
|
|
42
|
+
Guard: `tests/level1/test_read_connection_retry.py`.
|
|
43
|
+
|
|
39
44
|
**A read-only-transaction write refusal retries on a fresh checkout.** PostgreSQL
|
|
40
45
|
rejects the statement before execution, so this narrow failure is replay-safe;
|
|
41
46
|
ambiguous write failures remain single-attempt.
|
|
@@ -1349,9 +1349,17 @@ class AsyncDatabaseManager:
|
|
|
1349
1349
|
# replaced by Transaction.__aexit__'s InterfaceError.
|
|
1350
1350
|
# Retry only when asyncpg confirms the checkout itself
|
|
1351
1351
|
# is closed; other InterfaceErrors remain diagnostic.
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1352
|
+
try:
|
|
1353
|
+
connection_closed = bool(
|
|
1354
|
+
getattr(conn, "is_closed", lambda: False)()
|
|
1355
|
+
)
|
|
1356
|
+
except asyncpg.exceptions.InterfaceError as checkout_error:
|
|
1357
|
+
# asyncpg detaches a terminated pool proxy. Even its
|
|
1358
|
+
# is_closed() accessor then raises instead of returning
|
|
1359
|
+
# True; that secondary error must not hide the loss.
|
|
1360
|
+
if "released back to the pool" not in str(checkout_error):
|
|
1361
|
+
raise e
|
|
1362
|
+
connection_closed = True
|
|
1355
1363
|
if (
|
|
1356
1364
|
read_only
|
|
1357
1365
|
and connection_closed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "matrx-orm"
|
|
3
|
-
version = "3.1.
|
|
3
|
+
version = "3.1.129"
|
|
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" }
|
|
@@ -42,7 +42,8 @@ async def test_read_retries_connection_loss_once_on_fresh_checkout(monkeypatch)
|
|
|
42
42
|
|
|
43
43
|
|
|
44
44
|
@pytest.mark.asyncio
|
|
45
|
-
|
|
45
|
+
@pytest.mark.parametrize("released", [False, True])
|
|
46
|
+
async def test_read_retries_disconnect_masked_by_reproof_transaction(monkeypatch, released) -> None:
|
|
46
47
|
checkout_count = 0
|
|
47
48
|
|
|
48
49
|
class MaskingTransaction:
|
|
@@ -67,6 +68,10 @@ async def test_read_retries_disconnect_masked_by_reproof_transaction(monkeypatch
|
|
|
67
68
|
return MaskingTransaction()
|
|
68
69
|
|
|
69
70
|
def is_closed(self) -> bool:
|
|
71
|
+
if released:
|
|
72
|
+
raise asyncpg.exceptions.InterfaceError(
|
|
73
|
+
"cannot call Connection.is_closed(): connection has been released back to the pool"
|
|
74
|
+
)
|
|
70
75
|
return True
|
|
71
76
|
|
|
72
77
|
class HealthyConnection:
|
|
@@ -92,3 +97,32 @@ async def test_read_retries_disconnect_masked_by_reproof_transaction(monkeypatch
|
|
|
92
97
|
|
|
93
98
|
assert rows == [{"value": 1}]
|
|
94
99
|
assert checkout_count == 2
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
@pytest.mark.asyncio
|
|
103
|
+
@pytest.mark.parametrize("query,released", [("UPDATE public.example SET value = 1", True), ("SELECT 1", False)])
|
|
104
|
+
async def test_interface_failure_does_not_replay_writes_or_unrelated_errors(monkeypatch, query, released):
|
|
105
|
+
from matrx_orm.exceptions import ConnectionError as ORMConnectionError
|
|
106
|
+
checkout_count = 0
|
|
107
|
+
|
|
108
|
+
class Connection:
|
|
109
|
+
async def fetch(self, *_args, **_kwargs):
|
|
110
|
+
raise asyncpg.exceptions.InterfaceError("original operation failure")
|
|
111
|
+
|
|
112
|
+
def is_closed(self):
|
|
113
|
+
if released:
|
|
114
|
+
raise asyncpg.exceptions.InterfaceError("connection has been released back to the pool")
|
|
115
|
+
return False
|
|
116
|
+
|
|
117
|
+
@asynccontextmanager
|
|
118
|
+
async def checkout(_cls, _config_name, _timeout):
|
|
119
|
+
nonlocal checkout_count
|
|
120
|
+
checkout_count += 1
|
|
121
|
+
yield Connection()
|
|
122
|
+
|
|
123
|
+
monkeypatch.setattr(AsyncDatabaseManager, "get_connection", classmethod(checkout))
|
|
124
|
+
with pytest.raises(Exception) as caught:
|
|
125
|
+
await AsyncDatabaseManager.execute_query("test", query)
|
|
126
|
+
assert checkout_count == 1
|
|
127
|
+
assert isinstance(caught.value, ORMConnectionError) is released
|
|
128
|
+
assert "original operation failure" in str(caught.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
|
{matrx_orm-3.1.128 → matrx_orm-3.1.129}/matrx_orm/python_sql/table_detailed_relationships.py
RENAMED
|
File without changes
|
{matrx_orm-3.1.128 → matrx_orm-3.1.129}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.128 → matrx_orm-3.1.129}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|