matrx-orm 3.1.83__tar.gz → 3.1.85__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.83 → matrx_orm-3.1.85}/.gitignore +1 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/PKG-INFO +1 -1
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/python_sql/db_objects.py +1 -1
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/schema_builder/FEATURE.md +7 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/secrets_battery/FEATURE.md +12 -5
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/secrets_battery/model.py +5 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/pyproject.toml +1 -1
- matrx_orm-3.1.85/tests/schema/test_enum_ordering.py +8 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/test_secrets_battery.py +12 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/AGENTS.md +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/BASE_CLASS_METHODS.md +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/CLAUDE.md +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/MODEL_API.md +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/README.md +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/database/orm/extended/managers/ai_model_base.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/docs/migrations.md +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/FEATURE.md +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/MODULE_README.md +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/__init__.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/adapters/MODULE_README.md +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/adapters/__init__.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/adapters/async_postgresql.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/adapters/base_adapter.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/adapters/postgresql.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/adapters/postgrest_client_adapter.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/adapters/supabase_adapter.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/admin/FEATURE.md +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/admin/__init__.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/admin/router.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/api/__init__.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/api/auth.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/api/config.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/api/handlers.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/api/protocol.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/api/server.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/associations.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/cache_debug.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/catalog.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/catalog_sql.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/client/MODULE_README.md +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/client/__init__.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/client/postgres_connection.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/client/postgrest.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/client/supabase_auth.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/client/supabase_config.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/client/supabase_manager.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/EXTENDED-TASK.md +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/FEATURE.md +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/MODULE_README.md +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/RELATIONS-TASKS.md +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/TASKS.md +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/__init__.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/async_db_manager.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/base.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/config.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/connections.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/db_function.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/diagnostics.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/expressions.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/extended.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/fields.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/introspection.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/listen.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/loop_filters.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/model_dto.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/model_view.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/one_database.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/paginator.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/pool_maintenance.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/pool_watch.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/pooler_role.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/pydantic_bridge.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/registry.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/relations.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/resilience.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/rls_session.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/signals.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/tls.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/transaction.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/types.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/core/write_queue.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/entity.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/error_handling.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/exceptions.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/extended/__init__.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/extended/app_error_handler.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/identity_rule.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/local_sqlite.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/middleware/__init__.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/middleware/base.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/migrations/MODULE_README.md +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/migrations/__init__.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/migrations/cli.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/migrations/ddl.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/migrations/diff.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/migrations/executor.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/migrations/integration.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/migrations/loader.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/migrations/operations.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/migrations/state.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/migrations/table_filter.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/operations/FEATURE.md +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/operations/MODULE_README.md +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/operations/__init__.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/operations/bulk_update_values.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/operations/conflict.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/operations/conflict_writes.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/operations/create.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/operations/db_functions.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/operations/delete.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/operations/dynamic_admin.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/operations/dynamic_crud.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/operations/graph_walk.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/operations/latest_rows.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/operations/queue_claim.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/operations/read.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/operations/relational_backfill.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/operations/staging_load.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/operations/update.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/platform_db.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/py.typed +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/python_sql/MODULE_README.md +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/python_sql/__init__.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/python_sql/table_detailed_relationships.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/python_sql/table_typescript_relationship.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/query/FEATURE.md +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/query/MODULE_README.md +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/query/__init__.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/query/builder.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/query/executor.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/schema_builder/MODULE_README.md +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/schema_builder/__init__.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/schema_builder/code_handler.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/schema_builder/codegen_writer.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/schema_builder/columns.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/schema_builder/common.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/schema_builder/diff_preview.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/schema_builder/entity_capabilities.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/schema_builder/generator.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/schema_builder/helpers/__init__.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/schema_builder/helpers/base_generators.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/schema_builder/helpers/entity_generators.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/schema_builder/helpers/git_checker.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/schema_builder/package_wiring.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/schema_builder/relationships.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/schema_builder/runner.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/schema_builder/schema.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/schema_builder/schema_manager.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/schema_builder/tables.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/schema_builder/views.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/secrets_battery/__init__.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/secrets_battery/attachments.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/secrets_battery/crypto.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/secrets_battery/items.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/secrets_battery/org_service.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/secrets_battery/service.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/session/README.md +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/session/__init__.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/session/coalesce.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/session/dag.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/session/errors.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/session/fallback.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/session/flush.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/session/lifecycle.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/session/managed.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/session/op.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/session/reads.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/session/session.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/session/telemetry.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/sql_executor/MODULE_README.md +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/sql_executor/__init__.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/sql_executor/executor.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/sql_executor/queries.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/sql_executor/registry.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/sql_executor/types.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/sql_executor/utils.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/state.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/utils/__init__.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/utils/sql_utils.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/matrx_orm/utils/type_converters.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/scripts/git-branches.sh +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/scripts/publish.sh +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/scripts/release.sh +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/MODULE_README.md +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/__init__.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/conftest.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/MODULE_README.md +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/__init__.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_admin_db_columns.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_admin_response_rendering.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_admin_search_negation.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_admin_search_sentinels.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_advisory_lock.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_agent_message.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_api_auth.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_api_config.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_api_handlers.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_api_protocol.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_array_agg_order_by.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_associations.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_bulk_hydration_offload.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_bulk_update_by_pk.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_bulk_upsert_increment_set_fields.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_cache_debug.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_call_function.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_case_when.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_catalog.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_composite_pk_filter.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_composite_pk_write_paths.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_config.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_conflict_target.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_conflict_writes.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_connection_codecs.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_connection_poison_guard.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_connection_primitives.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_count_composite_distinct.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_db_function_field.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_ddl_generator.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_derived_table.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_dirty_tracking.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_dynamic_crud.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_exceptions.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_execute_query_integrity_mapping.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_expression_primitives.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_fields.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_filter_jsonb_agg_array_index.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_from_alias.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_fts.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_func_expression_args.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_graph_walk.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_having_annotate_alias.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_insert_ignore_and_admin_primitives.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_introspect_rls_policies.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_join_and_aggregate.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_latest_rows.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_listen_notify.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_local_sqlite.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_managed_write_guard.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_matrx_entity.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_migration_diff_types.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_migration_loader.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_model_instance.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_model_meta.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_optimistic_concurrency.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_order_by_expression.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_parameter_name_hydration.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_patch_jsonb_path.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_pool_holder_census.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_pool_loop_recreation.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_pool_maintenance.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_postgrest_filters.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_pydantic_bridge.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_query_builder.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_query_error_detail.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_query_executor_sql.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_query_timeout.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_querybuilder_clone_semantics.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_queue_claim.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_registry.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_registry_multi_database.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_registry_multi_schema.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_relational_backfill.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_relations.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_resilience.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_rls_session_scope.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_schema_exists.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_session_advisory_lock.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_state_cache.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_subquery_filter_raw.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_subquery_in_filter.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_subquery_nested_expressions.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_supabase_auth.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_supabase_config.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_tls.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_typed_join_projection.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_typed_predicates.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_update_case_expression.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_update_subquery.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_update_with_rebase.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_upsert_default_leak.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_upsert_with_conflict.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_values_jsonb_decode.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_watched_lifecycle.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level1/test_write_retry_semantics.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level2/MODULE_README.md +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level2/__init__.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level2/conftest.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level2/test_bulk_ops.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level2/test_cache_integration.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level2/test_crud.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level2/test_foreign_keys.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level2/test_m2m.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level2/test_manager.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level2/test_migrations_live.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level2/test_query_execution.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/level2/test_schema_diff.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/live_pooler_role.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/sample_project/.env.example +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/sample_project/README.md +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/sample_project/__init__.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/sample_project/generate.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/sample_project/generated/.gitkeep +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/sample_project/matrx_orm.yaml +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/sample_project/test_schema_generation.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/sample_project_desktop/.env.example +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/sample_project_desktop/README.md +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/sample_project_desktop/__init__.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/sample_project_desktop/client_example.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/sample_project_desktop/client_example.ts +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/sample_project_desktop/client_supabase_example.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/sample_project_desktop/server.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/schema/entity_tests.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/schema/test_base_generation.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/schema/test_composite_pk_fk_generation.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/schema/test_composite_unique_generation.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/schema/test_dto_identity_generation.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/schema/test_entity_capability_generation.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/schema/test_generate_schema.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/schema/test_junction_analysis.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/schema/test_multi_schema_output.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/schema/test_sql_expression_defaults.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/schema/test_table_relationships_query.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/schema/test_view_generation.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/schema_builder/test_array_default_parsing.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/schema_builder/test_focused_generation_plan.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/schema_builder/test_host_models_aggregator.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/session/__init__.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/session/conftest.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/session/test_cache_no_downgrade.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/session/test_capture_poison_proof.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/session/test_coalesce.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/session/test_dag.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/session/test_disk_spill_fallback.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/session/test_flush_individual_fallback.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/session/test_governed_write.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/session/test_managed.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/session/test_op_enqueue_site.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/session/test_reads.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/session/test_session.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/test_database_name_alias.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/test_db_functions.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/test_model_cls_refactor.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/test_no_blocking_asyncpg_tls.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/test_one_database.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/test_pooler_role_guard.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/tests/test_sql_param_casts.py +0 -0
- {matrx_orm-3.1.83 → matrx_orm-3.1.85}/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.85
|
|
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
|
|
@@ -110,7 +110,7 @@ def get_full_db_objects(schema, database_project):
|
|
|
110
110
|
'full_type', pg_catalog.format_type(a.atttypid, a.atttypmod),
|
|
111
111
|
'base_type', t.typname,
|
|
112
112
|
'domain_type', CASE WHEN t.typtype = 'd' THEN t.typname ELSE NULL END,
|
|
113
|
-
'enum_labels', CASE WHEN t.typtype = 'e' THEN (SELECT array_agg(enumlabel) FROM pg_enum WHERE enumtypid = t.oid) ELSE NULL END,
|
|
113
|
+
'enum_labels', CASE WHEN t.typtype = 'e' THEN (SELECT array_agg(enumlabel ORDER BY enumsortorder) FROM pg_enum WHERE enumtypid = t.oid) ELSE NULL END,
|
|
114
114
|
'is_array', a.attndims > 0,
|
|
115
115
|
'nullable', NOT a.attnotnull,
|
|
116
116
|
'default', pg_get_expr(d.adbin, d.adrelid),
|
|
@@ -2,6 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
The schema builder generates importable models and manager wrappers from live database metadata.
|
|
4
4
|
|
|
5
|
+
## Deterministic database metadata
|
|
6
|
+
|
|
7
|
+
- PostgreSQL enum labels are emitted in `pg_enum.enumsortorder`. Introspection
|
|
8
|
+
must never rely on catalog row order; otherwise identical generator runs
|
|
9
|
+
oscillate every generated model containing that enum.
|
|
10
|
+
- Guard: `packages/matrx-orm/tests/schema/test_enum_ordering.py`.
|
|
11
|
+
|
|
5
12
|
## Manager method names
|
|
6
13
|
|
|
7
14
|
- A generated manager must never contain duplicate method names; later definitions silently replace earlier behavior in Python.
|
|
@@ -106,9 +106,12 @@ carry PLAINTEXT, deliberately-unencrypted columns: `login_urls` (`text[]`),
|
|
|
106
106
|
`[{key,label,value}]`), `browser_fill_enabled`. This module validates their
|
|
107
107
|
shape — URLs must be http/https, `non_secret_fields` keys match `FIELD_KEY_RE`
|
|
108
108
|
and are unique, entries carry only `{key,label,value}` — because it is the only
|
|
109
|
-
write path. `
|
|
110
|
-
|
|
111
|
-
|
|
109
|
+
write path. **`CredentialItem` declares every destination-login column** so the
|
|
110
|
+
validated `update_credential_item` path can persist them; a database column that
|
|
111
|
+
is absent from the model is an unwritable Vault field. `handling` does NOT apply
|
|
112
|
+
to them: whether a value is encrypted is decided by the catalog field's
|
|
113
|
+
`storage_class`, never by handling. Never move a secret into these columns to
|
|
114
|
+
make it "easier to read".
|
|
112
115
|
|
|
113
116
|
## Consumer contract
|
|
114
117
|
|
|
@@ -255,11 +258,15 @@ Drift guard: `scripts/validate_secrets_decrypt.py` (loud, non-blocking, in
|
|
|
255
258
|
configured key.
|
|
256
259
|
|
|
257
260
|
Verified against live code + the live `users.user_secrets` /
|
|
258
|
-
`users.credential_items` schema 2026-
|
|
259
|
-
create, reveal, sealed denial, editable gate, rotate, item grants, soft
|
|
261
|
+
`users.credential_items` schema 2026-08-20 (destination-login metadata update,
|
|
262
|
+
bundle create, reveal, sealed denial, editable gate, rotate, item grants, soft
|
|
263
|
+
delete).
|
|
260
264
|
|
|
261
265
|
## Change Log
|
|
262
266
|
|
|
267
|
+
- **2026-08-20** — Mirrored all five live destination-login metadata columns on
|
|
268
|
+
`CredentialItem`; the Vault update path had advertised them but rejected every
|
|
269
|
+
write because the canonical ORM model omitted them.
|
|
263
270
|
- **2026-08-18** — Extended key rotation and decrypt-drift validation across
|
|
264
271
|
protected-file attachment ciphertext, with field-and-file regression proof.
|
|
265
272
|
- **2026-08-18** — Made restricted organization bulk resolution honor canonical
|
|
@@ -51,6 +51,11 @@ class CredentialItem(Model):
|
|
|
51
51
|
created_at = DateTimeField(null=False)
|
|
52
52
|
updated_at = DateTimeField(null=False)
|
|
53
53
|
deleted_at = DateTimeField()
|
|
54
|
+
login_urls = TextArrayField(null=False, default=[])
|
|
55
|
+
uri_match_mode = TextField(null=False, default="host")
|
|
56
|
+
notes = TextField()
|
|
57
|
+
non_secret_fields = JSONBField(null=False, default=[])
|
|
58
|
+
browser_fill_enabled = BooleanField(null=False, default=False)
|
|
54
59
|
|
|
55
60
|
_table_name = "credential_items"
|
|
56
61
|
_db_schema = "users"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "matrx-orm"
|
|
3
|
-
version = "3.1.
|
|
3
|
+
version = "3.1.85"
|
|
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,8 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def test_schema_introspection_orders_enum_labels_by_postgres_enum_order() -> None:
|
|
5
|
+
source = (Path(__file__).parents[2] / "matrx_orm" / "python_sql" / "db_objects.py").read_text()
|
|
6
|
+
|
|
7
|
+
assert "array_agg(enumlabel ORDER BY enumsortorder)" in source
|
|
8
|
+
assert "array_agg(enumlabel) FROM pg_enum" not in source
|
|
@@ -186,6 +186,18 @@ def test_public_api_surface():
|
|
|
186
186
|
assert hasattr(s, name), name
|
|
187
187
|
|
|
188
188
|
|
|
189
|
+
def test_credential_item_model_carries_destination_login_metadata():
|
|
190
|
+
from matrx_orm.secrets_battery import CredentialItem
|
|
191
|
+
|
|
192
|
+
assert {
|
|
193
|
+
"login_urls",
|
|
194
|
+
"uri_match_mode",
|
|
195
|
+
"notes",
|
|
196
|
+
"non_secret_fields",
|
|
197
|
+
"browser_fill_enabled",
|
|
198
|
+
} <= set(CredentialItem._fields)
|
|
199
|
+
|
|
200
|
+
|
|
189
201
|
# ── Fakes for DB-free contract tests ──────────────────────────────────────
|
|
190
202
|
|
|
191
203
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|