matrx-orm 3.1.37__tar.gz → 3.1.38__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.37 → matrx_orm-3.1.38}/PKG-INFO +1 -1
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/associations.py +34 -2
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/pyproject.toml +1 -1
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_associations.py +39 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/.gitignore +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/AGENTS.md +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/BASE_CLASS_METHODS.md +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/CLAUDE.md +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/MODEL_API.md +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/README.md +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/database/orm/extended/managers/ai_model_base.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/docs/migrations.md +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/MODULE_README.md +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/__init__.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/adapters/MODULE_README.md +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/adapters/__init__.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/adapters/async_postgresql.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/adapters/base_adapter.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/adapters/postgresql.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/adapters/postgrest_client_adapter.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/adapters/supabase_adapter.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/admin/__init__.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/admin/router.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/api/__init__.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/api/auth.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/api/config.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/api/handlers.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/api/protocol.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/api/server.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/cache_debug.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/catalog.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/client/MODULE_README.md +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/client/__init__.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/client/postgres_connection.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/client/postgrest.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/client/supabase_auth.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/client/supabase_config.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/client/supabase_manager.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/core/EXTENDED-TASK.md +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/core/MODULE_README.md +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/core/RELATIONS-TASKS.md +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/core/TASKS.md +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/core/__init__.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/core/async_db_manager.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/core/base.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/core/config.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/core/connections.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/core/db_function.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/core/diagnostics.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/core/expressions.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/core/extended.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/core/fields.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/core/introspection.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/core/listen.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/core/loop_filters.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/core/model_dto.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/core/model_view.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/core/paginator.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/core/pool_maintenance.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/core/pydantic_bridge.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/core/registry.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/core/relations.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/core/resilience.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/core/rls_session.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/core/signals.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/core/tls.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/core/transaction.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/core/types.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/core/write_queue.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/entity.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/error_handling.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/exceptions.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/extended/__init__.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/extended/app_error_handler.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/identity_rule.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/middleware/__init__.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/middleware/base.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/migrations/MODULE_README.md +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/migrations/__init__.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/migrations/cli.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/migrations/ddl.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/migrations/diff.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/migrations/executor.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/migrations/integration.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/migrations/loader.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/migrations/operations.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/migrations/state.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/migrations/table_filter.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/operations/MODULE_README.md +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/operations/__init__.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/operations/bulk_update_values.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/operations/conflict.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/operations/conflict_writes.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/operations/create.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/operations/db_functions.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/operations/delete.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/operations/dynamic_admin.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/operations/dynamic_crud.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/operations/graph_walk.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/operations/latest_rows.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/operations/queue_claim.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/operations/read.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/operations/relational_backfill.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/operations/staging_load.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/operations/update.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/py.typed +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/python_sql/MODULE_README.md +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/python_sql/__init__.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/python_sql/db_objects.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/python_sql/table_detailed_relationships.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/python_sql/table_typescript_relationship.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/query/MODULE_README.md +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/query/__init__.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/query/builder.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/query/executor.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/schema_builder/MODULE_README.md +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/schema_builder/__init__.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/schema_builder/code_handler.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/schema_builder/codegen_writer.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/schema_builder/columns.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/schema_builder/common.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/schema_builder/diff_preview.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/schema_builder/entity_capabilities.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/schema_builder/generator.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/schema_builder/helpers/__init__.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/schema_builder/helpers/base_generators.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/schema_builder/helpers/entity_generators.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/schema_builder/helpers/git_checker.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/schema_builder/package_wiring.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/schema_builder/relationships.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/schema_builder/runner.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/schema_builder/schema.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/schema_builder/schema_manager.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/schema_builder/tables.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/schema_builder/views.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/secrets_battery/FEATURE.md +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/secrets_battery/__init__.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/secrets_battery/crypto.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/secrets_battery/items.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/secrets_battery/model.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/secrets_battery/org_service.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/secrets_battery/service.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/session/README.md +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/session/__init__.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/session/coalesce.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/session/dag.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/session/errors.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/session/fallback.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/session/flush.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/session/lifecycle.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/session/managed.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/session/op.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/session/reads.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/session/session.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/session/telemetry.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/sql_executor/MODULE_README.md +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/sql_executor/__init__.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/sql_executor/executor.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/sql_executor/queries.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/sql_executor/registry.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/sql_executor/types.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/sql_executor/utils.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/state.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/utils/__init__.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/utils/sql_utils.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/matrx_orm/utils/type_converters.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/scripts/git-branches.sh +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/scripts/publish.sh +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/scripts/release.sh +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/MODULE_README.md +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/__init__.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/conftest.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/MODULE_README.md +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/__init__.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_admin_db_columns.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_admin_search_negation.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_admin_search_sentinels.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_advisory_lock.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_agent_message.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_api_auth.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_api_config.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_api_handlers.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_api_protocol.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_array_agg_order_by.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_bulk_update_by_pk.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_bulk_upsert_increment_set_fields.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_cache_debug.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_call_function.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_case_when.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_catalog.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_composite_pk_filter.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_composite_pk_write_paths.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_config.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_conflict_target.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_conflict_writes.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_connection_codecs.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_connection_poison_guard.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_connection_primitives.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_count_composite_distinct.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_db_function_field.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_ddl_generator.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_derived_table.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_dirty_tracking.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_dynamic_crud.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_exceptions.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_expression_primitives.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_fields.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_filter_jsonb_agg_array_index.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_from_alias.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_fts.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_func_expression_args.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_graph_walk.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_having_annotate_alias.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_insert_ignore_and_admin_primitives.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_introspect_rls_policies.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_join_and_aggregate.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_latest_rows.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_listen_notify.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_managed_write_guard.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_matrx_entity.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_migration_diff_types.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_migration_loader.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_model_instance.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_model_meta.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_order_by_expression.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_patch_jsonb_path.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_pool_loop_recreation.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_pool_maintenance.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_postgrest_filters.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_pydantic_bridge.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_query_builder.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_query_error_detail.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_query_executor_sql.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_query_timeout.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_querybuilder_clone_semantics.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_queue_claim.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_registry.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_registry_multi_database.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_registry_multi_schema.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_relational_backfill.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_relations.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_resilience.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_schema_exists.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_session_advisory_lock.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_state_cache.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_subquery_filter_raw.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_subquery_in_filter.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_supabase_auth.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_supabase_config.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_tls.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_typed_join_projection.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_typed_predicates.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_update_case_expression.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_update_subquery.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_upsert_default_leak.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_upsert_with_conflict.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_values_jsonb_decode.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_watched_lifecycle.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level1/test_write_retry_semantics.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level2/MODULE_README.md +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level2/__init__.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level2/conftest.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level2/test_bulk_ops.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level2/test_cache_integration.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level2/test_crud.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level2/test_foreign_keys.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level2/test_m2m.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level2/test_manager.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level2/test_migrations_live.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level2/test_query_execution.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/level2/test_schema_diff.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/sample_project/.env.example +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/sample_project/README.md +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/sample_project/__init__.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/sample_project/generate.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/sample_project/generated/.gitkeep +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/sample_project/matrx_orm.yaml +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/sample_project/test_schema_generation.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/sample_project_desktop/.env.example +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/sample_project_desktop/README.md +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/sample_project_desktop/__init__.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/sample_project_desktop/client_example.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/sample_project_desktop/client_example.ts +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/sample_project_desktop/client_supabase_example.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/sample_project_desktop/server.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/schema/entity_tests.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/schema/test_base_generation.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/schema/test_composite_pk_fk_generation.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/schema/test_composite_unique_generation.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/schema/test_dto_identity_generation.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/schema/test_entity_capability_generation.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/schema/test_generate_schema.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/schema/test_junction_analysis.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/schema/test_multi_schema_output.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/schema/test_sql_expression_defaults.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/schema/test_view_generation.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/schema_builder/test_focused_generation_plan.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/session/__init__.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/session/conftest.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/session/test_cache_no_downgrade.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/session/test_capture_poison_proof.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/session/test_coalesce.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/session/test_dag.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/session/test_disk_spill_fallback.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/session/test_flush_individual_fallback.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/session/test_governed_write.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/session/test_managed.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/session/test_op_enqueue_site.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/session/test_reads.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/session/test_session.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/test_database_name_alias.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/test_db_functions.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/test_model_cls_refactor.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/test_no_blocking_asyncpg_tls.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/test_secrets_battery.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/tests/test_sql_param_casts.py +0 -0
- {matrx_orm-3.1.37 → matrx_orm-3.1.38}/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.38
|
|
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
|
|
@@ -196,6 +196,15 @@ class Associations:
|
|
|
196
196
|
self._org = org_field
|
|
197
197
|
self._role = role_field
|
|
198
198
|
self._role_available = True # refined by _validate_field_bindings when introspectable
|
|
199
|
+
# Optional edge-document columns (platform.associations carries them;
|
|
200
|
+
# a minimal host edge table may not). Passing the kwarg against a
|
|
201
|
+
# table without the column raises loudly at call time.
|
|
202
|
+
self._optional_cols: dict[str, bool] = {
|
|
203
|
+
"payload_kind": True,
|
|
204
|
+
"payload": True,
|
|
205
|
+
"label": True,
|
|
206
|
+
"position": True,
|
|
207
|
+
}
|
|
199
208
|
self._validate_field_bindings()
|
|
200
209
|
|
|
201
210
|
def _validate_field_bindings(self) -> None:
|
|
@@ -230,6 +239,8 @@ class Associations:
|
|
|
230
239
|
# role is OPTIONAL on the edge table — engines over role-less edge
|
|
231
240
|
# tables keep working; passing a role against one raises at call time.
|
|
232
241
|
self._role_available = self._role in fields
|
|
242
|
+
for col in self._optional_cols:
|
|
243
|
+
self._optional_cols[col] = col in fields
|
|
233
244
|
|
|
234
245
|
# ---- writes ----------------------------------------------------------
|
|
235
246
|
|
|
@@ -257,6 +268,10 @@ class Associations:
|
|
|
257
268
|
metadata: dict[str, Any] | None = None,
|
|
258
269
|
created_by: str | None = None,
|
|
259
270
|
verify: bool = True,
|
|
271
|
+
payload_kind: str | None = None,
|
|
272
|
+
payload: dict[str, Any] | None = None,
|
|
273
|
+
label: str | None = None,
|
|
274
|
+
position: int | None = None,
|
|
260
275
|
) -> Any:
|
|
261
276
|
"""Idempotently create the ``source -> target`` edge in ``org_id``.
|
|
262
277
|
|
|
@@ -288,6 +303,17 @@ class Associations:
|
|
|
288
303
|
defaults["metadata"] = metadata
|
|
289
304
|
if created_by is not None:
|
|
290
305
|
defaults["created_by"] = created_by
|
|
306
|
+
extras = {"payload_kind": payload_kind, "payload": payload, "label": label, "position": position}
|
|
307
|
+
for col, value in extras.items():
|
|
308
|
+
if value is None:
|
|
309
|
+
continue
|
|
310
|
+
if not self._optional_cols.get(col, True):
|
|
311
|
+
model_name = getattr(self._assoc, "__name__", str(self._assoc))
|
|
312
|
+
raise ValueError(
|
|
313
|
+
f"{col}={value!r} was passed but edge model {model_name} has no "
|
|
314
|
+
f"{col!r} column — add the column or drop the argument."
|
|
315
|
+
)
|
|
316
|
+
defaults[col] = value
|
|
291
317
|
lookup = {
|
|
292
318
|
self._st: source.type,
|
|
293
319
|
self._si: source.id,
|
|
@@ -300,8 +326,14 @@ class Associations:
|
|
|
300
326
|
elif role is not None:
|
|
301
327
|
self._role_filter(role) # raises with the loud config message
|
|
302
328
|
edge, created = await self._assoc.get_or_create(defaults=defaults, **lookup)
|
|
303
|
-
if not created
|
|
304
|
-
|
|
329
|
+
if not created:
|
|
330
|
+
updates = {
|
|
331
|
+
col: value
|
|
332
|
+
for col, value in {"metadata": metadata, **extras}.items()
|
|
333
|
+
if value is not None and getattr(edge, col, None) != value
|
|
334
|
+
}
|
|
335
|
+
if updates:
|
|
336
|
+
edge = await edge.update(**updates)
|
|
305
337
|
return edge
|
|
306
338
|
|
|
307
339
|
async def dissociate(
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "matrx-orm"
|
|
3
|
-
version = "3.1.
|
|
3
|
+
version = "3.1.38"
|
|
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" }
|
|
@@ -262,6 +262,45 @@ async def test_load_gated_returns_system_vocabulary_cross_org():
|
|
|
262
262
|
assert [t.id for t in targets] == ["k1"]
|
|
263
263
|
|
|
264
264
|
|
|
265
|
+
@pytest.mark.asyncio
|
|
266
|
+
async def test_associate_writes_and_replaces_payload_document():
|
|
267
|
+
a = _assoc()
|
|
268
|
+
_seed_n1_p1()
|
|
269
|
+
src, tgt = EntityRef("note", "n1"), EntityRef("project", "p1")
|
|
270
|
+
e1 = await a.associate(
|
|
271
|
+
src, tgt, org_id="org1", role="reviewed_by",
|
|
272
|
+
payload_kind="plan_review", payload={"review_date": "2026-07-25"},
|
|
273
|
+
label="Review", position=1,
|
|
274
|
+
)
|
|
275
|
+
assert e1.payload_kind == "plan_review" and e1.payload == {"review_date": "2026-07-25"}
|
|
276
|
+
assert e1.label == "Review" and e1.position == 1
|
|
277
|
+
# repeat call: passed values full-replace; omitted (None) stay untouched
|
|
278
|
+
e2 = await a.associate(
|
|
279
|
+
src, tgt, org_id="org1", role="reviewed_by",
|
|
280
|
+
payload={"review_date": "2026-07-26", "notes": "x"},
|
|
281
|
+
)
|
|
282
|
+
assert e2 is e1 and e2.payload == {"review_date": "2026-07-26", "notes": "x"}
|
|
283
|
+
assert e2.payload_kind == "plan_review" and e2.label == "Review"
|
|
284
|
+
assert len(AssociationRow._rows) == 1
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
@pytest.mark.asyncio
|
|
288
|
+
async def test_associate_payload_against_payloadless_table_raises():
|
|
289
|
+
from types import SimpleNamespace
|
|
290
|
+
|
|
291
|
+
cols = ("source_type", "source_id", "target_type", "target_id", "org_id", "role", "metadata")
|
|
292
|
+
model = type(
|
|
293
|
+
"_MiniEdge", (_FakeBase,), {"_meta": SimpleNamespace(fields={c: object() for c in cols})}
|
|
294
|
+
)
|
|
295
|
+
a = Associations(association_model=model, registry=_token_registry())
|
|
296
|
+
_seed_n1_p1()
|
|
297
|
+
with pytest.raises(ValueError, match="payload_kind"):
|
|
298
|
+
await a.associate(
|
|
299
|
+
EntityRef("note", "n1"), EntityRef("project", "p1"),
|
|
300
|
+
org_id="org1", payload_kind="plan_review",
|
|
301
|
+
)
|
|
302
|
+
|
|
303
|
+
|
|
265
304
|
@pytest.mark.asyncio
|
|
266
305
|
async def test_associate_verify_false_skips_endpoint_check():
|
|
267
306
|
a = _assoc() # no endpoints seeded at all
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|