matrx-orm 3.1.26__tar.gz → 3.1.27__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.26 → matrx_orm-3.1.27}/PKG-INFO +1 -1
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/core/MODULE_README.md +9 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/core/pydantic_bridge.py +7 -8
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/pyproject.toml +1 -1
- matrx_orm-3.1.27/tests/level1/test_pydantic_bridge.py +33 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/.gitignore +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/AGENTS.md +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/BASE_CLASS_METHODS.md +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/CLAUDE.md +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/MODEL_API.md +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/README.md +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/database/orm/extended/managers/ai_model_base.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/docs/migrations.md +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/MODULE_README.md +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/__init__.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/adapters/MODULE_README.md +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/adapters/__init__.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/adapters/async_postgresql.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/adapters/base_adapter.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/adapters/postgresql.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/adapters/postgrest_client_adapter.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/adapters/supabase_adapter.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/admin/__init__.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/admin/router.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/api/__init__.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/api/auth.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/api/config.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/api/handlers.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/api/protocol.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/api/server.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/associations.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/cache_debug.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/client/MODULE_README.md +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/client/__init__.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/client/postgres_connection.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/client/postgrest.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/client/supabase_auth.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/client/supabase_config.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/client/supabase_manager.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/core/EXTENDED-TASK.md +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/core/RELATIONS-TASKS.md +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/core/TASKS.md +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/core/__init__.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/core/async_db_manager.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/core/base.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/core/config.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/core/db_function.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/core/diagnostics.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/core/expressions.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/core/extended.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/core/fields.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/core/introspection.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/core/listen.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/core/loop_filters.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/core/model_dto.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/core/model_view.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/core/paginator.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/core/pool_maintenance.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/core/registry.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/core/relations.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/core/resilience.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/core/rls_session.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/core/signals.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/core/tls.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/core/transaction.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/core/types.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/core/write_queue.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/entity.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/error_handling.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/exceptions.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/extended/__init__.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/extended/app_error_handler.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/identity_rule.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/middleware/__init__.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/middleware/base.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/migrations/MODULE_README.md +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/migrations/__init__.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/migrations/cli.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/migrations/ddl.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/migrations/diff.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/migrations/executor.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/migrations/integration.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/migrations/loader.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/migrations/operations.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/migrations/state.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/migrations/table_filter.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/operations/MODULE_README.md +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/operations/__init__.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/operations/bulk_update_values.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/operations/conflict.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/operations/conflict_writes.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/operations/create.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/operations/delete.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/operations/dynamic_admin.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/operations/queue_claim.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/operations/read.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/operations/staging_load.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/operations/update.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/py.typed +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/python_sql/MODULE_README.md +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/python_sql/__init__.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/python_sql/db_objects.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/python_sql/table_detailed_relationships.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/python_sql/table_typescript_relationship.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/query/MODULE_README.md +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/query/__init__.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/query/builder.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/query/executor.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/schema_builder/MODULE_README.md +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/schema_builder/__init__.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/schema_builder/code_handler.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/schema_builder/codegen_writer.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/schema_builder/columns.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/schema_builder/common.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/schema_builder/diff_preview.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/schema_builder/entity_capabilities.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/schema_builder/generator.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/schema_builder/helpers/__init__.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/schema_builder/helpers/base_generators.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/schema_builder/helpers/entity_generators.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/schema_builder/helpers/git_checker.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/schema_builder/package_wiring.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/schema_builder/relationships.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/schema_builder/runner.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/schema_builder/schema.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/schema_builder/schema_manager.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/schema_builder/tables.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/schema_builder/views.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/secrets_battery/FEATURE.md +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/secrets_battery/__init__.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/secrets_battery/crypto.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/secrets_battery/model.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/secrets_battery/org_service.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/secrets_battery/service.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/session/README.md +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/session/__init__.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/session/coalesce.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/session/dag.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/session/errors.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/session/fallback.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/session/flush.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/session/lifecycle.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/session/managed.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/session/op.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/session/reads.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/session/session.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/session/telemetry.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/sql_executor/MODULE_README.md +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/sql_executor/__init__.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/sql_executor/executor.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/sql_executor/queries.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/sql_executor/registry.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/sql_executor/types.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/sql_executor/utils.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/state.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/utils/__init__.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/utils/sql_utils.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/matrx_orm/utils/type_converters.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/scripts/git-branches.sh +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/scripts/publish.sh +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/scripts/release.sh +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/MODULE_README.md +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/__init__.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/conftest.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/MODULE_README.md +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/__init__.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_admin_db_columns.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_admin_search_negation.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_admin_search_sentinels.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_advisory_lock.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_agent_message.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_api_auth.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_api_config.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_api_handlers.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_api_protocol.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_array_agg_order_by.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_associations.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_bulk_update_by_pk.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_bulk_upsert_increment_set_fields.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_cache_debug.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_call_function.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_case_when.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_composite_pk_filter.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_composite_pk_write_paths.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_config.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_conflict_target.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_conflict_writes.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_connection_codecs.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_connection_poison_guard.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_count_composite_distinct.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_db_function_field.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_ddl_generator.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_derived_table.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_dirty_tracking.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_exceptions.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_execute_admin_sql.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_expression_primitives.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_fields.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_filter_jsonb_agg_array_index.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_filter_raw.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_from_alias.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_fts.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_func_expression_args.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_having_annotate_alias.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_insert_ignore_and_admin_primitives.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_introspect_rls_policies.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_join_and_aggregate.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_listen_notify.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_managed_write_guard.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_matrx_entity.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_migration_diff_types.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_migration_loader.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_model_instance.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_model_meta.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_order_by_expression.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_patch_jsonb_path.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_pool_maintenance.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_postgrest_filters.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_query_builder.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_query_error_detail.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_query_executor_sql.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_query_timeout.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_querybuilder_clone_semantics.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_queue_claim.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_registry.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_registry_multi_database.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_registry_multi_schema.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_relations.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_resilience.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_schema_exists.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_session_advisory_lock.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_state_cache.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_subquery_filter_raw.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_subquery_in_filter.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_supabase_auth.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_supabase_config.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_tls.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_update_case_expression.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_update_subquery.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_upsert_with_conflict.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_values_jsonb_decode.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_watched_lifecycle.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level1/test_write_retry_semantics.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level2/MODULE_README.md +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level2/__init__.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level2/conftest.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level2/test_bulk_ops.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level2/test_cache_integration.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level2/test_crud.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level2/test_foreign_keys.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level2/test_m2m.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level2/test_manager.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level2/test_migrations_live.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level2/test_query_execution.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/level2/test_schema_diff.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/sample_project/.env.example +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/sample_project/README.md +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/sample_project/__init__.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/sample_project/generate.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/sample_project/generated/.gitkeep +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/sample_project/matrx_orm.yaml +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/sample_project/test_schema_generation.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/sample_project_desktop/.env.example +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/sample_project_desktop/README.md +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/sample_project_desktop/__init__.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/sample_project_desktop/client_example.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/sample_project_desktop/client_example.ts +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/sample_project_desktop/client_supabase_example.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/sample_project_desktop/server.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/schema/entity_tests.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/schema/test_base_generation.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/schema/test_composite_pk_fk_generation.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/schema/test_composite_unique_generation.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/schema/test_dto_identity_generation.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/schema/test_entity_capability_generation.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/schema/test_generate_schema.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/schema/test_multi_schema_output.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/schema/test_sql_expression_defaults.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/schema/test_view_generation.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/schema_builder/test_focused_generation_plan.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/session/__init__.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/session/conftest.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/session/test_capture_poison_proof.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/session/test_coalesce.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/session/test_dag.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/session/test_disk_spill_fallback.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/session/test_flush_individual_fallback.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/session/test_governed_write.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/session/test_managed.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/session/test_op_enqueue_site.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/session/test_reads.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/session/test_session.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/test_database_name_alias.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/test_model_cls_refactor.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/test_no_blocking_asyncpg_tls.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/test_secrets_battery.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/test_sql_param_casts.py +0 -0
- {matrx_orm-3.1.26 → matrx_orm-3.1.27}/tests/test_sync_twins_guard.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: matrx-orm
|
|
3
|
-
Version: 3.1.
|
|
3
|
+
Version: 3.1.27
|
|
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
|
|
@@ -28,6 +28,15 @@ python utils/code_context/generate_module_readme.py src/matrx_orm/core --mode si
|
|
|
28
28
|
|
|
29
29
|
## Architecture
|
|
30
30
|
|
|
31
|
+
### Pydantic bridge default invariant
|
|
32
|
+
|
|
33
|
+
`pydantic_bridge.py` derives input/output schemas from ORM fields. Every
|
|
34
|
+
non-`None` static field default is normalized through that field's `to_python`
|
|
35
|
+
conversion before it is attached to the generated Pydantic schema. This keeps
|
|
36
|
+
defaults canonical even though Pydantic does not validate defaults by default
|
|
37
|
+
(for example, `DecimalField(default=0)` exposes `Decimal("0")`, not an `int`) and
|
|
38
|
+
prevents serializer type warnings at API boundaries.
|
|
39
|
+
|
|
31
40
|
> **Fill this in.** Describe the execution flow and layer map for this module.
|
|
32
41
|
> See `utils/code_context/MODULE_README_SPEC.md` for the recommended format.
|
|
33
42
|
>
|
|
@@ -210,7 +210,6 @@ def _field_annotation(field: Any, *, partial: bool) -> tuple[Any, Any]:
|
|
|
210
210
|
from matrx_orm.core.fields import ( # noqa: PLC0415
|
|
211
211
|
DateField,
|
|
212
212
|
DateTimeField,
|
|
213
|
-
EnumField,
|
|
214
213
|
ForeignKey,
|
|
215
214
|
TimeField,
|
|
216
215
|
)
|
|
@@ -218,15 +217,15 @@ def _field_annotation(field: Any, *, partial: bool) -> tuple[Any, Any]:
|
|
|
218
217
|
py_type = field.python_type()
|
|
219
218
|
|
|
220
219
|
def _default() -> Any:
|
|
221
|
-
"""ORM
|
|
222
|
-
|
|
223
|
-
re-validate defaults
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
220
|
+
"""Coerce ORM defaults into each field's canonical Python type.
|
|
221
|
+
|
|
222
|
+
Pydantic v2 does not re-validate defaults. Generated model defaults
|
|
223
|
+
therefore otherwise retain their DB-literal types (for example ``0``
|
|
224
|
+
on a DecimalField or ``"internal"`` on an EnumField), and
|
|
225
|
+
``model_dump()`` emits ``PydanticSerializationUnexpectedValue``.
|
|
227
226
|
"""
|
|
228
227
|
value = field.get_default()
|
|
229
|
-
if
|
|
228
|
+
if value is not None:
|
|
230
229
|
try:
|
|
231
230
|
return field.to_python(value)
|
|
232
231
|
except (TypeError, ValueError):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "matrx-orm"
|
|
3
|
-
version = "3.1.
|
|
3
|
+
version = "3.1.27"
|
|
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,33 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import warnings
|
|
4
|
+
from decimal import Decimal
|
|
5
|
+
|
|
6
|
+
from matrx_orm import (
|
|
7
|
+
DecimalField,
|
|
8
|
+
Model,
|
|
9
|
+
TextField,
|
|
10
|
+
UUIDField,
|
|
11
|
+
build_input_schema,
|
|
12
|
+
validate_model_input,
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class CostedRecord(Model):
|
|
17
|
+
_table_name = "costed_record"
|
|
18
|
+
_database = "test"
|
|
19
|
+
|
|
20
|
+
id = UUIDField(primary_key=True)
|
|
21
|
+
name = TextField(null=False)
|
|
22
|
+
total_cost = DecimalField(null=False, default=0)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def test_decimal_default_is_canonical_before_pydantic_serialization() -> None:
|
|
26
|
+
with warnings.catch_warnings(record=True) as caught:
|
|
27
|
+
warnings.simplefilter("always")
|
|
28
|
+
validated = validate_model_input(CostedRecord, {"name": "example"})
|
|
29
|
+
|
|
30
|
+
assert validated == {"name": "example"}
|
|
31
|
+
schema = build_input_schema(CostedRecord)
|
|
32
|
+
assert schema(name="example").total_cost == Decimal("0")
|
|
33
|
+
assert not [w for w in caught if "Pydantic serializer warnings" in str(w.message)]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|